Assista a como baixar robôs de negociação gratuitos
Encontre-nos em Telegram!
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:
123
Avaliação:
(6)
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.

Profit labels for closed trades (deals) Profit labels for closed trades (deals)

Criação de rótulos de lucro em negócios (negociações fechadas) que também são exibidos no testador de estratégia

Faixa média Faixa média

É um indicador que determina os níveis-alvo de acordo com a média dos movimentos de preço.