エラー、バグ、質問 - ページ 1503 1...149614971498149915001501150215031504150515061507150815091510...3185 新しいコメント 削除済み 2016.02.10 08:52 #15021 Slawa:その事実を見逃していた。申し訳ありませんもしかしたら直せるかもしれない。タイミングについては何とも言えません。 ありがとうございます。 削除済み 2016.02.10 13:05 #15022 Slawa:あなたの行動は、過激な無知と呼ばれています。もう意味のない書き込みはやめて、フォーラムのメンバーを侮辱するようなことはしないでください。そこで、タイムゾーンについて質問し、関数でグローバルに変数を初期化する機能を廃止すべきではないとの意見を述べました。 Vladimir Pastushak 2016.02.10 13:14 #15023 私のソフトウェアのユーザーの一人が、テスターでソフトウェアを実行する際の問題のスクリーンショットを送ってきました。それは何なのか、そして次に何をすべきなのか? Anatoli Kazharski 2016.02.10 13:48 #15024 Vladimir Pastushak:私のソフトウェアのユーザーの一人が、テスターでソフトウェアを実行する際の問題のスクリーンショットを送ってきました。それは何なのか、そして次に何をすべきなのか? servicedeskに書き込む。 Artyom Trishkin 2016.02.10 13:59 #15025 Vladimir Pastushak:私のソフトウェアのユーザーの一人が、テスターでソフトウェアを実行する際の問題のスクリーンショットを送ってきました。それは何なのか、そして次に何をすべきなのか? 何度かあったんですよ。端末を再起動することで解決しました。 Alexander 2016.02.10 15:07 #15026 Vladimir Pastushak:私のソフトウェアのユーザーの一人が、テスターでソフトウェアを実行する際の問題のスクリーンショットを送ってきました。それは何なのか、そして次に何をすべきなのか? 完全な説明とコードでservicedeskへ(これはすべてのチェック後に削除されます)。 Sergey Genikhov 2016.02.10 19:15 #15027 iHigh(...)/iLow(...)関数が Bid値を返すかどうか確認したいのですが。 削除済み 2016.02.10 19:18 #15028 Sergey Genikhov:確認したいのですが、iHigh(...)/iLow(...)関数はBid値を返すのでしょうか? はい、グラフは入札価格に基づいています。 削除済み 2016.02.10 20:17 #15029 Alexey Kozitsyn: はい、グラフは入札価格に基づいています。まぁ )))) Andrei Syrvachou 2016.02.10 22: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...3185 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
その事実を見逃していた。申し訳ありません
もしかしたら直せるかもしれない。タイミングについては何とも言えません。
あなたの行動は、過激な無知と呼ばれています。
もう意味のない書き込みはやめて、フォーラムのメンバーを侮辱するようなことはしないでください。
そこで、タイムゾーンについて質問し、関数でグローバルに変数を初期化する機能を廃止すべきではないとの意見を述べました。
私のソフトウェアのユーザーの一人が、テスターでソフトウェアを実行する際の問題のスクリーンショットを送ってきました。
それは何なのか、そして次に何をすべきなのか?
私のソフトウェアのユーザーの一人が、テスターでソフトウェアを実行する際の問題のスクリーンショットを送ってきました。
それは何なのか、そして次に何をすべきなのか?
私のソフトウェアのユーザーの一人が、テスターでソフトウェアを実行する際の問題のスクリーンショットを送ってきました。
それは何なのか、そして次に何をすべきなのか?
私のソフトウェアのユーザーの一人が、テスターでソフトウェアを実行する際の問題のスクリーンショットを送ってきました。
それは何なのか、そして次に何をすべきなのか?
確認したいのですが、iHigh(...)/iLow(...)関数はBid値を返すのでしょうか?
はい、グラフは入札価格に基づいています。
まぁ ))))
グラフィックスに参加すると、2016.02.11 00:21:02.663 'MoyforNeuro'はエキスパートではないので実行できませんが、コンパイラは何のエラーも与えず、すべてが前にうまくいきましたが、新しいビルドの後に問題が出てきました!何が問題なのかアドバイスをお願いします。以下は専門家自身です。