Schau, wie man Roboter kostenlos herunterladen kann
Finden Sie uns auf Twitter!
und werden Sie Mitglied unserer Fangruppe
Interessantes Skript?
Veröffentliche einen Link auf das Skript, damit die anderen ihn auch nutzen können
Hat Ihnen das Skript gefallen?
Bewerten Sie es im Terminal MetaTrader 5
Ansichten:
13
Rating:
(4)
Veröffentlicht:
index.mq5 (2.81 KB) ansehen
timer.mqh (4.42 KB) ansehen
index.mqh (13.9 KB) ansehen
MQL5 Freelance Benötigen Sie einen Roboter oder Indikator, der auf diesem Code basiert? Bestellen Sie ihn im Freelance-Bereich Zum Freelance
Eine Schnittstelle zur Implementierung der asynchronen Ausführung von Algorithmen, ähnlich wie Promise in JavaScript.
timer.mqh - timer, nur um die asynchrone Ausführung zu demonstrieren

Sie können auch über den npm-Paketmanager herunterladen
npm i mql5-promise

Promise Beispiel :

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

void OnInit () {
     new Promise(printAndTimoutResolve, "111" )
        .then(printAndReject, "222" ) // dann - ausführen, wenn vorheriges Versprechen aufgelöst wird
        .ccatch(printAndResolve, "333" ) // ccatch - wird ausgeführt, wenn das vorherige Versprechen abgelehnt wird
        .ccatch(printAndResolve, "444" )
        .ccatch(printAndResolve, "555" )
        .then(printAndResolve, "666" )
        .finally(printAndResolve, "end" ) // schließlich - alles ausführen
        .destroy(); // Löscht den Speicher dieser Versprechen, nachdem alle Versprechen ausgeführt wurden

     Print ( "start" );

     // printAndTimoutResolve 111 // Timeout nach Druck
     // Start
     // 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);
};


Zum Beispiel, 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) // auflösen, wenn alle Versprechen aufgelöst sind
        .then(printAndResolve, "Promise::all resolved" )
        .ccatch(printAndResolve, "Promise::all rejected" )
        .destroy(); // alle Versprechen löschen

     // printAndTimoutResolve Verheißung 1
     // printAndReject Verheißung 2
     // printAndTimoutResolve Verheißung 3
     // printAndResolve Promise::all abgelehnt
};


Beispiel für ein Versprechen:Rennen:

 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" ) // Auflösen/Ablehnen nach dem ersten Versprechen
        .then(printAndResolve, "Promise::race resolved" )
        .ccatch(printAndResolve, "Promise::race rejected" )
        .destroy();

     // printAndTimoutResolve Verheißung 1
     // printAndReject Verheißung 2
     // printAndTimoutResolve Verheißung 3
     // Promise::race abgelehnt
};



Zum Beispiel: 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 Verheißung 1
     // printAndReject Verheißung 2
     // printAndTimoutResolve Verheißung 3
     // printAndResolve Promise::any
     // printAndResolve Promise::any aufgelöst
};



Übersetzt aus dem Russischen von MetaQuotes Ltd.
Originalpublikation: https://www.mql5.com/ru/code/54412

Gewinnmaximierer Gewinnmaximierer

Der Profit Maximiser (PMax) Indikator ist ein Indikator, der durch die Integration des gleitenden Durchschnitts des Supertrend Indikators erstellt wurde.

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

Prototyp für die Datenerfassung. Dummy-Puffer für das Datenfenster (zum Zwecke der Datenerfassung) für die Stunde des Tages und ein zusätzlicher Puffer für die Stunde des Tages. Kommentare die Stunde des Tages.

Accumulation/Distribution Accumulation/Distribution

Der Accumulation/Distribution Indikator wird aus Änderung von Preis und Volumen bestimmt.

Accelerator Oszillator (AC) Accelerator Oszillator (AC)

Der Acceleration/Deceleration Indikator (AC) misst die Beschleunigung und Verlangsamung des aktuellen Marktimpulses, der Kraft der Kursbewegung.