初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 518 1...511512513514515516517518519520521522523524525...1504 新しいコメント Mikhail Tkachev 2016.02.20 18:16 #5171 Sergey Gritsay:以下は、クラスを使った別のオプションです。テスト結果 セルゲイさん、ありがとうございました。私の理解が正しければ 最初のケースでは、静的変数の配列が作成され、それぞれが固定されたタイムフレームを持つ独自のシンボルのために、すなわち、そのシンボルに対して他のタイムフレームを使用することはできません。 2つ目のケースでは、シンボル+時間枠の組み合わせごとにクラスを作成します。 Sergey Gritsay 2016.02.21 01:27 #5172 MikeZv: セルゲイさん、ありがとうございました。私の理解が正しければ 最初のケースでは、静的変数の配列が作成され、それぞれが固定されたタイムフレームを持つ独自のシンボルのために、すなわち、そのシンボルに対して他のタイムフレームを使用することはできません。 2つ目のケースでは、シンボルとタイムフレームの組み合わせごとにクラスが用意されます。 そうそう、でもちょっと考えれば、配列バリアントで1次元の配列を2次元の配列に置き換えることができるんだ。 Vitaliy Medvedev 2016.02.22 16:53 #5173 そんな問いかけ。注文を開始、チェック、終了するためのテンプレートコードを、開始条件と終了条件なしで見た人はどこかにいますか?自分で条件を書いてみますが、クローズオーダーを書き始めるとエラーにエラーが...。特に、クローズするオーダーを探して確認するのが苦手です。 Yury Reshetov 2016.02.22 17:05 #5174 Vitaliy Medvedev: ここで質問です。注文のオープン、チェック、クローズの条件なしの テンプレートコードをどこかで見たことある人いますか?自分で条件を書こうとしたのですが、close order error on errorを書き始めると...。特に、注文を見つけてはチェック し、クローズするのが苦手です。うまくいかないのも無理はない。結局、クローズ条件がないのであれば、そのような注文を見つけてチェックするのは、これを見つけて、何かわからないけど、クローズしてください、という精神であるべきなのです。まず、クローズするオーダーを選択 する条件を定義しておくと、分析が非常に楽になるはずです。結局、何か誤解があれば、既知の条件に合致しているかどうかを確認すればいいわけですから。 Vitaliy Medvedev 2016.02.22 19:56 #5175 Yury Reshetov:うまくいかないのも無理はない。もし、クローズ条件がないのであれば、そのような注文の検索とチェックは、何かを見つけてクローズする、という精神で行うべきである。まず、決算のための注文選択の 条件を決めておくと、整理がしやすくなります。もし誤解があれば、私たちが確実に知っている条件が正しいかどうかを確認すればいいのです。 これはすべて明確で、私は条件を定義しましたが、条件(オープニングはまだゴミです、私はほとんどそれらを開くために管理することはできません...)に従って注文のオープニング です。そして、さらに、正しい注文の締め 方...。なんということでしょう。 Artyom Trishkin 2016.02.22 21:54 #5176 Vitaliy Medvedev:全てクリアーしているのですが、条件に従って注文を開ける こと、(開け方はやはりナンセンス、開け方、難しい...)です。そして、さらに、正しい注文の締め 方...。なんということでしょう。 どのオーダーをクローズするかわかっている場合は、そのチケット番号でクローズします。 Sergey Gritsay 2016.02.23 03:26 #5177 Vitaliy Medvedev:全てクリアー、条件も練り上げましたが、条件に従っての注文のオープン、(オープンはまだナンセンス、オープン、ちょっと苦労して・・・)。そして、さらに、正しい注文の締め 方...。なんということでしょう。ここで、私の心を引き裂くのは......。int Total_orders(int type) { int n=0; int total=OrdersTotal(); for(int i=0; i<total; i++) { if(!OrderSelect(i,SELECT_BY_POS))continue; if(OrderType()!=type)continue; if(OrderMagicNumber()!=Magic)continue; if(OrderSymbol()!=_Symbol)continue; n++; } return(n); } //+------------------------------------------------------------------+ void OrderOpen(int type,double sl) { double price=0.0; double lot; if(error>1)return; if(type==WRONG_VALUE) return; if(Risk!=0.0)lot=LotNormalize(LotVolume(Risk,sl)); else lot=LotNormalize(Lot); do { if(type==OP_BUY) { RefreshRates(); price=NormalizeDouble(Ask,_Digits); if(AccountFreeMarginCheck(_Symbol,type,lot)<=0)return; } if(type==OP_SELL) { RefreshRates(); price=NormalizeDouble(Bid,_Digits); if(AccountFreeMarginCheck(_Symbol,type,lot)<=0)return; } int Ticket=OrderSend(_Symbol,type,lot,price,10000,0,0,CommentOrder,Magic); if(Ticket>0) { error=Fun_Error(_Symbol,GetLastError()); Alert(__FUNCTION__,": open order ",StrToType(type)," ",_Symbol," :",Ticket); } else error=Fun_Error(_Symbol,GetLastError()); } while(error==1 && !IsStopped()); } //+------------------------------------------------------------------+ void Order_Close(int type) { double price=0.0; int total=OrdersTotal(); if(error>1)return; for(int i=total-1; i>=0; i--) { if(!OrderSelect(i,SELECT_BY_POS))continue; if(OrderType()!=type)continue; if(OrderMagicNumber()!=Magic)continue; if(OrderSymbol()!=_Symbol)continue; do { if(OrderType()==OP_BUY) { RefreshRates(); price=NormalizeDouble(Bid,_Digits); } if(OrderType()==OP_SELL) { RefreshRates(); price=NormalizeDouble(Ask,_Digits); } int res=OrderClose(OrderTicket(),OrderLots(),price,10000); if(res) { Alert(__FUNCTION__,": close order ",StrToType(OrderType())," ",OrderSymbol()," :",OrderTicket()); error=Fun_Error(_Symbol,GetLastError()); } else error=Fun_Error(_Symbol,GetLastError()); } while(error==1 && !IsStopped()); } } //+------------------------------------------------------------------+ void ModifySL(int Stop_Loss) { if(Stop_Loss<=0)return; double sl=0.0; bool res; int total=OrdersTotal(); for(int i=0; i<total; i++) { if(!OrderSelect(i,SELECT_BY_POS))continue; if(OrderMagicNumber()!=Magic)continue; if(OrderSymbol()!=_Symbol)continue; if(OrderStopLoss()!=0)continue; if(OrderType()==OP_BUY) sl=NormalizeDouble(OrderOpenPrice()-(New_Stop(Stop_Loss)*_Point),_Digits); if(OrderType()==OP_SELL) sl=NormalizeDouble(OrderOpenPrice()+(New_Stop(Stop_Loss)*_Point),_Digits); res=OrderModify(OrderTicket(),OrderOpenPrice(),sl,OrderTakeProfit(),0); if(!res)Print(__FUNCTION__,": Error modifying StopLoss order ",StrToType(OrderType())," № - ",GetLastError()," ",OrderSymbol()," ",OrderTicket()); } } //+------------------------------------------------------------------+ void ModifyTP(int Take_Profit) { if(Take_Profit<=0)return; double tp=0.0; bool res; int total=OrdersTotal(); for(int i=0; i<total; i++) { if(!OrderSelect(i,SELECT_BY_POS))continue; if(OrderMagicNumber()!=Magic)continue; if(OrderSymbol()!=_Symbol)continue; if(OrderTakeProfit()!=0)continue; if(OrderType()==OP_BUY) tp=NormalizeDouble(OrderOpenPrice()+(New_Stop(Take_Profit)*_Point),_Digits); if(OrderType()==OP_SELL) tp=NormalizeDouble(OrderOpenPrice() -(New_Stop(Take_Profit)*_Point),_Digits); res=OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),tp,0); if(!res)Print(__FUNCTION__,": Error modifying TakeProfit order ",StrToType(OrderType())," № - ",GetLastError()," ",OrderSymbol()," ",OrderTicket()); } } //+------------------------------------------------------------------+ double LotVolume(double procent,double sl) { double lot=0.0; double tv=MarketInfo(_Symbol,MODE_TICKVALUE); double minlot=MarketInfo(_Symbol,MODE_MINLOT); double maxlot=MarketInfo(_Symbol,MODE_MAXLOT); if(sl!=0 && tv!=0) lot=(AccountFreeMargin()*procent)/(sl*tv*100.0); if(lot < minlot)lot = minlot; if(lot > maxlot)lot = maxlot; return(lot); } //+------------------------------------------------------------------+ double LotNormalize(double lot) { double minlot=MarketInfo(_Symbol,MODE_MINLOT); double maxlot=MarketInfo(_Symbol,MODE_MAXLOT); if(lot < minlot)lot = minlot; if(lot > maxlot)lot = maxlot; if(minlot==0.001) return(NormalizeDouble(lot,3)); if(minlot==0.01) return(NormalizeDouble(lot,2)); if(minlot==0.1) return(NormalizeDouble(lot,1)); return(NormalizeDouble(lot,0)); } //+------------------------------------------------------------------+ string StrToType(int type) { if(type==OP_BUY)return("Buy"); if(type==OP_SELL)return("Sell"); return(NULL); } //+------------------------------------------------------------------+ int New_Stop(int Parametr) { int Min_Dist=(int)MarketInfo(_Symbol,MODE_STOPLEVEL); if(Parametr<Min_Dist) { Parametr=Min_Dist*2+(int)MarketInfo(_Symbol,MODE_SPREAD); Alert(_Symbol," Увеличина дистанция стоп-приказа."); } return(Parametr); } //+------------------------------------------------------------------+ int Fun_Error(string symbol,int Error) { switch(Error) { case 0:return(0); case 1:Alert(symbol," ",Error,":No error returned, but the result is unknown");return(2); case 2:Alert(symbol," ",Error,":Common error");return(2); case 3:Alert(symbol," ",Error,":Invalid trade parameters");return(2); case 4:Alert(symbol," ",Error,":Trade server is busy");Sleep(3000);return(1); case 5:Alert(symbol," ",Error,":Old version of the client terminal");return(2); case 6:Alert(symbol," ",Error,":No connection with trade server");Sleep(3000);return(1); case 7:Alert(symbol," ",Error,":Not enough rights");return(2); case 8:Alert(symbol," ",Error,":Too frequent requests");return(2); case 9:Alert(symbol," ",Error,":Malfunctional trade operation");return(2); case 64:Alert(symbol," ",Error,":Account disabled");return(2); case 65:Alert(symbol," ",Error,":Invalid account");return(2); case 128:Alert(symbol," ",Error,":Trade timeout");return(1); case 129:Alert(symbol," ",Error,":Invalid price");return(2); case 130:Alert(symbol," ",Error,":Invalid stops");return(2); case 131:Alert(symbol," ",Error,":Invalid trade volume");return(2); case 132:Alert(symbol," ",Error,":Market is closed");Sleep(10000);return(1); case 133:Alert(symbol," ",Error,":Trade is disabled");return(2); case 134:Alert(symbol," ",Error,":Not enough money");return(2); case 135:Alert(symbol," ",Error,":Price changed");return(1); case 136:Alert(symbol," ",Error,":Off quotes");Sleep(3000);return(1); case 137:Alert(symbol," ",Error,":Broker is busy");Sleep(3000);return(1); case 138:Alert(symbol," ",Error,":Requote");return(1); case 139:Alert(symbol," ",Error,":Order is locked");Sleep(10000);return(1); case 140:Alert(symbol," ",Error,":Buy orders only allowed");return(2); case 141:Alert(symbol," ",Error,":Too many requests");return(2); case 145:Alert(symbol," ",Error,":Modification denied because order is too close to market");Sleep(10000);return(1); case 146:Alert(symbol," ",Error,":Trade context is busy");Sleep(3000);return(1); case 147:Alert(symbol," ",Error,":Expirations are denied by broker");return(2); case 148:Alert(symbol," ",Error,":The amount of open and pending orders has reached the limit set by the broker");return(2); case 149:Alert(symbol," ",Error,":An attempt to open an order opposite to the existing one when hedging is disabled");return(2); case 150:Alert(symbol," ",Error,":An attempt to close an order contravening the FIFO rule");return(2); default:Alert(symbol,":Error - № ",Error);return(2); } return(0); } Vitaliy Medvedev 2016.02.23 06:31 #5178 Sergey Gritsay:どうぞ、私の心からのように。ああ...当たり前だ!こんなにやってないのに...!ええ、まあ...なぜ、思うように動かないのかがわかった。人間的にありがとうございました。 削除済み 2016.02.23 09:44 #5179 Sergey Gritsay:心からそう思うように持ってください。なぜこのようなことをされるのか、お聞かせください。int total=OrdersTotal(); Sergey Gritsay 2016.02.23 10:02 #5180 Vasyl Nosal:なぜ、そのようなことをするのか、お聞かせください。int total=OrdersTotal(); ループの実行中にOrdersTotal(); の値が変化し、注文を見落としたり、ループ本体が不具合を起こしたりする可能性があるからです。 1...511512513514515516517518519520521522523524525...1504 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
以下は、クラスを使った別のオプションです。
テスト結果
最初のケースでは、静的変数の配列が作成され、それぞれが固定されたタイムフレームを持つ独自のシンボルのために、すなわち、そのシンボルに対して他のタイムフレームを使用することはできません。
2つ目のケースでは、シンボル+時間枠の組み合わせごとにクラスを作成します。
セルゲイさん、ありがとうございました。私の理解が正しければ
最初のケースでは、静的変数の配列が作成され、それぞれが固定されたタイムフレームを持つ独自のシンボルのために、すなわち、そのシンボルに対して他のタイムフレームを使用することはできません。
2つ目のケースでは、シンボルとタイムフレームの組み合わせごとにクラスが用意されます。
ここで質問です。注文のオープン、チェック、クローズの条件なしの テンプレートコードをどこかで見たことある人いますか?自分で条件を書こうとしたのですが、close order error on errorを書き始めると...。特に、注文を見つけてはチェック し、クローズするのが苦手です。
うまくいかないのも無理はない。結局、クローズ条件がないのであれば、そのような注文を見つけてチェックするのは、これを見つけて、何かわからないけど、クローズしてください、という精神であるべきなのです。
まず、クローズするオーダーを選択 する条件を定義しておくと、分析が非常に楽になるはずです。結局、何か誤解があれば、既知の条件に合致しているかどうかを確認すればいいわけですから。
うまくいかないのも無理はない。もし、クローズ条件がないのであれば、そのような注文の検索とチェックは、何かを見つけてクローズする、という精神で行うべきである。
まず、決算のための注文選択の 条件を決めておくと、整理がしやすくなります。もし誤解があれば、私たちが確実に知っている条件が正しいかどうかを確認すればいいのです。
これはすべて明確で、私は条件を定義しましたが、条件(オープニングはまだゴミです、私はほとんどそれらを開くために管理することはできません...)に従って注文のオープニング です。
そして、さらに、正しい注文の締め 方...。なんということでしょう。
全てクリアーしているのですが、条件に従って注文を開ける こと、(開け方はやはりナンセンス、開け方、難しい...)です。
そして、さらに、正しい注文の締め 方...。なんということでしょう。
全てクリアー、条件も練り上げましたが、条件に従っての注文のオープン、(オープンはまだナンセンス、オープン、ちょっと苦労して・・・)。
そして、さらに、正しい注文の締め 方...。なんということでしょう。
ここで、私の心を引き裂くのは......。
どうぞ、私の心からのように。
ああ...当たり前だ!こんなにやってないのに...!ええ、まあ...なぜ、思うように動かないのかがわかった。
人間的にありがとうございました。
心からそう思うように持ってください。
なぜこのようなことをされるのか、お聞かせください。
int total=OrdersTotal();
なぜ、そのようなことをするのか、お聞かせください。
int total=OrdersTotal();