Обсуждение статьи "Реализация мультивалютного режима в MetaTrader 5" - страница 2

 
Lizar:

А вот то, что эксперт в тестере не может загрузить шпиона, то это уже странно. На демо у вас всё работает?

У него выдаётся ошибка

ERR_INDICATOR_CANNOT_CREATE

4802

Индикатор не может быть создан

Посмотрите, почему индикатор может не создаваться.
 
Yedelkin:
У него выдаётся ошибка

ERR_INDICATOR_CANNOT_CREATE

4802

Индикатор не может быть создан

Посмотрите, почему индикатор может не создаваться.

Пока не получается догадаться. На демо работает, а в тестере не загружает (не создает) . Пробовал даже вот это:

#property tester_indicator "iSpy.ex5"
Не помогает.
 
Lizar:

Пока не получается догадаться. На демо работает, а в тестере не загружает (не создает) . Пробовал даже вот это:

Не помогает.

Методом научного тыка - вот так в тестере заработало:

   if(iCustom("GBPUSD",PERIOD_M1,"iSpy.ex5",ChartID(),0)==INVALID_HANDLE) 

 Причём достаточно было вставить только в первом условии, для "GBPUSD". Теперь вопрос - почему именно так?

 
Yedelkin:

Методом научного тыка - вот так в тестере заработало:

 Причём достаточно было вставить только в первом условии, для "GBPUSD". Теперь вопрос - почему именно так?

Надо же, "научный тык" - великая вещь в нашем деле. Ну, а почему так - это вопрос к разработчикам, на мой взгляд.

Спасибо, что помогли разобраться.

 
Lizar:

В функции OnCalculate() в шпионе Spy Control panel MCM есть строчка:

По-умолчанию price[rates_total-1] равна цене close последнего незавершенного бара, которая, в свою очередь, равна поcледней цене bid. Т.е из шпиона по-умолчанию всегда получаем цену bid.

Если принудительно хотите получать цену ask, то замените эту строчку, например, на...

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

2011.01.24 10:59:28 exSpy (GBPUSD,M5) 08:59:24 -> id=2: EURUSD PERIOD_M1 price=1.35778
2011.01.24 10:59:28 exSpy (GBPUSD,M5) 08:59:24 -> id=2: EURUSD PERIOD_M1 price=1.35778
2011.01.24 10:59:28 exSpy (GBPUSD,M5) 08:59:24 -> id=2: EURUSD PERIOD_M1 price=1.35778
три тика и бид не меняется, следовательно(возможно) менялся аск. хотелось бы получать более полную информацию.

Возможно ли это ? 
 

 
Trolls:

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

2011.01.24 10:59:28 exSpy (GBPUSD,M5) 08:59:24 -> id=2: EURUSD PERIOD_M1 price=1.35778
2011.01.24 10:59:28 exSpy (GBPUSD,M5) 08:59:24 -> id=2: EURUSD PERIOD_M1 price=1.35778
2011.01.24 10:59:28 exSpy (GBPUSD,M5) 08:59:24 -> id=2: EURUSD PERIOD_M1 price=1.35778
три тика и бид не меняется, следовательно(возможно) менялся аск. хотелось бы получать более полную информацию.

Возможно ли это ? 
 

Возможно, есть несколько способов:

1. зарустить два шпиона на одном символе под разными id. Один будет присылать bid, а друглй пусть присылает ask.

2. зарустить один шпион на символе, но сделать, чтобы он под разными id последовательно отправлял два события bid и ask.

3. есть еще варианты, но они уже связаны со значительными переделками схемы передачи параметров в OnChartEvent - не советую. 

Документация по MQL5: Основы языка / Функции / Передача параметров
Документация по MQL5: Основы языка / Функции / Передача параметров
  • www.mql5.com
Основы языка / Функции / Передача параметров - Документация по MQL5
 
Используйте шпиона как "семафор поступления нового тика", а в эксперте получайте полную информацию о тике при помощи SymbolInfoTick.
 
Kos:
Используйте шпиона как "семафор поступления нового тика", а в эксперте получайте полную информацию о тике при помощи SymbolInfoTick.

Отличное решение.
 

Подскажите, кому не трудно. В статье есть пример перечисления

enum ENUM_CHART_EVENT_SYMBOL
  {
   CHARTEVENT_INIT      =0,          // Событие "Инициализация"
   CHARTEVENT_NO        =0,          // События отключены

   CHARTEVENT_NEWBAR_M1 =0x00000001, // Событие "новый бар" на 1 -минутном графике
   CHARTEVENT_NEWBAR_M2 =0x00000002, // Событие "новый бар" на 2 -минутном графике
   CHARTEVENT_NEWBAR_M3 =0x00000004, // Событие "новый бар" на 3 -минутном графике
   CHARTEVENT_NEWBAR_M4 =0x00000008, // Событие "новый бар" на 4 -минутном графике
   
   ...
   
   CHARTEVENT_ALL       =0xFFFFFFFF, // Все события включены
  };

и пример работы со значениями этого перечисления:

if((flag_event & CHARTEVENT_NEWBAR_M1)!=0) EventCustom(CHARTEVENT_NEWBAR_M1,price_current

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

Документация по MQL5: Стандартная библиотека
Документация по MQL5: Стандартная библиотека
  • www.mql5.com
Стандартная библиотека - Документация по MQL5
 
Yedelkin:

Подскажите, кому не трудно. В статье есть пример перечисления

и пример работы со значениями этого перечисления:

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

Шестнадцатиричная логика везде одна. Про системы счисления можно посмотреть здесь. Там можно почитать про позиционные системы счисления и посмотреть ссылки на 16-ю и двоичную. Там есть еще примеры перевода из системы в систему.  

Все побитовые операции предназначены для двоичной системы. Про побитовые операции в MQL5 здесь

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