請教一下條件問題 [文華財經]
-
咨詢內容:
?
Datum1 = Def_TickData("m1709",1,20);//第一腿合約取20筆TICK
?? Datum2 = Def_TickData("m1711",1,20);//第二腿合約取20筆TICK
?? If(Datum1.State == 1)
???{
????? For i = 0 To Size - 1?
????? {
??????Data1Ma = (Datum1[i].TickPrice + Data1Ma) / 20;//計算第一腿合約的20筆TICK算數平均值
?
????? }
???}
???If(Datum2.State == 1)
???{
????? For j = 0 To Size - 1
????? {
??????Data2Ma = (Datum2[j].TickPrice + Data2Ma) / 20;//計算第一腿合約的20筆TICK算數平均值
??
????? }
???}?? DataCond = Data1Ma - Data2Ma;
?? If(DataCond? < 48)
???{
????? Buy;
???}?
?
這樣寫之后為何第一腿和第二腿差價是81也會開倉?
?
?來源:程序化99
- 文華技術人員: ?來源:程序化99
- 文華技術人員:m1709和?來源:程序化99
- 文華技術人員:m1711合約已經交割了 ?來源:程序化99
-
文華技術人員:
?來源:程序化99 - 文華技術人員:套利合約沒有數據的,所以函數是返回為0 的 ?來源:程序化99
-
文華技術人員:
?來源:程序化99 - 文華技術人員:DataCond=0 滿足小于48的條件,所以開倉?來源:程序化99
-
文華技術人員:
?來源:程序化99 -
文華技術人員:
? ? ??
?來源: www.tumamayizhan.com
-
文華客服:
?
Begin
?? Datum1 = Def_TickData("8365",1,20);//第一腿合約取20筆TICK
?? Datum2 = Def_TickData("8369",1,20);//第二腿合約取20筆TICK
?? If(Datum1.State == 1)
???{
????? For i = 0 To Size - 1?
????? {
??????Data1Ma = (Datum1[i].TickPrice + Data1Ma) / 20;//計算第一腿合約的20筆TICK算數平均值
?
????? }
???}
???If(Datum2.State == 1)
???{
????? For j = 0 To Size - 1
????? {
??????Data2Ma = (Datum2[j].TickPrice + Data2Ma) / 20;//計算第一腿合約的20筆TICK算數平均值
??
????? }
???}
?? If(Data1Ma - Data2Ma? < 59)
???{
????? Buy;
???}?? else If(Data1Ma - Data2Ma > 60)
???{
????? Sell;
???}?
?
我改成這樣寫第一二腿相差81也會開倉啊,是我上面截取的不是一二腿的20筆平均tick嗎?
?
-
網友回復:
您樓上源碼是逐筆tick進行取值的
而加載到k線圖讀取的是當根k線的返回值,無法顯示逐筆明細的,所以返回值都是0的
但是模型在計算的過程中是滿足了開倉條件的,所以進行了開倉,只是您回測查看K線顯示不出來?
您可以將模型修改為算法交易模型,加載到算法交易池中,檢驗模型的逐筆運行效果
PS:您需要注意的是m1811合約交易量少,讀取不到20筆tick 的,您可以更換一個相對活躍的合約
模型修改:
Data ?Data1:"m1809";//第一腿合約 ?Data2:"m1811";//第二腿合約Vars//------------------------------定義普通變量------------------------------ ?Numeric Data1Ma;//第一腿合約近20筆TICK均值 ?Numeric Data2Ma;//第二腿合約近20筆TICK均值 ?Numeric Size(20);//Tick區大小 ?Numeric i;//For循環變量 ? ? ? ? ? ? ? ? ? ?Numeric j;//For循環變量 ? ? ? ? ? ? ? ? ? ? ? ? ?Numeric DataCond;//------------------------------定義數據區變量------------------------------ ?Var_TickData Datum1;//第一腿合約數據區 ?Var_TickData Datum2;//第二腿合約數據區BeginDatum1 = Def_TickData("m1809",1,20);//第一腿合約取20筆TICKDatum2 = Def_TickData("m1811",1,20);//第二腿合約取20筆TICK? ?If(Datum1.State == 1)? ?{? ? ? For i = 0 To Size - 1 ?? ? ? {? ? ? Data1Ma = (Datum1[i].TickPrice + Data1Ma) / 20;//計算第一腿合約的20筆TICK算數平均值? ? ? }? ?}? ?If(Datum2.State == 1)? ?{? ? ? For j = 0 To Size - 1? ? ? {? ? ? Data2Ma = (Datum2[j].TickPrice + Data2Ma) / 20;//計算第一腿合約的20筆TICK算數平均值??? ? ? }? ?}? ?DataCond = Data1Ma - Data2Ma;? Commentary("m1809:"+Text(Data1Ma));? Commentary("m1811:"+Text(Data2Ma));? Commentary("價格"+Text(DataCond));End?
文件名:算法.png?
- 網友回復: ?這個m1809,m1811的代碼在哪里找啊?以及這么寫的話開倉和平倉按照范例里的寫就可以了嗎?
有思路,想編寫各種指標公式,程序化交易模型,選股公式,預警公式的朋友
可聯系技術人員 QQ: 511411198 進行 有償 編寫!(不貴!點擊查看價格!)
相關文章
-
沒有相關內容