请教大佬!
Timer 设置 定时检查?
Timer 设置 定时检查?
如图
//+------------------------------------------------------------------+ //| Test9.mq4 | //| Copyright 2023, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2023, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" #property strict //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- create timer EventSetMillisecondTimer(60); //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- destroy timer EventKillTimer(); Comment(""); } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { } //+------------------------------------------------------------------+ //| Timer function | //+------------------------------------------------------------------+ void OnTimer() { int second = 5; // 5秒内 int total_seconds = PeriodSeconds(PERIOD_CURRENT); // 获取当前烛走完需要多少秒 datetime curr_bar_open_time = iTime(_Symbol, PERIOD_CURRENT, 0); // 获取当前烛开始时间 datetime curr_bar_close_time = curr_bar_open_time + total_seconds; // 获取当前烛结束时间 if(TimeCurrent() >= curr_bar_close_time - second && TimeCurrent() < curr_bar_close_time) { //--- 开仓代码 } }
void OnDeinit(const int reason) { //--- destroy timer EventKillTimer(); Comment(""); }
在停止时,用空字串清空屏幕,确实有用。
int OnInit() { //--- create timer EventSetMillisecondTimer(60); //--- return(INIT_SUCCEEDED); }
我觉得用 Tick + Timer 更有效率,Timer 间隔较长,Tick 变化快时,同样可以触发。
当市场不活跃时,由 Timer 触发。
int OnInit() { //--- create timer EventSetTimer(UpdateTick); //Comment(""); // clear all. myTick=UpdateTick; orderChkPos=0; //--- return(INIT_SUCCEEDED); }
void OnTick() { //--- myTick++; // when makrt on hot, tick is go up fast. if (myTick>UpdateTick) { myTick=0; checkOrders(); } } //+------------------------------------------------------------------+ //| Timer function | //+------------------------------------------------------------------+ void OnTimer() { //--- myTick=0; checkOrders(); }