新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 578

 
PolarSeaman:

不是我自己想出来的。"只要确保你更新OnTimer()中的数据,使你的代码工作"

我应该如何做呢?

你有一个离线的时间表吗?

 
你能告诉我如何从猫头鹰盘旋的时间框架以外的时间框架获得底部指标吗?
 
Galim_V:
你能告诉我如何从猫头鹰盘旋的时间框架以外的时间框架获得底部指标吗?

1.你为什么要把鸟挂起来?这不是很遗憾吗?

2.你有没有打开过帮助?在专家顾问中从任何时间段接收指标数据都不是问题,因为接收指标数据功能的前两个参数是用来指定你想接收数值的图表 符号和周期

事实上,即使你在编辑器中输入代码,函数的形式变量列表也会被打开,那里的工具提示显示符号和时间框架。奇怪的是,你没有注意到他们。

 
Artyom Trishkin:

你有一个离线的时间表吗?

没有。

 
PolarSeaman:

没有。

那为什么不需要就不断刷新呢?

你需要时间吗?你可以通过TimeCurrent()获得最后一次勾选的时间,或者通过 TimeLocal()获得最后一次本地时间

如果你在周末得到最后一次打勾的时间,计时器将没有帮助 - 时间将是星期五的最后一次打勾,或最后一个工作日的最后一次打勾。而TimeLocal()不会给你服务器时间--你需要用一个偏移量重新计算。

然而,我不知道你最后到底想得到什么。

 
Artyom Trishkin:

1.你为什么要把鸟挂起来?这不是很遗憾吗?

2.你有没有打开过帮助?在专家顾问中从任何时间段接收指标数据都不是问题,因为接收指标数据功能的前两个参数是用来指定你想接收数值的图表 符号和周期

事实上,即使你在编辑器中输入代码,函数的形式变量列表也会被打开,那里的工具提示显示符号和时间框架。奇怪的是,你没有注意到他们。

2018.07.04 22:17:38.398 2016.11.10 13:00:00 Arap01 EURUSD,H1: Rounding 44.53781512605145 45.0 这是 "正常 "模式下的随机数据,即。

2=iStochastic(NULL,0,K,D,sling,Average_method,price_field,MODE_MAIN,2)。

这里我问M5 2=iStochastic(NULL,5,K,D,slowing,Average_method,price_field,MODE_MAIN,2)。

我得到 2018.07.04 22:23:05.680 2016.11.10 13:00:00 Arap01 EURUSD,H1: Rounding 0.0 0.0



 
Artyom Trishkin:

然而,我不知道你到底想以什么方式结束。

警报,我想,在酒吧关闭前两秒。我周末不工作了。

 
PolarSeaman:

因此,我需要在条形图关闭前两秒发出警报。

这并不容易做到,你需要运行更精确的计时器(至少500毫秒),并在之前进行本地时间和服务器时间的同步。
我已经告诉过你这件事。

在嘀嗒声到达的时刻,计算TimeCurrent()-TimeLocal()的差值
(这是为了同步本地和服务器的时间而做的一次工作)。

- 这是相对于经纪人的偏移量,如果这个偏移量以后发生变化,应该重新计算时间。
- 在专家顾问开始时(条形图D1出现时),我们重新计算所有必要的时间,以当地时间计算,并考虑到偏移
- 我们等待我们在计时器中 "计数 "的东西,检查是否有不同步、与经纪人失去联系、本地手的翻译。

你可以抓住+/-1秒
 
Taras Slobodyanik:

这并不容易做到,你必须运行一个更精确的计时器(至少500ms),并预先将本地时间与服务器时间同步起来。
我已经告诉过你了。

你可以抓住+/-1秒

谢谢你。如何使时间以秒为单位,在M5酒吧关闭之前。现在它显示的是H1。

#property strict
#property indicator_chart_window
//--- input parameters
#define  MILLISEC_TIMER_INTERVAL         500 
int            timeOffset;
datetime       ServerLocalOffset;
datetime       prevTime,myTime,localtime;
bool           newBar = false;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   EventSetMillisecondTimer(MILLISEC_TIMER_INTERVAL);
   
  datetime srvtime,tmpOffset;
   RefreshRates();
   srvtime = TimeCurrent();
   // Modified
   localtime = TimeLocal()+TimeGMTOffset();
   if(TimeHour(srvtime)>TimeHour(localtime)){
      // Server Time is still ahead of us
      int newOffset = TimeHour(srvtime)-TimeHour(localtime);
      ServerLocalOffset = (newOffset*60*60);
   }else if(TimeHour(srvtime)<TimeHour(localtime)){
      // Server Time is Behind us
      int newOffset = TimeHour(localtime)-TimeHour(srvtime);
      ServerLocalOffset = (newOffset*60*60);
   }else{
      // No modification required
      ServerLocalOffset = srvtime;
   }
   localtime = TimeLocal()-ServerLocalOffset;
   
   tmpOffset = TimeSeconds(srvtime) - TimeSeconds(localtime);
   if(tmpOffset < 30 && tmpOffset >= 0){
      timeOffset = TimeSeconds(srvtime) - TimeSeconds(localtime);
   }
   return(INIT_SUCCEEDED);
  }
  
void OnDeinit(const int reason)
  {
   EventKillTimer();
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---

//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
void OnTimer()
  {
//---
datetime sec;
   datetime localtime;
   localtime = TimeLocal()+(TimeGMTOffset()+(60*60));
 sec=Time[0]-localtime-timeOffset;
 if(sec<=2){Alert("время откр. бара ",Time[0]);}
      Comment(TimeToStr(sec,TIME_SECONDS ));
  }
//+------------------------------------------------------------------+
 
仍然没有弄清楚如何计算当前周期的条形图关闭前的秒数。帮助。