Guarda come scaricare robot di trading gratuitamente
Ci trovi su Facebook!
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:
55
Valutazioni:
(6)
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.

JFatlAccelerazione JFatlAccelerazione

L'indicatore JFatlAcceleration viene utilizzato per misurare l'accelerazione dell'andamento corrente.

Tendenza_CF Tendenza_CF

Un indicatore semplice e chiaro della forza e della direzione della tendenza attuale.