被错误困扰的是没有交易业务 - 页 14 1...789101112131415161718192021 新评论 Maxim Kuznetsov 2020.07.26 15:14 #131 Maxim Kuznetsov:想一想,在 "停止 "会发生什么。(你已经有了Margin Call,Steppe比以前更接近了)你的交易将被强行平仓,但你忽略了这样一个选项,你会在每一个刻度线上 寻找它(在历史上,它很长)并发送错误的订单。 只是为那些有 "超过10年的MQL编程 "的人补充一下 如果事情能够发生,它肯定会发生。 暂停交易和追加保证金并不那么正常,但这是很自然的,EA应该为它们做好准备。 交易条件可能会改变,它们不是恒定的。StopLevel跳跃,甚至有时会改变杠杆率。 用户可以很容易地设置/改变止损/止盈或平仓,甚至是无意的 - 专家顾问应该对此作出反应。 用户可以用Magic开仓/平仓(或者不小心把Magic=0,用手交易)--机器人会怎么做? 在不重新启动EA的情况下,余额被存入/提取--机器人能够做到这一点是非常重要的(最近有一个话题--一个人刚刚输了钱) 终端可能会重新启动,并需要很长的时间来更新,或者连接可能会失去相当长的时间 - 所有这些和离线发生的一切都应该被考虑在内 验证器只检查1-2%的 "最低限度的候选人",人们仍然抱怨... Andrey Kaunov 2020.07.26 16:44 #132 Renat Akhtyamov:似乎是按顺序写的,问题-答案该主题的所有页面都可以访问。 雷纳特,我理解你在计算认股权证。我不明白为什么? Maxim Kuznetsov: 只是为每个有 "超过10年的MQL编程 "的人补充。如果事情能够发生,它肯定会发生。 跌停和补仓不是那么正常,但这是很自然的,EA必须为它们做好准备。 交易条件可能会改变,它们不是恒定的。StopLevel跳跃,甚至有时会改变杠杆率。 用户可以很容易地设置/改变止损/止盈或平仓,甚至是无意的 - 专家顾问应该对此作出反应。 用户可以用Magic开仓/平仓(或者不小心把Magic=0,用手交易)--机器人会怎么做? 在不重新启动EA的情况下,余额被存入/提取--机器人能够做到这一点是非常重要的(最近有一个话题--一个人刚刚输了钱) 终端可能会重新启动,并需要很长的时间来更新,或者连接可能会失去相当长的时间 - 所有这些和离线发生的一切都应该被考虑在内 验证器只被1-2%的 "最低限度的候选人 "检查,人们仍然抱怨...... 马克西姆,你在说什么?我曾征求过什么建议,当我得到一个停止的时候该怎么办。从第6页开始阅读论坛,在我看来,我已经非常详细地阐述了我的问题。 Renat Akhtyamov 2020.07.26 16:52 #133 Andrey Kaunov:雷纳特,我理解你在计算认股权证。我不明白为什么?马克西姆,你在说什么?我是否征求过关于如何处理停业的建议?阅读论坛的第6页,我想我已经很详细地阐述了我的问题。 因为现实中的门票不是0,,,,N Andrey Kaunov 2020.07.26 16:55 #134 哦,你是说我的小代码。所以有什么样的票并不重要。雷纳特有一个二维数组。在单元格[0]中,它写了一张票,而在单元格[1]中,它计算了订单。我们可以用不同的变量来做,但我决定用这种方式做。 Maxim Kuznetsov 2020.07.26 17:30 #135 Andrey Kaunov:雷纳特,我理解你在计算认股权证。我不明白为什么?马克西姆,你在说什么?我是否征求过关于如何处理停业的建议?从第6页开始阅读论坛,在我看来,我已经非常详细地陈述了我的问题。 以你10年的经验,我可以给你什么建议......原则上没有什么:-) 你无视我的建议,要求为你的EA提供验证器。 --- 你在NZDUSD上得到一个止损,一个订单被关闭,你的EA的逻辑并不重要,你仍然选择它并发送OrderClose,你得到的是假的。这个惊人的操作在每一次打勾 时都会重复,整个过程都会变慢,检查被取消。而这是在最简单的层面上。 关于贸易条件检查--见前14页 Artyom Trishkin 2020.07.26 17:58 #136 Andrey Kaunov: 请注意你的这个帖子。 关于交易、自动交易系统和交易策略测试的论坛 厌倦了没有交易业务的错误 Andrey Kaunov, 2020.07.25 11:42 我会试试的,雷纳特,谢谢你的提示。 弗拉基米尔,你能建设性地理解这个问题吗?我不是要检查该地段的保证金等吗?哪些检查必须通过...... "这篇文章对我来说已经像一本圣经 了。我在上面发布了代码片段。我已经根据你在文章中的建议修改了代码,完全符合要求。 //+------------------------------------------------------------------+ //| Функция нормализации лота | //+------------------------------------------------------------------+ double NormalizeLots(string symbol, double lot, int direction, bool is_margin=true) { if(lot<=0) return(0.0); RefreshRates(); double min=SymbolInfoDouble(symbol,SYMBOL_VOLUME_MIN); double max=SymbolInfoDouble(symbol,SYMBOL_VOLUME_MAX); double step=SymbolInfoDouble(symbol,SYMBOL_VOLUME_STEP); //double free = AccountFreeMargin()*0.95; //double margin = MarketInfo(symbol,MODE_MARGINREQUIRED); double _lot=lot<min?min:(lot>max?max:lot); _lot=MathRound(_lot/step)*step; //if(is_margin && _lot*margin>free) _lot=0.0; ResetLastError(); if(is_margin && (AccountFreeMarginCheck(Symbol(),direction,_lot)<=0 || GetLastError()==134)) _lot=0.0; return(_lot); } 但我仍然得到 "没有交易"。 好吧,如果函数总是发送0.0手并且不允许打开交易,我把它改为发送最小手数。 //+------------------------------------------------------------------+ //| Функция нормализации лота | //+------------------------------------------------------------------+ double NormalizeLots(string symbol, double lot, int direction, bool is_margin=true) { if(lot<=0) return(0.0); RefreshRates(); double min=SymbolInfoDouble(symbol,SYMBOL_VOLUME_MIN); double max=SymbolInfoDouble(symbol,SYMBOL_VOLUME_MAX); double step=SymbolInfoDouble(symbol,SYMBOL_VOLUME_STEP); //double free = AccountFreeMargin()*0.95; //double margin = MarketInfo(symbol,MODE_MARGINREQUIRED); double _lot=lot<min?min:(lot>max?max:lot); _lot=MathRound(_lot/step)*step; //if(is_margin && _lot*margin>free) _lot=0.0; ResetLastError(); if(is_margin && (AccountFreeMarginCheck(Symbol(),direction,_lot)<=0 || GetLastError()==134)) _lot=min; return(_lot); } 而我得到的历史记录显示,交易确实发生了(见下面的屏幕截图)。但是,最低的一批当然来的很奇怪,但是让它来吧。但交易是存在的! 这种情况是非常奇怪的验证器,使得最低手数为0.2,存款为1美元。 自然,不会有任何交易!而 这是用一个完全足够的代码。顺便说一下,我已经删除了指标等的所有条件,以便测试。专家顾问一启动,交易就开始了。 那么,验证器是做什么的?我认为到目前为止,它所做的唯一一件事就是让程序员们大吃一惊! 请注意,我没有要求改变验证器中的任何东西。我们可以简单地看到测试日志。我们将了解测试是在什么参数下运行的,以及在什么存款上。最后,我们至少可以用打印来检查代码中的错误所在,并尽可能快地修复它。我们不会在整整一个星期内将手指指向天空,只试图将一个错误定位。我们不是在对着干,是吗?我理解,我们正在努力共同赚取一些东西。 你的第一张截图。你已经附和着说NZDUSD没有交易的信息。而在14页中,你一直在与这个磨坊争吵。 但第一张截图中的主要错误不是这个。它是通知你在英镑兑美元上测试时间过长。由于测试持续时间太长,验证器暂停了测试。 在GBPUSD,M30上运行代码分析器,让它交易三小时。然后看一下瓶颈,并解决它们。 Andrey Kaunov 2020.07.26 18:16 #137 Maxim Kuznetsov:---你在NZDUSD上有一个止损,你已经关闭了一个订单,你的EA的逻辑并不关心,你仍然选择它并发送OrderClose,你得到的是假的。这 个惊人的操作在每一次打勾 时都会重复,整个过程都会变慢,检查被取消。而这是在最简单的情况下。 关于检查贸易条件--见前14页。 马克西姆,你在阅读代码时很不专心。 //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { gl_lots=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MIN); gl_ask=NormalizeDouble(Ask,_Digits); gl_bid=NormalizeDouble(Bid,_Digits); gl_comm="test"; //--- if(AccountFreeMarginCheck(_Symbol,OP_BUY,gl_lots)<=0 || GetLastError()==134) { printf("Not enough money for the minimum lot: %.4f",gl_lots); return; } if(test_ticket[1]<8 && test_ticket[0]==0) { test_ticket[0]=OrderSend((StringCompare(_Symbol,"NZDUSD")==0?"NZDUSD":_Symbol),OP_BUY,gl_lots,gl_ask,30,0.0,0.0,gl_comm,33333,0,clrNONE); if(test_ticket[0]>0) test_ticket[1]++; else if(Fun_Error(GetLastError())==1) return; } if(test_ticket[0]>0) if(OrderSelect(test_ticket[0],SELECT_BY_TICKET)) { if(OrderCloseTime()==0 && OrderOpenTime()+300<TimeCurrent()) if(OrderClose(test_ticket[0],OrderLots(),gl_bid,30,clrNONE)) { printf("Test order closed, ticket #%d",test_ticket[0]); test_ticket[0]=0; } else if(Fun_Error(GetLastError())==1) return; } else if(Fun_Error(GetLastError())==1) return; } 如果订单被关闭,标记中提到的条件不会让OrderClose()函数跑掉,这是第一件事。其次,如果在NZDUSD上至少有一个订单是开放的,验证器就不会返回 "没有交易"。 Artyom Trishkin: ... 在GBPUSD,M30上运行代码分析器,让它交易三小时。然后看一下瓶颈,并解决它们。 好的,阿尔乔姆。我会试一试的。 Maxim Kuznetsov 2020.07.26 18:21 #138 Andrey Kaunov:马克西姆,你读代码的时候很不专心。标记所指定的条件不会让OrderClose()函数逃脱,这是第一件事。其次,如果在NZDUSD上至少有一个订单被打开,验证器就不会返回 "没有交易"。 坦率地说,我已经厌倦了充当歪曲代码的调试员,并试图与作者的自信心作斗争。指定的错误就在那里,自己看吧 如果你不知道该怎么做,你将不得不为自己的利益做一些事情。验证器与此无关 Andrey Kaunov 2020.07.26 18:30 #139 马克西姆,我不是要求你个人去调试什么。代码是歪的,很好,但它通过了验证。这个问题是完全不同的。 Andrey Kaunov 2020.07.29 16:40 #140 Artyom Trishkin:... 在GBPUSD,M30上运行代码分析器,让它交易三个小时。然后看到瓶颈并解决它们。 Artyom,代码分析器 没有显示任何瓶颈。整个代码运行平稳,没有任何病态的漫长过程。 这整个故事的底线是这样的。不管是用什么方法,我终于通过了验证。它完全不依赖于代码(如果它是正确的,没有任何明显的错误,正如本文中提到的)。验证器是如何工作的,显然只有其创造者知道。代码在2次后被检查,然后在第三次时被检查。有时它连续通过几次,有时根本没有。更重要的是,我只改变输入参数(这些参数并不关键),或者转移重新排列时不会改变任何东西的行,甚至删除或添加注释(这些注释不应该以任何方式影响工作文件)。 一般来说,通过或失败的验证,只取决于 "心情 "验证器(网络中的电压,某种电力流,或谁知道其他什么)。因此,在通常的测试器中,正常参数下的代码从未挂起,也没有出现任何故障,在任何对和TF 上都是如此。 1...789101112131415161718192021 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
想一想,在 "停止 "会发生什么。(你已经有了Margin Call,Steppe比以前更接近了)
你的交易将被强行平仓,但你忽略了这样一个选项,你会在每一个刻度线上 寻找它(在历史上,它很长)并发送错误的订单。
只是为那些有 "超过10年的MQL编程 "的人补充一下
如果事情能够发生,它肯定会发生。
暂停交易和追加保证金并不那么正常,但这是很自然的,EA应该为它们做好准备。
交易条件可能会改变,它们不是恒定的。StopLevel跳跃,甚至有时会改变杠杆率。
用户可以很容易地设置/改变止损/止盈或平仓,甚至是无意的 - 专家顾问应该对此作出反应。
用户可以用Magic开仓/平仓(或者不小心把Magic=0,用手交易)--机器人会怎么做?
在不重新启动EA的情况下,余额被存入/提取--机器人能够做到这一点是非常重要的(最近有一个话题--一个人刚刚输了钱)
终端可能会重新启动,并需要很长的时间来更新,或者连接可能会失去相当长的时间 - 所有这些和离线发生的一切都应该被考虑在内
验证器只检查1-2%的 "最低限度的候选人",人们仍然抱怨...
似乎是按顺序写的,问题-答案
该主题的所有页面都可以访问。
雷纳特,我理解你在计算认股权证。我不明白为什么?
只是为每个有 "超过10年的MQL编程 "的人补充。
如果事情能够发生,它肯定会发生。
跌停和补仓不是那么正常,但这是很自然的,EA必须为它们做好准备。
交易条件可能会改变,它们不是恒定的。StopLevel跳跃,甚至有时会改变杠杆率。
用户可以很容易地设置/改变止损/止盈或平仓,甚至是无意的 - 专家顾问应该对此作出反应。
用户可以用Magic开仓/平仓(或者不小心把Magic=0,用手交易)--机器人会怎么做?
在不重新启动EA的情况下,余额被存入/提取--机器人能够做到这一点是非常重要的(最近有一个话题--一个人刚刚输了钱)
终端可能会重新启动,并需要很长的时间来更新,或者连接可能会失去相当长的时间 - 所有这些和离线发生的一切都应该被考虑在内
验证器只被1-2%的 "最低限度的候选人 "检查,人们仍然抱怨......
马克西姆,你在说什么?我曾征求过什么建议,当我得到一个停止的时候该怎么办。从第6页开始阅读论坛,在我看来,我已经非常详细地阐述了我的问题。
雷纳特,我理解你在计算认股权证。我不明白为什么?
马克西姆,你在说什么?我是否征求过关于如何处理停业的建议?阅读论坛的第6页,我想我已经很详细地阐述了我的问题。
因为现实中的门票不是0,,,,N
雷纳特,我理解你在计算认股权证。我不明白为什么?
马克西姆,你在说什么?我是否征求过关于如何处理停业的建议?从第6页开始阅读论坛,在我看来,我已经非常详细地陈述了我的问题。
以你10年的经验,我可以给你什么建议......原则上没有什么:-)
你无视我的建议,要求为你的EA提供验证器。
---
你在NZDUSD上得到一个止损,一个订单被关闭,你的EA的逻辑并不重要,你仍然选择它并发送OrderClose,你得到的是假的。这个惊人的操作在每一次打勾 时都会重复,整个过程都会变慢,检查被取消。而这是在最简单的层面上。
关于贸易条件检查--见前14页
请注意你的这个帖子。
关于交易、自动交易系统和交易策略测试的论坛
厌倦了没有交易业务的错误
Andrey Kaunov, 2020.07.25 11:42
我会试试的,雷纳特,谢谢你的提示。
弗拉基米尔,你能建设性地理解这个问题吗?我不是要检查该地段的保证金等吗?哪些检查必须通过...... "这篇文章对我来说已经像一本圣经 了。我在上面发布了代码片段。我已经根据你在文章中的建议修改了代码,完全符合要求。
但我仍然得到 "没有交易"。
好吧,如果函数总是发送0.0手并且不允许打开交易,我把它改为发送最小手数。
而我得到的历史记录显示,交易确实发生了(见下面的屏幕截图)。但是,最低的一批当然来的很奇怪,但是让它来吧。但交易是存在的!
这种情况是非常奇怪的验证器,使得最低手数为0.2,存款为1美元。
自然,不会有任何交易!而 这是用一个完全足够的代码。顺便说一下,我已经删除了指标等的所有条件,以便测试。专家顾问一启动,交易就开始了。
那么,验证器是做什么的?我认为到目前为止,它所做的唯一一件事就是让程序员们大吃一惊!
请注意,我没有要求改变验证器中的任何东西。我们可以简单地看到测试日志。我们将了解测试是在什么参数下运行的,以及在什么存款上。最后,我们至少可以用打印来检查代码中的错误所在,并尽可能快地修复它。我们不会在整整一个星期内将手指指向天空,只试图将一个错误定位。我们不是在对着干,是吗?我理解,我们正在努力共同赚取一些东西。
你的第一张截图。你已经附和着说NZDUSD没有交易的信息。而在14页中,你一直在与这个磨坊争吵。
但第一张截图中的主要错误不是这个。它是通知你在英镑兑美元上测试时间过长。由于测试持续时间太长,验证器暂停了测试。
在GBPUSD,M30上运行代码分析器,让它交易三小时。然后看一下瓶颈,并解决它们。
---
你在NZDUSD上有一个止损,你已经关闭了一个订单,你的EA的逻辑并不关心,你仍然选择它并发送OrderClose,你得到的是假的。这 个惊人的操作在每一次打勾 时都会重复,整个过程都会变慢,检查被取消。而这是在最简单的情况下。
关于检查贸易条件--见前14页。
马克西姆,你在阅读代码时很不专心。
如果订单被关闭,标记中提到的条件不会让OrderClose()函数跑掉,这是第一件事。其次,如果在NZDUSD上至少有一个订单是开放的,验证器就不会返回 "没有交易"。
...
在GBPUSD,M30上运行代码分析器,让它交易三小时。然后看一下瓶颈,并解决它们。
好的,阿尔乔姆。我会试一试的。
马克西姆,你读代码的时候很不专心。
标记所指定的条件不会让OrderClose()函数逃脱,这是第一件事。其次,如果在NZDUSD上至少有一个订单被打开,验证器就不会返回 "没有交易"。
坦率地说,我已经厌倦了充当歪曲代码的调试员,并试图与作者的自信心作斗争。指定的错误就在那里,自己看吧
如果你不知道该怎么做,你将不得不为自己的利益做一些事情。验证器与此无关
...
在GBPUSD,M30上运行代码分析器,让它交易三个小时。然后看到瓶颈并解决它们。
Artyom,代码分析器 没有显示任何瓶颈。整个代码运行平稳,没有任何病态的漫长过程。
这整个故事的底线是这样的。不管是用什么方法,我终于通过了验证。它完全不依赖于代码(如果它是正确的,没有任何明显的错误,正如本文中提到的)。验证器是如何工作的,显然只有其创造者知道。代码在2次后被检查,然后在第三次时被检查。有时它连续通过几次,有时根本没有。更重要的是,我只改变输入参数(这些参数并不关键),或者转移重新排列时不会改变任何东西的行,甚至删除或添加注释(这些注释不应该以任何方式影响工作文件)。
一般来说,通过或失败的验证,只取决于 "心情 "验证器(网络中的电压,某种电力流,或谁知道其他什么)。因此,在通常的测试器中,正常参数下的代码从未挂起,也没有出现任何故障,在任何对和TF 上都是如此。