任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. - 页 385 1...378379380381382383384385386387388389390391392...1178 新评论 Alexander 2013.12.30 18:30 #3841 TarasBY: 错误上的错误。也许这将使它发挥作用。 ??? 请善意地指出,你在哪里发现了 "错上加错"。 TarasBY 2013.12.30 18:31 #3842 Roger: 请善意地指出,你在哪里发现 "错上加错"? 你的眼睛已经肿起来了吗?我提示:看到订单开盘价(除了前面已经提到的收盘价)。 Alexander 2013.12.30 18:34 #3843 TarasBY: 你的眼睛肿了吗?提示:查看订单开盘价(除前面已经提到的收盘价外)。 还有更多细节。 TarasBY 2013.12.30 18:39 #3844 if(prof>=Profit) { for(i=OrdersTotal()-1; i>=0; i--) { OrderSelect(i,SELECT_BY_POS); OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),5,0); } } double LineEA = iCustom (Symbol(), 0, "Ind_2 Line+1", 0, 1); // Первый инструмент double LineAU = iCustom (Symbol(), 0, "Ind_2 Line+1", 1, 1); // Второй инструмент if(NumberOfPositions("EURAUD")==0 && LineEA > 0.1 && LineAU < -0.1) { EASell = OrderSend(symEA,OP_SELL,lotEA,bidEA,3,0,0,"KVAZ_EURAUD_AUDUSD",Magic,0,Red); } if(NumberOfPositions("AUDUSD")==0 && LineEA > 0.1 && LineAU < -0.1) { AUSell = OrderSend(symAU,OP_SELL,lotAU,bidAU,3,0,0,"KVAZ_EURAUD_AUDUSD",Magic,0,Red); } if(NumberOfPositions("EURAUD")==0 && LineEA < -0.1 && LineAU > 0.1) { EABuy = OrderSend(symEA,OP_BUY,lotEA,bidEA,3,0,0,"KVAZ_EURAUD_AUDUSD",Magic,0,Red); } if(NumberOfPositions("AUDUSD")==0 && LineEA < -0.1 && LineAU > 0.1) { AUBuy = OrderSend(symAU,OP_BUY,lotAU,bidAU,3,0,0,"KVAZ_EURAUD_AUDUSD",Magic,0,Red); } Alexander 2013.12.30 18:42 #3845 这不是 "不开放",而是 "不关闭 "订单。关闭代码是正确的。 [删除] 2013.12.30 18:56 #3846 extern double Lots = 0.1; extern int TakeProfit = 50; extern int Step = 50; extern double Multipler = 2; extern int Slippage = 5; extern int Magic = 123; int ticket; double price, TP, lastlot; //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { if ( CountTrades()==0) { double ima = iMA(Symbol(),0,14,0,MODE_SMA,PRICE_CLOSE,1); if (Ask>ima) { ticket = OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,0,"",Magic,0,Blue); if (ticket>0) { TP = NormalizeDouble (Ask+TakeProfit*Point,Digits); OrderModify(ticket,OrderOpenPrice(),0,TP,0); } } else if (Bid<ima) ticket = OrderSend(Symbol(),OP_SELL,Lots,Ask,Slippage,0,0,"",Magic,0,Red); if (ticket>0) { TP = NormalizeDouble (Bid-TakeProfit*Point,Digits); OrderModify(ticket,OrderOpenPrice(),0,TP,0); } } // закрыты все скобки, кроме первой, которая начинает цикл "старт". На этот момент открыт 1й ордер, дальше в // случае потребности доливаемся. else { int order_type = FindLastOrderType(); if (order_type = OP_BUY) { price = FindLastPrice (OP_BUY); if (Ask <= price - Step*Point) { lastlot = FindLastLots (OP_BUY); lastlot = NormalizeDouble (lastlot* Multipler,2); ticket = OrderSend(Symbol(),OP_BUY,lastlot,Ask,Slippage,0,0,"",Magic,0,Blue); if (ticket>0) ModifyOrders (OP_BUY); } } else if (order_type = OP_SELL() { price = FindLastPrice (OP_SELL); if (Bid <= price + Step*Point) { lastlot = FindLastLots (OP_SELL); lastlot = NormalizeDouble (lastlot* Multipler,2); ticket = OrderSend(Symbol(),OP_SELL,lastlot,Bid,Slippage,0,0,"",Magic,0,Blue); if (ticket>0) ModifyOrders (OP_SELL); } } } return(0); } //+------------------------------------------------------------------+ void ModifyOrder(int otype) { double avgprice = 0, order_lots = 0; price = 0; for (int i = OrdersTotal()-1; i>=0; i--) { if (OrderSelect(i, SELECT_BY_POS,MODE_TRADES)) { if (OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType() == otype) { price +=OrderOpenPrice() * OrderLots(); order_lots +=OrderLots(); } } } avgprice = NormalizeDouble (price / order_lots, Digits); if (otype == OP_BUY) TP = NormalizeDouble (avgprice + TakeProfit * Point,Digits); if (otype == OP_SELL) TP = NormalizeDouble (avgprice - TakeProfit * Point,Digits); for (i = OrdersTotal()-1; i>=0; i--) { if (OrderSelect(i, SELECT_BY_POS,MODE_TRADES)) { if (OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType() == otype) OrderModify(OrderTicket(), OrderOpenPrice(),0,TP,0); } } } //+------------------------------------------------------------------+ double FindLastLots (int otype) { double oldopenprice,oldlots; int oldticket; ticket = 0; for (int i = OrdersTotal()-1; i>=0; i--) { if (OrderSelect(i, SELECT_BY_POS,MODE_TRADES)) { if (OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType() == otype) { oldticket = OrderTicket(); if (oldticket>ticket) { oldlots = OrderLots(); ticket = oldticket; } } } } return (oldlots); } //+------------------------------------------------------------------+ double FindLastPrice (int otype) { double oldopenprice; int oldticket; ticket = 0; for (int i = OrdersTotal()-1; i>=0; i--) { if (OrderSelect(i, SELECT_BY_POS,MODE_TRADES)) { if (OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType() == otype) { oldticket = OrderTicket(); if (oldticket>ticket) { oldopenprice = OrderOpenPrice(); ticket = oldticket; } } } } return (oldopenprice); } //+------------------------------------------------------------------+ int FindLastOrderType() { for (int i = OrdersTotal()-1; i>=0; i--) { if (OrderSelect(i, SELECT_BY_POS,MODE_TRADES)) { if (OrderSymbol()==Symbol() && OrderMagicNumber()==Magic) return (OrderType()); } } return (-1); } //+------------------------------------------------------------------+ int CountTrades() { int count = 0; for (int i = OrdersTotal()-1; i>=0; i--) { if (OrderSelect(i, SELECT_BY_POS,MODE_TRADES)) { if (OrderSymbol()==Symbol() && OrderMagicNumber()==Magic) count++; } } return (count); } //+------------------------------------------------------------------+ 伙计们,真的请帮我找到板子上的一个错误,它无法编译。 Alekseu Fedotov 2013.12.30 18:58 #3847 alexey1979621: 完成了,但这并没有解决上面那个猫头鹰的问题。我认为在关闭时,EA只是没有看到符号上的订单和它需要关闭的专业人员。 这个变体很简单(用于测试),而且有效,它能看到一切。 Alexey Semenov 2013.12.30 19:01 #3848 TarasBY: 谢谢,把你的代码拆开了。打开时确实有一个错误(我的眼睛已经湿了)。我已经在演示中重新设计了它,在我们的Meijic上已经开了头寸,总的来说是正利润。然而,该职位并没有关闭。 Alexey Semenov 2013.12.30 19:06 #3849 Roger: 它不应该看到这个符号或魔术师,你的EA说得很正确。看一下日志,看看它产生了什么错误。 这些日志是...有了你的评论,EA的代码是这样的。 extern double lotEU=0.01; extern double lotGU=0.01; extern double Profit=12; extern string Сomment = "KVAZ_EURUSD_GBPUSD"; extern int Magic = 1114; int EUSell, EUBuy, GUSell, GUBuy; double price; //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { double prof; double bidEU = MarketInfo("EURUSD",MODE_BID); double askEU = MarketInfo("EURUSD",MODE_ASK); double bidGU = MarketInfo("GBPUSD",MODE_BID); double askGU = MarketInfo("GBPUSD",MODE_ASK); string symEU = "EURUSD"; string symGU = "GBPUSD"; if(prof>=Profit) { for(int i=OrdersTotal()-1;i>=0;i--) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { double AS=MarketInfo(OrderSymbol(), MODE_ASK); double BI=MarketInfo(OrderSymbol(), MODE_BID); if(OrderType()==OP_BUY) price=BI; else price=AS; OrderClose(OrderTicket(),OrderLots(),price,3,CLR_NONE); } } } double LineEU = iCustom (Symbol(), 0, "Ind_2 Line+1", 0, 1); // Первый инструмент double LineGU = iCustom (Symbol(), 0, "Ind_2 Line+1", 1, 1); // Второй инструмент if(NumberOfPositions("EURUSD")==0 && LineEU > 0.1 && LineGU < -0.1) { EUSell = OrderSend(symEU,OP_SELL,lotEU,bidEU,3,0,0,"KVAZ_EURUSD_GBPUSD",Magic,0,Red); } if(NumberOfPositions("GBPUSD")==0 && LineEU > 0.1 && LineGU < -0.1) { GUBuy = OrderSend(symGU,OP_BUY,lotGU,bidGU,3,0,0,"KVAZ_EURUSD_GBPUSD",Magic,0,Blue); } if(NumberOfPositions("EURUSD")==0 && LineEU < -0.1 && LineGU > 0.1) { EUBuy = OrderSend(symEU,OP_BUY,lotEU,askEU,3,0,0,"KVAZ_EURUSD_GBPUSD",Magic,0,Blue); } if(NumberOfPositions("GBPUSD")==0 && LineEU < -0.1 && LineGU > 0.1) { GUSell = OrderSend(symGU,OP_SELL,lotGU,askGU,3,0,0,"KVAZ_EURUSD_GBPUSD",Magic,0,Red); } return(0); } //+------------------------------------------------------------------+ int NumberOfPositions(string sy="", int op=-1, int mn=1114) { //| Параметры: | //| sy - наименование инструмента ("" - любой символ, | //| NULL - текущий символ) | //| op - операция (-1 - любая позиция) | //| mn - MagicNumber (-1 - любой магик) int i, k=OrdersTotal(), kp=0; if (sy=="0") sy=Symbol(); for (i=0; i<k; i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol()==sy || sy=="") { if (OrderType()==OP_BUY || OrderType()==OP_SELL) { if (op<0 || OrderType()==op) { if (mn<0 || OrderMagicNumber()==mn) kp++; } } } } } return(kp); } Alexander 2013.12.30 19:08 #3850 Trader7777: 伙计们,请帮我找到板子上的一个错误,它不能编译。 请看这一行 否则,如果(order_type= OP_SELL() 1...378379380381382383384385386387388389390391392...1178 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
错误上的错误。也许这将使它发挥作用。
???
请善意地指出,你在哪里发现了 "错上加错"。
请善意地指出,你在哪里发现 "错上加错"?
你的眼睛肿了吗?提示:查看订单开盘价(除前面已经提到的收盘价外)。
还有更多细节。
完成了,但这并没有解决上面那个猫头鹰的问题。我认为在关闭时,EA只是没有看到符号上的订单和它需要关闭的专业人员。
它不应该看到这个符号或魔术师,你的EA说得很正确。看一下日志,看看它产生了什么错误。
伙计们,请帮我找到板子上的一个错误,它不能编译。
请看这一行
否则,如果(order_type= OP_SELL()