[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 451

 
Vinin:

Отчего английской поговорке "great minds think alike" в русском
соответствует фраза "у дураков мысли сходятся" ?

 
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 error 4107

EURCHF,M5: invalid price 1.48566000 for OrderClose function


если сделать

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

таже самая ошибка. но причем когда я пишу OrderClose(..) не в отдельной функции а в int start() то такой ошибки не возникает.

в чем дело и как вылечить?



 
Urain писал(а) >>

Отчего английской поговорке "great minds think alike" в русском
соответствует фраза "у дураков мысли сходятся" ?

Значит нам повезло

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

да это понятно, уже раньше писалось на 445 странице просто у меня проблема остается

У меня проблема до смешного дошла. Ошибка в функция закрытия ордера.

дает ошибку (причем в разных терминалах)

EURCHF,M5: OrderClose error 4107

EURCHF,M5: invalid price 1.48566000 for OrderClose function

если сделать

таже самая ошибка. но причем когда я пишу 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 >>:

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

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

это вопрос не новичка :)

 
Помогите решить эту проблему.
Если есть функция разделяющая превышение размера лота на несколько ордеров поделитесь пожалуйста.

Спасибо.