//+------------------------------------------------------------------+//| Timer function |//+------------------------------------------------------------------+voidOnTimer()
{
if( !IsConnected() )
{
Print( __FUNCTION__,": Связь отсутствует!" );
return;
}
//--- Проверяем, записано ли время открытия текущего бара М15if(!CheckCurrentM15OpenTime()) // Если время не записаноreturn; // Выходим
}
//+------------------------------------------------------------------+//| ProjectName |//| Copyright 2012, CompanyName |//| http://www.companyname.net |//+------------------------------------------------------------------+#property version"1.00"#property strict#property indicator_chart_windowdatetime ChkTime;
//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+//--- Время открытия текущего часа, дня и неделиdatetime _m15OpenTime=0;
//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+intOnInit()
{
//Сохраняем старое время
ChkTime=TimeCurrent();
//--- Запускаем таймерif(!EventSetMillisecondTimer(20))
{
Print(__FUNCTION__,": ОШИБКА #",GetLastError(),": таймер с частотой 20 ms не установлен!");
return( INIT_FAILED );
}
//--- Сбрасываем время открытия текущего бара м15
_m15OpenTime=0;
//---return( INIT_SUCCEEDED );
}
//+------------------------------------------------------------------+//| Custom indicator iteration function |//+------------------------------------------------------------------+intOnCalculate(constint rates_total,
constint prev_calculated,
constdatetime &time[],
constdouble &open[],
constdouble &high[],
constdouble &low[],
constdouble &close[],
constlong &tick_volume[],
constlong &volume[],
constint &spread[])
{
return( rates_total );
}
//+------------------------------------------------------------------+//| Timer function |//+------------------------------------------------------------------+voidOnTimer()
{
if(!IsConnected())
{
Print(__FUNCTION__,": Связь отсутствует!");
return;
}
//Если есть соединение проверяем что прошла синхронизация времни if(IsConnected() && ChkTime==TimeCurrent())
{
return;
}
//--- Проверяем, записано ли время открытия текущего бара М15if(!CheckCurrentM15OpenTime()) // Если время не записаноreturn;// Выходим
}
//+------------------------------------------------------------------+//| Проверяем, записано ли время открытия текущего бара М15 |//+------------------------------------------------------------------+bool CheckCurrentM15OpenTime()
{
//--- Проверяем, записано ли времяif(_m15OpenTime==0) // Если время не записано
{
//---ResetLastError();
if(iBarShift(Symbol(),PERIOD_M15,TimeCurrent(),true)==-1)
{
Print(__FILE__+": Данные истории по последнему часу отсутствуют! Ошибка #",GetLastError());
return( false );
}
//---if(GetLastError()==ERR_NO_ERROR)
{
ResetLastError();
//--- Запоминаем время открытия бара
_m15OpenTime=iTime(NULL,PERIOD_M15,0);
//---Print(__FILE__,": Актуальное время открытия бара М15 = "+TimeToString(_m15OpenTime)+". Ошибка #",GetLastError());
//--- Возвращаем истинуreturn( true );
}
elsereturn( false );
}
//--- Время открытия недели ранее записано. Возвращаем истинуreturn( true );
}
//+------------------------------------------------------------------+
2018.09.2115:02:42.910 Custom indicator test XAUUSD,H1: removed
2018.09.2115:15:27.985 test XAUUSD,H1: initialized
2018.09.2115:15:29.520 test XAUUSD,H1: OnTimer: Связь отсутствует!
2018.09.2115:15:29.552 test XAUUSD,H1: OnTimer: Связь отсутствует!
2018.09.2115:15:29.589 test XAUUSD,H1: OnTimer: Связь отсутствует!
2018.09.2115:15:29.605 test XAUUSD,H1: OnTimer: Связь отсутствует!
2018.09.2115:15:29.636 test XAUUSD,H1: OnTimer: Связь отсутствует!
2018.09.2115:15:29.667 test XAUUSD,H1: OnTimer: Связь отсутствует!
2018.09.2115:15:29.705 test XAUUSD,H1: OnTimer: Связь отсутствует!
2018.09.2115:15:29.736 test XAUUSD,H1: OnTimer: Связь отсутствует!
2018.09.2115:15:29.768 test XAUUSD,H1: OnTimer: Связь отсутствует!
2018.09.2115:15:29.805 test XAUUSD,H1: OnTimer: Связь отсутствует!
2018.09.2115:15:29.837 test XAUUSD,H1: OnTimer: Связь отсутствует!
2018.09.2115:15:29.868 test XAUUSD,H1: OnTimer: Связь отсутствует!
2018.09.2115:15:29.906 test XAUUSD,H1: OnTimer: Связь отсутствует!
2018.09.2115:15:29.937 test XAUUSD,H1: OnTimer: Связь отсутствует!
2018.09.2115:15:29.969 test XAUUSD,H1: OnTimer: Связь отсутствует!
2018.09.2115:15:30.006 test XAUUSD,H1: OnTimer: Связь отсутствует!
2018.09.2115:15:30.038 test XAUUSD,H1: OnTimer: Связь отсутствует!
2018.09.2115:15:30.069 test XAUUSD,H1: OnTimer: Связь отсутствует!
2018.09.2115:15:30.106 test XAUUSD,H1: OnTimer: Связь отсутствует!
2018.09.2115:15:30.138 test XAUUSD,H1: OnTimer: Связь отсутствует!
2018.09.2115:15:30.169 test XAUUSD,H1: OnTimer: Связь отсутствует!
2018.09.2115:15:31.880 test XAUUSD,H1: test.mq4: Данные истории по последнему часу отсутствуют! Ошибка #40662018.09.2115:15:31.900 test XAUUSD,H1: test.mq4: Данные истории по последнему часу отсутствуют! Ошибка #02018.09.2115:15:31.940 test XAUUSD,H1: test.mq4: Данные истории по последнему часу отсутствуют! Ошибка #02018.09.2115:15:31.990 test XAUUSD,H1: test.mq4: Данные истории по последнему часу отсутствуют! Ошибка #02018.09.2115:15:32.010 test XAUUSD,H1: test.mq4: Данные истории по последнему часу отсутствуют! Ошибка #02018.09.2115:15:32.074 test XAUUSD,H1: test.mq4: Данные истории по последнему часу отсутствуют! Ошибка #02018.09.2115:15:32.100 test XAUUSD,H1: test.mq4: Данные истории по последнему часу отсутствуют! Ошибка #02018.09.2115:15:32.120 test XAUUSD,H1: test.mq4: Данные истории по последнему часу отсутствуют! Ошибка #02018.09.2115:15:32.174 test XAUUSD,H1: test.mq4: Данные истории по последнему часу отсутствуют! Ошибка #02018.09.2115:15:32.274 test XAUUSD,H1: test.mq4: Актуальное время открытия бара М15 = 2018.09.2115:15. Ошибка #0
我想我已经得到了它!指标是否与终端一起立即启动?如果是这样,在检查等待与服务器IsConnected()的通信之前,你有一个非常快的计时器,它没有时间去同步
不错的尝试。我开始认为这将发挥作用。但是...没有。
我把之前代码中的OnTimer()函数 换成了这个。
我想我已经得到了它!指示器是否与终端一起立即启动?如果是这样,在检查等待连接到服务器的IsConnected()之前,你有一个非常快的计时器,它没有时间去同步
或者像这样做。
但我们必须考虑到服务器时间和当地时间的差异。请将结果回信!我不打算做拐杖。语言中存在一个明显的错误!我们正在等待开发商...
非常有趣,它应该是有效的。不过话说回来,这个计时器非常快,也许终端没有时间开始接受报价。我必须要考虑一下。做一个普通的5秒钟的计时器来测试一下这个想法如何?
非常有趣,它应该是有效的。不过话说回来,这个计时器非常快,也许终端没有时间开始接受报价。我必须要考虑一下。如果我们做一个普通的5秒的计时器来检查这个想法呢?
而且我不需要一个 "适合 "来检查这个想法。在现实生活中,我需要尽可能快的定时器。
非常有趣,它应该是有效的。
你可以随时在你的终端中运行该指标,等待15分钟后再报告。
好的,但我还有很多其他工作要做。一旦我得到休息,我就会做一个实验。
而且我想我甚至有一个想法,如何抓住它。
像这样试试吧!
像这样试试吧!
拐杖又出现了。你试图通过任何手段来解决问题,甚至是非理性的手段,忽视了问题的原因--语言错误。我认为你不应该这样做。
已添加。
是的,这种技术似乎很有效。作为一种选择,你可以使用它。谢谢你!但我还是希望这些功能能够正常工作。
首先是@Ihor Herasko的 回复。播放的代码。
结果。
根据日志条目。该航站楼于14:25关闭。接下来,在14:30开启了。我们检查M15酒吧的时间。我们从TF M1开始。指标(上面的代码)显示实际开放时间为12:15(终端时间,比我的本地时间滞后2小时)。结果应该是12:30!结论--错误是存在的。而@Ihor Herasko 提出的这个方法并不可行。
在你的检查方法中,有两个重大错误。