错误、漏洞、问题 - 页 1503 1...149614971498149915001501150215031504150515061507150815091510...3184 新评论 [删除] 2016.02.10 07:52 #15021 Slawa:错过了这个事实。对不起也许我们可以解决这个问题。关于时间问题,很难说。 谢谢你。 [删除] 2016.02.10 12:05 #15022 Slawa:你的行为被称为好战的无知。请不要再发无意义的帖子,不要再侮辱论坛成员。所以,我问了关于时区的问题,并表达了我的观点,即用函数全局初始化变量的能力不应该被废除。 Vladimir Pastushak 2016.02.10 12:14 #15023 我的软件的一个用户发来一张在测试器中运行软件的问题的截图它可能是什么,接下来该怎么做? Anatoli Kazharski 2016.02.10 12:48 #15024 Vladimir Pastushak:我的软件的一个用户发来一张在测试器中运行软件的问题的截图它可能是什么,接下来该怎么做? 写信给servicedesk。 Artyom Trishkin 2016.02.10 12:59 #15025 Vladimir Pastushak:我的软件的一个用户发来一张在测试器中运行软件的问题的截图它可能是什么,接下来该怎么做? 这发生了几次。重新启动终端有帮助。 Alexander 2016.02.10 14:07 #15026 Vladimir Pastushak:我的软件的一个用户发来一张在测试器中运行软件的问题的截图它可能是什么,接下来该怎么做? 向服务台提供完整的描述和代码(在所有检查后会被删除)。 Sergey Genikhov 2016.02.10 18:15 #15027 我想确定,函数iHigh(....)/iLow(...)是否返回一个Bid值? [删除] 2016.02.10 18:18 #15028 Sergey Genikhov:我想确定,函数iHigh(....)/iLow(...)是否返回Bid值? 是的,该图是基于投标价格的。 [删除] 2016.02.10 19:17 #15029 Alexey Kozitsyn: 是的,该图是基于投标价格的。好的 )))) Andrei Syrvachou 2016.02.10 21:40 #15030 当加入图形写入2016.02.11 00:21:02.663 'MoyforNeuro'不是专家,不能执行,编译器没有给出错误,以前一切正常,但新的构建出来后问题就出来了!。请告知有什么问题,这里是专家自己的。//+------------------------------------------------------------------+ //| Excel_Neuro.mq4 | //| Copyright 2016, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property strict input string FileName = "OrderEU.txt"; //- Имя файла в каталоге TerminalPath()+"\experts\files", // с которого будут считываться данные о изменениях в ордерах. input int MagicStart = 99; //- Эксперт удаляет только ордера, магики которых input int MagicEnd = 999; // входят в указанный здесь интервал input int Sensitivity = 30; //- Чувствительность сигнала в пунктах. //extern double NewRisk = 1.0; //- Коэффициент изменения риска //extern bool LittleLots = true; //- Если true, то при лоте меньше минимальнодопустимого на этом счёте, будет открыт минимальный лот input int Stoploss = 30; input int SP = 30; //- SleepPage - предельное отклонение от цены //-------------------------------------------------------------------------- extern double Time_shift=15; //--------------------------------------------------------------------------- int OCount=0; int OMagic[1000]; string OSymbol[1000]; double OType[1000]; double ORisk[1000]; double OOP[1000]; double OSL[1000]; double OTP[1000]; //--------------------------------------------------------------------------- int start() { //----------------------------------------------------------------------------------- int magic=0; int _GetLastError = 0, _OrdersTotal = OrdersTotal(); //bool ALLRIGHT=true; if(!FileExist(FileName)) return(0); FileLoad(FileName); //Удаляем старые if(CloseAllBeingAbsentPozitions()<0) return(0); //Корректируем существующие for(int i=0; i<OCount; i++) { magic=OrderExist("",OMagic[i]); if(magic>0){ if(OrderMagicNumber()==OMagic[i]){ Print("Ордер с таким магиком уже существует"); FileDelete(FileName);} } else { //Обрабатываем существующие for(int q=0; q<=OrdersTotal(); q++) { if(OrderSelect(q,SELECT_BY_POS, MODE_TRADES)){ Print("Выбрал ордер ", OrderMagicNumber(),"Всего ордеров ",OrdersTotal()); if(OrderType()==OType[i]){ Print("Ордер по типу соответствует последнему сигналу"); MODIFY(OSymbol[i], magic, OSL[i], OTP[i]); } else if(OrderType()!=OType[i]){ Print("Удалим ордера другого типа"); //if(OrderType()==OP_BUY) { OrderClose(OrderTicket(),OrderLots(),Bid,3,Green);return(0);} //if(OrderType()==OP_SELL){ OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet);return(0);} } } } //Открываем новые позиции if(OType[i]==OP_BUY) { if(MathAbs(MarketInfo(OSymbol[i],MODE_ASK)-OOP[i])<Sensitivity*MarketInfo(OSymbol[i],MODE_POINT)) { BUY(OSymbol[i],ORisk[i], OSL[i], OTP[i], OMagic[i]); Print("Удалим файл после открытия БАЙ ордера"); FileDelete(FileName); } } else if(OType[i]==OP_SELL) { if(MathAbs(MarketInfo(OSymbol[i],MODE_BID)-OOP[i])<Sensitivity*MarketInfo(OSymbol[i],MODE_POINT)) { SELL(OSymbol[i],ORisk[i], OSL[i], OTP[i], OMagic[i]); Print("Удалим файл после открытия СЕЛЛ ордера"); FileDelete(FileName); } } } }//Next i return(0); } //start() //--------------------------------------------------------------------------- bool FileExist(string file) { int handle=FileOpen(file,FILE_BIN); if(handle<0) { return(false); } else { FileClose(handle); return(true); } }//FileExist() //--------------------------------------------------------------------------- int FileLoad(string file) { int i=0, j=0; double k=0; string buffer[1000]; int handle=FileOpen(file,FILE_BIN); if(handle<0) { return(-1); } else { k=FileReadArray(handle,buffer,0,1000); FileClose(handle); //OCount=0; //while(!StringTrimRight(StringTrimLeft(buffer[OCount]))=="") { for(OCount=0; OCount<k; OCount++) { i = StringFind(buffer[OCount]," ",0); ORisk[OCount]=StrToDouble(StringSubstr(buffer[OCount], 0,i)); j=i+1; i = StringFind(buffer[OCount]," ",j); OMagic[OCount]=(int)StrToDouble(StringSubstr(buffer[OCount], j,i-j)); j=i+1; i = StringFind(buffer[OCount]," ",j); OSymbol[OCount]=StringSubstr(buffer[OCount], j,i-j); j=i+1; i = StringFind(buffer[OCount]," ",j); OType[OCount]=StrToDouble(StringSubstr(buffer[OCount], j,i-j)); j=i+1; i = StringFind(buffer[OCount]," ",j); OOP[OCount]=StrToDouble(StringSubstr(buffer[OCount], j,i-j)); j=i+1; i = StringFind(buffer[OCount]," ",j); OSL[OCount]=StrToDouble(StringSubstr(buffer[OCount], j,i-j)); j=i+1; OTP[OCount]=StrToDouble(StringSubstr(buffer[OCount], j,0)); //OCount++; }//Next OCount } return(-1); }//FileLoad() //+------------------------------------------------------------------+ int OrderExist(string fSymbol="", int fMagic=0, int fType=-1) { int total = OrdersTotal(); for (int i = total-1; i >= 0; i--) { if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) if(OrderSymbol()==fSymbol || fSymbol=="") { if(OrderMagicNumber()==fMagic || fMagic==0) { if(OrderType()==fType||fType==-1) { return(OrderTicket()); } } } // Если свой } // Next i return(-1); }//OrderExist() //+------------------------------------------------------------------+ int CloseAllBeingAbsentPozitions() { int Cur_Hour=Hour(); // Серверное время в часах //double Cur_Min =Minute(); // Серверное время в минутах //double Cur_time=Cur_Hour; //+ Cur_Min/100; // Текущее время int LE; int y,x=100; double PriceClose=0,z=0; bool Del; int total = OrdersTotal(); for (int i = total-1; i >= 0; i--) { if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { while(x<124){ x++; y=24; if(x-101+Time_shift-y<0){ y=0; } else { y=24;} z=x-101+Time_shift-y; Print("Закрываем ордера, Номер магика X= ",x-1," Выбрал ордер с магиком ",OrderMagicNumber()," Время закрытия ",z); if(OrderMagicNumber()==x&&Cur_Hour==z) continue; Del=true; } for(int j=0; j<OCount; j++) { if(OrderMagicNumber()==OMagic[j]) { Del=false; break; } } if(Del) { if(OrderType()>1&&OrderType()<6) if(OrderDelete(OrderTicket())==true) Print("Ордер удален"); else { LE=135; while(LE>134 && LE<139) { if(OrderType()==OP_BUY) { PriceClose=MarketInfo(OrderSymbol(),MODE_BID); } else if(OrderType()==OP_SELL) { PriceClose=MarketInfo(OrderSymbol(),MODE_ASK); } if(OrderClose(OrderTicket(),OrderLots(),PriceClose,SP)) LE = GetLastError(); if(LE>0) Print("СтаФФка не закрывается по причине ашипки № ",LE); } if(LE>0) return(-1); } } } } // Next i return(0); }//CloseAllPozitions() //+------------------------------------------------------------------+ int MODIFY(string mySymbol, int magic, double sl = 0, double tp = 0) { double stoplimit=MarketInfo(mySymbol, MODE_STOPLEVEL)*MarketInfo(mySymbol,MODE_POINT); Print("Пытаемся модифицировать",OrderMagicNumber()); //for(int i=0; i<OCount; i++) { //for (magic=100; magic <= 123; magic++) { //if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){ magic=OrderMagicNumber(); if(OrderSelect(magic, SELECT_BY_TICKET)) { double SLo=OrderStopLoss(); double TPo=OrderTakeProfit(); //sl=NormalizeDouble(sl,MarketInfo(mySymbol,MODE_DIGITS)); //tp=NormalizeDouble(tp,MarketInfo(mySymbol,MODE_DIGITS)); if(OrderType()==OP_BUY) { Print("Проверяем, является ли ордером БАЙ , тип ордера ",OrderType()); if(NormalizeDouble(sl,Digits)>NormalizeDouble(SLo,Digits)) { sl=NormalizeDouble(sl,(int)MarketInfo(mySymbol,MODE_DIGITS)); } else { sl=NormalizeDouble(SLo,(int)MarketInfo(mySymbol,MODE_DIGITS)); } if(NormalizeDouble(tp,Digits)<NormalizeDouble(TPo,Digits)) { tp=NormalizeDouble(tp,(int)MarketInfo(mySymbol,MODE_DIGITS)); } else { tp=NormalizeDouble(TPo,(int)MarketInfo(mySymbol,MODE_DIGITS)); } if(sl>0) { Print("Проверяем, есть ли у ордера с/л ",OrderStopLoss()); if(MarketInfo(mySymbol,MODE_BID)-sl<stoplimit) { Print("Слишком близкий стоп (",(MarketInfo(mySymbol,MODE_BID)-sl)/MarketInfo(mySymbol,MODE_POINT)," пунктов). Требуется не менее: ", stoplimit/MarketInfo(mySymbol,MODE_POINT)); return(-1); } } if(tp>0) { Print("Проверяем, есть ли у ордера т/п ",OrderTakeProfit()); if(tp-MarketInfo(mySymbol,MODE_ASK)<stoplimit) { Print("Слишком близкий профит (",(tp-MarketInfo(mySymbol,MODE_ASK))/MarketInfo(mySymbol,MODE_POINT)," пунктов). Требуется не менее: ", stoplimit/MarketInfo(mySymbol,MODE_POINT)); return(-1); } } } else if(OrderType()==OP_SELL) { Print("Проверяем, является ли ордером СЕЛЛ , тип ордера ",OrderType()); if(NormalizeDouble(sl,Digits)<NormalizeDouble(SLo,Digits)) { sl=NormalizeDouble(sl,(int)MarketInfo(mySymbol,MODE_DIGITS)); } else { sl=NormalizeDouble(SLo,(int)MarketInfo(mySymbol,MODE_DIGITS)); } if(NormalizeDouble(tp,Digits)>NormalizeDouble(TPo,Digits)) { tp=NormalizeDouble(tp,(int)MarketInfo(mySymbol,MODE_DIGITS)); } else { tp=NormalizeDouble(TPo,(int)MarketInfo(mySymbol,MODE_DIGITS)); } if(sl>0) { if(sl-MarketInfo(mySymbol,MODE_ASK)<stoplimit) { Print("Слишком близкий стоп (",(sl-MarketInfo(mySymbol,MODE_ASK))/MarketInfo(mySymbol,MODE_POINT)," пунктов). Требуется не менее: ", stoplimit/MarketInfo(mySymbol,MODE_POINT)); return(-1); } } if(tp>0) { if(MarketInfo(mySymbol,MODE_BID)-tp<stoplimit) { Print("Слишком близкий профит (",(MarketInfo(mySymbol,MODE_BID)-tp)/MarketInfo(mySymbol,MODE_POINT)," пунктов). Требуется не менее: ", stoplimit/MarketInfo(mySymbol,MODE_POINT)); return(-1); } } } if(DoubleToStr(OrderStopLoss(),(int)MarketInfo(mySymbol,MODE_DIGITS))==DoubleToStr(sl,(int)MarketInfo(mySymbol,MODE_DIGITS)) && DoubleToStr(OrderTakeProfit(),(int)MarketInfo(mySymbol,MODE_DIGITS))==DoubleToStr(tp,(int)MarketInfo(mySymbol,MODE_DIGITS))) return(0); if(OrderModify(magic,OrderOpenPrice(), sl, tp, 0)==FALSE) { Print("Ошибка OrderModify(): ",GetLastError()); return(-1); } } return(0); }//Modify() //+------------------------------------------------------------------+ int BUY(string mySymbol="", double lt=0, double sl=0, double tp=0, int mn=0) { if(mySymbol=="") mySymbol=Symbol(); double stoplimit=MarketInfo(mySymbol, MODE_STOPLEVEL)*MarketInfo(mySymbol,MODE_POINT); int magic = -1; //покупаем по цене Ask int LE=135; mn=(int)NormalizeDouble(mn,(int)MarketInfo(mySymbol,MODE_DIGITS)); if(lt<MarketInfo(mySymbol, MODE_MINLOT)) return(0); if(lt>MarketInfo(mySymbol, MODE_MAXLOT)) lt=MarketInfo(mySymbol, MODE_MAXLOT); if(lt>AccountFreeMargin()*0.90/MarketInfo(mySymbol,MODE_MARGINREQUIRED)) lt=AccountFreeMargin()*0.90/MarketInfo(mySymbol,MODE_MARGINREQUIRED); lt = NormalizeDouble(lt, (int)MathAbs(MathLog(MarketInfo(mySymbol, MODE_LOTSTEP))/MathLog(10.0))); if(sl>0) { sl=NormalizeDouble(sl,(int)MarketInfo(mySymbol,MODE_DIGITS)); if(MarketInfo(mySymbol,MODE_BID)-sl<stoplimit) sl=MarketInfo(mySymbol,MODE_BID)-stoplimit; } if(tp>0) { tp=NormalizeDouble(tp,(int)MarketInfo(mySymbol,MODE_DIGITS)); if(tp-MarketInfo(mySymbol,MODE_ASK)<stoplimit) tp=MarketInfo(mySymbol,MODE_ASK)+stoplimit; } while(LE>134 && LE<139) { magic = OrderSend(mySymbol, OP_BUY, lt, MarketInfo(mySymbol,MODE_ASK), SP, sl, tp, WindowExpertName(), mn, 0, Blue); LE = GetLastError(); Sleep(2000); RefreshRates(); } if (magic > 0) Sleep(10000); return(magic); }//BUY() //+------------------------------------------------------------------+ int SELL(string mySymbol="", double lt=0, double sl=0, double tp=0, double mn=0) { if(mySymbol=="") mySymbol=Symbol(); double stoplimit=MarketInfo(mySymbol, MODE_STOPLEVEL)*MarketInfo(mySymbol,MODE_POINT); int magic = -1; //продаём по цене Bid int LE=135; mn=NormalizeDouble(mn,(int)MarketInfo(mySymbol,MODE_DIGITS)); if(lt<MarketInfo(mySymbol, MODE_MINLOT)) return(0); if(lt>MarketInfo(mySymbol, MODE_MAXLOT)) lt=MarketInfo(mySymbol, MODE_MAXLOT); if(lt>AccountFreeMargin()*0.90/MarketInfo(mySymbol,MODE_MARGINREQUIRED)) lt=AccountFreeMargin()*0.90/MarketInfo(mySymbol,MODE_MARGINREQUIRED); lt = NormalizeDouble(lt, (int)MathAbs(MathLog(MarketInfo(mySymbol, MODE_LOTSTEP))/MathLog(10.0))); if(sl>0) { sl=NormalizeDouble(sl,(int)MarketInfo(mySymbol,MODE_DIGITS)); if(sl-MarketInfo(mySymbol,MODE_ASK)<stoplimit) sl=MarketInfo(mySymbol,MODE_ASK)+stoplimit; } if(tp>0) { tp=NormalizeDouble(tp,(int)MarketInfo(mySymbol,MODE_DIGITS)); if(MarketInfo(mySymbol,MODE_BID)-tp<stoplimit) tp=MarketInfo(mySymbol,MODE_BID)-stoplimit; } while(LE>134 && LE<139) { magic = OrderSend(mySymbol, OP_SELL, lt, MarketInfo(mySymbol,MODE_BID), SP, sl, tp, WindowExpertName(), (int)mn, 0, Red); LE = GetLastError(); Sleep(2000); RefreshRates(); } if (magic > 0) Sleep(10000); return(magic); }//SELL() //+------------------------------------------------------------------+ Автоматический трейдинг и тестирование торговых стратегий www.mql5.com MQL5: язык торговых стратегий для MetaTrader 5, позволяет писать собственные торговые роботы, технические индикаторы, скрипты и библиотеки функций 1...149614971498149915001501150215031504150515061507150815091510...3184 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
错过了这个事实。对不起
也许我们可以解决这个问题。关于时间问题,很难说。
你的行为被称为好战的无知。
请不要再发无意义的帖子,不要再侮辱论坛成员。
所以,我问了关于时区的问题,并表达了我的观点,即用函数全局初始化变量的能力不应该被废除。
我的软件的一个用户发来一张在测试器中运行软件的问题的截图
它可能是什么,接下来该怎么做?
我的软件的一个用户发来一张在测试器中运行软件的问题的截图
它可能是什么,接下来该怎么做?
我的软件的一个用户发来一张在测试器中运行软件的问题的截图
它可能是什么,接下来该怎么做?
我的软件的一个用户发来一张在测试器中运行软件的问题的截图
它可能是什么,接下来该怎么做?
我想确定,函数iHigh(....)/iLow(...)是否返回Bid值?
是的,该图是基于投标价格的。
好的 ))))
当加入图形写入2016.02.11 00:21:02.663 'MoyforNeuro'不是专家,不能执行,编译器没有给出错误,以前一切正常,但新的构建出来后问题就出来了!。请告知有什么问题,这里是专家自己的。