请观看如何免费下载自动交易
请在Telegram上找到我们!
加入我们粉丝页
有趣的脚本?
因此发布一个链接 -
让其他人评价
喜欢这个脚本? 在MetaTrader 5客户端尝试它
显示:
21
等级:
(4)
已发布:
index.mq5 (2.81 KB) 预览
timer.mqh (4.42 KB) 预览
index.mqh (13.9 KB) 预览
MQL5自由职业者 需要基于此代码的EA交易或指标吗?请在自由职业者服务中订购 进入自由职业者服务
实现算法异步执行的接口,类似于 JavaScript 中的 Promise。
timer.mqh -定时器,仅用于演示异步执行

您也可以 使用 npm 包管理器下载
npm i mql5-promise

Promise 示例:

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

void OnInit () {
     new Promise(printAndTimoutResolve, "111" )
        .then(printAndReject, "222" ) // then - 如果前一个承诺已解决,则运行
        .ccatch(printAndResolve, "333" ) // ccatch - 在前一个承诺被拒绝时运行
        .ccatch(printAndResolve, "444" )
        .ccatch(printAndResolve, "555" )
        .then(printAndResolve, "666" )
        .finally(printAndResolve, "end" ) // 最后 - 运行任何程序
        .destroy(); // 执行完所有承诺后,清除这些承诺的内存

     Print ( "start" );

     // printAndTimoutResolve 111 // 打印后超时
     // 开始
     // 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);
};


例如,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) // 如果所有承诺都已解决,则进行解析
        .then(printAndResolve, "Promise::all resolved" )
        .ccatch(printAndResolve, "Promise::all rejected" )
        .destroy(); // 删除所有承诺

     // printAndTimoutResolve Promise 1
     // 打印并拒绝承诺 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" ) // 在第一个承诺后解析/拒绝
        .then(printAndResolve, "Promise::race resolved" )
        .ccatch(printAndResolve, "Promise::race rejected" )
        .destroy();

     // printAndTimoutResolve Promise 1
     // 打印并拒绝承诺 2
     // printAndTimoutResolve Promise 3
     // 拒绝接受 Promise::race
};



例如 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
     // 打印并拒绝承诺 2
     // printAndTimoutResolve Promise 3
     // printAndResolve Promise::any
     // printAndResolve Promise::any resolved
};



由MetaQuotes Ltd译自俄语
原代码: https://www.mql5.com/ru/code/54412

利润最大化 利润最大化

Profit Maximiser(PMax)指标是通过整合超级趋势指标的移动平均线而创建的指标。

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

数据收集原型。 小时的数据窗口(用于数据收集)的虚拟缓冲区,以及每天小时的额外缓冲区。时的注释。

加速震荡(AC) 加速震荡(AC)

加速/减速技术指标(AC)用于衡量当前驱动力的加速和减速。

离散 离散

离散技术指标由价格和交易量的变化决定。