//+------------------------------------------------------------------+//| тест.mq4 |//| Copyright 2016, MetaQuotes Software Corp. |//| https://www.mql5.com |//+------------------------------------------------------------------+#property copyright"Copyright 2016, MetaQuotes Software Corp."#property link"https://www.mql5.com"#property version"1.00"//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+class CNevBar
{
private:
datetime curbar;
datetime lastbar;
public:
CNevBar();
~CNevBar();
bool new_bar(string symbol,ENUM_TIMEFRAMES period);
};
//+------------------------------------------------------------------+void CNevBar::CNevBar()
{
}
//+------------------------------------------------------------------+void CNevBar::~CNevBar(void)
{
}
//+------------------------------------------------------------------+bool CNevBar:: new_bar(string symbol,ENUM_TIMEFRAMES period)
{
curbar=(datetime) SeriesInfoInteger(symbol,period,SERIES_LASTBAR_DATE);
if(lastbar==0)lastbar=(datetime)SeriesInfoInteger(symbol,period,SERIES_LASTBAR_DATE);
if(lastbar!=curbar)
{
lastbar=curbar;
return(true);
}
return(false);
}
CNevBar *eurusd_H1; // объявим экземпляр класса для симмвола EURUSD
CNevBar *eurusd_M15; // объявим экземпляр класса для симмвола EURUSD
CNevBar *audusd_M30; // объявим экземпляр класса для симмвола AUDUSD
CNevBar *audusd_M5; // объявим экземпляр класса для симмвола AUDUSD//+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+intOnInit()
{
//---
eurusd_H1=new CNevBar();// создадим экземпляр класса для симмвола EURUSD
audusd_M30=new CNevBar();// создадим экземпляр класса для симмвола AUDUSD
eurusd_M15=new CNevBar();// создадим экземпляр класса для симмвола EURUSD
audusd_M5=new CNevBar();// создадим экземпляр класса для симмвола AUDUSD//---return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+//| Expert deinitialization function |//+------------------------------------------------------------------+voidOnDeinit(constint reason)
{
//---delete eurusd_H1;// удалим экземпляр класса для симмвола EURUSDdelete audusd_M30;// удалим экземпляр класса для симмвола AUDUSDdelete eurusd_M15;// удалим экземпляр класса для симмвола EURUSDdelete audusd_M5;// удалим экземпляр класса для симмвола AUDUSD
}
//+------------------------------------------------------------------+//| Expert tick function |//+------------------------------------------------------------------+voidOnTick()
{
if(eurusd_H1.new_bar("EURUSD",PERIOD_H1))
{
Alert("EURUSD"," Новый бар на Н1");
}
if(eurusd_M15.new_bar("EURUSD",PERIOD_M15))
{
Alert("EURUSD"," Новый бар на M15");
}
if(audusd_M30.new_bar("AUDUSD",PERIOD_M30))
{
Alert("AUDUSD"," Новый бар на M30");
}
if(audusd_M5.new_bar("AUDUSD",PERIOD_M5))
{
Alert("AUDUSD"," Новый бар на M5");
}
//---
}
//+------------------------------------------------------------------+//+------------------------------------------------------------------+
测试结果
2016.02.2021:09:432015.01.1000:00 тест3 test started
2016.02.2021:09:452015.01.1200:00 тест3 EURUSD,M1: Alert: EURUSD Новый бар на M15
2016.02.2021:09:472015.01.1200:00 тест3 EURUSD,M1: Alert: AUDUSD Новый бар на M30
2016.02.2021:09:502015.01.1200:00 тест3 EURUSD,M1: Alert: AUDUSD Новый бар на M5
2016.02.2021:09:532015.01.1200:05 тест3 EURUSD,M1: Alert: AUDUSD Новый бар на M5
2016.02.2021:09:592015.01.1200:10 тест3 EURUSD,M1: Alert: AUDUSD Новый бар на M5
2016.02.2021:10:042015.01.1200:15 тест3 EURUSD,M1: Alert: EURUSD Новый бар на M15
2016.02.2021:10:042015.01.1200:15 тест3 EURUSD,M1: Alert: AUDUSD Новый бар на M5
2016.02.2021:10:102015.01.1200:20 тест3 EURUSD,M1: Alert: AUDUSD Новый бар на M5
2016.02.2021:10:132015.01.1200:25 тест3 EURUSD,M1: Alert: AUDUSD Новый бар на M5
2016.02.2021:10:162015.01.1200:30 тест3 EURUSD,M1: Alert: EURUSD Новый бар на M15
2016.02.2021:10:162015.01.1200:30 тест3 EURUSD,M1: Alert: AUDUSD Новый бар на M30
2016.02.2021:10:162015.01.1200:30 тест3 EURUSD,M1: Alert: AUDUSD Новый бар на M5
2016.02.2021:10:232015.01.1200:35 тест3 EURUSD,M1: Alert: AUDUSD Новый бар на M5
2016.02.2021:10:262015.01.1200:40 тест3 EURUSD,M1: Alert: AUDUSD Новый бар на M5
2016.02.2021:10:292015.01.1200:45 тест3 EURUSD,M1: Alert: EURUSD Новый бар на M15
2016.02.2021:10:292015.01.1200:45 тест3 EURUSD,M1: Alert: AUDUSD Новый бар на M5
2016.02.2021:10:342015.01.1200:50 тест3 EURUSD,M1: Alert: AUDUSD Новый бар на M5
2016.02.2021:10:362015.01.1200:55 тест3 EURUSD,M1: Alert: AUDUSD Новый бар на M5
2016.02.2021:10:392015.01.1201:00 тест3 EURUSD,M1: Alert: EURUSD Новый бар на Н12016.02.2021:10:392015.01.1201:00 тест3 EURUSD,M1: Alert: EURUSD Новый бар на M15
2016.02.2021:10:392015.01.1201:00 тест3 EURUSD,M1: Alert: AUDUSD Новый бар на M30
2016.02.2021:10:392015.01.1201:00 тест3 EURUSD,M1: Alert: AUDUSD Новый бар на M5
2016.02.2021:10:462015.01.1201:05 тест3 EURUSD,M1: Alert: AUDUSD Новый бар на M5
2016.02.2021:10:502015.01.1201:10 тест3 EURUSD,M1: Alert: AUDUSD Новый бар на M5
2016.02.2021:10:552015.01.1201:15 тест3 EURUSD,M1: Alert: EURUSD Новый бар на M15
2016.02.2021:10:552015.01.1201:15 тест3 EURUSD,M1: Alert: AUDUSD Новый бар на M5
2016.02.2021:10:572015.01.1201:17 Tester: stop button pressed
MT4,请帮助社区。
1.在专家顾问中,在M1图表上工作(通过ticks或计时器0.5秒),你需要在H1图表上出现新蜡烛 时进行计算。
我们可以抓住M1蜡烛的开始,跟随每小时的最后一根M1蜡烛(NN:00分钟),但它不是很好...此外,H1蜡烛图可能不会在那一刻出现。
也许有人做得更优雅?
2.与专家顾问文本中的指标代码相比,通过iCustom()获取指标值需要多长时间?
3.如果专家顾问文本中的指标代码的计算速度要快得多,如何在专家顾问附加到M1图表中,在H1图表中计算指标值?
MT4,我请求社区的帮助。
1.在专家顾问中,在M1图表上工作(按点或按定时器0.5秒),你需要在H1图表上出现新蜡烛 的时刻进行计算。
我们可以抓住M1蜡烛的开始,跟随每小时的最后一根M1蜡烛(NN:00分钟),但它不是很好...此外,H1蜡烛图可能不会在那一刻出现。
也许有人做得更优雅?
2.与专家顾问文本中的指标代码相比,通过iCustom()获取指标值需要多长时间?
3.如果专家顾问文本中的指标代码的计算速度要快得多,如何在专家顾问附加到M1图表中,在H1图表中计算指标值?
第一个问题的答案,该函数定义了一个新条。
使用实例
第一个问题的答案,该函数定义了一个新条。
谢谢你,Sergey,我看了一下文档,但不知为什么我错过了iTime()。:
为什么在OnInit()中调用NevBar()?
第一个函数调用,否则将立即触发。为了确保OnInit()不被调用
第一个函数调用,否则将立即触发。为了确保OnInit()不被调用
谢谢你,Sergei !在论坛上,我被吓得够呛:"不要使用静态变量!"。" :)
谢谢你,Sergei !在论坛上,我被吓得够呛:"不要使用静态变量!"。" :)
这是我第一次听说它们,我想知道它们有什么可怕的地方,我也很少使用它们,但它们更适合于某些任务。
重点是,静态变量只能在NevDay()被调用到相同的符号和时间框架时使用。 如果有2个或更多的符号,NevDay()将返回不正确的值。我的专家顾问是多货币的...:(
如果你需要它的多货币模式,这里有一个例子,它可以在MT4和MT5中使用
重点是,只有在对同一符号和时间框架调用NevDay()时才能使用静态变量。 如果有2个或更多的符号,NevDay()将返回错误的值。我的专家顾问是多货币的...:(
这里是另一个使用类的选项
测试结果