任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. - 页 412 1...405406407408409410411412413414415416417418419...1178 新评论 [删除] 2014.01.06 14:55 #4111 Ekburg: 天啊...我当然很高兴你开始解决问题,但我的留言你不知为何没有注意到,我在那里说了同样的话,有点不同的话,并立即说了缺点,除了关闭文件,没有立即看到你那里有它发生:)你写了一个三段式的回应。在第一条中,你犯了一个错误(我的条目是非常正确的),在第二条中,你也犯了一个错误(虽然这条信息把它拉平了:)第三点听起来好像是你建议把光标移到条目之后,而不是之前(这又被认为是一个错误)。面对这样的画面,我更愿意从一位经验丰富的版主那里做出澄清,他的回答是:"我是一个很有经验的版主。 不过,确实感谢你的反馈。并祝大家新年快乐!:) Владимир Иванов 2014.01.06 15:41 #4112 你好。面对一个不愉快的情况。在这里帮我一下。 我有一个专家顾问。它在策略测试器中运行良好,我没有任何要求。然而,当我在演示中运行它时,我看到EA无法在某些订单上设置止损。有一个错误并不总是出现,但有时会出现。我急于自己寻找,希望能得到你的帮助。应该指出的是,该EA在所有其他方面的工作都完美无缺,就像在测试器中一样,没有任何抱怨,只是问题是止损点并不总是被设置。该错误出现在不同的经纪商的不同账户上。以下是代码中负责交易操作的部分 ord_ticket=OrderSend(ASymb,ord_type,ord_lots,ord_openpr,20,0,0,"",ord_magic); if(ord_ticket>0) { //---- обновление инфы OrderSelect(ord_ticket,SELECT_BY_TICKET); ord_openpr=OrderOpenPrice(); ZigZagInfo[0][ZZ_TimeP]=t_cur; ZigZagInfo[k][ZZ_TryCount]++; //---- проверка стопов if(ND(a*(ord_tp-ord_openpr)-stops,Digits)<0) ord_tp=ND(ord_openpr+a*stops,Digits); if(ND(a*(ord_openpr-ord_sl)-stops,Digits)<0) ord_sl=ND(ord_openpr-a*stops,Digits); //---- время удаления if(TimeDelete>0) td=TimeCurrent()+60*TimeDelete; else td=0; //---- if(!OrderModify(ord_ticket,ord_openpr,ord_sl,ord_tp,td)) { Alert(Error(GetLastError()),"/nSL=",DoubleToStr(ord_sl,5)," TP=",DoubleToStr(ord_tp,5),"/nTimeDel=",TimeToStr(td), "OP=",DoubleToStr(ord_openpr,5)); } } 以下是Error(int er)函数的代码 string Error(int er) { switch(er) { case 0: return("Нет ошибки"); case 1: return("Нет ошибки, но результат неизвестен"); case 2: return("Общая ошибка(сбой системы, глюк, и т.п.)"); case 3: return("Неправильные параметры"); case 4: return("Торговый сервер занят"); case 6: return("Нет связи с торговым сервером"); case 7: return("Недостаточно прав"); case 8: return("Слишком частые запросы"); case 9: return("Недопустимая операция нарушающая функционирование сервера"); case 128: return("Истек срок ожидания совершения сделки"); case 129: return("Неправильная цена"); case 130: return("Неправильные стопы"); case 131: return("Неправильный объем"); case 133: return("Торговля запрещена"); case 134: return("Недостаточно денег для совершения операции"); case 135: return("Цена изменилась"); case 137: return("Брокер занят"); case 138: return("Новые цены"); case 139: return("Ордер заблокирован и уже обрабатывается"); case 140: return("Разрешена только покупка"); case 141: return("Слишком много запросов"); case 145: return("Модификация запрещена, так как ордер слишком близок к рынку"); case 146: return("Подсистема торговли занята"); case 147: return("Использование даты истечения ордера запрещено брокером"); case 148: return("Количество открытых и отложенных ордеров достигло предела, установленного брокером"); case 149: return("Попытка открыть противоположную позицию к уже существующей в случае, если хеджирование запрещено."); default: return("Неизвестная ошибка "+DoubleToStr(er,0)); } } 因此,当EA设置止损失败时,会出现一条信息,显示错误信息和它试图修改的订单的参数。他写的东西对我来说才是真正的奥秘。从下面的图片可以看出,它不断地写出音量是错误的。这很奇怪。我应该补充的是,所有的订单参数在修改前都是正确计算的,这可以在信息中看到。否则错误就会不同。该方案在测试时的价差比演示中的要高。 TarasBY 2014.01.06 16:53 #4113 _Vladimir_: 你好。面对一个不愉快的情况。在这里帮我一下。 我有一个专家顾问。它在策略测试器中运行良好,我没有任何要求。然而,当我在演示中运行它时,我看到EA无法在某些订单上设置止损。有一个错误并不总是出现,但有时会出现。我急于自己寻找,希望能得到你的帮助。应该指出的是,该EA在所有其他方面的工作都完美无缺,就像在测试器中一样,没有任何抱怨,只是问题是止损点并不总是被设置。该错误出现在不同账户的不同经纪公司。以下是代码中负责交易操作的部分 以下是Error(int er)函数的代码 因此,当EA设置止损失败时,会出现一条信息,显示错误信息和它试图修改的订单的参数。他写的东西对我来说才是真正的奥秘。从下面的图片可以看出,它不断地写出音量是错误的。这很奇怪。我应该补充的是,所有的订单参数在修改前都是正确计算的,这可以在信息中看到。否则错误就会不同。该方案在测试时的价差比演示中的要高。 对你的全局变量的值要小心。我可以假设ord_ticket是一个全局变量,这意味着之前的值可以存储在其中。而在调用GetLastError()来捕捉错误之前,你应该在代码的开头调用它来重置之前的值。 Владимир Иванов 2014.01.06 17:13 #4114 TarasBY: 你应该对你的全局变量的值非常小心。我可以建议,ord_ticket是一个全局变量,因此它可能存储了之前的值。而在调用GetLastError()来捕捉错误之前,你应该在代码的开头调用它来重置之前的值。 ord_ticket是在本地一级声明的。然后,即使它在第一行中被全局声明了ord_ticket=OrderSend(ASymb,ord_type,ord_lots,ord_openpr,20,0,0,"",ord_magic); if(ord_ticket>0) {它的价值肯定会改变。如果交易成功,它将是订单号,否则就是-1。因此,如果订单没有被打开,我们就不会进入设置止损的环节。还应该注意的是,OrderSend() 函数总是改变最后一个错误的值 (根据文档和逻辑),所以在这种情况下重置之前的读数是没有必要的,会导致简单的浪费时间。也就是说,错误131出现在进入停止设置块之后和显示错误信息之前。由于没有真正放置止损点,OrderModify()函数必须是最后一个被调用的函数,它和前一个函数一样,总是改变最后一个错误的值。但我不能理解为什么它不改变最后一个错误的值。它是从哪里来的?我再一次说,测试器中没有任何问题。 我有个想法,经纪人在作弊,因为服务器会把错误号码发送到终端,而后者又会把它们发送到专家顾问那里。我已经放弃了这个想法,因为只有一个EA的订单有错误,其他并行工作的EA没有这样的错误。 Владимир Иванов 2014.01.06 17:21 #4115 _Vladimir_: ord_ticket是在本地一级声明的。然后,即使它在第一行中被全局声明了 价值肯定会改变。如果交易成功,它将是订单号,否则就是-1。因此,如果订单没有被打开,我们就不会进入设置止损的环节。 还应该注意的是,OrderSend() 函数总是改变最后一个错误的值(根据文档和逻辑),所以在这种情况下重置之前的读数是没有必要的,会导致简单的浪费时间 。也就是说,错误131出现在进入停止设置块之后和显示错误信息之前。由于没有真正放置止损点,OrderModify()函数必须是最后一个被调用的函数,它和前一个函数一样,总是改变最后一个错误的值。但我不能理解为什么它不改变最后一个错误的值。它是从哪里来的?我再一次说,测试器中没有任何问题。 我有个想法,经纪人在作弊,因为服务器会把错误号码发送到终端,而后者又会把它们发送到专家顾问那里。我很快就放弃了这个想法,因为只有一个EA的订单有这样的问题,其他并行工作的EA并没有出现错误。 我再补充一下。并行工作的EA的代码是完全相同的,它负责设置止损。这个EA从来没有出现过没有为订单设置止损的情况。 看来上面某个地方的参数计算有误,但如果只有一个参数出错,应该会出现另一个错误。例如,著名的130 TarasBY 2014.01.06 20:59 #4116 _Vladimir_: ord_ticket是在本地一级声明的。然后,即使它在第一行中被全局声明了 价值肯定会改变。如果交易成功,它将是订单号,否则就是-1。因此,如果订单没有被打开,我们就不会进入设置止损的环节。 还应该注意的是,OrderSend() 函数总是改变最后一个错误的值(根据文档和逻辑),所以在这种情况下重置之前的读数是没有必要的,会导致简单的浪费时间 。也就是说,错误131出现在进入停止设置块之后和显示错误信息之前。由于没有真正放置止损点,OrderModify()函数必须是最后一个被调用的函数,它和前一个函数一样,总是改变最后一个错误的值。但我不能理解为什么它不改变最后一个错误的值。它是从哪里来的?我再一次说,测试器中没有任何问题。 我有个想法,经纪人在作弊,因为服务器会把错误号码发送到终端,而后者又会把它们发送到专家顾问那里。我很快放弃了这个想法,因为只有一个EA的订单有错误,其他并行工作的EA没有这样的错误。 思想在竞赛!但经验表明,我们所想的(应该是这样的)和实际存在的往往是不同的东西。可以建议什么。"预先打印你的代码执行的整个序列",--这是发现错误(或确保你是正确的)的最快方法。:) [删除] 2014.01.07 03:15 #4117 yan720: 你写了一个三点回应。在第一条中,你犯了一个错误(我的条目是非常正确的),在第二条中,你也犯了一个错误(虽然这条信息把它拉平了:)第三点听起来好像是你建议把光标移到条目之后,而不是之前(这又被认为是一个错误)。面对这样的画面,我宁愿向回答问题的多才多艺的主持人做出澄清。 不过,确实感谢你的答复。还有,新年快乐!:) :D 好的,也祝你新年快乐 :) petya 2014.01.07 04:25 #4118 回到第411页上写的内容......。有谁知道如何结合该代码和跨越两个MAs的进入/退出条件? [删除] 2014.01.07 04:36 #4119 petya33r: 回到第411页上写的内容......。有谁知道如何将该代码和穿越两个MAs的进入/退出条件结合起来? 还是挂单是唯一的选择? 在移动信号上打开交易后,开始监测订单数量 或具体的这个订单,如果订单数量减少或作为第二个选项被关闭,特别是这个订单,然后找出它是如何关闭的,如果是一个停止,然后在当前价格打开相反的订单,这就是全部。 petya 2014.01.07 06:03 #4120 Ekburg: 在移动信号上打开交易后,开始监测订单数量或具体的这个订单,如果订单数量减少或作为第二个选项具体关闭这个订单,然后找出它是如何关闭的,如果停止,那么只需在当前价格打开相反的订单,这就是全部。 我明白这一点,但我不能把它写下来。专家顾问要么只在muwings 信号上 进行交易,在亏损的情况下不开立反向头寸,要么在测试开始时直接使终端崩溃。所以我写了一些根本无法处理的东西。我不太擅长写作。我需要书面代码形式的帮助。 //нет открытых ордеров - ищем в истории закрытых ордеров последний закрытый именно этим советником ордер for ( trade = OrdersHistoryTotal() - 1; trade >= 0; trade-- ) { if ( OrderSelect(trade, SELECT_BY_POS, MODE_HISTORY) && OrderMagicNumber() == MagicNumber && OrderSymbol() == Symbol() ) { old_order_type = OrderType(); if ( OrderProfit()<0 ) //последний закрытый советником ордер был убыточным, значит, следующий ордер открываем в направлении, противоположном закрытому с убытком { break; //прекращаем поиск } } } //если раньше покупали, то теперь продаем if ( old_order_type == OP_BUY ) { ticket = OrderSend(Symbol(), OP_SELL, Lot, NormalizeDouble(Bid, Digits), slip, NormalizeDouble(Ask+stoploss*Point, Digits), NormalizeDouble(Ask-takeprofit*Point, Digits), "Martingale-Sell", MagicNumber, 0, Red); Sleep (2000); //задержка в 2 секунды для обработки запроса торговым сервером брокера return (0); } 如果OrderProfit()<0,它将打开相反的 订单。但它不能与来自移动辅助设备的信号一起工作。你能写一个单一的代码,同时提供Muwings信号和开立相反头寸的条件吗? 1...405406407408409410411412413414415416417418419...1178 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
天啊...我当然很高兴你开始解决问题,但我的留言你不知为何没有注意到,我在那里说了同样的话,有点不同的话,并立即说了缺点,除了关闭文件,没有立即看到你那里有它发生:)
你写了一个三段式的回应。在第一条中,你犯了一个错误(我的条目是非常正确的),在第二条中,你也犯了一个错误(虽然这条信息把它拉平了:)第三点听起来好像是你建议把光标移到条目之后,而不是之前(这又被认为是一个错误)。面对这样的画面,我更愿意从一位经验丰富的版主那里做出澄清,他的回答是:"我是一个很有经验的版主。
不过,确实感谢你的反馈。并祝大家新年快乐!:)
你好。面对一个不愉快的情况。在这里帮我一下。
我有一个专家顾问。它在策略测试器中运行良好,我没有任何要求。然而,当我在演示中运行它时,我看到EA无法在某些订单上设置止损。有一个错误并不总是出现,但有时会出现。我急于自己寻找,希望能得到你的帮助。应该指出的是,该EA在所有其他方面的工作都完美无缺,就像在测试器中一样,没有任何抱怨,只是问题是止损点并不总是被设置。该错误出现在不同的经纪商的不同账户上。以下是代码中负责交易操作的部分
以下是Error(int er)函数的代码
因此,当EA设置止损失败时,会出现一条信息,显示错误信息和它试图修改的订单的参数。他写的东西对我来说才是真正的奥秘。从下面的图片可以看出,它不断地写出音量是错误的。这很奇怪。我应该补充的是,所有的订单参数在修改前都是正确计算的,这可以在信息中看到。否则错误就会不同。该方案在测试时的价差比演示中的要高。
你好。面对一个不愉快的情况。在这里帮我一下。
我有一个专家顾问。它在策略测试器中运行良好,我没有任何要求。然而,当我在演示中运行它时,我看到EA无法在某些订单上设置止损。有一个错误并不总是出现,但有时会出现。我急于自己寻找,希望能得到你的帮助。应该指出的是,该EA在所有其他方面的工作都完美无缺,就像在测试器中一样,没有任何抱怨,只是问题是止损点并不总是被设置。该错误出现在不同账户的不同经纪公司。以下是代码中负责交易操作的部分
以下是Error(int er)函数的代码
因此,当EA设置止损失败时,会出现一条信息,显示错误信息和它试图修改的订单的参数。他写的东西对我来说才是真正的奥秘。从下面的图片可以看出,它不断地写出音量是错误的。这很奇怪。我应该补充的是,所有的订单参数在修改前都是正确计算的,这可以在信息中看到。否则错误就会不同。该方案在测试时的价差比演示中的要高。
你应该对你的全局变量的值非常小心。我可以建议,ord_ticket是一个全局变量,因此它可能存储了之前的值。而在调用GetLastError()来捕捉错误之前,你应该在代码的开头调用它来重置之前的值。
ord_ticket是在本地一级声明的。然后,即使它在第一行中被全局声明了
它的价值肯定会改变。如果交易成功,它将是订单号,否则就是-1。因此,如果订单没有被打开,我们就不会进入设置止损的环节。
还应该注意的是,OrderSend() 函数总是改变最后一个错误的值 (根据文档和逻辑),所以在这种情况下重置之前的读数是没有必要的,会导致简单的浪费时间。也就是说,错误131出现在进入停止设置块之后和显示错误信息之前。由于没有真正放置止损点,OrderModify()函数必须是最后一个被调用的函数,它和前一个函数一样,总是改变最后一个错误的值。但我不能理解为什么它不改变最后一个错误的值。它是从哪里来的?我再一次说,测试器中没有任何问题。
我有个想法,经纪人在作弊,因为服务器会把错误号码发送到终端,而后者又会把它们发送到专家顾问那里。我已经放弃了这个想法,因为只有一个EA的订单有错误,其他并行工作的EA没有这样的错误。
ord_ticket是在本地一级声明的。然后,即使它在第一行中被全局声明了
价值肯定会改变。如果交易成功,它将是订单号,否则就是-1。因此,如果订单没有被打开,我们就不会进入设置止损的环节。
还应该注意的是,OrderSend() 函数总是改变最后一个错误的值(根据文档和逻辑),所以在这种情况下重置之前的读数是没有必要的,会导致简单的浪费时间 。也就是说,错误131出现在进入停止设置块之后和显示错误信息之前。由于没有真正放置止损点,OrderModify()函数必须是最后一个被调用的函数,它和前一个函数一样,总是改变最后一个错误的值。但我不能理解为什么它不改变最后一个错误的值。它是从哪里来的?我再一次说,测试器中没有任何问题。
我有个想法,经纪人在作弊,因为服务器会把错误号码发送到终端,而后者又会把它们发送到专家顾问那里。我很快就放弃了这个想法,因为只有一个EA的订单有这样的问题,其他并行工作的EA并没有出现错误。
我再补充一下。并行工作的EA的代码是完全相同的,它负责设置止损。这个EA从来没有出现过没有为订单设置止损的情况。
看来上面某个地方的参数计算有误,但如果只有一个参数出错,应该会出现另一个错误。例如,著名的130
ord_ticket是在本地一级声明的。然后,即使它在第一行中被全局声明了
价值肯定会改变。如果交易成功,它将是订单号,否则就是-1。因此,如果订单没有被打开,我们就不会进入设置止损的环节。
还应该注意的是,OrderSend() 函数总是改变最后一个错误的值(根据文档和逻辑),所以在这种情况下重置之前的读数是没有必要的,会导致简单的浪费时间 。也就是说,错误131出现在进入停止设置块之后和显示错误信息之前。由于没有真正放置止损点,OrderModify()函数必须是最后一个被调用的函数,它和前一个函数一样,总是改变最后一个错误的值。但我不能理解为什么它不改变最后一个错误的值。它是从哪里来的?我再一次说,测试器中没有任何问题。
我有个想法,经纪人在作弊,因为服务器会把错误号码发送到终端,而后者又会把它们发送到专家顾问那里。我很快放弃了这个想法,因为只有一个EA的订单有错误,其他并行工作的EA没有这样的错误。
你写了一个三点回应。在第一条中,你犯了一个错误(我的条目是非常正确的),在第二条中,你也犯了一个错误(虽然这条信息把它拉平了:)第三点听起来好像是你建议把光标移到条目之后,而不是之前(这又被认为是一个错误)。面对这样的画面,我宁愿向回答问题的多才多艺的主持人做出澄清。
不过,确实感谢你的答复。还有,新年快乐!:)
:D 好的,也祝你新年快乐 :)
回到第411页上写的内容......。有谁知道如何将该代码和穿越两个MAs的进入/退出条件结合起来? 还是挂单是唯一的选择?
在移动信号上打开交易后,开始监测订单数量 或具体的这个订单,如果订单数量减少或作为第二个选项被关闭,特别是这个订单,然后找出它是如何关闭的,如果是一个停止,然后在当前价格打开相反的订单,这就是全部。
在移动信号上打开交易后,开始监测订单数量或具体的这个订单,如果订单数量减少或作为第二个选项具体关闭这个订单,然后找出它是如何关闭的,如果停止,那么只需在当前价格打开相反的订单,这就是全部。
我明白这一点,但我不能把它写下来。专家顾问要么只在muwings 信号上 进行交易,在亏损的情况下不开立反向头寸,要么在测试开始时直接使终端崩溃。所以我写了一些根本无法处理的东西。我不太擅长写作。我需要书面代码形式的帮助。
如果OrderProfit()<0,它将打开相反的 订单。但它不能与来自移动辅助设备的信号一起工作。你能写一个单一的代码,同时提供Muwings信号和开立相反头寸的条件吗?