版主!為啥此程序會(huì)亂發(fā)單?
作者:開(kāi)拓者 TB 來(lái)源:cxh99.com 發(fā)布時(shí)間:2017年12月19日
-
咨詢內(nèi)容:
Params
Numeric offset(6)? ? ? ? ;? ? ? ? //此處添加參數(shù)
Numeric a(5);
Numeric b(10);
Numeric e(20);
Numeric f(80);
Vars
Numeric aa;
Numeric bb;
Numeric cc;
Numeric dd;
Numeric totalequity;
Numeric turtleunits;
? ? ? ? //此處添加變量
Begin
if(date!=date[1] && high==low)
Return;
aa=Average(close,a);
bb=Average(close,b);
cc=average(close,e);
dd=Average(close,f);
TotalEquity = Portfolio_CurrentCapital() + Portfolio_UsedMargin();? ?//賬戶最新資產(chǎn) = 按當(dāng)前Bar開(kāi)盤(pán)價(jià)計(jì)算的可用資金 + 持倉(cāng)保證金
TurtleUnits=(TotalEquity/(MarginRatio*ContractUnit()*BigPointValue()*Close))*3/10;
TurtleUnits = IntPart(TurtleUnits); // 對(duì)小數(shù)取整
if(BarStatus==2 || GetGlobalVar(0)==InvalidNumeric)
SetGlobalVar(0,0);
if(A_BuyPosition==0 && A_SellPosition==0 && GetGlobalVar(0)==0)
{
if(aa>dd && bb>dd &&??cc>dd)
{
A_SendOrder(Enum_Buy,Enum_Entry,TurtleUnits,Q_BidPrice+offset*MinMove*PriceScale);
}
Else if(aa<dd && bb<dd && cc<dd)
{
A_SendOrder(Enum_Sell,Enum_Entry,TurtleUnits,Q_BidPrice-offset*MinMove*PriceScale);
}
}
if(A_SellPosition>0 && GetGlobalVar(0)==0)
{
if(aa>dd && bb>dd &&??cc>dd)
{
A_SendOrder(Enum_Buy,Enum_Exit,A_SellPosition,Q_BidPrice+offset*MinMove*PriceScale);
A_SendOrder(Enum_Buy,Enum_Entry,TurtleUnits,Q_BidPrice+offset*MinMove*PriceScale);
}
}
if(A_BuyPosition>0 && GetGlobalVar(0)==0)
{
if(aa<dd && bb<dd && cc<dd)
{
A_SendOrder(Enum_Sell,Enum_Exit,A_BuyPosition,Q_BidPrice-offset*MinMove*PriceScale);
A_SendOrder(Enum_Sell,Enum_Entry,TurtleUnits,Q_BidPrice-offset*MinMove*PriceScale);
}
}
End
?
?來(lái)源:CXH99.COM
-
TB技術(shù)人員:
A函數(shù)的用法與buy\sell等圖表信號(hào)函數(shù)的用法不同。。是需要自己用代碼來(lái)控制下單 次數(shù)的 。。
一般是使用全局變量進(jìn)行控制,避免對(duì)一個(gè)條件多次滿足后的重復(fù)發(fā)單 。
上述代碼中,全局變量的初始化并不合理,且在執(zhí)行委托后并沒(méi)有及時(shí)將全局變量賦值 改變其值,以達(dá)到控制下單的目的。
建議還是系統(tǒng)學(xué)習(xí)后再來(lái)使用A函數(shù)。
?
-
TB客服:
謝謝!
?
-
網(wǎng)友回復(fù):
本帖最后由 qsb588986 于 2017-7-5 05:26 編輯
版主!??這樣可以吧!
Params
Numeric offset(6)? ? ? ? ;? ? ? ? //此處添加參數(shù)
Numeric a(5);
Numeric b(10);
Numeric e(20);
Numeric f(80);
Vars
Numeric aa;
Numeric bb;
Numeric cc;
Numeric dd;
Numeric totalequity;
Numeric turtleunits;
? ? ? ? //此處添加變量
Begin
if(date!=date[1] && high==low)
Return;
aa=Average(close,a);
bb=Average(close,b);
cc=average(close,e);
dd=Average(close,f);
TotalEquity = Portfolio_CurrentCapital() + Portfolio_UsedMargin();? ?//賬戶最新資產(chǎn) = 按當(dāng)前Bar開(kāi)盤(pán)價(jià)計(jì)算的可用資金 + 持倉(cāng)保證金
TurtleUnits=(TotalEquity/(MarginRatio*ContractUnit()*BigPointValue()*Close))*3/10;
TurtleUnits = IntPart(TurtleUnits); // 對(duì)小數(shù)取整
if(BarStatus==0 || GetGlobalVar(0)==InvalidNumeric)
SetGlobalVar(0,0);
setglobalvar(1,1);
setglobalvar(2,1);
if(A_BuyPosition==0 && A_SellPosition==0 && GetGlobalVar(0)==0)
{
if(aa>dd && bb>dd &&??cc>dd)
{
A_SendOrder(Enum_Buy,Enum_Entry,TurtleUnits,Q_BidPrice+offset*MinMove*PriceScale);
SetGlobalVar(0,1);
SetGlobalVar(2,1);
}
Else if(aa<dd && bb<dd && cc<dd)
{
A_SendOrder(Enum_Sell,Enum_Entry,TurtleUnits,Q_BidPrice-offset*MinMove*PriceScale);
SetGlobalVar(0,1);
SetGlobalVar(1,1);
}
}
if(A_SellPosition>0 && GetGlobalVar(1)==1)
{
if(aa>dd && bb>dd &&??cc>dd)
{
A_SendOrder(Enum_Buy,Enum_Exit,A_SellPosition,Q_BidPrice+offset*MinMove*PriceScale);
A_SendOrder(Enum_Buy,Enum_Entry,TurtleUnits,Q_BidPrice+offset*MinMove*PriceScale);
SetGlobalVar(1,2);
SetGlobalVar(2,1);
}
}
if(A_BuyPosition>0 && GetGlobalVar(2)==1)
{
if(aa<dd && bb<dd && cc<dd)
{
A_SendOrder(Enum_Sell,Enum_Exit,A_BuyPosition,Q_BidPrice-offset*MinMove*PriceScale);
A_SendOrder(Enum_Sell,Enum_Entry,TurtleUnits,Q_BidPrice-offset*MinMove*PriceScale);
SetGlobalVar(2,2);
SetGlobalVar(1,1);
}
}
End