错误、漏洞、问题 - 页 444 1...437438439440441442443444445446447448449450451...3184 新评论 [删除] 2011.07.03 20:28 #4431 Interesting: 交易和报价会对解决问题没有帮助?不幸的是,没有。根据合同规范,报价环节从周一的00:00:00开始。 实际上,在这里,Rosh 给出的答案是,一个报价时段的开始并不能保证 其中有报价。这在原则上是可以理解的。到目前为止,我正在使用一个 "拐杖",其形式为以下检查。input int TTL = 10; // Время "жизни" котировки ... void Trade() { ... if (TimeCurrent() - SymbolInfoInteger(Instrumet, SYMBOL_TIME) > TTL) return; ... // Далее отправка торгового приказа на сервер. }如果有人能分享一个更优雅的解决方案,我将不胜感激(所有多币种用户一定都遇到过这种情况)。P.S.Konstantin Gruzdev 在他的文章《在MetaTrader 5中实现多货币模式》中提供了一个优雅的变体。 但这种变体将不符合锦标赛的要求。 Vladimir Gomonov 2011.07.03 20:29 #4432 voix_kas:呀...这触动了我的神经。:))最后一行是在一个论坛帖子中手工更正的,所以请原谅我。=) 顺便说一下,你的代码也没有编译(我忘了在最后一行加一个结尾括号)。:-Р 此外,它的速度要慢2-3倍(现在我已经用脚本检查过了),但检查的质量是一样的。:-Р总之,只要没有合适的代码来确定重要的整数,我就接受Composter的建议:将体积归一到小数点后8位。 希望不会有什么隐患。:) Aleksey Lebedev 2011.07.03 20:42 #4433 voix_kas:OrderCheck 没有帮助? Aleksey Lebedev 2011.07.03 20:47 #4434 参考资料。Функцию Sleep() нельзя вызывать из пользовательских индикаторов, так как индикаторы выполняются в интерфейсном потоке и не должны его тормозить.这真的是不可能的吗?或者如果你真的想,你可以,但要小心?:)从指标访问另一个符号的数据的问题。如果没有虱子) [删除] 2011.07.03 21:19 #4435 Swan: OrderCheck没有帮助?不,我在交易前写了一句话。if (!OrderCheck(TradeRequest, TradeCheckResult) || (TradeCheckResult.retcode != TRADE_RETCODE_DONE)) return;日志中仍有一个错误。:( Andrey Khatimlianskii 2011.07.03 23:54 #4436 那么地段正常化呢?伙计们,为什么要理论呢?地段增量将大于最小地段的情况是荒谬的。好吧,想象一下:min = 0.1,step = 1.0。那么,只有1.1、2.1、3.1、......地段才允许?这是无稽之谈。如果你在行使算术和编程,那么你的选择会赢。但如果我们谈论的是应用(交易意义上的)编程,那么在lot_step > lot_min时,我们必须以严重的错误 终止程序,并紧急更换经纪人,因为它没有足够的钱,甚至连通常配置服务器的人的工资都没有)。 一切都要适可而止。我的变体已经在实数上工作了5年多,使用不同的经纪人、账户类型、工具--从未出现过错误。 Документация по MQL5: Программы MQL5 / Ошибки выполнения www.mql5.com Программы MQL5 / Ошибки выполнения - Документация по MQL5 [删除] 2011.07.04 07:06 #4437 小册子 为什么说它是荒谬的呢?让我们举一个简单的例子:min_lot = 1.0, min_step = 0.3。这些要求满足 "不胡闹 "的原则(min_lot >= lot_step)。:) 你把1.3手的体积传给归一化函数。你从它那里返回1.2手。 升级后的版本将返回1.3。它的步骤是 "正确的":从最小批量开始,而不是从零开始。另一个问题是除了"1.0、0.1、0.01 等 "之外,还存在 "生活中 "的步骤。 在这里,在我看来,与解决一个可能的假想错误相比,问题的代价(性能的损失)是可以忽略不计的。IMHO。 毕竟,这样计算更正确:从最小的地段开始计算,而不是从零开始。 Гребенев Вячеслав 2011.07.04 11:40 #4438 是否有任何现成的代码,可以在某一特定金额(如1234.56美元是唯一的输入参数)下,以当前的符号和价格买入最大可能的手数。里面应该有各种最大、最小数量、正常化、杠杆会计、资金充足等方面的检查。最主要的是,代码必须进行买入,而不要因为我没有钱(有多少就买多少)、某些检查失败(让它成功)、下了订单但没有买入(死了,但不买就不回来)等而打扰我。 我知道在像CTALT这样的类中的某个地方,这是。但要从那里复制一些东西并不那么容易。我想处理我自己的算法,而不是MQL5的语言。 Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте www.mql5.com Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте - Документация по MQL5 Aleksey Lebedev 2011.07.04 15:15 #4439 voix_kas:不,我在交易前会写下一行字。日志中仍有一个错误。:( 看,在冠军账户上,所有的工具都在同一时间进行交易。注册)。TradeCheckResult.retcode != TRADE_RETCODE_DONE我不太确定这种情况...我不知道这个条件是否正确。if(current price== 0.0) return; Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров www.mql5.com Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров - Документация по MQL5 Andrey Khatimlianskii 2011.07.04 16:29 #4440 voix_kas:小册子 为什么说它是荒谬的呢?让我们举一个简单的例子:最小手数=1.0,最小步数=0.3。这些要求满足 "不胡闹 "的原则(min_lot >= lot_step)。:) 你把1.3手的体积传给归一化函数。从中有1.2手被退回给你。 升级后的版本将返回1.3。它的步骤是 "正确的":从最小批量开始,而不是从零开始。另一个问题是除了"1.0、0.1、0.01 等 "之外,还存在 "生活中 "的步骤。 在这里,在我看来,与解决可能的假想错误相比,问题的代价(性能损失)是可以忽略不计的。IMHO。 毕竟,这样计算更正确:从最小手数开始计算,而不是从零开始。"最小手数=1.0,最小步数=0.3 "也是很荒谬的。台阶应该是最小地段的倍数。我已经表达了我的观点--在数学和编程比赛中,min_lot减法变体将获胜,真正的交易不需要它。我不认为有进一步讨论的主题,每个人都有自己的方式;) 1...437438439440441442443444445446447448449450451...3184 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
交易和报价会对解决问题没有帮助?
不幸的是,没有。根据合同规范,报价环节从周一的00:00:00开始。
实际上,在这里,Rosh 给出的答案是,一个报价时段的开始并不能保证 其中有报价。这在原则上是可以理解的。
到目前为止,我正在使用一个 "拐杖",其形式为以下检查。
如果有人能分享一个更优雅的解决方案,我将不胜感激(所有多币种用户一定都遇到过这种情况)。
P.S.
Konstantin Gruzdev 在他的文章《在MetaTrader 5中实现多货币模式》中提供了一个优雅的变体。
但这种变体将不符合锦标赛的要求。
呀...这触动了我的神经。:))最后一行是在一个论坛帖子中手工更正的,所以请原谅我。=)
顺便说一下,你的代码也没有编译(我忘了在最后一行加一个结尾括号)。:-Р
此外,它的速度要慢2-3倍(现在我已经用脚本检查过了),但检查的质量是一样的。:-Р
总之,只要没有合适的代码来确定重要的整数,我就接受Composter的建议:将体积归一到小数点后8位。
希望不会有什么隐患。
参考资料。
Функцию Sleep() нельзя вызывать из пользовательских индикаторов, так как индикаторы выполняются в интерфейсном потоке и не должны его тормозить.
这真的是不可能的吗?或者如果你真的想,你可以,但要小心?:)
从指标访问另一个符号的数据的问题。
如果没有虱子)
OrderCheck没有帮助?
不,我在交易前写了一句话。
日志中仍有一个错误。:(
那么地段正常化呢?
伙计们,为什么要理论呢?
地段增量将大于最小地段的情况是荒谬的。好吧,想象一下:min = 0.1,step = 1.0。那么,只有1.1、2.1、3.1、......地段才允许?这是无稽之谈。
如果你在行使算术和编程,那么你的选择会赢。但如果我们谈论的是应用(交易意义上的)编程,那么在lot_step > lot_min时,我们必须以严重的错误 终止程序,并紧急更换经纪人,因为它没有足够的钱,甚至连通常配置服务器的人的工资都没有)。
一切都要适可而止。我的变体已经在实数上工作了5年多,使用不同的经纪人、账户类型、工具--从未出现过错误。小册子
为什么说它是荒谬的呢?让我们举一个简单的例子:min_lot = 1.0, min_step = 0.3。这些要求满足 "不胡闹 "的原则(min_lot >= lot_step)。:)
你把1.3手的体积传给归一化函数。你从它那里返回1.2手。
升级后的版本将返回1.3。它的步骤是 "正确的":从最小批量开始,而不是从零开始。
另一个问题是除了"1.0、0.1、0.01 等 "之外,还存在 "生活中 "的步骤。
在这里,在我看来,与解决一个可能的假想错误相比,问题的代价(性能的损失)是可以忽略不计的。IMHO。
毕竟,这样计算更正确:从最小的地段开始计算,而不是从零开始。
不,我在交易前会写下一行字。
日志中仍有一个错误。:(
看,在冠军账户上,所有的工具都在同一时间进行交易。注册)。
TradeCheckResult.retcode != TRADE_RETCODE_DONE
我不太确定这种情况...
我不知道这个条件是否正确。
if(current price== 0.0) return;
小册子
为什么说它是荒谬的呢?让我们举一个简单的例子:最小手数=1.0,最小步数=0.3。这些要求满足 "不胡闹 "的原则(min_lot >= lot_step)。:)
你把1.3手的体积传给归一化函数。从中有1.2手被退回给你。
升级后的版本将返回1.3。它的步骤是 "正确的":从最小批量开始,而不是从零开始。
另一个问题是除了"1.0、0.1、0.01 等 "之外,还存在 "生活中 "的步骤。
在这里,在我看来,与解决可能的假想错误相比,问题的代价(性能损失)是可以忽略不计的。IMHO。
毕竟,这样计算更正确:从最小手数开始计算,而不是从零开始。
"最小手数=1.0,最小步数=0.3 "也是很荒谬的。台阶应该是最小地段的倍数。
我已经表达了我的观点--在数学和编程比赛中,min_lot减法变体将获胜,真正的交易不需要它。
我不认为有进一步讨论的主题,每个人都有自己的方式;)