Assista a como baixar robôs de negociação gratuitos
Encontre-nos em Twitter!
Participe de nossa página de fãs
Script interessante?
Coloque um link para ele, e permita que outras pessoas também o avaliem
Você gostou do script?
Avalie seu funcionamento no terminal MetaTrader 5
Visualizações:
17
Avaliação:
(4)
Publicado:
Freelance MQL5 Precisa de um robô ou indicador baseado nesse código? Solicite-o no Freelance Ir para Freelance
Uma interface para implementar a execução assíncrona de algoritmos, semelhante ao Promise em JavaScript.
timer.mqh - timer, apenas para demonstrar a execução assíncrona

Você também pode fazer download usando o gerenciador de pacotes npm
npm i mql5-promise

Exemplo de promessa:

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

void OnInit () {
     new Promise(printAndTimoutResolve, "111" )
        .then(printAndReject, "222" ) // then - execute se a promessa anterior for resolvida
        .ccatch(printAndResolve, "333" ) // ccatch - executa se a promessa anterior for rejeitada
        .ccatch(printAndResolve, "444" )
        .ccatch(printAndResolve, "555" )
        .then(printAndResolve, "666" )
        .finally(printAndResolve, "end" ) // finalmente - execute qualquer coisa
        .destroy(); // limpar a memória dessas promessas após a execução de todas as promessas

     Print ( "start" );

     // printAndTimoutResolve 111 // tempo limite após a impressão
     // início
     // 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);
};


Por exemplo, 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) // resolver se todas as promessas forem resolvidas
        .then(printAndResolve, "Promise::all resolved" )
        .ccatch(printAndResolve, "Promise::all rejected" )
        .destroy(); // excluir todas as promessas

     // 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" ) // resolver/rejeitar após a primeira promessa
        .then(printAndResolve, "Promise::race resolved" )
        .ccatch(printAndResolve, "Promise::race rejected" )
        .destroy();

     // printAndTimoutResolve Promise 1
     // printAndReject Promise 2
     // printAndTimoutResolve Promise 3
     // Promise::race rejeitada
};



Por exemplo, 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
};



Traduzido do russo pela MetaQuotes Ltd.
Publicação original: https://www.mql5.com/ru/code/54412

Maximizador de lucros Maximizador de lucros

O indicador Profit Maximiser (PMax) é um indicador criado pela integração da média móvel do indicador Supertrend.

Buffers for each hour (binary) and an hour buffer from 0-23 - for data collection purposes Buffers for each hour (binary) and an hour buffer from 0-23 - for data collection purposes

Protótipo para coleta de dados. Buffers fictícios para a janela de dados (para fins de coleta de dados) para a hora do dia e um buffer adicional para a hora do dia. Comentários sobre a hora do dia.

Accumulation/Distribution Accumulation/Distribution

O Indicador Accumulation/Distribution (Acumulação/Distribuição ou A/D) é determinado pelas mudanças de preço e volume.

Accelerator Oscillator (AC) Accelerator Oscillator (AC)

O Indicador Acceleration/Deceleration (Aceleração/Desaceleração ou AC) mede a aceleração e a desaceleração da força motriz atual do mercado.