a函數為什么不發單,急.. [開拓者 TB]
- 咨詢內容:
本帖最后由 xiaosong 于 2013-7-24 08:11 編輯
Begin //if(BarStatus==2 && Time==0.090000 && CurrentTime<0.090000) Return; // 集合競價過濾
If (barstatus==0 || GetGlobalVar(1)==InvalidNumeric)
{
If(A_BuyPosition==0)
{
setglobalvar(1,0);
} else If(A_BuyPosition>0)
{
SetGlobalVar(1,1);
}
}
else if(GetGlobalVar(1)!=InvalidNumeric)
{
SetGlobalVar(1,GetGlobalVar(1));
}
If (barstatus==0 || GetGlobalVar(2)==InvalidNumeric)
{
If(A_SellPosition==0)
{
SetGlobalVar(2,0);
} else If(A_SellPosition>0)
{
SetGlobalVar(2,1);
}
} else if(GetGlobalVar(2)!=InvalidNumeric)
{
SetGlobalVar(2,GetGlobalVar(2));
}
If (barstatus==0 || GetGlobalVar(0)==InvalidNumeric)
{
if(A_TotalPosition()==0)
{
SetGlobalVar(0,0);
}else if(A_TotalPosition()!=0)
{
SetGlobalVar(0,1);
}
} else if(GetGlobalVar(0)!=InvalidNumeric)
{
SetGlobalVar(0,GetGlobalVar(0));
}
conEntryReady=CurrentTime*100 >=tradBegin and CurrentTime*100<tradEnd and Q_LowerLimit>20*MinMove*PriceScale AND Q_UpperLimit-C>20*MinMove*PriceScale;//不靠近漲跌停
if(A_GetOpenOrderCount==0 and A_TotalPosition()==0 AND A_AccountID!="" and conEntryReady AND GetGlobalVar(0)==0 AND GetGlobalVar(1)==0 AND GetGlobalVar(2)==0) //返回當前公式應用的帳戶下當前商品的總持倉 (無持倉)
{
IF(a>b) //開多條件
{
A_SendOrder(Enum_Buy,Enum_Entry,Lots,Q_AskPrice()+N*MinMove*PriceScale);//發送委托單 開多倉一手
SetGlobalVar(0,1);
SetGlobalVar(1,1);
SetGlobalVar(2,0);
}
IF(a<b) // 開空條件
{
A_SendOrder(Enum_Sell,Enum_Entry,Lots,Q_BidPrice()-N*MinMove*PriceScale); //發送委托單 開空倉一手
SetGlobalVar(0,1);
SetGlobalVar(1,1);
SetGlobalVar(2,0);
}
}
急啊.......................
...........................................
..................
- TB技術人員:
管量員在嗎?版主在嗎????????????????????????????
我是你們付費用戶啊. - TB客服:
xiaosong 發表于 2013-7-24 08:08
管量員在嗎?版主在嗎????????????????????????????
我是你們付費用戶啊. ...
抱歉啊。公司的論壇維護人員是沒有上夜班的。所以沒法在夜里及時的回復您的問題,請諒解。
你的公式,前面一段的回局變量的賦值是干什么用的呢??感覺邏輯上有不太合理的地方呢。
其一,a_xxx類函數只在最后K線有效,所以你條件里的barstatus==0的情況下是絕對不能取到a_buyposition==0這樣的判斷。于是你只能從 GetGlobalVar(1)==InvalidNumeric這一條件進入判斷。既然如此 ,那barstatus==0放在這里也是沒有必要的。
其二,看到這些全局變量僅是簡單地判斷持倉而進行賦值的。感覺沒有必要啊。在后面的交易中,直接判斷持倉量來決定是否下單更好,不必要增加這三個全局變量的。
交易部分。
1,建議不要使用上述三個全局變量的判斷。直接判斷持倉量來決定開平動作就好。
2,建議將所有用得到的判斷變量都輸出日志,查看一下到底是哪些交易不符合你的要求,從而沒有發出指令的。
3,想要判斷多空均無持倉,直接使用a_buyposition==0,a_sellposition==0即可,不必要判斷a_totalposition的.
4,因為a_xxxx函數,只在最后K線有效,建議在使用中加上barstatus==2的判斷能提高效率。
- 網友回復:
謝謝老大. 謝謝回貼,這個軟件是不錯,是能解決小資金的執行力的問題. 但是編程的確是有難度,這主限制它的推廣
你們不是說:當一個Tick來時觸發條件,這時發單,如果因延時成交回單沒有回來時,再來一個Tick觸發條件,再發一次單.
所以,我設想三個全面變量. 0 為開與平. 1為持多倉與無持多倉, 2為持空倉與無持
Begin //if(BarStatus==2 && Time==0.090000 && CurrentTime<0.090000) Return; // 集合競價過濾
If (barstatus==2 || GetGlobalVar(1)==InvalidNumeric)
{
If(A_BuyPosition==0)
{
setglobalvar(1,0);
} else If(A_BuyPosition>0)
{
SetGlobalVar(1,1);
}
}
else if(barstatus==2 || GetGlobalVar(1)!=InvalidNumeric)
{
SetGlobalVar(1,GetGlobalVar(1));
}
If (barstatus==2 || GetGlobalVar(2)==InvalidNumeric)
{
If(A_SellPosition==0)
{
SetGlobalVar(2,0);
} else If(A_SellPosition>0)
{
SetGlobalVar(2,1);
}
} else if(barstatus==2 GetGlobalVar(2)!=InvalidNumeric)
{
SetGlobalVar(2,GetGlobalVar(2));
}
If (barstatus==2 || GetGlobalVar(0)==InvalidNumeric)
{
if(a_buyposition==0 and a_sellposition==0)
{
SetGlobalVar(0,0);
}else if(A_TotalPosition()!=0)
{
SetGlobalVar(0,1);
}
} else if(barstatus==2 || GetGlobalVar(0)!=InvalidNumeric)
{
SetGlobalVar(0,GetGlobalVar(0));
}
if(barstatus==2 and a_buyposition==0 and a_sellposition==0 AND GetGlobalVar(0)==0 AND GetGlobalVar(1)==0 AND GetGlobalVar
(2)==0) )無持倉
{
IF(a>b) //開多條件
{
A_SendOrder(Enum_Buy,Enum_Entry,Lots,Q_AskPrice()+N*MinMove*PriceScale);//發送委托單 開多倉一手
SetGlobalVar(0,1); 因為開了倉 全面變量0設為1
SetGlobalVar(1,1); 因為開的多 全面變量1設為1
SetGlobalVar(2,0);
}
IF(a<b) // 開空條件
{
A_SendOrder(Enum_Sell,Enum_Entry,Lots,Q_BidPrice()-N*MinMove*PriceScale); //發送委托單 開空倉一手
SetGlobalVar(0,1); 因為開了倉 全面變量0設為1
SetGlobalVar(1,1);
SetGlobalVar(2,0); 因為開的多 全面變量2設為1
}
}
SetGlobalVar(2,GetGlobalVar(2));
}
if(barstatus==2 and a_buyposition>0 and a_sellposition==0 AND GetGlobalVar(0)==1 AND GetGlobalVar(1)==1 AND GetGlobalVar
(2)==0) ) //持多倉,在沒有檢查到用戶函數,又因為有全局變量的二種控制,所以,保證不重發單
{ if(c>b) 平多條件
..........................................
SetGlobalVar(0,1); 因為平了倉 全面變量0設為0
SetGlobalVar(1,1); 因為平多了 全面變量1設為0
SetGlobalVar(2,0);
}
- 網友回復:
xiaosong 發表于 2013-7-24 11:46
謝謝老大. 謝謝回貼,這個軟件是不錯,是能解決小資金的執行力的問題. 但是編程的確是有難度,這主限制它的 ...
這樣寫,感覺不是很合理喲。至少不是很適用于實際交易。
建議先看一下F1里公式策略進階里關于a_sendorder與全局變量配合使用的例子。
有思路,想編寫各種指標公式,程序化交易模型,選股公式,預警公式的朋友
可聯系技術人員 QQ: 1145508240 進行 有償 編寫!(不貴!點擊查看價格!)
相關文章
-
沒有相關內容