给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不能自动下单了
 其次里面计数,当满足指标时进场第几单,计数有问题
 要加上那个货币兑,魔术号要一样(区分货币兑和时间周期)
 判断止损的条件可能有问题,我是小白,没有写过只有一点写代码的基础
 应该还要加上判断当前货币兑当前周期是否有新单进场,如果有证明信号有中断并且新出来的这个信号已经下了一单。在这种信号中断后是不能再重新补仓的。
 求大神大概给一个框架。
 | 
 | 
|  | 
|
|  | 
|  |