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