[存档!]任何菜鸟问题,为了不使论坛变得混乱。专业人士,不要路过。没有你,哪里都不能去 - 4. - 页 39

 
artem86:

能否请你帮助我?如何在达到一定价格时,用同样的魔法关闭5个挂单。

提前感谢您!


if (OrdersTotal()>0)
{  for (int i=OrdersTotal()-1; i>=0; i--)
   {  if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
      {  if(OrderMagicNumber()==magic_number)
         {  if (OrderClose(OrderTicket(),LOT,price,3)==true)
            {  Print("Error = ",GetLastError()); return(0);
}  }  }  }  }
如果这些订单都是卖出的,那么价格=Ask,如果是买入的,那么价格=Bid
 
paladin80:
如果订单是为了卖出,那么价格=询价,如果是为了买入,那么价格=竞价。


错了,你应该

if (OrdersTotal()>0)
{  for (int i=OrdersTotal()-1; i>=0; i--)
   {  if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
      {  if(OrderMagicNumber()==magic_number)
         {  if (OrderDelete(OrderTicket())==true)
              {  
              Print("Error = ",GetLastError()); return(0);
              } 
         } 
      }  
   }  
}
 
r772ra:


错了,你必须

妈的,没注意到我应该关闭挂单,我在想平仓的事。
 

伙计们 - 告诉我,在测试器中,然后在交易账户上进行交易时,包括手动交易,结果发现可以不对开仓量 进行正常化,而会按要求的量开仓。例如,如果我开了一个0.1210手的订单,终端将以0.12开仓,也就是说,"额外的 "小数部分被默认丢弃了。

请告知这是否是终端的另一次 "升级",还是原本就可以做到。

我以前使用过这种交易量正常化的方法,但我在一个操作中错过了这一点,订单一直在开仓,专家顾问选项卡在开仓前给了我初步的交易量,特别是0.121手--我在一个模拟账户上测试。

批量的规范化的功能。

//+------------------------------------------------------------------+
//| Нормализация лота                                                |
//+------------------------------------------------------------------+

double NormalizeLots(double lot)
{
   double lotStep = MarketInfo(Symbol(), MODE_LOTSTEP);
   double lots = NormalizeDouble(lot / lotStep, 0) * lotStep;   
   lots = MathMax(lots, MarketInfo(Symbol(), MODE_MINLOT));
   lots = MathMin(lots, MarketInfo(Symbol(), MODE_MAXLOT));   
   return (lots);
}

从EA开始就叫它。

// ---------НОРМАЛИЗУЕМ НОВЫЕ РАСЧЕТНЫЕ ЛОТЫ И ОТКРЫВАЕМ ОЧЕРЕДНУЮ ПОЗИЦИЮ...            
                    Lots_New = NormalizeLots(Lots_New);
                    if (lastType == OP_SELL) WmOrderSend(Symbol(), OP_BUY, Lots_New, Ask, 0, 0, "итерация" , MagicNumber);
                    if (lastType == OP_BUY)  WmOrderSend(Symbol(), OP_SELL,Lots_New, Bid, 0, 0, "итерация" , MagicNumber);

谁意识到了这一点--评论,请...

P.S. 再次检查--显然有一种情况,当你试图打开0.1466的量时--打开0.14,即拒绝小数点后第二个符号右边的一切。

如果你做一个归一化,看起来会开出0.15手--即有四舍五入。

我得去看看...

P.P.S. 都一样:谁知道--请发表评论...

 

他妈的无视。

 
求助......我在一个模拟和一个真实账户上运行专家顾问,它说:将在下一个刻度线时启动......刻度线来了,但它不会启动,尽管 "允许EA交易 "选项被选中,EA被启用,日志中没有错误,互联网工作,其他EA也在工作。
 
sellena:
如果有帮助的话:在我添加了这篇文章 中的过滤功能后,EA就不再开启了

如果有帮助,可以和这里的 一个工人谈谈。
 
sergeev:

如果有帮助,可以和这里的 一个工人谈谈。
亚历克斯,如果你有时间,看看我的问题...谢谢你。
 
Roman.:
亚历克斯,如果你有时间,看看我的问题...谢谢你。

我可以告诉你一件事--我已经联系了服务部门(在另一个场合),他们告诉我:"依赖 默认值是有害的,如果你想确定,就使用你自己的过滤器和处理方法"。所以这取决于你...
 
Roman.:
亚历克斯,如果你有时间的话,请看看我的问题...谢谢。

常见问题中说得很对。你不能依赖 "默认值"。因为我记得,如果你在发送订单 前不做规范化处理,经常会出现131错误(错误的批次)。
也许现在MMO在发送执行命令时,已经在服务器上做了他们自己的默认批量检查。

因此,在发送之前,你应该总是做你自己的价格和批次的规范化。

这对你来说是良好的编码规则,也是对未来潜在问题的更少麻烦的保证。