Выпущена бета-версия MetaTrader 4 Build 529 с новым компилятором - страница 126

 
Wahoo:


физический смысл в том, чтобы проверить, что символ имя которого введено в виде строки во входных параметрах советника доступен для торговли. Идентичный код в МТ5 работает.

Код который я привел - только для примера. Там немного по другому, но смысл не меняется.

P.S. Что по поводу ошибки 138 в тестере?

Код:

Результат:

Проверьте:

if (OrderSend(SYMBOL,OP_BUY,0.1,NormalizeDouble(ask,digits),1000,0,0,"Test",0,0,CLR_NONE)<0) {
   Print("ask = "+DoubleToStr(ask,Digits)+", bid = "+DoubleToStr(bid,Digits)+", digits = "+digits);
   }
Что мешает посмотреть причину?
 
Renat:
Это означает, что результаты проходов были бесполезными и отброшены.


Спасибо за перевод. А то я мучился с переводом, никак въехать не мог...

Вот только на старом билде оптмизация длиться часа 3 и находит порядка 2000 прибыльных параметров советника. Новый билд оптимизируется поначалу номально с полминуты, а то и меньше, находит прибыльные праметры и потом резко срывается и заканчивает оптимизацию.

Повторюсь, я уже писал про такое странное поведение при оптимизации с месяц назад. Вроде исправили. Теперь вот та же проблема.

 
artmedia70:

Проверьте:

Что мешает посмотреть причину?


Ничто не мешает.

void OnTick()
  {
   if(OrdersTotal()==0)
     {
      string SYMBOL=Symbol();
      int digits=(int)SymbolInfoInteger(SYMBOL,SYMBOL_DIGITS);
      MqlTick lasttick={0};
      if(!SymbolInfoTick(SYMBOL,lasttick))
         return;
      double ask=lasttick.ask;
      double bid=lasttick.bid;

      if(OrderSend(SYMBOL,OP_BUY,0.1,NormalizeDouble(ask,digits),1000,0,0,"Test",0,0,CLR_NONE)<0) 
        {
         Print("ask = "+DoubleToStr(ask,Digits)+", bid = "+DoubleToStr(bid,Digits)+", digits = "+(string)digits);
        }
     }
  }

 
Вопрос к Метаквотам: Почему изменен тип iVolume с double на ulong??? Зачем потребовалось менять тип только у одного тех.индикатора??? Почему нельзя было оставить как было?
 
Wahoo:


Ничто не мешает.


Вобщем как-то так. Походу SymbolInfoTick по прежнему кривовато работает (он судя по всему копирует РЕАЛЬНУЮ последнюю цену, а не из истории):

void OnTick()
  {
   if(OrdersTotal()==0)
     {
      string SYMBOL=Symbol();
      int digits=(int)SymbolInfoInteger(SYMBOL,SYMBOL_DIGITS);
      MqlTick lasttick={0};
      if(!SymbolInfoTick(SYMBOL,lasttick))
         return;
      double ask=lasttick.ask;
      double bid=lasttick.bid;

      if(OrderSend(SYMBOL,OP_BUY,0.1,NormalizeDouble(ask,digits),1000,0,0,"Test",0,0,CLR_NONE)<0)
        {
         Print(SYMBOL+" ask = "+DoubleToStr(ask,Digits)+", bid = "+DoubleToStr(bid,Digits)+", digits = "+(string)digits);
         if(OrderSend(Symbol(),OP_BUY,0.1,NormalizeDouble(Ask,Digits),100,0,0,"Test",0,0,CLR_NONE)>0)
            Print("Opened using Ask ="+DoubleToStr(Ask,Digits));
        }

      //=== Final Check
      SymbolInfoTick(SYMBOL,lasttick);
      Print("Ask: "+(string)Ask+"  lastick.ask: "+(string)lasttick.ask);

     }
  }

Результат:

 
Volume пришлось сменить ради совместимости с МТ5. Теперь внутренне бары в МТ4 такие же как и в пятерке.
 
Renat:
Volume пришлось сменить ради совместимости с МТ5. Теперь внутренне бары в МТ4 такие же как и в пятерке.

Это не может служить причиной сильного рассогласования результатов теста на вашем демо-счёте и на, например, Альпари, где мой заказчик тестирует.

Раньше, даже при разности в котировках, не было такой совершенно разной работы одного советника на разных счетах. Теперь же в визуальном режиме видно как в одном тесте позиция чётко идёт либо в плюс, либо в минус, на другом же тесте ситуация прямо противоположна бывает.

 
Надо детально смотреть на расхождения со всеми логами. Выводы по общему взгляду нельзя делать. То есть, нужны детали.
 
Renat:
Надо детально смотреть на расхождения со всеми логами. Выводы по общему взгляду нельзя делать. То есть, нужны детали.
Ясно. Детализировать буду уже позже. Сейчас главное на повестке - правильно алгоритм доделать.
 
МТ 560, МЕ 881. Снова про возрождение старых ошибок, уже казалось бы когда-то вами закрытых при производстве обновлений, описался в СервисДеск.
Причина обращения: