Новая версия платформы MetaTrader 5 build 2007: Экономический календарь, MQL5-программы в виде сервисов - страница 63

 

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Новая версия платформы MetaTrader 5 build 2007: Экономический календарь, MQL5-программы в виде сервисов

Alain Verleyen, 2019.04.16 03:50

Build 2007/2025.

Кажется, невозможно изменить заголовок «Accept» в WebRequest (с mql4 это работает).

Прикрепленный код должен возвращать JSON-ответ, например:

{ "responseParameters": { "doui_setResponseParameters": [ "8AA8D0CD6A05153A016A16735AF94E0E"]}}

Но ответ - HTML-файл, потому что серверу нужен заголовок «Accept: application / json». Я знаю это, потому что это работает с Почтальоном, например.

При проверке HTTP, отправляемого MT5 с Wireshark, заголовок «Принять» всегда:

Принять: * / *

Это ошибка или я что-то упустил?

@Slava

Сборка 2033. Это поведение не исправлено. Возможно ли получить ответ, пожалуйста?

 
Slava :

Ильяс говорит про профилирование абстрактных методов классов.

ChartSetSymbolPeriod для кастомных символов тоже исправили.

Ждите следующий билд.

Я подтверждаю, что эти ошибки исправлены в Build 2033.

Спасибо.

 

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Новая версия платформы MetaTrader 5 build 2007: Экономический календарь, MQL5-программы в виде сервисов

Alain Verleyen, 2019.03.22 16:59

Может быть, я что-то пропустил, но профилировщик ведет себя странно. MT5 Build 2009.

Индикатор, где все рассчитывается внутри OnCalculate (), он дает% выше 100% для 2 методов (?):

Кроме того, как вы можете видеть, это дает ~ 3 секунды для OnCalculate (), но я также печатаю BEGIN / END в журнале, и это дает ~ 21 секунду (?):

Так что же происходит с профилировщиком сейчас?

Build 2033. Эта проблема остается неизменной, у вас все еще есть более 100% значений с профилировщиком.

@ Slava Вы можете проверить или объяснить, пожалуйста?

 
Alain Verleyen :
То есть вы не можете удалять объекты в функции индикатора OnDeinit() ? Кажется странным.
2019.04.30 13:59:54.110    TrueSignal (EURUSD,H1)    DEBUG: OnDeinit 0 objects deleted with pattern TS_Tr1 error: 4022 

Build 2025.

Я подтверждаю, что эта ошибка исправлена в build 2033.

Спасибо.

 
Alain Verleyen:

Я нажал на график H1, но график M15 тоже обновился.

Build 2007/2025.

Это правильное поведение.

Когда обновляете график какого-либо символа, то происходит принудительная закачка ценовых данных по этому символу с торгового сервера.

После синхронизации ценовых данных символа все графики этого символа с разными периодами будут обновлены.

 
Slava :

Это правильное поведение.

Когда обновляете график какого-либо символа, то происходит принудительная закачка ценовых данных по этому символу с торгового сервера.

После синхронизации ценовых данных символа все графики этого символа с разными периодами будут обновлены.

1 ° Хорошо, но не могли бы вы обновить документацию.

Вызов ChartSetSymbolPeriod с тем же символом и таймфреймом можно использовать для обновления графика (аналогично команде Refresh в терминале). Обновление графика в свою очередь запускает перерасчет индикаторов, прикрепленных к нему. Таким образом, вы можете рассчитать индикатор на графике даже при отсутствии тиков (например, в выходные дни).

2 ° Я бы хотел обновить (вызвать OnCalculate) ТОЛЬКО на текущем индикаторе. Является ли это возможным ? Мне нужно, чтобы при работе с сервисом сервис отправлял пользовательское событие на 1 индикатор, и этот индикатор должен обновиться. Если это невозможно в настоящее время, можете ли вы добавить способ сделать это?

Я могу обновить расчет самостоятельно, но затем: a. Я должен собирать данные OHLC с функциями CopyXXX (вместо того, чтобы быть предоставленными OnCalculate) и б. 'prev_calculated' установлен неправильно.

 
Alain Verleyen:

2 ° Я бы хотел обновить (вызвать OnCalculate) ТОЛЬКО на текущем индикаторе. Является ли это возможным ? Мне нужно, чтобы при работе с сервисом сервис отправлял пользовательское событие на 1 индикатор, и этот индикатор должен обновиться. Если это невозможно в настоящее время, можете ли вы добавить способ сделать это?

Отправляйте из Сервиса событие. В индикаторе в OnChartEvent или OnTimer ловите событие и вызывайте оттуда OnCalculate.

 
fxsaber :

Отправляйте из Сервиса событие. В индикаторе в OnChartEvent или OnTimer ловите событие и вызывайте оттуда OnCalculate.

Это то, что я делаю, используя ChartSetSymbolPeriod (0, NULL, 0). Но он вызывает OnCalculate для всех индикаторов, прикрепленных к этому символу. Пока я только хочу обновить этот конкретный показатель.

Знаете ли вы другое, зачем вызывать OnCalculate () (без прямого вызова функции)?

 
Alain Verleyen:

Знаете ли вы другое, зачем вызывать OnCalculate () (без прямого вызова функции)? 

Вы можете вызвать OnCalculate из любой другой функции.

 

Build 2033: Ошибка при компиляции

#define MACRO1( x )
#define MACRO2( x )    MACRO1( x )
void OnStart() { MACRO2( 1 ) } //Error: '}' - semicolon expected

А в 1961 все нормально было