请观看如何免费下载自动交易
请在Telegram上找到我们!
加入我们粉丝页
有趣的脚本?
因此发布一个链接 -
让其他人评价
喜欢这个脚本? 在MetaTrader 5客户端尝试它
程序库

OnBar 事件 - MetaTrader 5程序库

MoT
发布者:
mot
显示:
4253
等级:
(6)
已发布:
2021.01.30 10:21
\MQL5\Include\
Converters.mqh (28.88 KB) 预览
BarEvent.mqh (9.51 KB) 预览
testonbar.mq5 (1.51 KB) 预览
需要基于此代码的EA交易或指标吗?请在自由职业者服务中订购 进入自由职业者服务

本库实现了其它平台的onbar事件

Ps:

  1. 使用 BarEventSubscribe 订阅特定周期,不使用时须BarEventUnsubscribe退订,内部维护订阅计数
  2. 原理:在TimeCurrent > iTime(..0) + PeriodSeconds() - 2 时,触发OnBar事件
  3. shift表示触发时的barshift,例如M5事件,理论上在4:58秒时触发事件,此时shift=0; 但是出现卡盘等特殊情况时,可能在5:00时触发,此时shift=1(新bar已经产生)。
  4. 提前触发是考虑到在 new bar出现时,价格波动往往大于收线前几秒的波动(因为大多数ea都是在new bar时处理相关策略,开平仓频率会突然剧烈增加,此时再处理,滑点会大很多)
  5. 当然你也可以修改成new bar时触发,注释BarEventPusher中下方代码即可

datetime time0 = iTime(symbol, tf, 0);

if(lastpust != time0 && time0 + psc - 2 <= timecur && time0 + psc > timecur)

{ SubscribeData.TrySetValue(tf, time0); OnBar(tf, time0); }


#include <BarEvent.mqh>


//+------------------------------------------------------------------+

//| Expert initialization function                                   |

//+------------------------------------------------------------------+

int OnInit()

  {

//---

   BarEventClear();

   BarEventSubscribe(_Period);

//---

   return(INIT_SUCCEEDED);

  }

 

//+------------------------------------------------------------------+

//| Expert tick function                                             |

//+------------------------------------------------------------------+

void OnTick()

  {

//---

   BarEventPusher();

  }

//+------------------------------------------------------------------+

void OnBar(ENUM_TIMEFRAMES tf,datetime time,int shift=0)

{

Print("OnBar ", TimeFrameToString(tf), " Shift = ",shift);

}



雙平均移動線交叉顯示 Double MA Cross 雙平均移動線交叉顯示 Double MA Cross

當兩條平均移動線交叉穿越時畫出影線 讓圖表更容易閱讀

股票常用的BIAS指標 股票常用的BIAS指標

股票常用的BIAS指標做成的指標 用來判斷目前價格的乖離率 使用日線判斷會有比較好的效果

MT5显示未平仓头寸的总止损和止盈价值 MT5显示未平仓头寸的总止损和止盈价值

这是一个MT5的程序,它显示未平仓头寸的总止损和止盈价值。

持仓单一键平仓脚本 持仓单一键平仓脚本

在手动或自动化交易中,一键平仓功能都是比较常用的,特别是在涉及风控管理的时候,能够快速止损,有效控制风险。这个脚本功能实现起来并不难,但在程序化实现的过程中,会有一些不同的应用场景。