某一指标的唯一ID生成器 - 页 3 1234 新评论 Ubzen 2014.03.08 14:43 #21 Ovo: 不确定你是不是指 "教"。我在调试时使用了一些,但对于__DATETIME__,我还没有发现任何用途......你的目标是什么? 对不起,忘了你要找的是同一个指标多个窗口。 我试试想别的办法。 =============================================== 啊哈,我想到了。创建一个函数,它可以做一个合适的长度计算。 然后返回函数完成的时间间隔作为你的唯一数字。 Bambang Sugianto 2014.03.09 16:53 #22 TimeCurrent()是一个唯一的数字。 你为什么不试着用你附在indi上的时间呢? Alain Verleyen 2014.03.09 17:46 #23 Ovo: 因为我不试用每一个建议。我只挑选那些有意义的建议。我建议你 对 那些试图 帮助你的 人 节制一下你的 傲慢 。这种态度在这个论坛上是不受欢迎的。 Ex Ovo Omnia 2014.03.09 18:36 #24 angevoyageur: 我建议你 对 那些试图 帮助你的 人 节制一下你的 傲慢 。这种态度在这个论坛上是不受欢迎的。 我将努力远离。 Bambang Sugianto 2014.03.11 06:23 #25 你怎么能说我的想法是没有意义的呢? 时间电流 是唯一的数字... 试试这个代码......把它附在一个图表上......但输入周期不同 #property strict #property indicator_separate_window //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ extern int periode=4; int OnInit() { //--- indicator buffers mapping string shortname=StringConcatenate(WindowExpertName(),"_",periode); IndicatorShortName(shortname); int wind=WindowFind(shortname); string name=StringConcatenate("TIME_TAG",wind); if (ObjectFind(name)!=wind) { ObjectCreate(name, OBJ_LABEL, wind, 0, 0); ObjectSet(name, OBJPROP_CORNER,2); ObjectSet(name, OBJPROP_XDISTANCE,2 ); ObjectSet(name, OBJPROP_YDISTANCE,5); ObjectSetText(name,DoubleToStr(TimeCurrent(),0)+DoubleToStr(wind,0) ,9,"Arial",Yellow); } //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| 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); } gchrmt4 2014.03.11 07:26 #26 WDholic: TimeCurrent是唯一的数字。 TimeCurrent()在各种可能的情况下不是唯一的数字,包括以下情况。 * 你正在重新启动一个带有多个现有图表和多个指标的MT4副本。它们将在同一时间被初始化,并看到相同的TimeCurrent() *你是在流动性不足的时期添加指标的副本。根据你的经纪人的价格反馈的类型,可能会有5-10秒没有新的刻度线的时期,而TimeCurrent()不会改变。如果你在这样的时期添加新的指标,那么它们将获得相同的TimeCurrent()值。 Bambang Sugianto 2014.03.11 09:02 #27 string name=StringConcatenate("TIME_TAG",wind); if (ObjectFind(name)!=wind) { ObjectCreate(name, OBJ_LABEL, wind, 0, 0); ObjectSet(name, OBJPROP_CORNER,2); ObjectSet(name, OBJPROP_XDISTANCE,2 ); ObjectSet(name, OBJPROP_YDISTANCE,5); ObjectSetText(name,DoubleToStr(TimeCurrent(),0)+DoubleToStr(wind,0) ,9,"Arial",Yellow); } 只有在我们找不到TIME TAG标签的情况下才添加时间标签。 所以在删除时不要删除TIME TAG 标签......这样数值就不会改变。 好吧,如果我们担心5秒或10秒内没有刻度,那么我们可以用TimeLocal 代替Time Current。 gchrmt4 2014.03.11 09:45 #28 WDholic: 只有在我们找不到TIME TAG标签的情况下才添加时间标签。 所以在删除时不要删除TIME TAG 标签......这样数值就不会改变。 好吧,如果我们担心5秒或10秒内没有刻度,那么我们可以用TimeLocal来代替Time Current。 ...还有上面讨论的关于图表对象 的问题: 如果你将指标添加到一个图表中,然后创建一个模板,所有从模板中创建的新图表将有相同的TIME_TAG值。而且,使用该对象只允许每个图表有一个指标实例;除非你把所有 可能的参数放到IndicatorShortName中,否则多个指标将得到相同的ID。 Bambang Sugianto 2014.03.11 11:13 #29 gchrmt4:...还有上面讨论的关于图表对象的问题:如果你将指标添加到图表中,然后创建一个模板,所有从模板中创建的新图表将具有相同的TIME_TAG值。而且,使用该对象只允许每个图表有一个指标实例;除非你把所有 可能的参数放到IndicatorShortName中,否则多个指标将得到相同的ID。 请试一下... 如果你把5个指标放在1个模板的不同设置中...。例如...时间值是11111000 窗口1将显示 111110001在窗口2将显示 111110002窗口3将显示 111110003在窗口4将显示 111110004在窗口5将显示 111110005因为我包括了窗口号码ObjectSetText(name,DoubleToStr(TimeCurrent(),0)+DoubleToStr(wind,0),9,"Arial",Yellow)。 除非你 在 IndicatorShortName中输入所有 可能的参数,否则 多个指标将获得相同的ID 。是的......这将是很好的考虑。但我认为对于像OVO和你这样的编码高手来说,这很容易。 gchrmt4 2014.03.11 11:22 #30 WDholic: 如果你在不同的设置中用一个模板放5个di... 我不知道你使用的是哪个版本的MT4,但在我的电脑上的v616版本,WindowFind()在OnInit()期间返回-1。文档 中一直说 "WindowFind()返回-1,如果自定义指标在init()函数工作时搜索自己。" 1234 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
对不起,忘了你要找的是同一个指标多个窗口。
我试试想别的办法。
===============================================
啊哈,我想到了。创建一个函数,它可以做一个合适的长度计算。
然后返回函数完成的时间间隔作为你的唯一数字。
TimeCurrent()是一个唯一的数字。
你为什么不试着用你附在indi上的时间呢?
因为我不试用每一个建议。我只挑选那些有意义的建议。
我建议你 对 那些试图 帮助你的 人 节制一下你的 傲慢 。这种态度在这个论坛上是不受欢迎的。
我将努力远离。
你怎么能说我的想法是没有意义的呢?
时间电流 是唯一的数字...
试试这个代码......把它附在一个图表上......但输入周期不同
TimeCurrent是唯一的数字。
TimeCurrent()在各种可能的情况下不是唯一的数字,包括以下情况。
* 你正在重新启动一个带有多个现有图表和多个指标的MT4副本。它们将在同一时间被初始化,并看到相同的TimeCurrent()
*你是在流动性不足的时期添加指标的副本。根据你的经纪人的价格反馈的类型,可能会有5-10秒没有新的刻度线的时期,而TimeCurrent()不会改变。如果你在这样的时期添加新的指标,那么它们将获得相同的TimeCurrent()值。
只有在我们找不到TIME TAG标签的情况下才添加时间标签。
所以在删除时不要删除TIME TAG 标签......这样数值就不会改变。
好吧,如果我们担心5秒或10秒内没有刻度,那么我们可以用TimeLocal 代替Time Current。
只有在我们找不到TIME TAG标签的情况下才添加时间标签。
所以在删除时不要删除TIME TAG 标签......这样数值就不会改变。
好吧,如果我们担心5秒或10秒内没有刻度,那么我们可以用TimeLocal来代替Time Current。
...还有上面讨论的关于图表对象 的问题: 如果你将指标添加到一个图表中,然后创建一个模板,所有从模板中创建的新图表将有相同的TIME_TAG值。而且,使用该对象只允许每个图表有一个指标实例;除非你把所有 可能的参数放到IndicatorShortName中,否则多个指标将得到相同的ID。
...还有上面讨论的关于图表对象的问题:如果你将指标添加到图表中,然后创建一个模板,所有从模板中创建的新图表将具有相同的TIME_TAG值。而且,使用该对象只允许每个图表有一个指标实例;除非你把所有 可能的参数放到IndicatorShortName中,否则多个指标将得到相同的ID。
请试一下...
如果你把5个指标放在1个模板的不同设置中...。
例如...时间值是11111000
窗口1将显示 111110001在窗口5将显示 111110005
因为我包括了窗口号码
ObjectSetText(name,DoubleToStr(TimeCurrent(),0)+DoubleToStr(wind,0),9,"Arial",Yellow)。
除非你 在 IndicatorShortName中输入所有 可能的参数,否则 多个指标将获得相同的ID 。
是的......这将是很好的考虑。
但我认为对于像OVO和你这样的编码高手来说,这很容易。
如果你在不同的设置中用一个模板放5个di...