MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 464 1...457458459460461462463464465466467468469470471...1953 新しいコメント Rewerpool 2018.02.15 11:29 #4631 Konstantin Nikitin 簡単ですよ!あなたは専門家ですからね。勉強になります!(笑 if(!OrderSelect(i,SELECT_BY_POS)) continue; if(OrderSymbol()!=Symbol()) continue; А это как прочитать? Если (Ордер не выбран) продолжить; Если (Текущий Символ не равен Символу) продолжить; Так? Или как? Konstantin Nikitin 2018.02.15 11:34 #4632 Rewerpool: これをどう読むか?オーダーが選択されていない)場合は、続けてください。 If (Current Symbol is not equal to Symbol) continue; right?あるいは、どのように? オペレーター継続 Rewerpool 2018.02.15 12:03 #4633 Konstantin Nikitin さん 了解です!何かあれば訂正してください。 if(!OrderSelect(i,SELECT_BY_POS)) continue; Если (Ордер не выбран ордер) начать цикл снова; //(Вернутся в начало функции) if(OrderSymbol()!=Symbol()) continue; Если (ОрдерСимвола не равен текущему Графику)начать цикл снова; //(Вернутся в начало функции) そして、もう一つの質問ですが、!OrderSelectは、No OrderとNo Order selectedのどちらを意味するのでしょうか? Konstantin Nikitin 2018.02.15 12:14 #4634 Rewerpool:わかりました、では:何かあったら訂正してください 順序が選択されていない場合、ループの次の要素が選択される また、ここで質問ですが、!OrderSelectは、Not an OrderとNot an Order selectedのどちらを意味していますか?演算と式、そこで論理演算を 見る Rewerpool 2018.02.15 12:30 #4635 コンスタンチン・ニキーチン(@Konstantin Nikitin) このようにまとめる。 void STOP_TAKE() int tip,Ticket; double OOP,OSL,OTP; int SPREAD = (int)MarketInfo(Symbol(),MODE_SPREAD); if (stoploss<STOPLEVEL) stoploss=0; if (takeprofit<STOPLEVEL) takeprofit=0; for(int i=0; i<OrdersTotal(); i++) { if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue; if(OrderSymbol()!=Symbol()) continue; int tip = OrderType(); if(tip!=OP_BUY && tip!=OP_BUYSTOP && tip!=OP_BUYLIMIT) continue; // переменные которые будут использоваться в любых ордерах int Ticket = OrderTicket(); double OOP = OrderOpenPrice(); //--- switch( OrderMagicNumber() ) { case Magic: //----------Если Ордера Советника { if(tip<2) { OSL = OrderStopLoss(); OTP = OrderTakeProfit(); if ((OSL==0&&stoploss!=0)||(OTP==0&&takeprofit!=0)) { if (tip==OP_BUY || tip==OP_BUYSTOP || tip==OP_BUYLIMIT) { if (takeprofit!=0) TP = NormalizeDouble(OOP + takeprofit*Point,Digits); else TP=OTP; if (stoploss!=0) SL = NormalizeDouble(OOP - (stoploss+SPREAD)* Point,Digits); else SL=OSL; if (OrderModify(Ticket,OOP,SL,TP,0,White)) Print("STOP_TAKE",Ticket," SL ",OSL," -> ",SL," TP ",OTP," -> ",TP); else Print(Symbol()," Error STOP_TAKE",GetLastError()," Ticket ",Ticket); } if (tip==OP_SELL || tip==OP_SELLSTOP || tip==OP_SELLLIMIT) { if (takeprofit!=0) TP = NormalizeDouble(OOP - takeprofit*Point,Digits); else TP=OTP; if (stoploss!=0) SL = NormalizeDouble(OOP + (stoploss+SPREAD)* Point,Digits); else SL=OSL; if (OrderModify(Ticket,OOP,SL,TP,0,White)) Print("STOP_TAKE",Ticket," SL ",OSL," -> ",SL," TP ",OTP," -> ",TP); else Print(Symbol()," Error STOP_TAKE",GetLastError()," Ticket ",Ticket); } } } } break; default: //----------Если Ордера Оператора { { if(tip<2) { OSL = OrderStopLoss(); OTP = OrderTakeProfit(); if ((OSL==0&&stoploss!=0)||(OTP==0&&takeprofit!=0)) { if (tip==OP_BUY || tip==OP_BUYSTOP || tip==OP_BUYLIMIT) { if (takeprofit!=0) TP = NormalizeDouble(OOP + takeprofit*Point,Digits); else TP=OTP; if (stoploss!=0) SL = NormalizeDouble(OOP - (stoploss+SPREAD)* Point,Digits); else SL=OSL; if (OrderModify(Ticket,OOP,SL,TP,0,White)) Print("STOP_TAKE",Ticket," SL ",OSL," -> ",SL," TP ",OTP," -> ",TP); else Print(Symbol()," Error STOP_TAKE",GetLastError()," Ticket ",Ticket); } if (tip==OP_SELL || tip==OP_SELLSTOP || tip==OP_SELLLIMIT) { if (takeprofit!=0) TP = NormalizeDouble(OOP - takeprofit*Point,Digits); else TP=OTP; if (stoploss!=0) SL = NormalizeDouble(OOP + (stoploss+SPREAD)* Point,Digits); else SL=OSL; if (OrderModify(Ticket,OOP,SL,TP,0,White)) Print("STOP_TAKE",Ticket," SL ",OSL," -> ",SL," TP ",OTP," -> ",TP); else Print(Symbol()," Error STOP_TAKE",GetLastError()," Ticket ",Ticket); } } } } } } }そうだろ? Rewerpool 2018.02.15 12:40 #4636 はこのように追加されました。 Rewerpool 2018.02.15 13:08 #4637 なぜそのような書き方をするのか? if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue; if(OrderSymbol()!=Symbol()) continue; 1つのシンボルにしかEAを設置しないのに、すべてのシンボルで動作するのですか?そして、マジシャンは自分自身を見ることになるのです 完全に混乱している! Dmitry Romanov 2018.02.15 13:10 #4638 私の友人、誰が実装する方法を知っている:EAは、例えば、iStohastic()の指標の絶対 値を取得することができます。買われすぎ、売られすぎを判断するには? 視覚的には、レベル80と20のストキャスティック・インディケーターのようなもの。 Konstantin Nikitin 2018.02.15 13:20 #4639 Rewerpool:さて、これで間違いはないでしょう。 void STOP_TAKE(void) { int SPREAD = (int)MarketInfo(Symbol(),MODE_SPREAD); if (stoploss<STOPLEVEL) stoploss=0; if (takeprofit<STOPLEVEL) takeprofit=0; for(int i=0; i<OrdersTotal(); i++) { if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue; if(OrderSymbol()!=Symbol()) continue; int tip = OrderType(); if( tip!=OP_BUY && tip!=OP_BUYSTOP && tip!=OP_BUYLIMIT && tip!=OP_SELL && tip!=OP_SELLSTOP && tip!=OP_SELLLIMIT ) continue; // переменные которые будут использоваться в любых ордерах int Ticket = OrderTicket(); double OOP = OrderOpenPrice(), OSL = OrderStopLoss(), OTP = OrderTakeProfit(); //--- if( OrderMagicNumber() == Magic ) { //----------Если Ордера Советника switch(tip) { case OP_BUY: case OP_BUYSTOP: case OP_BUYLIMIT: { if (takeprofit!=0) TP = NormalizeDouble(OOP + takeprofit*Point,Digits); else TP=OTP; if (stoploss!=0) SL = NormalizeDouble(OOP - (stoploss+SPREAD)* Point,Digits); else SL=OSL; if (OrderModify(Ticket,OOP,SL,TP,0,White)) Print("STOP_TAKE",Ticket," SL ",OSL," -> ",SL," TP ",OTP," -> ",TP); else Print(Symbol()," Error STOP_TAKE",GetLastError()," Ticket ",Ticket); } break; // end case default: { if (takeprofit!=0) TP = NormalizeDouble(OOP - takeprofit*Point,Digits); else TP=OTP; if (stoploss!=0) SL = NormalizeDouble(OOP + (stoploss+SPREAD)* Point,Digits); else SL=OSL; if (OrderModify(Ticket,OOP,SL,TP,0,White)) Print("STOP_TAKE",Ticket," SL ",OSL," -> ",SL," TP ",OTP," -> ",TP); else Print(Symbol()," Error STOP_TAKE",GetLastError()," Ticket ",Ticket); } // end case } // end switch } else { //----------Если Ордера Оператора switch(tip) { case OP_BUY: case OP_BUYSTOP: case OP_BUYLIMIT: { if (takeprofit!=0) TP = NormalizeDouble(OOP + takeprofit*Point,Digits); else TP=OTP; if (stoploss!=0) SL = NormalizeDouble(OOP - (stoploss+SPREAD)* Point,Digits); else SL=OSL; if (OrderModify(Ticket,OOP,SL,TP,0,White)) Print("STOP_TAKE",Ticket," SL ",OSL," -> ",SL," TP ",OTP," -> ",TP); else Print(Symbol()," Error STOP_TAKE",GetLastError()," Ticket ",Ticket); } break; // end case default: { if (takeprofit!=0) TP = NormalizeDouble(OOP - takeprofit*Point,Digits); else TP=OTP; if (stoploss!=0) SL = NormalizeDouble(OOP + (stoploss+SPREAD)* Point,Digits); else SL=OSL; if (OrderModify(Ticket,OOP,SL,TP,0,White)) Print("STOP_TAKE",Ticket," SL ",OSL," -> ",SL," TP ",OTP," -> ",TP); else Print(Symbol()," Error STOP_TAKE",GetLastError()," Ticket ",Ticket); } // end case } // end switch } // end if } // end for } // end STOP_TAKE EAなどの注文を修正する際にも、まったく同じロジックで行っていますが。なぜ区別する必要があるのか、その理由はよくわかりません。しかし、その原理は有用だと思います。 Rewerpool 2018.02.15 13:24 #4640 Konstantin Nikitin USEK POWERFUL!!!!分解してくれてありがとうございます!!! 1...457458459460461462463464465466467468469470471...1953 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
Konstantin Nikitin 簡単ですよ!あなたは専門家ですからね。勉強になります!(笑
Rewerpool:
これをどう読むか?オーダーが選択されていない)場合は、続けてください。
If (Current Symbol is not equal to Symbol) continue; right?あるいは、どのように?
オペレーター継続
Konstantin Nikitin さん 了解です!何かあれば訂正してください。
そして、もう一つの質問ですが、!OrderSelectは、No OrderとNo Order selectedのどちらを意味するのでしょうか?
わかりました、では:何かあったら訂正してください
順序が選択されていない場合、ループの次の要素が選択される
演算と式、そこで論理演算を 見る
はこのように追加されました。
なぜそのような書き方をするのか?
1つのシンボルにしかEAを設置しないのに、すべてのシンボルで動作するのですか?そして、マジシャンは自分自身を見ることになるのです
完全に混乱している!
私の友人、誰が実装する方法を知っている:EAは、例えば、iStohastic()の指標の絶対 値を取得することができます。買われすぎ、売られすぎを判断するには?
視覚的には、レベル80と20のストキャスティック・インディケーターのようなもの。
Rewerpool:さて、これで間違いはないでしょう。
EAなどの注文を修正する際にも、まったく同じロジックで行っていますが。なぜ区別する必要があるのか、その理由はよくわかりません。しかし、その原理は有用だと思います。