[警告关闭!]任何新手问题,为了不给论坛添乱。专业人士,不要走过。没有你,哪里都不能去。 - 页 451

 
Vinin:

为什么英语谚语 "伟大的思想是一样的 "在俄语中是这样的
与 "傻瓜都是这样想的 "这句话相对应?

 
Vinin >>:

Наверно надо предварительно выбрать ордер.

我知道,我以前在第445页写过,但我仍然有一个问题。


我的问题是到了一个可笑的地步。在订单关闭功能中出错。

OrserClose(int tip){
if( tip==1){
for( i=0; i<OrdersTotal(); i++){
           if(true==OrderSelect( i, SELECT_BY_POS, MODE_TRADES)){
           if(OrderType()==OP_BUY && OrderSymbol()==Symbol() && OrderMagicNumber() == Magic){
           OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);
               }
           }
         }  
}

我得到了一个错误(在不同的终端)

EURCHF,M5: OrderClose错误 4107

EURCHF,M5: OrderClose函数的无效价格1.48566000


如果我这样做

OrderClose(OrderTicket(), OrderLots(),OrderClosePrice(),3, Violet);
OrderClose(OrderTicket(),OrderLots(),MarketInfo(Symbol(),MODE_BID),3,Violet);

但当我不在单独的函数中写OrderClose(...) 而是在int start()中写,这个错误就不会发生

问题是什么,如何解决?



 
Urain писал(а)>>

为什么英语谚语 "伟大的思想是一样的 "在俄语中是这样的
与 "傻子都是这样想的 "相对应?

那么我们就很幸运了。

 
T-G писал(а)>>

我知道,我以前在第445页写过,但我仍然有一个问题。

我的问题是到了一个可笑的地步。在订单关闭功能中出错。

我得到了一个错误(在不同的终端)

EURCHF,M5: OrderClose错误 4107

EURCHF,M5: OrderClose函数的无效价格1.48566000

如果我这样做

但当我不在单独的函数中写OrderClose(...) 而是在int start()中写,这个错误就不会发生

问题是什么,如何解决?

我不知道,我不知道。我总是使用我自己的函数来关闭订单。

作为一个例子,这个。

//+------------------------------------------------------------------+
//|                                         Функция закрытия ордеров |
//|                                Copyright © 2010, Victor Nicolaev |
//|                                            e-mail: vinin@mail.ru |
//+------------------------------------------------------------------+
//| void Order_Close(int lMagic, int lOP=-1);                        |
//+------------------------------------------------------------------+
void Order_Close(int lMagic, int lOP=-1){
   bool res;
   GetLastError();
   for(int i = OrdersTotal() - 1;  i >= 0;  i--) {
      if (!OrderSelect( i, SELECT_BY_POS, MODE_TRADES))   continue;
      if (OrderSymbol() != Symbol())                     continue;
      if (OrderMagicNumber() != lMagic)                   continue;
      if (OrderType()!= lOP && lOP!=-1)                     continue;
      
      RefreshRates();
      double _ask      =MarketInfo(Symbol(),MODE_ASK);
      double  _bid     =MarketInfo(Symbol(),MODE_BID);
      double  _point   =MarketInfo(Symbol(),MODE_POINT);
      double  _digits  =MarketInfo(Symbol(),MODE_DIGITS);

      double ClosePrice=NormalizeDouble( iif(OrderType()==OP_BUY,_bid, _ask),_digits);
      res=OrderClose(OrderTicket(), OrderLots(), ClosePrice, 3, iif(OrderType()==OP_BUY, clCloseBuy, clCloseSell));
      if (! res) {
         int err=GetLastError();
         Print("Error(", err,") delete order ", NameOP[ lOP],": ", ErrorDescription( err));
      }
   }
}

要使用它,你需要更多的功能

//+------------------------------------------------------------------+
//|                                    Функция логического сравнения |
//|                                Copyright © 2010, Victor Nicolaev |
//|                                            e-mail: vinin@mail.ru |
//+------------------------------------------------------------------+
//| double iif(bool A, double B, double C);                          |
//+------------------------------------------------------------------+
double iif(bool A, double B, double C) {if( A) return( B); return( C); }
 

帮助解决控制历史漏洞的问题。请告知专家顾问有什么真正有效的机制来捕捉4066的错误。

如果对历史数据加载的程序没有明确的控制,使用专家顾问的交易就没有意义。

无论你使用什么交易策略,这种交易的风险都会趋于无限大。


我非常惊讶,这个问题的解决方案,用户必须自己想出来,并通过一个地方。

我认为开发商在这个问题上没有明确的支持,纯粹是个圈套。

我认为MetaQuotes可以针对常见的问题和难题发布一套推荐和测试过的解决方案。

 
MoneyJinn писал(а)>>

我认为MetaQuotes可以为标准的常见问题和任务发布一套推荐和测试的解决方案。

这篇文章 "没有漏洞的图表"。可能会有所帮助...https://www.mql5.com/ru/articles/1407

 

主题是 "任何问题",而不仅仅是关于代码,对吗?

我有个问题,或者说我想听听你的意见,你认为价格会往哪里走?



 
T-G >>:

Тема же называется "любой вопрос" а не только по коду?

У меня вопрос, а точнее хочется узнать мнение, куда по вашему мнению двинется цена?

这不是一个初学者的问题 :)

 
帮助解决这个问题。
如果有一个函数可以将一个超大的批次分成多个订单,请分享。

谢谢你。




原因: