EA需要的简单代码(修改两个未结订单) - 页 4 12345 新评论 Simon Gniadkowski 2012.04.04 12:01 #31 这是我在几个帖子前的回答......这是最简单的方法......。 "我在一个特定的时间设置两个挂单,具体是23:00 GMT+2我想。其中一个挂单是卖出止损,另一个是买入止损,两个挂单离23:00蜡烛的开盘都有相等的距离,在这种情况下是14点。两者的止盈都是28点(在这种情况下),止损是55点"。 你可以参照23:00的蜡烛图计算出原始TP的位置,检查订单,看它是否仍然设置为原始TP,如果是,那么它可以被修改 ...如果不是,那么它已经被修改了,所以不要再修改它。 Simon Gniadkowski 2012.04.04 13:05 #32 试试这个......它可以编译,但我还没有在策略测试器中 尝试。 附加的文件: madmax.mq4 10 kb [删除] 2012.04.05 20:48 #33 RaptorUK: 试试这个 ......它可以编译,但我还没有在策略测试器中试过 ...... 我得到了 "OrderSenderror 130",尽管SL和TP似乎是正确的,而且 "OrderSend "的布局与之前的代码相同,但出于某种原因。为什么会出现这种情况? 我把这部分代码 int CountOpenOrders = 0; double Candle23Open; int Spread = MarketInfo(Symbol(), MODE_SPREAD); Candle23Open = Open[ iBarShift(NULL, 0, StrToTime("23:00") ) ]; // price value of the Open of the 23:00 hour candle for(int iPos = OrdersTotal()-1; iPos >= 0 ; iPos--) { if(OrderSelect(iPos,SELECT_BY_POS) && OrderMagicNumber() == MagicNumber && OrderSymbol() == Symbol() && OrderType() < 2 // less than 2 is either OP_BUY (0) or OP_SELL (1) ) CountOpenOrders++; } // end of for(int iPos if(CountOpenOrders == 2) // we have 2 open orders, should we modify or have the already been modified ? { for(iPos = OrdersTotal()-1; iPos >= 0 ; iPos--) { if(OrderSelect(iPos,SELECT_BY_POS) && OrderMagicNumber() == MagicNumber && OrderSymbol() == Symbol() ) { if(OrderType() == 1) // OP_SELL (1) { if(OrderTakeProfit() > Candle23Open - ((TakeProfitModified - 1) * Point) + Spread ) // check if TakeProfit has already been modified if(!OrderModify(OrderTicket(), OrderOpenPrice(), OrderStopLoss(), Candle23Open - (TakeProfitModified * Point) + Spread, 0, Blue)) { Print("Error modifying order : ",GetLastError()); return(0); } } if(OrderType() == 0) // OP_BUY (0) { if(OrderTakeProfit() < Candle23Open + ((TakeProfitModified - 1) * Point) ) // check if TakeProfit has already been modified if(!OrderModify(OrderTicket(), OrderOpenPrice(), OrderStopLoss(), Candle23Open + (TakeProfitModified * Point), 0, Blue)) { Print("Error modifying order : ",GetLastError()); return(0); } } } } } } 并把它放在以前的EA(原来的那个)中,它打开了订单,但没有修改它们。虽然我认为如果在您提供的EA中修复OrderSend错误,它可能会起作用。 哦,在这部分。 if(!OrderModify 是什么!? 非常感谢。 madmax3 Simon Gniadkowski 2012.04.05 23:08 #34 madmax3:哦,在这部分。什么是!?非常感谢。madmax3 你检查过 OrderModify()的文档吗? 它的返回结果是什么? Simon Gniadkowski 2012.04.05 23:11 #35 madmax3: 我得到了 "OrderSend error 130",尽管SL和TP似乎是正确的,而且 "OrderSend "的布局方式与之前的代码有些相同,但出于某种原因。为什么会出现这种情况? 你是否调整了你的止损点和止赢点以考虑到5位数的经纪人? [删除] 2012.04.09 14:58 #36 我得到了它的工作,只是漏填了一个变量(与卖价和买价的距离)。OrderModify文档中没有解释这个!我相信。 代码似乎工作得很好,但有一个问题是,它只在两个交易开放时修改买入交易,而不是同时修改买入和卖出交易,我不知道它为什么这样做。有什么想法吗? 谢谢。 madmax3 Simon Gniadkowski 2012.04.09 15:02 #37 madmax3: 我得到了它的工作,只是漏填了一个变量(与卖价和买价的距离)。OrderModify的文档没有解释这个!我相信。 这段代码似乎运行良好,但有一个问题是,它只在两个交易打开时修改买入交易,而不是同时修改买入和卖出交易,我不知道它为什么这样做。 谢谢。 madmax3 OrderModify返回一个bool ... ...所以! 与bool相关的是NOT ...所以!OrderModify()意味着....如果OrderModify返回false,即失败。 我将再看看你的代码 ....或者我对它的修改。 Tjipke de Vries 2012.04.09 15:18 #38 madmax3: 我得到了它的工作,只是漏填了一个变量(与卖价和买价的距离)。OrderModify文档中没有解释这个!我相信。 代码似乎工作得很好,但有一个问题是,它只在两个交易开放时修改买入交易,而不是同时修改买入和卖出交易,我不知道它为什么这样做。有什么想法吗? 谢谢。 madmax3 你想让它为相同点数的买入和卖出交易修改止损吗? 再考虑一下,如果这是你想要的,你可以弄清楚为什么它不能这样修改.... 另外,不要在每一个新的方向上修改交易,选择一个尾随步骤来允许修改(XX点可以选择10个或更多,以避免很多tradecontext太忙的错误)。 "!"是类似于不在编码中的东西 Simon Gniadkowski 2012.04.09 15:23 #39 madmax3: 代码似乎运行良好,但有一个问题是,它只在两个交易打开时修改买入交易,而不是同时修改买入和卖出交易,我不知道它为什么这样做。有什么想法吗? 检查日志中的错误 ......如果在策略测试器中 运行,请检查日志选项卡,如果在实盘或模拟中,请检查专家选项卡。 让我知道你发现了什么 ...... [删除] 2012.04.09 16:02 #40 RaptorUK: 检查日志中的错误 ......如果在策略测试器中运行,请检查日志选项卡,如果在实时或模拟中,请检查专家选项卡。 让我知道你的发现 ......2012.04.09 21:21:27 2012.01.17 00:59 测试者:订单#1,卖出0.01欧元兑美元在1.26498开仓2012.04.09 21:21:27 2012.01.17 02:21 测试员:订单#2,买入0.01欧元兑美元在1.26795开盘。 2012.04.09 21:21:27 2012.01.17 02:21 MadMax EURUSD,H1: 修改 #2 在1.26795买入0.01 EURUSD sl: 1.26218 tp: 1.27352 ok 2012.04.09 21:21:27 2012.01.17 03:00 MadMax EURUSD,H1: 修改#2买入0.01 EURUSD at 1.26795 sl: 1.26218 tp: 1.27480 ok 由于某些原因,它对买入交易进行了两次修改(第二次修改到所需的TP,然而在某些交易中,它似乎一直在某些整点上进行修改,如9:00或10:00),但似乎没有任何实际的错误。 Simple code needed for [档案!] 外汇 - 趋势、预测和后果(第12集:2012年2月) 一个快速和免费的MT4资料库,让神经网络人非常高兴。 12345 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
这是我在几个帖子前的回答......这是最简单的方法......。
"我在一个特定的时间设置两个挂单,具体是23:00 GMT+2我想。其中一个挂单是卖出止损,另一个是买入止损,两个挂单离23:00蜡烛的开盘都有相等的距离,在这种情况下是14点。两者的止盈都是28点(在这种情况下),止损是55点"。
你可以参照23:00的蜡烛图计算出原始TP的位置,检查订单,看它是否仍然设置为原始TP,如果是,那么它可以被修改 ...如果不是,那么它已经被修改了,所以不要再修改它。
试试这个......它可以编译,但我还没有在策略测试器中 尝试。
试试这个 ......它可以编译,但我还没有在策略测试器中试过 ......
我得到了 "OrderSenderror 130",尽管SL和TP似乎是正确的,而且 "OrderSend "的布局与之前的代码相同,但出于某种原因。为什么会出现这种情况?
我把这部分代码
并把它放在以前的EA(原来的那个)中,它打开了订单,但没有修改它们。虽然我认为如果在您提供的EA中修复OrderSend错误,它可能会起作用。
哦,在这部分。
是什么!?
非常感谢。
madmax3
哦,在这部分。
什么是!?
非常感谢。
madmax3
我得到了 "OrderSend error 130",尽管SL和TP似乎是正确的,而且 "OrderSend "的布局方式与之前的代码有些相同,但出于某种原因。为什么会出现这种情况?
我得到了它的工作,只是漏填了一个变量(与卖价和买价的距离)。OrderModify文档中没有解释这个!我相信。
代码似乎工作得很好,但有一个问题是,它只在两个交易开放时修改买入交易,而不是同时修改买入和卖出交易,我不知道它为什么这样做。有什么想法吗?
谢谢。
madmax3
我得到了它的工作,只是漏填了一个变量(与卖价和买价的距离)。OrderModify的文档没有解释这个!我相信。
这段代码似乎运行良好,但有一个问题是,它只在两个交易打开时修改买入交易,而不是同时修改买入和卖出交易,我不知道它为什么这样做。
谢谢。
madmax3
OrderModify返回一个bool ... ...所以! 与bool相关的是NOT ...所以!OrderModify()意味着....如果OrderModify返回false,即失败。
我将再看看你的代码 ....或者我对它的修改。
我得到了它的工作,只是漏填了一个变量(与卖价和买价的距离)。OrderModify文档中没有解释这个!我相信。
代码似乎工作得很好,但有一个问题是,它只在两个交易开放时修改买入交易,而不是同时修改买入和卖出交易,我不知道它为什么这样做。有什么想法吗?
谢谢。
madmax3
你想让它为相同点数的买入和卖出交易修改止损吗?
再考虑一下,如果这是你想要的,你可以弄清楚为什么它不能这样修改....
另外,不要在每一个新的方向上修改交易,选择一个尾随步骤来允许修改(XX点可以选择10个或更多,以避免很多tradecontext太忙的错误)。
"!"是类似于不在编码中的东西
代码似乎运行良好,但有一个问题是,它只在两个交易打开时修改买入交易,而不是同时修改买入和卖出交易,我不知道它为什么这样做。有什么想法吗?
检查日志中的错误 ......如果在策略测试器中运行,请检查日志选项卡,如果在实时或模拟中,请检查专家选项卡。 让我知道你的发现 ......
2012.04.09 21:21:27 2012.01.17 02:21 MadMax EURUSD,H1: 修改 #2 在1.26795买入0.01 EURUSD sl: 1.26218 tp: 1.27352 ok
2012.04.09 21:21:27 2012.01.17 03:00 MadMax EURUSD,H1: 修改#2买入0.01 EURUSD at 1.26795 sl: 1.26218 tp: 1.27480 ok
由于某些原因,它对买入交易进行了两次修改(第二次修改到所需的TP,然而在某些交易中,它似乎一直在某些整点上进行修改,如9:00或10:00),但似乎没有任何实际的错误。