请问如何实现在当前k线走完的最后5秒内开仓

 
请教大佬!
 

Timer  设置 定时检查?

 

Timer  设置 定时检查?

 

a

如图

//+------------------------------------------------------------------+
//|                                                        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)
     {
      //--- 开仓代码
     }
  }
 
Yang Wang #:

如图

万分感谢!
 
lapcheung #:

Timer  设置 定时检查?

谢谢
 
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();
  }