開拓者參數聲明的數據類型錯誤 [開拓者 TB]
- 咨詢內容: Params
Numeric TimeFrame(1440);
// 目標時間周期:月線=40320,周線=10080,日線=1440,4小時線=240
// 其他1小時內的周期等于相應的分鐘數,如:1小時=60, 30分鐘=30。。。
// 支持不規則分鐘數,如3分鐘,8分鐘,之類都行
Numeric BarsBack(1);
// 目標時間周期BAR偏移:
// 1--表示將目標時間周期下的前1根K線數據作為與當前Bar對應的目標時間周期下的K線數據
// 0--表示將目標時間周期下的截止到目前為止的數據轉換為與當前BAR對應的目標時間周期下K線數據
NumericRef oCurBar; // 目標時間周期下的Bar索引
NumericRef oOPenHT; // 目標時間周期下的開盤價
NumericRef oHighHT; // 目標時間周期下的最高價
NumericRef oLowHT; // 目標時間周期下的最低價
NumericRef oCloseHT; // 目標時間周期下的收盤價
NumericRef oVolHT; // 目標時間周期下的成交量
NumericRef oOpenIntHT; // 目標時間周期下的持倉量
Vars
NumericSeries barCnt;
NumericSeries CurBar;
NumericSeries barCntSum;
NumericSeries OpenHT;
NumericSeries HighHT;
NumericSeries LowHT;
NumericSeries CloseHT;
NumericSeries VolHT;
NumericSeries OpenIntHT;
Numeric CurTime;
Numeric PreTime;
bool condition(false);
Numeric i;
Begin
If (TimeFrame == 40320) // 月線
{
CurTime = Month;
PreTime = Month[1];
}
Else If (TimeFrame == 10080) // 周線
{
CurTime = IntPart(DateDiff(19700105,Date)/7);
PreTime = IntPart(DateDiff(19700105,Date[1])/7);
}
Else // 其他時間周期
{
CurTime = IntPart((DateDiff(19700105,date)*1440 + Hour*60 + Minute)/TimeFrame);
PreTime = IntPart((DateDiff(19700105,date[1])*1440 + Hour[1]*60 + Minute[1])/TimeFrame);
}
condition = CurTime != PreTime;
If (CurrentBar==0) // 如果是第一根Bar, CurBar=0
{
barCnt = 0;
CurBar = 0;
OpenHT = Open;
HighHT = High;
LowHT = Low;
CloseHT = Close;
VolHT = Vol;
OpenIntHT = OpenInt;
}
Else
{
If(Condition)
// 如果在目標周期下,屬于另一根K線,則CurBar加1
{
barCnt = 1;
CurBar = CurBar[1] + 1;
OpenHT = Open;
HighHT = High;
LowHT = Low;
VolHT = Vol;
}Else
// 如果在目標周期下,屬于同一根K線,則CurBar不變,但最高價和最低價要記錄價格的變化,成交量要累加
{
barCnt = barCnt[1] + 1;
CurBar = CurBar[1];
OpenHT = OpenHT[1];
HighHT = Max(HighHT[1],High);
LowHT = Min(LowHT[1],Low);
VolHT = VolHT[1] + Vol;
}
// 收盤價和持倉量總是取最新值
CloseHT = Close;
OpenIntHT = OpenInt;
}
// 上面的程序,在每根小周期的K線上,記錄了它所屬的大時間周期下的開高低收等值的變化。
// 接下來,要把在大的時間周期級別上,屬于同一根K線的開高低收這些數據,記錄在這一組小周期K線的最后一根上。
barCntSum = barCnt ;
If(BarsBack == 0)
// 如果Bar偏移參數為0,則取每根小周期K線上保留的大時間周期截止到這根小周期K線為止的BAR數據
{
barCntSum = 0 ;
}Else If(BarsBack == 1)
// 如果Bar偏移參數為1,則取大時間周期的上一根K線的BAr數據
{
barCntSum = barCnt ;
}Else
// 如果BAR偏移參數為其他,則取大時間周期的指定偏移后的那根K線的BAR數據
{
For i = 2 To BarsBack
{
barCntSum = barCntSum + barCnt[barCntSum];
}
}
// 最后將相應的K線數據作為引用參數返回
oCurBar = CurBar;
oOpenHT = OpenHT[barCntSum];
oHighHT = HighHT[barCntSum];
oLowHT = LowHT[barCntSum];
oCloseHT = CloseHT[barCntSum];
oVolHT = VolHT[barCntSum];
oOpenIntHT = OpenIntHT[barCntSum];
Return barCnt;
End - TB技術人員: 回復 1# kspdjm
公式應用中不需要使用NumericRef引用參數類型
有思路,想編寫各種指標公式,程序化交易模型,選股公式,預警公式的朋友
可聯系技術人員 QQ: 262069696 進行 有償 編寫!(不貴!點擊查看價格!)
相關文章
-
沒有相關內容