Новая версия платформы MetaTrader 5 build 2715: Общие улучшения - страница 23

 
Nikolai Semko:
Если есть что сказать, говорите, пожалуйста, по существу.

как минимум - Ваш ЕА в тестере в режиме "произвольна задержка" - показывает один в один количество сделок с режимом "без задержек" ?

у меня тостерный вариант кода полностью повторяет эти 2 режима по количеству сделок - понятно, что результаты тестирования отличаются, но так  я учитываю качество исполнения ордеров 

 
Nikolai Semko:

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

  • Счет MQ Demo неттинговый.
  • Торговля фиксированным лотом 0.02.
  • Сигнал на продажу закрывает Buy и окрывает Sell.
  • Сигнал на покупку закрывает Sell и открывает Buy.
  • Когда появляется сигнал на покупку или продажу, он висит до тех пор, пока он не будет закрыта противоположная позиция и открыта новая позиция.
  • Реальная торговля велась на VPS с 15 декабря по 9 января. Пинг 10 - 15 ms. Тест за тот же период.


Это что? Баг или я чего-то не учитываю?

То есть человек заходит в маркет, скачивает демо версию советника и на тесте получает лажу вместо реальной картины?

Я знаю три вероятные причины, если Вы используете индикаторы:

1. Разная глубина истории, влияющая на расчетный результат индикатора;

2. Задержка вычисления индикатора на первом тике (нулевое значение буфера или мусор);

3. Если сигнал не по открытию бара и сигнал с нулевого или перерисовывающегося на истории индикатора, то так же могут быть расхождения.

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

 

не нашел в справке описание от OPENCL  barrier() и в  макросах который вкл( https://www.khronos.org/registry/OpenCL/extensions/amd/)

cl_amd_fp64

 

Согласно документации https://www.mql5.com/ru/docs/basis/function/export
модификатор export указывает компилятору, что данная функция экспортируемая, и функция должна быть доступной из любой mql программы. 
Но у меня почему то не получается её вызвать из другой программы. Ошибка возникает на #include
Я что то не так делаю? Или это ошибка в терминале?

Экспортируемая функция Function(), задекларирована в программе сервис.

//+------------------------------------------------------------------+
//|                                                         Test.mq5 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property service
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"

int i = 0;

//-------------------------------------------------------------------
void Function() export
{
   Print((string)++i);   
}

//+------------------------------------------------------------------+
//| Service program start function                                   |
//+------------------------------------------------------------------+
void OnStart()
{
   while(!_StopFlag)
   {

      Sleep(1000);
   }

}


Эксперт

//+------------------------------------------------------------------+
//|                                                         Test.mq5 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"


#include "C:\\Program Files\\AMP Global (EU) MetaTrader 5 Futures, FX, CFDs, Cryptos\\MQL5\\Services\\Test.ex5"


//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
{

   EventSetTimer(1);
   return(INIT_SUCCEEDED);
}

//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{

   EventKillTimer();
}

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
{

}

//+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
void OnTimer()
{
   Function();

}
//+------------------------------------------------------------------+


Пытаюсь вызвать Function() в эксперте, но при компиляции, на #include сыпется ошибка.

'Test.mq5'                                                      Test.mq5        1       1
'Test.ex5'                                                      Test.ex5        1       1
'塅ԵqછЀ'   - unexpected token, probably type is missing?        Test.ex5        1       1
'int'      - semicolon expected                                 Test.mq5        16      1
'return'   - expressions are not allowed on a global scope      Test.mq5        22      4
'}'        - expressions are not allowed on a global scope      Test.mq5        23      1
'Function' - undeclared identifier                              Test.mq5        49      4
')'        - expression expected                                Test.mq5        49      13
6 errors, 0 warnings                                                            7       1


Если #include закоментировать, то  появляется ошибка, что Function() не задекларирована

'Test.mq5'                              Test.mq5        1       1
'Function' - undeclared identifier      Test.mq5        49      4
')'        - expression expected        Test.mq5        49      13
2 errors, 0 warnings                                    3       1



Как правильно вызвать export функцию из сервиса в другой программе?

Документация по MQL5: Основы языка / Функции / Экспортирование функций
Документация по MQL5: Основы языка / Функции / Экспортирование функций
  • www.mql5.com
Экспортирование функций - Функции - Основы языка - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Roman:

Согласно документации https://www.mql5.com/ru/docs/basis/function/export
модификатор export указывает компилятору, что данная функция экспортируемая, и функция должна быть доступной из любой mql программы. 
Но у меня почему то не получается её вызвать из другой программы. Ошибка возникает на #include
Я что то не так делаю? Или это ошибка в терминале?

Экспортируемая функция Function(), задекларирована в программе сервис.


Эксперт


Пытаюсь вызвать Function() в эксперте, но при компиляции, на #include сыпется ошибка.


Если #include закоментировать, то  появляется ошибка, что Function() не задекларирована



Как правильно вызвать export функцию из сервиса в другой программе?

А вы уверены что надо #include , а не #import

Я просто не помню, давно это применял для проверки как работает.

 

Roman:

#include сыпется ошибка.

https://www.mql5.com/ru/docs/basis/preprosessor/import

Документация по MQL5: Основы языка / Препроцессор / Импорт функций (#import)
Документация по MQL5: Основы языка / Препроцессор / Импорт функций (#import)
  • www.mql5.com
Импорт функций (#import) - Препроцессор - Основы языка - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Alexey Viktorov:
Oleksii Chepurnyi:

Спасибо. Действительно, вместо #include требуется #import
Всё работает. 

 

Сегодня утром заметил.

Ждал в терминале данные по новости австралийца.

В итоге выяснил, что на сайте у вас данные по новости есть, а в терминале нет!

Кнопка "Обновить" нажималась и не раз.

Уже есть другие данные в терминале, а по австралийцу данных так и не поступило в терминал!

Это с чем связано?

На сайте данные есть...

А в терминале данных нету!

 

Почему-то размер шрифта "Terminal" равный 10 и 12 у текстовой метки получаются одинаковыми. Так и в МТ4 и в МТ5.


 
Vasiliy Pushkaryov:

Почему-то размер шрифта "Terminal" равный 10 и 12 у текстовой метки получаются одинаковыми. Так и в МТ4 и в МТ5.


Вероятно потому, что у этого шрифта нет размера 10: