版主!为啥此程序会乱发单? [开拓者 TB]
-
咨询内容:
Params
Numeric offset(6) ; //此处添加参数
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(); //账户最新资产 = 按当前Bar开盘价计算的可用资金 + 持仓保证金
TurtleUnits=(TotalEquity/(MarginRatio*ContractUnit()*BigPointValue()*Close))*3/10;
TurtleUnits = IntPart(TurtleUnits); // 对小数取整
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来源:CXH99.COM
-
TB技术人员:
A函数的用法与buy\sell等图表信号函数的用法不同。。是需要自己用代码来控制下单 次数的 。。
一般是使用全局变量进行控制,避免对一个条件多次满足后的重复发单 。
上述代码中,全局变量的初始化并不合理,且在执行委托后并没有及时将全局变量赋值 改变其值,以达到控制下单的目的。
建议还是系统学习后再来使用A函数。 -
TB客服:
谢谢!
-
网友回复:
本帖最后由 qsb588986 于 2017-7-5 05:26 编辑
版主! 这样可以吧!
Params
Numeric offset(6) ; //此处添加参数
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(); //账户最新资产 = 按当前Bar开盘价计算的可用资金 + 持仓保证金
TurtleUnits=(TotalEquity/(MarginRatio*ContractUnit()*BigPointValue()*Close))*3/10;
TurtleUnits = IntPart(TurtleUnits); // 对小数取整
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
有思路,想编写各种指标公式,程序化交易模型,选股公式,预警公式的朋友
可联系技术人员 QQ: 511411198 进行 有偿 编写!(不贵!点击查看价格!)
相关文章
-
没有相关内容