向市场发布交易机器人时出现验证错误。 - 页 5 12345678910 新评论 Andrey Kaunov 2020.07.23 10:18 #41 谢谢你的提示,但这可能不是我的情况。我的验证器根本看不到交易功能,没有办法达到最大的订单数量))) Andrey Kaunov 2020.07.23 10:50 #42 哦,Shaitan...通过验证,现在 无交易业务 不再是一个错误。 P.S. 这是一个随机的镜头。下一次测试又是同样的事情 Alexey Viktorov 2020.07.23 12:14 #43 Andrey Kaunov:这里没有错误,我完全不明白发生了什么事。我在交易功能前放了一个拐杖(除以零)。它是有效的。我把它拿出来,它给了我同样的东西。没有贸易业务。 我 不明白是什么阻止了验证器的OrderSend()。毕竟,如果传到他那里,肯定有计费错误(虽然我已经把它们都修好了)130,131,134,......,但没有"没有交易操作"。我只得在OnInit()中把一个挂单放在离它很远的地方,所以我不知道怎么打。 如果进行交易的条件没有进入代码,这样的拐杖有什么意义呢? Andrey Kaunov 2020.07.23 12:22 #44 为什么它不进来?仔细看,阿列克谢。就在OrderSend 之前,有一个拐杖。 Alexey Viktorov 2020.07.23 12:27 #45 Andrey Kaunov: 为什么没有输入?仔细看,阿列克谢。在OrderSend之前有一个拐杖。 对。如果OrderSend没有被执行,这意味着代码执行由于某种原因没有到达它。而且不管你在条件块中在它前面放什么,都没有输入和执行,甚至没有除以0。 Andrey Kaunov 2020.07.23 12:44 #46 等等,我不明白。如果运算符1(除以0)被执行,那么接下来就是if运算符。而这意味着要检查其状况。为了检查条件,OrderSend函数必须被执行,这意味着它是除以0后的下一个。 但不要紧。为了实验的纯洁性,我改变了代码。 其结果是一样的。有拐杖的结果是除以0的错误。 没有拐杖,结果如上所示:没有交易操作。 Alexey Viktorov 2020.07.23 12:56 #47 Andrey Kaunov:等等,我不明白。如果运算符1(除以0)被执行,那么接下来就是if运算符。而这意味着要检查其状况。为了检查条件,OrderSend函数必须被执行,这意味着它是除以0后的下一步。但不要紧。为了实验的纯洁性,我改变了代码。其结果是一样的。有拐杖的结果是除以0的错误。 没有拐杖的结果如上所示:没有交易操作。 你不应该用图片来粘贴代码。根本不可能读懂它。而问题不在这个代码片段中。问题是,在某些输入参数上,一些条件没有得到满足,而且没有通知。 Maxim Kuznetsov 2020.07.23 13:06 #48 Andrey Kaunov: 为什么它不进来? 为什么你想为市场写得比为自己写得更差? 这很简单--在发送一个订单之前,看看 "它甚至可以执行吗?" 检查限额(你说过),检查资金 和保证金(你没有),看看是否有链接,以及交易是否被允许。 (选项)如果有繁重的计算,在读取Bid Ask之前刷新Rates也不是什么罪过。 为了你自己的利益,你要做所有这些检查。为什么不是现在? Andrey Kaunov 2020.07.23 14:55 #49 你以为我不检查。地段大小在一个单独的函数中检查 //+------------------------------------------------------------------+ //| Функция нормализации лота | //+------------------------------------------------------------------+ double NormalizeLots(string symbol, double lot, 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(); 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; //MathFloor(free/margin/step)*step; return(_lot); } 这里不需要限制,因为止损和止盈在交易开始时都等于零。RefreshRates()在计算手数时更新数据。当然,在每个条目之前没有检查连接等,但这不是重点。如果OrderSend发送了一个请求,会有一个具体的错误:130、131,等等。但我所拥有的是。 根本不是想发一个订单来开。甚至在最后一次测试中,当我在OnInit()函数 中设置一个检查位置时。 int OnInit() { int stops_level=(int)SymbolInfoInteger(_Symbol,SYMBOL_TRADE_STOPS_LEVEL); iTrailStart=inpTrailStart; iTrailStart2=inpTrailStart2; iTrailStartL=inpTrailStartL; //--- if(stops_level>0) { if(inpTrailStart<stops_level+3) iTrailStart=stops_level+3; if(inpTrailStart2<stops_level+3) iTrailStart2=stops_level+3; if(inpTrailStartL<stops_level+3) iTrailStartL=stops_level+3; } Comment(""); EventSetMillisecondTimer(300); ButtonCreate("V_5",5,25,50,20,"FLAT",9,clrBlack,C'236,233,235', clrNONE,false); ButtonCreate("V_7",60,25,50,20,"TREND",9,clrBlack,C'236,233,235', clrNONE,false); ButtonCreate("Auto",115,25,50,20,"Auto",9,clrBlack,C'236,233,235',clrNONE,false); ObjectCreate(0,"Lot",OBJ_EDIT,0,0,0); ObjectSetInteger(0,"Lot",OBJPROP_CORNER,CORNER_LEFT_LOWER); ObjectSetInteger(0,"Lot",OBJPROP_XDISTANCE,115); ObjectSetInteger(0,"Lot",OBJPROP_YDISTANCE,50); ObjectSetString(0,"Lot",OBJPROP_TEXT,""); ObjectSetInteger(0,"Lot",OBJPROP_ALIGN,ALIGN_RIGHT); ObjectSetInteger(0,"Lot",OBJPROP_FONTSIZE,9); ObjectSetInteger(0,"Lot",OBJPROP_COLOR,clrBlack); ObjectSetInteger(0,"Lot",OBJPROP_YSIZE,20); ButtonCreate("V_5_buy",5,50,50,20,"BUY",9,clrBlack,C'236,233,235', clrNONE,false); ButtonCreate("V_5_sell",60,50,50,20,"SELL",9,clrBlack,C'236,233,235', clrNONE,false); test_ticket=OrderSend(_Symbol,OP_BUYLIMIT,SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MIN),_Point,30,0.0,0.0,"NZT-48_test",iMagicNumber,0,clrNONE); return(INIT_SUCCEEDED); }//-------------------------------------- End OnInit ---------------------------------------- Alexey Viktorov:你不应该把代码粘贴在图片上。不可能读懂它。问题不在这个代码片断。问题是,一些输入参数的某些条件没有得到满足,而且没有通知这一事实。 这可能是。但我已经仔细检查了一切。我不知道下一步该去哪里挖。 Maxim Kuznetsov 2020.07.23 15:10 #50 Andrey Kaunov:你以为我不检查。地段大小在一个单独的函数中检查这里不需要限制,因为止损和止盈在交易开始时都等于零。RefreshRates()在计算手数时更新数据。当然,在每个条目之前没有检查连接等,但这不是重点。如果OrderSend发送了一个请求,会有一个具体的错误:130、131,等等。但我所拥有的是。根本不是想发一个订单来开。甚至在最后一次测试中,当我在OnInit()函数 中设置一个检查位置时。这是有可能的。但我已经仔细检查了一切。我不知道下一步该去哪里。 看看其他命令是如何在EA中实施的。我不认为专家顾问只打开了 在开场票<0被设置了 - 看看其他逻辑,它在现实中是如何反应的 12345678910 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
哦,Shaitan...通过验证,现在
无交易业务
不再是一个错误。
P.S. 这是一个随机的镜头。下一次测试又是同样的事情
这里没有错误,我完全不明白发生了什么事。我在交易功能前放了一个拐杖(除以零)。
它是有效的。
我把它拿出来,它给了我同样的东西。
没有贸易业务。
我 不明白是什么阻止了验证器的OrderSend()。毕竟,如果传到他那里,肯定有计费错误(虽然我已经把它们都修好了)130,131,134,......,但没有"没有交易操作"。我只得在OnInit()中把一个挂单放在离它很远的地方,所以我不知道怎么打。
如果进行交易的条件没有进入代码,这样的拐杖有什么意义呢?
为什么没有输入?仔细看,阿列克谢。在OrderSend之前有一个拐杖。
对。如果OrderSend没有被执行,这意味着代码执行由于某种原因没有到达它。而且不管你在条件块中在它前面放什么,都没有输入和执行,甚至没有除以0。
等等,我不明白。如果运算符1(除以0)被执行,那么接下来就是if运算符。而这意味着要检查其状况。为了检查条件,OrderSend函数必须被执行,这意味着它是除以0后的下一个。
但不要紧。为了实验的纯洁性,我改变了代码。
其结果是一样的。有拐杖的结果是除以0的错误。 没有拐杖,结果如上所示:没有交易操作。
等等,我不明白。如果运算符1(除以0)被执行,那么接下来就是if运算符。而这意味着要检查其状况。为了检查条件,OrderSend函数必须被执行,这意味着它是除以0后的下一步。
但不要紧。为了实验的纯洁性,我改变了代码。
其结果是一样的。有拐杖的结果是除以0的错误。 没有拐杖的结果如上所示:没有交易操作。
你不应该用图片来粘贴代码。根本不可能读懂它。而问题不在这个代码片段中。问题是,在某些输入参数上,一些条件没有得到满足,而且没有通知。
为什么它不进来?
为什么你想为市场写得比为自己写得更差?
这很简单--在发送一个订单之前,看看 "它甚至可以执行吗?"
检查限额(你说过),检查资金 和保证金(你没有),看看是否有链接,以及交易是否被允许。
(选项)如果有繁重的计算,在读取Bid Ask之前刷新Rates也不是什么罪过。
为了你自己的利益,你要做所有这些检查。为什么不是现在?
你以为我不检查。地段大小在一个单独的函数中检查
这里不需要限制,因为止损和止盈在交易开始时都等于零。RefreshRates()在计算手数时更新数据。当然,在每个条目之前没有检查连接等,但这不是重点。如果OrderSend发送了一个请求,会有一个具体的错误:130、131,等等。但我所拥有的是。
根本不是想发一个订单来开。甚至在最后一次测试中,当我在OnInit()函数 中设置一个检查位置时。
你不应该把代码粘贴在图片上。不可能读懂它。问题不在这个代码片断。问题是,一些输入参数的某些条件没有得到满足,而且没有通知这一事实。
这可能是。但我已经仔细检查了一切。我不知道下一步该去哪里挖。
你以为我不检查。地段大小在一个单独的函数中检查
这里不需要限制,因为止损和止盈在交易开始时都等于零。RefreshRates()在计算手数时更新数据。当然,在每个条目之前没有检查连接等,但这不是重点。如果OrderSend发送了一个请求,会有一个具体的错误:130、131,等等。但我所拥有的是。
根本不是想发一个订单来开。甚至在最后一次测试中,当我在OnInit()函数 中设置一个检查位置时。
这是有可能的。但我已经仔细检查了一切。我不知道下一步该去哪里。
看看其他命令是如何在EA中实施的。我不认为专家顾问只打开了
在开场票<0被设置了 - 看看其他逻辑,它在现实中是如何反应的