什么是order_id? - 页 2 1234 新评论 Simon Gniadkowski 2012.10.28 18:59 #11 toi10005doi:猛龙。是的,但我很难理解,因为我只是想写EA。我很抱歉打扰你。我不明白为什么我的订单在启动后立即关闭。 如果你不理解我的主题,你需要多读读这本书......。这个主题只是关于循环和关闭订单,非常简单和清楚,但你仍然没有注意到。 为什么你要尝试关闭你的订单4次?两次在出价和两次在要价? toi10005doi 2012.10.29 00:31 #12 我的接近条件是一个cobine的条件。但当我写的时候,它就不工作了。所以我把它分开了。 Simon Gniadkowski 2012.10.29 08:30 #13 toi10005doi: 我的接近条件是一个cobine的条件。但当我写的时候,它就不工作了。所以我把它分开了。 但你试图关闭同一个订单(按票号)四次 ...... 为什么? Simon Gniadkowski 2012.10.30 09:02 #14 toi10005doi:是的!我得到了它。我修复了我的代码,但我的订单仍然在启动后立即关闭。 请告诉我,我错在哪里? 在你关闭订单的循环中,打印这些值。.DIPlus1 DIMinus1 Main0 Rsi 确保你使用 DoubleToStr() 来获得正确的小数位数。 William Roeder 2012.10.30 16:42 #15 猛禽已经告诉你该怎么做了。在你的循环中加入一些带有完整变量值的打印语句,你 就会发现原因了 Simon Gniadkowski 2012.10.31 08:54 #16 RaptorUK: 在你关闭订单的循环中打印这些值。.DIPlus1 DIMinus1 Main0 Rsi 确保你使用 DoubleToStr() 来获得正确的小数位数。 这样做,你在日志中得到什么? toi10005doi 2012.10.31 09:40 #17 RaptorUK: 这样做,你在日志中得到什么?你能给我看看代码吗? Simon Gniadkowski 2012.10.31 09:42 #18 toi10005doi:你能给我看看代码吗? 你在开玩笑吗?它只是一个使用Print()和DoubleToStr()的单行。 你自己写吧,把它贴在这里,我可以免费提供时间给你审查。 toi10005doi 2012.10.31 10:07 #19 RaptorUK: 你在开玩笑吗?这只是一个使用Print()和DoubleToStr()的单行。 你自己写吧,把它贴在这里,我将免费为你提供时间来审查。 int start() { int i ,times; string DIPlus1; string DIPlus0; string DIMinus1; string DIMinus0; string Main1; string Main0; string MACD_main; string MACD_signal; string Rsi; string err = 26; string x = 70; string xx = 30; double sl = 300; double tp = 50; int MagicNumber1=1234,MagicNumber2=4321; //---- /*DIPlus1=DoubleToStr( DIPlus1, 4); DIPlus0=DoubleToStr( DIPlus0, 4); DIMinus1=DoubleToStr( DIMinus1, 4); DIMinus0=DoubleToStr( DIMinus0, 4); Main1=DoubleToStr( Main1, 4); Main0=DoubleToStr( Main0, 4); Rsi=DoubleToStr( Rsi, 4); //err=DoubleToStr(err,4); //x=DoubleToStr(x,4); //xx=DoubleToStr(xx,4);*/ //--- DIPlus1=iADX(NULL,0,14,PRICE_CLOSE,MODE_PLUSDI,1); DIPlus0=iADX(NULL,0,14,PRICE_CLOSE,MODE_PLUSDI,0); DIMinus1=iADX(NULL,0,14,PRICE_CLOSE,MODE_MINUSDI,1); DIMinus0=iADX(NULL,0,14,PRICE_CLOSE,MODE_MINUSDI,0); Main1=iADX(NULL,0,14,PRICE_CLOSE,MODE_MAIN,1); Main0=iADX(NULL,0,14,PRICE_CLOSE,MODE_MAIN,0); Rsi = iRSI(NULL,0,14,PRICE_CLOSE,0); times = Minute() % 15 ==0 && Seconds() ==0; //MACD_main = iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0); //MACD_signal = iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0); //---- if(Minute() % 15 ==0 && Seconds() ==0) { if( Main0 > err && Main1 < err && DIPlus0 > DIMinus0 && Rsi < x ) OrderSend(Symbol(),OP_BUY,0.03,Ask,5,Ask-sl*Point,Ask+tp*Point,"",1234,0,Blue); if (Main0 > err && Main1 < err && DIPlus0 < DIMinus0 && Rsi > xx) OrderSend(Symbol(),OP_SELL,0.03,Bid,5,Bid+sl*Point ,Bid-tp*Point,"",4321,0,Red); } //--- int PositionIndex; int TotalNumberOfOrders; TotalNumberOfOrders = OrdersTotal(); for(PositionIndex = TotalNumberOfOrders - 1; PositionIndex >= 0 ; PositionIndex --) { if( OrderSelect(PositionIndex, SELECT_BY_POS, MODE_TRADES) ) continue; if( OrderMagicNumber() == MagicNumber2 && OrderSymbol() == Symbol() && OrderType() == OP_BUY || OrderType() == OP_SELL ) Print("DIPlus1",DoubleToStr( DIPlus1, 4)); Print("DIMinus1",DoubleToStr( DIPlus1, 4)); Print("Main0",DoubleToStr( DIPlus1, 4)); Print("Rsi",DoubleToStr( DIPlus1, 4)); {if( DIPlus1 > DIMinus1 || Main0 < err || Rsi < xx) OrderClose(OrderTicket(),OrderLots(),Bid,3,Green); } if( OrderMagicNumber() == MagicNumber1 && OrderSymbol() == Symbol() && OrderType() == OP_BUY || OrderType() == OP_SELL ) Print("DIPlus1",DoubleToStr( DIPlus1, 4)); Print("DIMinus1",DoubleToStr( DIPlus1, 4)); Print("Main0",DoubleToStr( DIPlus1, 4)); Print("Rsi",DoubleToStr( DIPlus1, 4)); { if( DIPlus1 < DIMinus1 || Main0 < err || Rsi > x ) OrderClose(OrderTicket(),OrderLots(),Ask,3,Green); } { if ( ! OrderClose( OrderTicket(), OrderLots(), OrderClosePrice(), 3 ) ) Print("Order Close failed, order number: ", OrderTicket(), " Error: ", GetLastError() ); } } return(0); } 你是说这个吗?但现在它没有关闭订单。 Simon Gniadkowski 2012.10.31 10:41 #20 toi10005doi: 你是说这个吗?但现在它没有关闭订单。 我说的是添加一行 ......这就是所需的全部。 看看你的代码 .你明白if 语句是如何工作的吗? 你明白大括号{ } 的目的吗? 1234 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
猛龙。
是的,但我很难理解,因为我只是想写EA。我很抱歉打扰你。
我不明白为什么我的订单在启动后立即关闭。
如果你不理解我的主题,你需要多读读这本书......。这个主题只是关于循环和关闭订单,非常简单和清楚,但你仍然没有注意到。
为什么你要尝试关闭你的订单4次?两次在出价和两次在要价?
我的接近条件是一个cobine的条件。但当我写的时候,它就不工作了。所以我把它分开了。
是的!我得到了它。
我修复了我的代码,但我的订单仍然在启动后立即关闭。 请告诉我,我错在哪里?
在你关闭订单的循环中打印这些值。.DIPlus1 DIMinus1 Main0 Rsi 确保你使用 DoubleToStr() 来获得正确的小数位数。
这样做,你在日志中得到什么?
你能给我看看代码吗?
你能给我看看代码吗?
你自己写吧,把它贴在这里,我可以免费提供时间给你审查。
你在开玩笑吗?这只是一个使用Print()和DoubleToStr()的单行。
你自己写吧,把它贴在这里,我将免费为你提供时间来审查。
你是说这个吗?但现在它没有关闭订单。
看看你的代码 .你明白if 语句是如何工作的吗? 你明白大括号{ } 的目的吗?