Смотри, как бесплатно скачать роботов
Ищи нас в Twitter!
Ставь лайки и следи за новостями
Ставь лайки и следи за новостями
Интересный скрипт?
Поставь на него ссылку - пусть другие тоже оценят
Поставь на него ссылку - пусть другие тоже оценят
Понравился скрипт?
Оцени его работу в терминале MetaTrader 5
Оцени его работу в терминале MetaTrader 5
Promise - библиотека для MetaTrader 5
- Просмотров:
- 447
- Рейтинг:
- Опубликован:
- 2024.12.23 10:52
- Обновлен:
- 2024.12.25 08:00
- Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу
An interface for implementing asynchronous execution of algorithms, like Promise in JavaScript.
timer.mqh - Timer , used only to demonstrate asynchronous execution
You can also use the npm package manager to download
timer.mqh - Timer , used only to demonstrate asynchronous execution
You can also use the npm package manager to download
npm i mql5-promise
Example 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); };
Example Promise:all :
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 };
Example Promise:race:
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 };
Example Promise:any:
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 Percent
ATR %, ATR percentage, ATR процент, АТР в процентах
Проверка изменения времени на сервере в связи с переходом на летнее времяК сожалению, я обнаружил, что некоторые брокеры Изменение времени на сервере немного некорректно, чего я не ожидал. и что меня очень удивило. Вот скрипт, который каждый может использовать для проверки своего брокера.