Ошибки, баги, вопросы - страница 3047

 
Yury Lemeshev:
Доброго времени суток. Помогите. SymbolSelect и SymbolExist работаю по разному?

Print(SymbolSelect( "EURUSD" ,true)); Получаю ответ - true
Print(SymbolExist("EURUSD",false)); Получаю ошибку - 'true' - variable expected

Читайте внимательно документацию: SymbolExist

bool  SymbolExist(
   const string  name,    // имя символа
   bool&   is_custom      // признак пользовательского символа
   );


Вот как это выглядит в коде:

   Print(SymbolSelect("EURUSD",true));
   bool exist=false;
   Print(SymbolExist("EURUSD",exist));
Документация по MQL5: Получение рыночной информации / SymbolExist
Документация по MQL5: Получение рыночной информации / SymbolExist
  • www.mql5.com
SymbolExist - Получение рыночной информации - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Vladimir Karputov:

Читайте внимательно документацию: SymbolExist


Вот как это выглядит в коде:

Спасибо, Владимир

 

Вопрос по инициализации индикаторов экспертом при тестировании в визуальном режиме.

Если делаю инициализацию индикаторов в OnInit() { } эксперта, то в визуальном тестере индикатор обычно не появляется и не отрисовывается.

При этом в логе инициализация прошла, handle получен.  Такое ощущение, что в визуальном режиме тестер не успевает что-то сделать и индикатор не цепляется к графику.

Если делаю инициализацию индикаторов в OnTick() { } эксперта, то проблема пропадает, однако это порождает лишнюю писанину, проверки и прочее.


Если раскомментить IndicatorInitialization() в OnTick и закомментировать в OnInit, то начинает работать. 

int  TicksTesterIndicatorHandle = INVALID_HANDLE;
bool InitComplite=false;
int OnInit()
  {
   IndicatorInitialization();
   return(INIT_SUCCEEDED);
  }

void OnDeinit(const int reason)
  {
   IndicatorRelease(TicksTesterIndicatorHandle);
  }

void OnTick()
  {
//if(!InitComplite)
//  {
//   IndicatorInitialization();
//  }
  }
//+------------------------------------------------------------------+
bool IndicatorInitialization()
  {
//---Получить хэндл индикатора TicksTesterIndicator
   TicksTesterIndicatorHandle=iCustom(NULL, _Period, "OnInit_TestIndicator");

//--- Нужно проверить, не были ли возвращены значения Invalid Handle
   if(TicksTesterIndicatorHandle<0)
     {
      Print("Ошибка при создании индикатора TicksTesterIndicator - номер ошибки: ",GetLastError(),"!!!");
      return(false);
     }
   else
     {
      Print("TicksTesterIndicator инициализирован, хэндл: ", TicksTesterIndicatorHandle);
      ArraySetAsSeries(Buf, true);
      InitComplite=true;
     }
   return(true);
  }
 

Продолжение истории волшебных файлов:

После зависания MetaEditor и последующей перезагрузки - этот файл стал отображаться как набор кракозябр, но тот же notepad его нормально открывает (убрал лишнее)

Файлы:
main.txt  1 kb
 

День добрый,

Android MT5/MT4: В окне размещения ордера цвета тиковых линий перепутаны. Тоже в цветовых схемах графиков.

 

Всем привет!

Не могу побороть ошибку [Invalid price] при выставлении отложенного ордера. Вся проблема в том, что ошибки такие падают при стандартных проверках на публикацию советника. Соответственно логи не могу посмотреть, чтобы понять в чем причина. На своих тестах не воспроизвел ни разу. Конечно сложность еще в том, что не знаю какие параметры символа стоят в стандартных проверках. Пробовал на терминале MetaQuotes воспроизвести. Ордер открывает в том же месте, даже по той же цене и нет ошибки. Цены нормализованы CSymbolinfo::NormilizePrice(), есть проверки на StopsLevel, freeze level, на корректность цены отложки, данные по ценам обновляю при каждой проверке.

Отчет стандартных проверок

Может быть кто-то знает все кейсы, при которых может возникать такая ошибка при отложках? Мне приходит на ум только:

  • Ненормализованная цена
  • Цена выставления выше/ниже рыночной при определенном типе ордера
  • Freeze level (не уверен)
Буду рад любой наводке :)
 

Доброе утро.

Возможно ли в тестере делать отсечку тестов по параметрам.

Например если будет достигнута просадка в 40% по тесту он прекращается и рессурсы уходят в пользу следующих тестов.

 
Dmitry Homenkov:

Всем привет!

Не могу побороть ошибку [Invalid price] при выставлении отложенного ордера. Вся проблема в том, что ошибки такие падают при стандартных проверках на публикацию советника. Соответственно логи не могу посмотреть, чтобы понять в чем причина. На своих тестах не воспроизвел ни разу. Конечно сложность еще в том, что не знаю какие параметры символа стоят в стандартных проверках. Пробовал на терминале MetaQuotes воспроизвести. Ордер открывает в том же месте, даже по той же цене и нет ошибки. Цены нормализованы CSymbolinfo::NormilizePrice(), есть проверки на StopsLevel, freeze level, на корректность цены отложки, данные по ценам обновляю при каждой проверке.


Может быть кто-то знает все кейсы, при которых может возникать такая ошибка при отложках? Мне приходит на ум только:

  • Ненормализованная цена
  • Цена выставления выше/ниже рыночной при определенном типе ордера
  • Freeze level (не уверен)
Буду рад любой наводке :)

Статья: Какие проверки должен пройти торговый робот перед публикацией в Маркете

Какие проверки должен пройти торговый робот перед публикацией в Маркете
Какие проверки должен пройти торговый робот перед публикацией в Маркете
  • www.mql5.com
Все продукты Маркета перед публикацией проходят обязательную предварительную проверку для обеспечения единого стандарта качества. В этой статье мы расскажем о наиболее частых ошибках, которые допускают разработчики в своих технических индикаторах и торговых роботах. А также покажем как самостоятельно проверить свой продукт перед отправкой в Маркет.
 
Yury Lemeshev:

Возможно ли в тестере делать отсечку тестов по параметрам.

Например если будет достигнута просадка в 40% по тесту он прекращается и рессурсы уходят в пользу следующих тестов.

Для своих советников это возможно: считаете внутри критерий выхода (если он тяжелый - в OnTimer), достиг порогового значения - TesterStop()/ExpertRemove().

 

Что-то лишнее.