Смотри, как бесплатно скачать роботов
Ищи нас в Telegram!
Ставь лайки и следи за новостями
Ставь лайки и следи за новостями
Интересный скрипт?
Поставь на него ссылку - пусть другие тоже оценят
Поставь на него ссылку - пусть другие тоже оценят
Понравился скрипт?
Оцени его работу в терминале MetaTrader 5
Оцени его работу в терминале MetaTrader 5
- Просмотров:
- 621
- Рейтинг:
- Опубликован:
- 2024.12.23 10:52
- Обновлен:
- 2025.03.11 15:42
-
Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу
Интерфейс для реализации асинхронного выполнения алгоритмов, аналогичный Promise в JavaScript.
timer.mqh - таймер , просто для демонстрации асинхронного выполнения
Вы также можете Загрузите с помощью менеджера пакетов npm
timer.mqh - таймер , просто для демонстрации асинхронного выполнения
Вы также можете Загрузите с помощью менеджера пакетов npm
npm i mql5-promise
Пример обещания :
#include "timer.mqh" #include "index.mqh" void OnInit () { new Promise(printAndTimoutResolve, "111" ) .then(printAndReject, "222" ) // then - run if prev promise is resolved .ccatch(printAndResolve, "333" ) // ccatch - run if prev promise is rejected .ccatch(printAndResolve, "444" ) .ccatch(printAndResolve, "555" ) .then(printAndResolve, "666" ) .finally(printAndResolve, "end" ) // finally - run anything .destroy(); // clear memory theese promises after execution all promises Print ( "start" ); // printAndTimoutResolve 111 // timeout after Print // start // printAndReject 222 // printAndTimoutResolve 333 // printAndTimoutResolve 666 // printAndTimoutResolve end }; void promiseAllResolve( ulong promiseId, string &prevResult[], string parametr) { Print ( "promiseAllResolve " + parametr); }; void printAndTimoutResolve( ulong promiseId, string prevResult, string parametr) { Print ( "printAndTimoutResolve " + parametr); Timer::setTimout(resolveByIdStr, 2000 , string (promiseId)); }; void resolveByIdStr( string id) { Promise::resolveById( ulong (id)); } void printAndResolve( ulong promiseId, string prevResult, string parametr) { Print ( "printAndResolve " + parametr); Promise::resolveById(promiseId); }; void printAndReject( ulong promiseId, string prevResult, string parametr) { Print ( "printAndReject " + parametr); Promise::rejectById(promiseId); };
Например, Обещание:все:
void OnInit () { Promise* list1[] = { new Promise(printAndTimoutResolve, "Promise 1" ) .then(printAndTimoutResolve, "Promise 1.1" ) , new Promise(printAndReject, "Promise 2" ), new Promise(printAndTimoutResolve, "Promise 3" ), }; Promise::all(list1, promiseAllResolve) // resolve if all promises are resolved .then(printAndResolve, "Promise::all resolved" ) .ccatch(printAndResolve, "Promise::all rejected" ) .destroy(); // delete all promises // printAndTimoutResolve Promise 1 // printAndReject Promise 2 // printAndTimoutResolve Promise 3 // printAndResolve Promise::all rejected };
Пример обещания: раса:
void OnInit () { Promise* list2[] = { new Promise(printAndTimoutResolve, "Promise 1" ) .then(printAndTimoutResolve, "Promise 1.1" ) , new Promise(printAndReject, "Promise 2" ), new Promise(printAndTimoutResolve, "Promise 3" ), }; Promise::race(list2, printAndResolve, "Promise::race" ) // resolve/reject after the first promise .then(printAndResolve, "Promise::race resolved" ) .ccatch(printAndResolve, "Promise::race rejected" ) .destroy(); // printAndTimoutResolve Promise 1 // printAndReject Promise 2 // printAndTimoutResolve Promise 3 // Promise::race rejected };
Например, Обещание:любое:
void OnInit () { Promise* list3[] = { new Promise(printAndTimoutResolve, "Promise 1" ) .then(printAndTimoutResolve, "Promise 1.1" ) , new Promise(printAndReject, "Promise 2" ), new Promise(printAndTimoutResolve, "Promise 3" ), }; Promise::any(list3, printAndResolve, "Promise::any" ) .then(printAndResolve, "Promise::any resolved" ) .ccatch(printAndResolve, "Promise::any rejected" ) .destroy(); // printAndTimoutResolve Promise 1 // printAndReject Promise 2 // printAndTimoutResolve Promise 3 // printAndResolve Promise::any // printAndResolve Promise::any resolved };

ATR %, ATR percentage, ATR процент, АТР в процентах

К сожалению, я обнаружил, что некоторые брокеры Изменение времени на сервере немного некорректно, чего я не ожидал. и что меня очень удивило. Вот скрипт, который каждый может использовать для проверки своего брокера.