指标杂项问题 - 页 12

 

没有理由说那个打印语句不应该产生什么。

如果你将该指标添加到一个新的图表上,它是否会打印出来(无需改变时间框架)?

如果是这样,这可能是在图表上已经有了该指标,然后重新编译,希望看到变化的问题。

 
honest_knave:

没有理由说那个打印语句不应该产生什么。

如果你将该指标添加到一个新的图表上,它是否会打印出来(无需改变时间框架)?

如果是这样,可能是在图表上已经有了这个指标,然后重新编译,期望看到变化的问题。


谢谢你的及时评论,非常感谢。

是的!无论是加载模板还是添加指标,都会打印出以下信息。

20...   ... EURUSD,M1: This Year1900

但正如你所知,这段代码可能给我 "2017"。

//---第二次编辑

当我重新编译时,它显示了正确的结果。

但当我尝试添加指标和加载模板时,我无法打开我重新编译的MetaEditor......我希望你能理解我的意思。

 
Max Enrik:


谢谢你的及时评论,非常感谢。

是的!它打印出下面的信息,无论是加载模板还是添加指标。

但正如你所知,这段代码可能给我 "2017"。

//----第二次编辑

当我重新编译时,它显示了正确的结果。

但当我试图添加指标和加载模板时,我无法打开我重新编译的MetaEditor......我希望你能理解我的意思。


可能是因为OnInit()在你连接到经纪商之前就运行了,所以给你的年份是 "错误的"。

Year()是基于服务器时间 的......如果没有连接,它不知道年份。

与之相比。

TimeYear(TimeLocal())
 
honest_knave:


它给你 "错误 "的年份的原因可能是OnInit()在你连接到你的经纪人之前运行。

Year()是基于服务器时间的......如果没有连接,它就不知道年份。

与之相比。


我知道OnInit()和OnCalculate(...)需要不同的代码风格...。
我将尝试再次重写我的指标。
(有可能我将放弃)

谢谢你的评论。

 

我想我可以写一段代码,首先删除所有的指标对象,然后重写它们。
我试过下面的代码。但我对这个方法有疑问。

问: 请问这种方法是否足以删除指标的所有对象?

任何建议都是最好的,谢谢。

int OnInit()
 {
  ObjectsDeleteAll( 0, prefix );
  
  // then all my indicator code here...
 }
 
Max Enrik:

我想我可以写一段代码,首先删除所有的指标对象,然后重写它们。
我试过下面的代码。但我对这个方法有疑问。

问: 请问这种方法是否足以删除指标的所有对象?

任何建议都是最好的,谢谢。


这是删除当前图表中所有以 "前缀 "开头的对象的正确方法。
 
honest_knave:

这是删除当前图表中所有以 "前缀 "开头的对象的正确方法。

很好!谢谢你的回答。
现在,我只需要看看第二天我的指标将如何工作。

( p.s 我不喜欢用Tester来测试我的指标 )

 

(我曾经说过)

我对我的几个指标使用下面的方法代码,这些指标没有任何问题,但只有当我启动MT4平台时才有一个问题,即指标需要重新启动平台,以更新正确的数值。我每天只遇到一次这样的问题。

问: 那么,以下部分代码是否会导致无法更新正确数值的问题,请问?

谢谢。

int OnInit()
{
    //---
    datetime a = iTime( Symbol(), 0, 0 );
    int      b = iBarShift( Symbol(), 0, a );
    datetime c = iOpen( Symbol(), 0, b );
    //---
    return(0);
}
 

OnInit()中的代码只运行一次。

当你重新启动你的终端时,OnInit()可以在你连接到你的经纪人之前完成。

如果没有连接到你的经纪人,时间就会出错。

我建议把你的代码移出OnInit(),或者至少检查 IsConnected()。

 
honest_knave:

我建议把你的代码移出OnInit(),或者至少检查IsConnected()。

不要使用IsConnected(),我会研究这个问题的。

非常感谢。