[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 5. - 页 209 1...202203204205206207208209210211212213214215216...432 新评论 polycomp 2013.03.09 21:05 #2081 polycomp: 这些是函数,而对象是出现在图形上的矩形。 附加的文件: lib_zemckikh.mq4 14 kb polycomp 2013.03.09 21:07 #2082 polycomp: 附加的文件: bar_distribute_1.mq4 6 kb Алексей Тарабанов 2013.03.09 21:07 #2083 我们将不得不看,这需要时间。 TarasBY 2013.03.09 21:14 #2084 polycomp: 重新初始化后,代码工作方式不同的可能原因之一是MT4中静态变量初始化的特殊性。在isNewBar()函数中,你使用这样的变量。在初级初始化期间,BarTime = 0。在进一步重新初始化时,这个变量将包含以前的值(不是0)。为了检查这个假设,让BarTime变量成为全局变量,并检查代码如何工作。 Alexey Subbotin 2013.03.09 22:33 #2085 polycomp:alsu。 首先,在Print中打印一些库函数的内容,这样你就可以知道它们是否被完全调用了图形对象是在库函数中创建的。在第一次调用指标后,对象被创建并显示在终端窗口。 当你再次调用它们时,它们并没有出现在对象列表中,这表明外部函数在重新计算指标时由于某种原因没有发挥作用,而终端对这个问题保持沉默。 好的。不使用间接符号,而是在指示器中打印(" 调用此函数");我们将立即看到此函数是否被调用。你应该不那么傲慢,那么错误就会更快被发现) Alexey Subbotin 2013.03.09 22:40 #2086 polycomp: 一般来说,你的问题很可能出现在函数中bool isNewBar() { static datetime BarTime; bool res=false; if (BarTime!=Time[0]) { BarTime=Time[0]; res=true; } return(res); }问题是,在重新初始化过程中,静态数据并没有被重置,所以当你重新启动时,你的BarTime总是等于上次计算的最后一个Bar的时间,也就是说,isNewBar()是假的,直到一个新的蜡烛 到来。最好是把这个函数从库中移到mqh inluder中,并在init()中明确将BarTime=0归零。这只是对代码的初步了解,如果我错了,请不要太严厉地判断。 Victor Nikolaev 2013.03.10 01:26 #2087 polycomp: 我将首先从你的库中删除这一行#property library由于你使用的不是一个库,而是一个包含文件 ANDREY 2013.03.10 04:37 #2088 alsu: 在我印象中,当你设置挂单时,你必须特别记住这个时间。你可以直接在订单的注释中记住它(或在magik中,作为一个特殊的变态:)。 非常感谢你。 ANDREY 2013.03.10 05:00 #2089 问题1.如何对这个想法进行编码。设置一个挂单,但只有当 挂单设置的价格与任何TF60蜡烛的开盘价一致时,才 将其 转换为市价 单。问题2.如何对这个想法进行编码。如果一个挂单被转换为市价单,在10分钟内,我们应该设置另一个挂单,其数值 相同: 开仓价、 止损 价、成交量 与之前被转换为市价单的挂单相同。谢谢你。 polycomp 2013.03.10 07:01 #2090 alsu: 好的。也许,我们不应该通过间接符号来判断,而应该直接输入指标本身:Print("调用这样那样的函数");我们马上就会看到它是否被调用。你应该减少过度自信,那么错误就会更快地被发现)。 alsu。 一般来说,你的问题很可能是在函数中问题是,在重新初始化时,静态数据没有被清零,所以在重新启动时,BarTime总是等于上次计算的最后一个条形的时间,也就是说,isNewBar()将是假的,直到有新的蜡烛到来。最好是把这个函数从库中移到mqh inluder中,并在init()中明确将BarTime=0归零。这只是对代码的初步了解,如果我错了,请不要太严厉地判断。 非常感谢您!从库中删除了isNewBar(),放在指标文件中。一切都像钟表一样运作! 1...202203204205206207208209210211212213214215216...432 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
这些是函数,而对象是出现在图形上的矩形。
首先,在Print中打印一些库函数的内容,这样你就可以知道它们是否被完全调用了
图形对象是在库函数中创建的。在第一次调用指标后,对象被创建并显示在终端窗口。
当你再次调用它们时,它们并没有出现在对象列表中,这表明外部函数在重新计算指标时由于某种原因没有发挥作用,而终端对这个问题保持沉默。好的。不使用间接符号,而是在指示器中打印(" 调用此函数");我们将立即看到此函数是否被调用。
你应该不那么傲慢,那么错误就会更快被发现)
一般来说,你的问题很可能出现在函数中
问题是,在重新初始化过程中,静态数据并没有被重置,所以当你重新启动时,你的BarTime总是等于上次计算的最后一个Bar的时间,也就是说,isNewBar()是假的,直到一个新的蜡烛 到来。最好是把这个函数从库中移到mqh inluder中,并在init()中明确将BarTime=0归零。
这只是对代码的初步了解,如果我错了,请不要太严厉地判断。
我将首先从你的库中删除这一行
#property library
由于你使用的不是一个库,而是一个包含文件
在我印象中,当你设置挂单时,你必须特别记住这个时间。你可以直接在订单的注释中记住它(或在magik中,作为一个特殊的变态:)。
问题1.
如何对这个想法进行编码。
设置一个挂单,但只有当 挂单设置的价格与任何TF60蜡烛的开盘价一致时,才 将其 转换为市价 单。
问题2.
如何对这个想法进行编码。
如果一个挂单被转换为市价单,在10分钟内,我们应该设置另一个挂单,其数值 相同: 开仓价、 止损 价、成交量 与之前被转换为市价单的挂单相同。
谢谢你。
好的。也许,我们不应该通过间接符号来判断,而应该直接输入指标本身:Print("调用这样那样的函数");我们马上就会看到它是否被调用。
你应该减少过度自信,那么错误就会更快地被发现)。
一般来说,你的问题很可能是在函数中
问题是,在重新初始化时,静态数据没有被清零,所以在重新启动时,BarTime总是等于上次计算的最后一个条形的时间,也就是说,isNewBar()将是假的,直到有新的蜡烛到来。最好是把这个函数从库中移到mqh inluder中,并在init()中明确将BarTime=0归零。
这只是对代码的初步了解,如果我错了,请不要太严厉地判断。
非常感谢您!
从库中删除了isNewBar(),放在指标文件中。一切都像钟表一样运作!