该死的错误130到地狱 - 页 4 1234 新评论 Bogdan Caramalac 2009.08.05 23:24 #31 k......明天将发布代码......。 忘了说这是在回溯测试 中发生的情况...我不知道未来会如何发展,但我也不想在那里看到这种情况。 Bogdan Caramalac 2009.08.06 07:37 #32 int PriceOpenMode(int op) { if ( op==OP_BUY) return(MODE_ASK); if ( op==OP_SELL) return(MODE_BID); return(-1); } int PriceCloseMode(int op) { if ( op==OP_BUY) return(MODE_BID); if ( op==OP_SELL) return(MODE_ASK); return(-1); } int ReliableOrderSend(string symbol,int cmd,double volume,double price,int slippage,double stoploss,double takeprofit, string comment="",int magic=0,datetime expiration=0,color arrow_color=CLR_NONE,int MaxPasses=0) { int Gle= ERR_TRADE_CONTEXT_BUSY; int passes=0; int res=-1; while ( Gle== ERR_TRADE_CONTEXT_BUSY|| Gle== ERR_REQUOTE|| Gle== ERR_INVALID_PRICE|| Gle== ERR_PRICE_CHANGED|| Gle== ERR_OFF_QUOTES) { if ( Gle== ERR_REQUOTE|| Gle== ERR_INVALID_PRICE|| Gle== ERR_PRICE_CHANGED|| Gle== ERR_OFF_QUOTES|| passes==0) { if ( passes!=0) RefreshRates(); if ( price==0.0) //if (passes!=0||price==0) price=MarketInfo( symbol, PriceOpenMode( cmd)); }//if (Gle==ERR_REQUOTE) res=OrderSend( symbol, cmd, volume, price, slippage, stoploss, takeprofit, comment, magic, expiration, arrow_color); Gle=GetLastError(); if ( Gle!= ERR_NO_ERROR) Print("ReliableOrderSend error : ", Gle); passes= passes+1; if ( MaxPasses!=0) { if ( passes>= MaxPasses) break; } if ( Gle== ERR_REQUOTE|| Gle== ERR_INVALID_PRICE|| Gle== ERR_PRICE_CHANGED|| Gle== ERR_OFF_QUOTES) { price=0.0; } }//while (Gle==ERR_TRADE_CONTEXT_BUSY||Gle==ERR_REQUOTE) return( res); } bool ReliableOrderClose(int ticket, double lots, double price, int slippage, color Color=CLR_NONE,int MaxPasses=0) { int Gle= ERR_TRADE_CONTEXT_BUSY; int passes=0; bool res; int otype; double olots; string osymbol; res=OrderSelect( ticket, SELECT_BY_TICKET, MODE_TRADES); osymbol=OrderSymbol(); otype=OrderType(); olots=OrderLots(); if ( lots==0) lots= olots; if ( res== True) { while ( Gle== ERR_TRADE_CONTEXT_BUSY|| Gle== ERR_REQUOTE|| Gle== ERR_INVALID_PRICE|| Gle== ERR_PRICE_CHANGED|| Gle== ERR_OFF_QUOTES) { if ( Gle== ERR_REQUOTE|| Gle== ERR_INVALID_PRICE|| Gle== ERR_PRICE_CHANGED|| Gle== ERR_OFF_QUOTES|| passes==0) { if ( passes!=0) RefreshRates(); if ( price==0.0) //if (passes!=0||price==0) price=MarketInfo( osymbol, PriceCloseMode( otype)); }//if (Gle==ERR_REQUOTE) res=OrderClose( ticket, lots, price, slippage, Color); Gle=GetLastError(); if ( Gle!= ERR_NO_ERROR) Print("ReliableOrderClose error : ", Gle); passes= passes+1; if ( MaxPasses!=0) { if ( passes>= MaxPasses) break; } if ( Gle== ERR_REQUOTE|| Gle== ERR_INVALID_PRICE|| Gle== ERR_PRICE_CHANGED|| Gle== ERR_OFF_QUOTES) { price=0.0; } }//while (Gle==ERR_TRADE_CONTEXT_BUSY||Gle==ERR_REQUOTE) } return( res); } Bogdan Caramalac 2009.08.06 07:37 #33 bool ReliableModifyStopLoss(int ticket,double NewStopLoss,int MarkColor=CLR_NONE) { int ot, oti; datetime oex; string os; double oop, otp, point; bool res=false; bool selected=false; double fixed; selected=OrderSelect( ticket, SELECT_BY_TICKET, MODE_TRADES); if ( selected== True) { double ns=NormalizeDouble( NewStopLoss,MarketInfo(OrderSymbol(),MODE_DIGITS)); ot=OrderType(); oti=OrderTicket(); oop=OrderOpenPrice(); otp=OrderTakeProfit(); oex=OrderExpiration(); os=OrderSymbol(); point=MarketInfo( os,MODE_POINT); if ( ot==OP_BUY|| ot==OP_BUYSTOP|| ot==OP_BUYLIMIT) { fixed=MarketInfo( os,MODE_ASK)-MarketInfo( os,MODE_STOPLEVEL)* point; if ( ns> fixed&& ns<=MarketInfo( os,MODE_ASK)) ns= fixed; while(true) { res=OrderModify( oti, oop, ns, otp, oex, MarkColor); if ( res== True) break; else { if (GetLastError()== ERR_INVALID_STOPS) ns= ns- point; else break; } RefreshRates(); }//while(true) }//if (ot==OP_BUY||ot==OP_BUYSTOP||ot==OP_BUYLIMIT) if ( ot==OP_SELL|| ot==OP_SELLSTOP|| ot==OP_SELLLIMIT) { fixed=MarketInfo( os,MODE_BID)+MarketInfo( os,MODE_STOPLEVEL)* point; if ( ns< fixed&& ns>=MarketInfo( os,MODE_BID)) ns= fixed; while(true) { res=OrderModify( oti, oop, ns, otp, oex, MarkColor); if ( res== True) break; else { if (GetLastError()== ERR_INVALID_STOPS) ns= ns+ point; else break; } RefreshRates(); }//while(true) }//if (ot==OP_BUY||ot==OP_BUYSTOP||ot==OP_BUYLIMIT) } return( res); } bool ReliableModifyTakeProfit(int ticket,double NewTakeProfit,int MarkColor=CLR_NONE) { int ot, oti; datetime oex; string os; double oop, osl, point; bool res=false; bool selected=false; double fixed; selected=OrderSelect( ticket, SELECT_BY_TICKET, MODE_TRADES); if ( selected== True) { double nt=NormalizeDouble( NewTakeProfit,MarketInfo(OrderSymbol(),MODE_DIGITS)); ot=OrderType(); oti=OrderTicket(); oop=OrderOpenPrice(); osl=OrderStopLoss(); oex=OrderExpiration(); os=OrderSymbol(); point=MarketInfo( os,MODE_POINT); if ( ot==OP_BUY|| ot==OP_BUYSTOP|| ot==OP_BUYLIMIT) { fixed=MarketInfo( os,MODE_ASK)+MarketInfo( os,MODE_STOPLEVEL)* point; if ( nt< fixed&& nt>=MarketInfo( os,MODE_ASK)) nt= fixed; while(true) { res=OrderModify( oti, oop, osl, nt, oex, MarkColor); if ( res== True) break; else { if (GetLastError()== ERR_INVALID_STOPS) nt= nt+ point; else break; } RefreshRates(); }//while(true) }//if (ot==OP_BUY||ot==OP_BUYSTOP||ot==OP_BUYLIMIT) if ( ot==OP_SELL|| ot==OP_SELLSTOP|| ot==OP_SELLLIMIT) { fixed=MarketInfo( os,MODE_BID)-MarketInfo( os,MODE_STOPLEVEL)* point; if ( nt> fixed&& nt<=MarketInfo( os,MODE_BID)) nt= fixed; while(true) { res=OrderModify( oti, oop, osl, nt, oex, MarkColor); if ( res== True) break; else { if (GetLastError()== ERR_INVALID_STOPS) nt= nt- point; else break; } RefreshRates(); }//while(true) }//if (ot==OP_BUY||ot==OP_BUYSTOP||ot==OP_BUYLIMIT) } return( res); } int ReliableOrderPlace(string symbol,int cmd,double volume,double price,int slippage,int stoploss,int takeprofit, string comment="",int magic=0,datetime expiration=0,color arrow_color=CLR_NONE,int MaxPasses=0) { int res, ticket; double oop, tkp, osl; res= ReliableOrderSend( symbol, cmd, volume, price, slippage,0,0, comment, magic, expiration, arrow_color, MaxPasses); if ( res!=-1) { ticket=OrderSelect( res, SELECT_BY_TICKET, MODE_TRADES); oop=OrderOpenPrice(); if ( takeprofit!=0) { if ( cmd==OP_BUY|| cmd==OP_BUYLIMIT|| cmd==OP_BUYSTOP) tkp= oop+ takeprofit*MarketInfo( symbol,MODE_POINT); if ( cmd==OP_SELL|| cmd==OP_SELLLIMIT|| cmd==OP_SELLSTOP) tkp= oop- takeprofit*MarketInfo( symbol,MODE_POINT); ReliableModifyTakeProfit( res, tkp); } } if ( res!=-1) { ticket=OrderSelect( res, SELECT_BY_TICKET, MODE_TRADES); oop=OrderOpenPrice(); if ( stoploss!=0) { if ( cmd==OP_BUY|| cmd==OP_BUYLIMIT|| cmd==OP_BUYSTOP) osl= oop- stoploss*MarketInfo( symbol,MODE_POINT); if ( cmd==OP_SELL|| cmd==OP_SELLLIMIT|| cmd==OP_SELLSTOP) osl= oop+ stoploss*MarketInfo( symbol,MODE_POINT); ReliableModifyStopLoss( res, osl); } } return( res); } Bogdan Caramalac 2009.08.06 09:57 #34 有什么想法吗? Patrick 2009.08.06 16:35 #35 Roger wrote>> 真的是时候展示整个代码了。如果你犹豫不决,你可以使用PM。 我看到你的TP比Bid低 在解决了TP<Bid的问题后,发现我的止损水平在这个经纪人那里是0,所以我不能有任何SL或TP的订单,必须在下单后使用订单修改。 谢谢你的帮助。 邓先生 Bogdan Caramalac 2009.08.06 18:21 #36 我不知道你在哪里看到了TP集,因为我没有贴出产生它的实际线路,这就是。 tsel= ReliableOrderSend(Symbol(), WhatOperation(OP_SELL, GetPylonRoot( execpyl,MODE_HIGH)+(2* Half)*( BuildLevels+ execlev)), LotSize, HighBase+(2* Half)*( BuildLevels+ execlev), Slippage,0,0,"", MakeMagic( execpyl, execlev+1, execarea) ); 正如你所看到的,SL和TP都被设置为零...... Bogdan Caramalac 2009.08.06 18:24 #37 WOAA....这是我的错--价格不一样的公式 后来的编辑。 纠正并没有解决问题......它仍然发生,虽然没有相同的发生率。 Bogdan Caramalac 2009.08.06 22:40 #38 解决了...在没有SL或TP的情况下,STOPLEVEL仍然重要... 1234 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
k......明天将发布代码......。
忘了说这是在回溯测试 中发生的情况...我不知道未来会如何发展,但我也不想在那里看到这种情况。
真的是时候展示整个代码了。如果你犹豫不决,你可以使用PM。
我看到你的TP比Bid低
在解决了TP<Bid的问题后,发现我的止损水平在这个经纪人那里是0,所以我不能有任何SL或TP的订单,必须在下单后使用订单修改。
谢谢你的帮助。
邓先生
我不知道你在哪里看到了TP集,因为我没有贴出产生它的实际线路,这就是。
正如你所看到的,SL和TP都被设置为零......WOAA....这是我的错--价格不一样的公式
后来的编辑。
纠正并没有解决问题......它仍然发生,虽然没有相同的发生率。