Сообщество Экспертописателей - страница 7

 
Это проверка на особый случай, когда разность == 0
Этот цикл просматривает ряд назад пока не найдет разность отличную от нуля.

Это можно не делать, но тогда существует вероятность пропустить пересечение, если случайно попадем на бар, когда М1 == М2.

Можно в if заменить < на <=, тогда этот случай пересечения поймаем,
но условие даст пересечение и при касании двух рядов без пересечения.

В общем корректнее использовать текст что написан
(только проверить его в работе нужно - я не проверял).

По скорости работы будет то же самое.
Этот цикл будет срабатывать крайне редко,
и практически всегда не более 1 дополнительной проверки.
 
Вопрос к разработчикам: будет ли debugger для метаэдитора?

Вопрос к товарищам по борьбе с хаосом: будет ли MQL4 поддерживать доступ к какой нибудь базе данных?
 
Никто не пытался зашить в эксперта японские свечи?
(Теоретически для этого нет никаких проблем).
 
Вопрос к разработчикам: будет ли debugger для метаэдитора?

Да, будет - он запланирован. Скорее всего будет вместе с новой редакцией компилятора MQL4.
 
Вопрос к тому кто может знает:

Какое время исполнения откомпилированного кода в MQL4 по сравнению с другими языками программирования? Например у си++ самое быстрое, у Java гораздо медленее...
 
в архиве надо поискать, в свое время Ренат хвалился, и надо сказать, не зря. Действительно, очень шустро работают эксперты
 
Очень нужна встроенная функция (метод)

Все моменты продажи считать моментами закрытия попкупки

Все моменты покупки счтать моментами закрытия продажи

Есть такое или нет? А если нет, как мне кажется (может я ошибаюсь), то хорошо бы разработчикам включить такую встроенную функцию.

А может все-таки она есть?
 
Вопрос к тому кто может знает:

Какое время исполнения откомпилированного кода в MQL4 по сравнению с другими языками программирования? Например у си++ самое быстрое, у Java гораздо медленее...

"MQL4, MQL2, EasyLanguage, Wealth-Lab 3.0 и VC++: сравнение скорости"
 
Я уже приводил этот код.
Это как пример, выкиньте только лишнее :))

Перед опкрытием позиции закрываем все противоположные.
int _OrderCloseAll(int _type = EMPTY, int Slippage = 5)
{
   int count = 1;
   int limit = 5;

   while(count > 0 && limit > 0)
   {
      int n = OrdersTotal();

      count = 0;
      limit--;

      for(int i = 0; i < n; i++)
      {
         if (OrderSelect(i, SELECT_BY_POS) == false) continue;
         if (OrderSymbol() != Symbol()) continue;
         if (_Magic != 0 && OrderMagicNumber() != _Magic) continue;
         if (OrderType() == OP_BUY && (_type == EMPTY || _type == OP_BUY)) 
         {
            WaitOrderTimeOut();
            if (OrderSelect(i, SELECT_BY_POS))
               OrderClose(OrderTicket(), OrderLots(), Bid, Slippage);
            count++;
         } else
         if (OrderType() == OP_SELL && (_type == EMPTY || _type == OP_SELL)) 
         {
            WaitOrderTimeOut();
            if (OrderSelect(i, SELECT_BY_POS))
               OrderClose(OrderTicket(), OrderLots(), Ask, Slippage);
            count++;
         }
      }
   }
   return (0);
}
 
Я уже приводил этот код.
Это как пример, выкиньте только лишнее :))

Перед опкрытием позиции закрываем все противоположные.
int _OrderCloseAll(int _type = EMPTY, int Slippage = 5)
{
   int count = 1;
   int limit = 5;

   while(count > 0 && limit > 0)
   {
      int n = OrdersTotal();

      count = 0;
      limit--;

      for(int i = 0; i < n; i++)
      {
      }
   }
   return (0);
}


я уже приводил ссылку на наш англоязычный форум как раз по поводу закрытия всех позиций. видимо, никто не прочитал ветку до конца. более правильным будет обратный цикл
      for(int i = n-1; i >= 0; i--)


Вы ведь удаляете позицию, а она удаляется из списка. на её место попадает следующая позиция, а счётчик инкрементируется, и эта самая позиция просто пропускается.

Причина обращения: