Join our fan page
- Views:
- 61
- Rating:
- Published:
-
Need a robot or indicator based on this code? Order it on Freelance Go to Freelance
timer.mqh - timer, just to demonstrate asynchronous execution
You can also Download using the npm package manager
npm i mql5-promise
Promise Example :
#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 executing 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); };
For 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 };
Promise example: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 };
For 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 };
Translated from Russian by MetaQuotes Ltd.
Original code: https://www.mql5.com/ru/code/54412

Profit Maximiser (PMax) Indicator is an indicator created by integrating the moving average of the Supertrend indicator.

BotCilento is a sophisticated grid-trading Expert Advisor for MetaTrader 5 that combines trend-following signals with adaptive risk management.

Tarantella EA: Advanced grid trading system with hedging capabilities and Market Profile integration. Uses ADX trend filtering, Fibonacci-based grid spacing, and multi-layered entry conditions (RSI/ATR/volume) to execute trades only within Market Profile value areas. Features intelligent risk management including trailing stops, breakeven triggers, and partial hedge closing.

Indicator edition for new platform.