Guarda come scaricare robot di trading gratuitamente
Ci trovi su Twitter!
Unisciti alla nostra fan page
Script interessante?
Pubblica il link!
lasciare che altri lo valutino
Ti è piaciuto lo script? Provalo nel Terminale MetaTrader 5
Visualizzazioni:
9
Valutazioni:
(4)
Pubblicato:
Freelance MQL5 Hai bisogno di un robot o indicatore basato su questo codice? Ordinalo su Freelance Vai a Freelance
Un'interfaccia per implementare l'esecuzione asincrona di algoritmi, simile a Promise in JavaScript.
timer.mqh - timer, solo per dimostrare l'esecuzione asincrona

Si può anche scaricare usando il gestore di pacchetti npm
npm i mql5-promise

Esempio di Promise:

 #include "timer.mqh"
#include "index.mqh"

void OnInit () {
     new Promise(printAndTimoutResolve, "111" )
        .then(printAndReject, "222" ) // allora - eseguire se la promessa precedente è stata risolta
        .ccatch(printAndResolve, "333" ) // ccatch - esegue se la promessa precedente viene rifiutata
        .ccatch(printAndResolve, "444" )
        .ccatch(printAndResolve, "555" )
        .then(printAndResolve, "666" )
        .finally(printAndResolve, "end" ) // infine - eseguire qualsiasi cosa
        .destroy(); // cancellare la memoria di queste promesse dopo l'esecuzione di tutte le promesse

     Print ( "start" );

     // printAndTimoutResolve 111 // timeout dopo la stampa
     // inizio
     // printAndReject 222
     // printAndTimoutResolve 333
     // printAndTimoutResolve 666
     // printAndTimoutResolve fine
};

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);
};


Ad esempio, 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) // risolvere se tutte le promesse sono state risolte
        .then(printAndResolve, "Promise::all resolved" )
        .ccatch(printAndResolve, "Promise::all rejected" )
        .destroy(); // cancellare tutte le promesse

     // printAndTimoutResolve Promessa 1
     // printAndReject Promessa 2
     // printAndTimoutResolve Promessa 3
     // printAndResolve Promessa::tutti rifiutati
};


Esempio di promessa:gara:

 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" ) // risolvere/rifiutare dopo la prima promessa
        .then(printAndResolve, "Promise::race resolved" )
        .ccatch(printAndResolve, "Promise::race rejected" )
        .destroy();

     // printAndTimoutResolve Promessa 1
     // printAndReject Promessa 2
     // printAndTimoutResolve Promessa 3
     // Promessa::gara rifiutata
};



Ad esempio, Promessa:qualsiasi:

 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 Promessa 1
     // printAndReject Promessa 2
     // printAndTimoutResolve Promessa 3
     // printAndResolve Promise::any
     // printAndResolve Promessa::qualsiasi risolto
};



Tradotto dal russo da MetaQuotes Ltd.
Codice originale https://www.mql5.com/ru/code/54412

Massimizzatore di profitto Massimizzatore di profitto

L'indicatore Profit Maximiser (PMax) è un indicatore creato integrando la media mobile dell'indicatore Supertrend.

Heiken Ashi lisciato Heiken Ashi lisciato

Heiken Ashi standard, ma calcolato sui valori medi delle serie temporali dei prezzi.

Tarantella Tarantella

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.

JJurX JJurX

Slow adaptive trend line with ultralinear and JMA smoothings.