并让我们把它做成一个 "卡通"(多货币)。 - 页 5

 

欣喜得太早了。编译没有错误,但在策略测试器中,当订单被打开时,价格没有通过这个函数来到指标上。我是这样调用的:OP=PriceOpenLastPos();但在代码中,OP仍然等于零。

在可视化模式下,测试器没有向挂在窗口中的指标传递数值,这是测试器的问题吗?

 
Angela писал(а)>>

欣喜得太早了。编译没有错误,但在策略测试器中,当订单被打开时,价格没有通过这个函数来到指标上。我是这样调用的:OP=PriceOpenLastPos();但在代码中,OP仍然等于零。

这是不是测试的问题,它没有把数值传给挂在可视化模式窗口中的指标?

指示器不能看到测试器中正在发生的事情。但如果有开放的订单,它就会显示出来。

 
ALex2008 писал(а)>>

请回复)

//-------Поиск ордеров
bool WorkOrders(){
      for (int i=OrdersTotal()-1; i>=0; i--){
      if (!OrderSelect( i, SELECT_BY_POS))  continue;
      if (OrderSymbol()!=Symbol())        continue;
      Type = OrderType();
      Ticket=OrderTicket();
      return(true);
  }
  return(false);  
}
 
Vinin >> :

固定了...但问题仍然存在(。

删除订单 DellAllOrders()函数不起作用...

//-------Удаление всех ордеров
void DellAllOrders(){
      if( WorkOrders())OrderClose( Ticket,OrderLots(),OrderClosePrice(),10);
  }
  
//-------Поиск ордеров
bool WorkOrders(){
      for (int i=OrdersTotal()-1; i>=0; i--){
      if (!OrderSelect( i, SELECT_BY_POS))  continue;
      if (OrderSymbol()!=Symbol())        continue;
      Type = OrderType();
      Ticket=OrderTicket();
      return(true);}
  return(false);
  }

我想我应该加上





OrderDelete(Ticket);

像这样....?

//-------Удаление всех ордеров, открытых и отложенных
void DellAllOrders(){
      if( WorkOrders()){
      OrderClose( Ticket,OrderLots(),OrderClosePrice(),10);
      OrderDelete( Ticket);}
  }
 
ALex2008 писал(а)>>

固定了...但问题仍然存在(。

DellAllOrders()不工作。

//-------Удаление всех ордеров
void DellAllOrders(){
  for (int i=OrdersTotal()-1; i>=0; i--){
      if (!OrderSelect( i, SELECT_BY_POS))  continue;
      if (OrderSymbol()!=Symbol())        continue;
      if (OrderType()<=OP_SELL) OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),10);
      else OrderDelete(OrderTicket());
  }
}
也删除了待处理的订单。
 
Vinin >> :
也删除了延期付款。

谢谢你)

>> 我想现在一切都应该正常了。

//-------Удаление всех ордеров, открытых и отложенных
void DellAllOrders(){
      if( WorkOrders()){
      if( Type<=1)OrderClose( Ticket,OrderLots(),OrderClosePrice(),10);
      else OrderDelete( Ticket);}
  }
我还注意到在重新保存EA时出现了一个错误(我想如果我只是重新启动终端,也会出现同样的情况)......
在设置止损前增加了一个检查...


if(WorkOrders())
      if ((Type<=1)&& (Stop==0))SetStop();



//-------Поиск ордеров
bool WorkOrders(){
      for (int i=OrdersTotal()-1; i>=0; i--){
      if (!OrderSelect( i, SELECT_BY_POS))  continue;
      if (OrderSymbol()!=Symbol())        continue;
      Type  = OrderType();
      Ticket=OrderTicket();
      Stop  =OrderStopLoss();
      return(true);}
  return(false);
  }
 
人)看...也许还有其他问题,需要调整的地方?
 
ALex2008 >> :
人)看...也许还有其他问题,有什么需要调整的吗?
OrderSend(Symbol(), OP_BUYSTOP, 0.1, Enter, 0, 0, Ask+ Profit, 0, 0,0, Green);

>>应该是这样的吗?

Enter+ Profit
 
Swan >> :

>> 这就是它应该工作的方式,或者是

这真的是一个错误)这是一个钟摆,这是正确的!!!。>> 谢谢你。重新制作了它。

 
ALex2008 >> :

错误是真的)不过这并不关键...>> 谢谢你。

错误130一直存在。

应检查StopLevel,用于StopLoss和Enter。


>>和icho。

if(b0<b1) StopLoss=b1;
else StopLoss=b0;

>>应该选择最大的那个?