Mira cómo descargar robots gratis
¡Búscanos en Telegram!
Pon "Me gusta" y sigue las noticias
¿Es interesante este script?
Deje un enlace a él, ¡qué los demás también lo valoren!
¿Le ha gustado el script?
Evalúe su trabajo en el terminal MetaTrader 5
Visualizaciones:
23
Ranking:
(4)
Publicado:
index.mq5 (2.81 KB) ver
timer.mqh (4.42 KB) ver
index.mqh (13.9 KB) ver
MQL5 Freelance ¿Necesita un robot o indicador basado en este código? Solicítelo en la bolsa freelance Pasar a la bolsa
Una interfaz para implementar la ejecución asíncrona de algoritmos, similar a Promise en JavaScript.
timer.mqh - timer, sólo para demostrar la ejecución asíncrona

También puede Descargar usando el gestor de paquetes npm
npm i mql5-promise

Ejemplo de Promise:

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

void OnInit () {
     new Promise(printAndTimoutResolve, "111" )
        .then(printAndReject, "222" ) // then - ejecutar si la promesa prev está resuelta
        .ccatch(printAndResolve, "333" ) // ccatch - ejecutar si la promesa anterior es rechazada
        .ccatch(printAndResolve, "444" )
        .ccatch(printAndResolve, "555" )
        .then(printAndResolve, "666" )
        .finally(printAndResolve, "end" ) // finalmente - ejecutar cualquier cosa
        .destroy(); // borrar de la memoria estas promesas después de ejecutar todas las promesas

     Print ( "start" );

     // printAndTimoutResolve 111 // tiempo de espera después de Imprimir
     // inicio
     // printAndReject 222
     // printAndTimoutResolve 333
     // printAndTimoutResolve 666
     // printAndTimoutResolve fin
};

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 ejemplo, 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 si todas las promesas están resueltas
        .then(printAndResolve, "Promise::all resolved" )
        .ccatch(printAndResolve, "Promise::all rejected" )
        .destroy(); // borrar todas las promesas

     // printAndTimoutResolve Promesa 1
     // printAndReject Promesa 2
     // printAndTimoutResolve Promesa 3
     // printAndResolve Promesa::todo rechazado
};


Promise ejemplo:carrera:

 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/rechazar después de la primera promesa
        .then(printAndResolve, "Promise::race resolved" )
        .ccatch(printAndResolve, "Promise::race rejected" )
        .destroy();

     // printAndTimoutResolve Promesa 1
     // printAndReject Promesa 2
     // printAndTimoutResolve Promesa 3
     // Promesa::carrera rechazada
};



Por ejemplo, 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 Promesa 1
     // printAndReject Promesa 2
     // printAndTimoutResolve Promesa 3
     // printAndResolve Promise::any
     // printAndResolve Promise::any resuelto
};



Traducción del ruso realizada por MetaQuotes Ltd
Artículo original: https://www.mql5.com/ru/code/54412

Maximizador de beneficios Maximizador de beneficios

El indicador Profit Maximiser (PMax) es un indicador creado mediante la integración de la media móvil del 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

Prototipo para la recogida de datos. Búferes ficticios para la ventana de datos (a efectos de recogida de datos) para la hora del día, y un búfer adicional para la hora del día. Comenta la hora del día.

Accumulation/Distribution Accumulation/Distribution

El indicador Accumulation/Distribution (Acumulación/Distribución) queda determinado por los cambios que se producen en el precio y en el volumen.

Accelerator Oscillator (AC) Accelerator Oscillator (AC)

El indicador Acceleration/Deceleration (AC, Aceleración/Desaceleración) mide la aceleración y la desaceleración de la fuerza impulsora del mercado.