给EA增加一个新的功能测试的时候发现没好用,请大佬帮忙看下
//写这个是为了当信号出现后进场的单子止损掉后,再进场的,在满足进场条件下,第二单半仓,第三单在第二单基础上再减半(变量在程序中都有声明的这里不写了)
int _GetLastError = 0, _OrdersTotal = OrdersTotal();
if(是否多次开仓!=0)
{
for(int z=_OrdersTotal-1; z>=0; z--)
{
//多单止损
if(OrderType() == OP_BUY)
{
if(Bid<=OrderOpenPrice()-止损点数*Point)
{
if(Close[0] )//止损被扫掉了,但是当时不进场,等当前时间周期K线走完再进场
{
i++; //为了计数,当第三次止损并且符合进场条件不进场
if(A>0&& C>0 )//这是下单条件
{
if(i<=2)
{
if(是否开启半仓!=0) //这是一个开半仓的一个开关,关掉就是按照设定的开仓
{
if(i==1)
{
lots=lots/2;
}else{
lots=(lots/2)/2;
}
}
printf("多单");
bool OPENBUY=OrderSend(Symbol(),OP_BUY,lots,Ask,5,0,0,"buy",_MagicNumber,0,Green);
return;
}
}
}
}
}
//如果空单止损
if(OrderType() == OP_SELL)
{
if(Ask>=OrderOpenPrice()+止损点数*Point)
{
if(Close[0] )
{
i++;
if(A<0 && C<0 )//这是下单条件
{
if(i<=2)
{
if(是否开启半仓!=0)
{
if(i==1)
{
lots=lots/2;
}else{
lots=(lots/2)/2;
}
}
printf("空单");
bool OPENSELL=OrderSend(Symbol(),OP_SELL,lots,Bid,5,0,0,"sell",_MagicNumber,0,Red);
return;
}
}
}
}
}
}
}
|
|
|
|
|
新的K线开始下单用这个条件是不是也行:
Time[0]-TimeCurrent()==0 |
|
|
|
|
今天运行了一天发现了不少问题:
首先EA不能自动下单了
其次里面计数,当满足指标时进场第几单,计数有问题
要加上那个货币兑,魔术号要一样(区分货币兑和时间周期)
判断止损的条件可能有问题,我是小白,没有写过只有一点写代码的基础
应该还要加上判断当前货币兑当前周期是否有新单进场,如果有证明信号有中断并且新出来的这个信号已经下了一单。在这种信号中断后是不能再重新补仓的。
求大神大概给一个框架。 |
|
|
|
|