[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要路过。没有你就无处可去 - 3. - 页 212 1...205206207208209210211212213214215216217218219...652 新评论 Alexander 2011.09.24 21:08 #2111 现在还不清楚从函数中返回的是什么 return(OrdOpenTimeBuy)。 [Deleted] 2011.09.24 21:21 #2112 Roger: 现在还不清楚从函数中返回的是什么 return(OrdOpenTimeBuy)。 它是否更好? //=========== OrdTimeBuy_b(int MAGIC) =============================================================== // Функция возвращает время открытия последнего рыночного Buy-ордера, принадлежащего MAGIC или 777 //--------------------------------------------------------------------------------------------------- datetime OrdTimeBuy_b(int MAGIC) { string SMB=Symbol(); datetime OrdOpenTimeBuy=0; int i; for(i=0;i<OrdersTotal();i++) { if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES) == true) { if(OrderSymbol()==SMB) { if(OrderMagicNumber()==MAGIC || OrderMagicNumber()==777) { if(OrderType()==OP_BUY) { if(OrdOpenTimeBuy<OrderOpenTime()) { OrdOpenTimeBuy=OrderOpenTime(); } } } } } } if(OrdOpenTimeBuy==0) return(0); return(OrdOpenTimeBuy); } //===================================================================================================== //=========== Локальная низинка ================================================================= double LowestPoint_b(int MAGIC) { datetime OrdOpenTimeBuy=OrdTimeBuy_b(MAGIC); int ShiftBuy=0; double LowestPoint=0; if (OrdOpenTimeBuy!=0) { ShiftBuy=iBarShift(NULL,PERIOD_M1,OrdOpenTimeBuy,true); LowestPoint=iLow(NULL,PERIOD_M1,iLowest(NULL,PERIOD_M1,MODE_LOW,ShiftBuy,0)); } return(LowestPoint); } //================================================================================================= Alexander 2011.09.24 21:26 #2113 nemo811: 这样好吗? 是的,这就可以了。 [Deleted] 2011.09.24 21:33 #2114 Roger: sergeev: 谢谢你。 我已经修复了这些错误,但EA仍然是故障不断。让我们继续挖掘吧 :) --- 2011.09.24 21:38 #2115 nemo811: 谢谢你。 我修复了这些错误,但EA仍有故障。我们会继续挖掘的 :) 我以为你的metaeditor.exe文件被删除了,你在手动检查错误。 如果是EA,肯定是不行的。你的代码中没有启动 功能。 [Deleted] 2011.09.24 22:09 #2116 我的头都被搞乱了。 我写了这段代码。 RefreshRates(); bool ticket2=false; if(st_TrStop>0 && SchSellStop777_b()>0) { double LowestPoint=LowestPoint_b(MAGIC); double ee=0; for (i=OrdersTotal()-1;i>=0;i--) {//Начало цикла if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {WriteError(i);} else{//начало работы с выбранным ордером if(OrderSymbol()==SMB && OrderMagicNumber()==MAGIC) { if(OrderType()==OP_BUY) {//находится вверху, едет вниз Last_OrderOpBuy(MAGIC); if(((Ask-(st_BU+ad.Spred+1)*Point)>=OrderOpenPrice()) || ((Ask-(st_TrStop-1-ad.Spred)*Point)>=LowestPoint)) { if((Ask-(st_BU+ad.Spred+1)*Point)>=OrderOpenPrice()) { Price_SS=NormalizeDouble(OrderOpenPrice()+(ad.Spred+1)*Point,Digits); } else { Price_SS=NormalizeDouble(LowestPoint-1*Point,Digits); } if(ChastZakr) { if(SchBuy>1) { OrderClose(OrdTicketBuy,OrderLots(),MarketInfo(OrderSymbol(), MODE_BID),Proskalz,CLR_NONE); Alert(SMB,": произведено частичное закрытие Buy-позиции, тикет: ",OrdTicketBuy,"."); ee=SchBuyLots-OrderLots(); } else { if(SchBuyLots+SchBuyLots777>MinLot) { OrderClose(OrdTicketBuy,NormalizeDouble(OrderLots()/2,2),MarketInfo(OrderSymbol(), MODE_BID),Proskalz,CLR_NONE); Alert(SMB,": произведено частичное закрытие Buy-ордера, тикет: ",OrdTicketBuy,"."); ee=SchBuyLots-NormalizeDouble(OrderLots()/2,2); } } } else { ee=SchBuyLots; } DeleteOtlozhMAGIC(MAGIC); DeleteOtlozh777(); ticket2=OrderSend(Symbol(),OP_SELLSTOP,ee,Price_SS,Proskalz,0,0,"MAGIC_" + MAGIC,MAGIC,0); if(ticket2!=0 && ticket2!=-1) { Alert (SMB,": установлен траловый SellStop."); Print(SMB,": установлен траловый SellStop."); } if(ticket2==0 || ticket2==-1) { GLE=GetLastError(); ED=ErrorDescription(GLE); Alert (SMB,": ошибка №",GLE," установки тралового SellStop."); Alert (SMB,": описание ошибки - ",ED); Print (SMB,": ошибка №",GLE," установки тралового SellStop."); Print (SMB,": описание ошибки - ",ED); } } } } } } } 它是有缺陷的。但是,如果你在条件中放入一个具体的数字..: if(((Ask-(st_BU+ad.Spred+1)*Point)>=OrderOpenPrice()) || ((Ask-(st_TrStop-1-ad.Spred)*Point)>=LowestPoint)) { ...而不是LowestPoint,一切都像钟表一样运作。 寻找LowestPoint的方法在上面的帖子中给出。 请帮助我,现在是挖掘的第二天。 提前感谢。 [Deleted] 2011.09.24 22:13 #2117 sergeev: 我以为你的metaeditor.exe文件被删除了,你在手动检查错误。 如果这是一个EA,它肯定不会工作。 你的代码中没有启动 功能。 你非常细致,但我也为此感谢你。 我只显示我感兴趣的那部分代码。如果你把整个EA贴出来,问题可能会丢失 :) 谢谢你。 --- 2011.09.25 00:05 #2118 你不通过-1检查值 ShiftBuy [Deleted] 2011.09.25 02:19 #2119 讯息,是否有一个函数,像ihighest 一样只针对MACD Cmu4 2011.09.25 02:31 #2120 CLAIN: 讯息,是否有一个类似ihighest的函数只适用于MACD? 我没有遇到过,但有可能写...这将是关于过去10个柱子的主线的最大值,不包括当前的柱子。 double Hi () { int i,j; H=0; while (i<=10) {if (H<iMACD (NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i+1)) H=iMACD (NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i+1); i++;} return(H); } 1...205206207208209210211212213214215216217218219...652 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
现在还不清楚从函数中返回的是什么
return(OrdOpenTimeBuy)。
现在还不清楚从函数中返回的是什么
return(OrdOpenTimeBuy)。
它是否更好?
这样好吗?
是的,这就可以了。
谢谢你。
我已经修复了这些错误,但EA仍然是故障不断。让我们继续挖掘吧 :)
谢谢你。
我修复了这些错误,但EA仍有故障。我们会继续挖掘的 :)
我以为你的metaeditor.exe文件被删除了,你在手动检查错误。
如果是EA,肯定是不行的。你的代码中没有启动 功能。
我的头都被搞乱了。
我写了这段代码。
它是有缺陷的。但是,如果你在条件中放入一个具体的数字..:
...而不是LowestPoint,一切都像钟表一样运作。
寻找LowestPoint的方法在上面的帖子中给出。
请帮助我,现在是挖掘的第二天。
提前感谢。
我以为你的metaeditor.exe文件被删除了,你在手动检查错误。
如果这是一个EA,它肯定不会工作。 你的代码中没有启动 功能。
你非常细致,但我也为此感谢你。
我只显示我感兴趣的那部分代码。如果你把整个EA贴出来,问题可能会丢失 :)
谢谢你。
讯息,是否有一个类似ihighest的函数只适用于MACD?
我没有遇到过,但有可能写...这将是关于过去10个柱子的主线的最大值,不包括当前的柱子。