mql5语言的特点、微妙之处以及技巧 - 页 194

 

你好,请专家帮忙

来自文件

全球变量

"全局变量的初始化是在程序加载到客户终端的内存后,在处理第一个Init 事件前进行一次。对于全局变量,也就是类的对象,在初始化过程中,会调用相应的构造函数。"

但事实上,当我改变图表的周期时,指标中全局对象类的构造函数被调用。

如何使构造函数在指标启动后被调用一次?

 
Gudgeon:

但事实上,当我改变图表周期时,指标中对象类的构造函数被调用。

如何使构造函数在指标启动后被调用一次?

改变指标的TF - 开始一个新的程序副本。

 
fxsaber:

改变指标的TF--运行一个新的程序副本。

谢谢你!

意外的是,我从文件中无法理解。

在专家顾问系统中,一切都很好。

 
你可以按以下方法找出编译程序所需的时间。
LastModifyEX5() - __DATETIME__
 
fxsaber:
你可以按以下方法找出编译你的程序所需的时间。
什么是LastModifyEX5()?我在网站上找不到它。
 
Alexey Viktorov:
而这个LastModifyEX5()是什么?我在网站上找不到它。

你必须自己通过WinAPI来写这个。在这里,实施是次要的。

 

我的朋友们,业余爱好者们!

我怎样才能以编程方式为特定TF上的特定指标设置可见性。

考虑到其他TFs可能还有5个指标。

我在描述中搜索,非常简单,在帮助中搜索,但描述中的搜索没有给出解决机制的结果


我知道如何设置对象的可见性。

 
限制器可以改变它的ORDER_TIME_SETUP_MSC--在部分执行的情况下,这个属性变成等于第一个(可能是倒数第二个)部分执行的时间。
 
在测试器中,这个条件将始终被触发。
int OnInit()
{
  MqlTick Tick;
  
  return(SymbolInfoTick(_Symbol, Tick) && (TimeCurrent() != Tick.time));
}
很难说这是测试器的一个错误,还是一个功能。
 

曾经 有人提出 一种确定服务器时间的GMT偏移的方法。它并不总是准确地发挥作用。

以下似乎是一个准确的版本。

// Аналог по серверному времени - https://www.mql5.com/ru/docs/dateandtime/timegmtoffset
int TimeServerGMTOffset( void )
{
  MqlCalendarValue Value[1];
  
  CalendarValueHistoryByEvent(840030016, Value, D'2020.12.03', D'2020.12.06');
  
  return((13 - ((Value[0].time / 3600) % 24)) * 3600);
}

// Аналог по серверному времени - https://www.mql5.com/ru/docs/dateandtime/timegmt
datetime TimeServerGMT( void )
{
  return(TimeTradeServer() + TimeServerGMTOffset());
}


关于交易、自动交易系统和交易策略测试的论坛

mql4语言的特点,错综复杂的问题和技巧

fxsaber, 2018.03.29 14:32

应用

#define  PRINT(A) Print(#A + " = " + (string)(A))

void OnStart()
{  
  PRINT(TimeGMT());
  PRINT(TimeServerGMT());  
}