初心者の方からの質問 MQL4 MT4 MetaTrader 4 - ページ 116 1...109110111112113114115116117118119120121122123...260 新しいコメント novichok2018 2018.02.09 14:36 #1151 novichok2018:ありがとうございます。休憩が効いたようです。この先どうなるのか、見てみましょう。いや、本当に役に立っていない。1種類のポジションを開いた場合のみ機能します。例えば、売りポジションが開設され、まだ決済されておらず、同時に買いポジションが開設され、決済された場合、売りポジションは、他の売りポジションが(自身の条件に従って)開設・決済されるまで、自身の決済条件を確認することができないのです。そして、BAYが再びオープンしてクローズすると、再びクローズ条件を逃すことになる。I.Kimさんの関数ExistPositions()を使ってBAYを閉じた後のオープンポジションの 有無を判断しようとしましたが、どこに挿入して、どこにPrintを配置すれば実行制御できるのかが分かりません。何か手がかりは? novichok2018 2018.02.09 19:09 #1152 novichok2018:いや、本当に役に立っていない。同じ種類のポジションが開いている場合のみ有効です。例えば、最初に売りのポジションが開かれ、まだ閉じられていない場合、同時に買いのポジションが開かれ、閉じられると、売りのポジションは、別の売りのポジションが開かれ、その条件に従って閉じられるまで、その終了条件を見ることはありません。そして、BAYが再びオープンしてクローズすると、再びクローズ条件を逃すことになる。I.Kimさんの関数ExistPositions()を使ってBAYを閉じた後のオープンポジションの 有無を判断しようとしましたが、どこに挿入して、どこにPrintを配置すれば実行制御できるのかが分かりません。ヒントを教えてください。誰も解決策を知らないのだろうか?しないんです。 Konstantin Erin 2018.02.10 07:46 #1153 novichok2018: 誰も解決策を知らないのだろうか?しないんです。フォーラムにログインしてみると、独り言を言っているようですが...。会話の始まりはどこなのか、何の話なのか......わかりにくい。プログラムのデバッグには、Printの代わりにAlertを 使うと、画面に一度に表示されるので便利です。これらのAlertは、if条件がチェックされる前に置かれます。鉛筆を使ったもう一つのデバッグ方法 - プログラムをあるべき姿で実行し、変数の値を書き留める。変更したら、古い値を消して、新しい値を書き込む。以前はこうでした。MetaEditorにデバッガが搭載され、変数の値を監視できるようになりました。最も単純な構造は、スクリプトを書くことで別途チェックする必要がある Igor Makanu 2018.02.10 11:27 #1154 novichok2018:誰も解決策を知らないのだろうか?しないんです。この方法で試してみてください。 //+------------------------------------------------------------------+ void OnTick() { int total=OrdersTotal(); for(int i=OrdersTotal()-1;i>=0;i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { if(TimeCurrent()>OrderOpenTime()+100) { switch(OrderType()) { //_______________________________________________________________________ case OP_BUY: { if(OrderMagicNumber()==101 && MathAbs(WPR1)<5) { ClosePosBySelect(slippage,Yellow); break; } if(OrderMagicNumber()==111 && MathAbs(WPR1)<20) { ClosePosBySelect(slippage,Yellow); break; } break; } //_______________________________________________________________________ case OP_SELL: { if(OrderMagicNumber()==222 && MathAbs(WPR1)>97.55) { ClosePosBySelect(slippage,Yellow); break; } if(OrderMagicNumber()==201 && MathAbs(WPR1)>96) { ClosePosBySelect(slippage,Yellow); break; } break; } } } } } } //_______________________________________________________________________ void ClosePosBySelect(int slip,color col) { RefreshRates(); if(OrderType()==OP_BUY) OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), slip, col); if(OrderType()==OP_SELL) OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), slip, col); } //_______________________________________________________________________ Mickey Moose 2018.02.10 11:41 #1155 iCustomはどこからデータを取得しているのですか? novichok2018 2018.02.10 11:52 #1156 Igor Makanu:は、このように試してみてください。 ありがとうございます、試してみましたが、調整してもポジションが閉じないので、コンパイラは誓いません。 novichok2018 2018.02.10 12:01 #1157 STARIJ:掲示板に入ると、独り言のように...。どこから何を言っているのか、わかりにくいですね。プログラムのデバッグには、Printの代わりにAlertを 使う方が便利です - 一度に画面に表示されます。これらのAlertは、if条件がチェックされる前に置かれます。鉛筆を使ったもう一つのデバッグ方法 - プログラムをあるべき姿で実行し、変数の値を書き留める。変更された場合は、古い値を消し、新しい値を記入してください。以前はこうでした。MetaEditorにデバッガが搭載され、変数の値を監視できるようになりました。最も単純な構成は、スクリプトを書くことで別途チェックする必要があるお薦めをありがとうございます。しかし、私の状況には、それらは全く正しくありません。念のため、以下はカスタムクロージング関数のコードです。 正しく動作しません。ポジションのクローズは、最初のオープンポジションの条件 下で行われます。つまり、最初に条件1で買いまたは売りのポジションを建て、次に条件2で2つ目のポジションを建てた場合、マジックナンバーが異なるにもかかわらず、終値条件は無視され、2つ目のポジションも条件1でクローズされます。注文終了後にブレークをかけましたが、同じ種類のポジションが1つでも開かれていれば いいという中途半端な解決 策になっています。例えば、買いポジションが開閉されている間に、先に売りポジションが開かれ、まだ閉じられていない場合、売りポジションは、他の売りポジションが開かれ、その条件に従って閉じられるまで、閉じられるべき条件を見ないことになります。そして、BAYが再びオープンしてクローズすると、再びクローズ条件を逃すことになる。では、どうすればいいのか? void ClosePoz() { RefreshRates(); double WPR0 = iWPR(NULL,0,bars,0); double WPR1 = iWPR(NULL,0,bars,1); bool rez = false; int total=OrdersTotal(); for(int i=OrdersTotal()-1;i>=0;i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { if(TimeCurrent()>OrderOpenTime()+300) { if(OrderMagicNumber==101 || OrderMagicNumber==102 || OrderMagicNumber==103 || OrderMagicNumber==104) { if(MathAbs(WPR1)<5) rez = OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_BID),int(MarketInfo(OrderSymbol(),MODE_DIGITS))),slippage,Yellow); break; } if(OrderMagicNumber==111) { if(MathAbs(WPR1)<17) rez = OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_BID),int(MarketInfo(OrderSymbol(),MODE_DIGITS))),slippage,Yellow); break; } if(OrderMagicNumber==222) { if(MathAbs(WPR1)>96) rez = OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_ASK),int(MarketInfo(OrderSymbol(),MODE_DIGITS))),slippage,Yellow); break; } if(OrderMagicNumber==201) { if(MathAbs(WPR1)>97) rez = OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_ASK),int(MarketInfo(OrderSymbol(),MODE_DIGITS))),slippage,Yellow); break; } if(OrderMagicNumber==202) { if(MathAbs(WPR1)>96) rez = OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_ASK),int(MarketInfo(OrderSymbol(),MODE_DIGITS))),slippage,Yellow); break; } } } break; } } Igor Makanu 2018.02.10 13:32 #1158 Mickey Moose: iCustomはどこからデータを取得しているのですか?カスタムインジケータの バッファから、例えばMAで実践 novichok2018 です。注文を決済した後にブレークをかけたのですが、同じ種類のポジションを1つだけ建てた 場合のみという中途半端な解決 方法になっています。例えば、BAYポジションが開閉している間にBOYポジションが開かれてまだ閉じていない場合、BAYポジションは他のBAYポジションが(自分の条件で)開閉するまで閉じる条件を見出さない。そして、BAYが再びオープンしてクローズすると、再びクローズ条件を逃すことになる。では、どうすればいいのか? breakをcontinueに置き換えてみてください。 私のコード例が何もクローズしないのは不思議です。おそらく価格の正規化についてでしょう。 novichok2018 2018.02.10 13:48 #1159 Igor Makanu: breakをcontinueに置き換えてみてください。 交換された。呪われたエラー138(リクオート)。その後、ブレイクバックを与えたら、また138になりました。不思議なことに、今まで気づかなかったのかもしれません。 Mickey Moose 2018.02.10 14:12 #1160 Igor Makanu:カスタムインジケータの バッファから、MAで練習して、例えば端末のデータウィンドウに表示されるフィールドからでしょうか? 1...109110111112113114115116117118119120121122123...260 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
ありがとうございます。休憩が効いたようです。この先どうなるのか、見てみましょう。
いや、本当に役に立っていない。1種類のポジションを開いた場合のみ機能します。例えば、売りポジションが開設され、まだ決済されておらず、同時に買いポジションが開設され、決済された場合、売りポジションは、他の売りポジションが(自身の条件に従って)開設・決済されるまで、自身の決済条件を確認することができないのです。そして、BAYが再びオープンしてクローズすると、再びクローズ条件を逃すことになる。I.Kimさんの関数ExistPositions()を使ってBAYを閉じた後のオープンポジションの 有無を判断しようとしましたが、どこに挿入して、どこにPrintを配置すれば実行制御できるのかが分かりません。何か手がかりは?
いや、本当に役に立っていない。同じ種類のポジションが開いている場合のみ有効です。例えば、最初に売りのポジションが開かれ、まだ閉じられていない場合、同時に買いのポジションが開かれ、閉じられると、売りのポジションは、別の売りのポジションが開かれ、その条件に従って閉じられるまで、その終了条件を見ることはありません。そして、BAYが再びオープンしてクローズすると、再びクローズ条件を逃すことになる。I.Kimさんの関数ExistPositions()を使ってBAYを閉じた後のオープンポジションの 有無を判断しようとしましたが、どこに挿入して、どこにPrintを配置すれば実行制御できるのかが分かりません。ヒントを教えてください。
誰も解決策を知らないのだろうか?しないんです。
フォーラムにログインしてみると、独り言を言っているようですが...。会話の始まりはどこなのか、何の話なのか......わかりにくい。プログラムのデバッグには、Printの代わりにAlertを 使うと、画面に一度に表示されるので便利です。これらのAlertは、if条件がチェックされる前に置かれます。鉛筆を使ったもう一つのデバッグ方法 - プログラムをあるべき姿で実行し、変数の値を書き留める。変更したら、古い値を消して、新しい値を書き込む。以前はこうでした。MetaEditorにデバッガが搭載され、変数の値を監視できるようになりました。最も単純な構造は、スクリプトを書くことで別途チェックする必要がある
誰も解決策を知らないのだろうか?しないんです。
この方法で試してみてください。
は、このように試してみてください。
ありがとうございます、試してみましたが、調整してもポジションが閉じないので、コンパイラは誓いません。
掲示板に入ると、独り言のように...。どこから何を言っているのか、わかりにくいですね。プログラムのデバッグには、Printの代わりにAlertを 使う方が便利です - 一度に画面に表示されます。これらのAlertは、if条件がチェックされる前に置かれます。鉛筆を使ったもう一つのデバッグ方法 - プログラムをあるべき姿で実行し、変数の値を書き留める。変更された場合は、古い値を消し、新しい値を記入してください。以前はこうでした。MetaEditorにデバッガが搭載され、変数の値を監視できるようになりました。最も単純な構成は、スクリプトを書くことで別途チェックする必要がある
お薦めをありがとうございます。しかし、私の状況には、それらは全く正しくありません。念のため、以下はカスタムクロージング関数のコードです。
正しく動作しません。ポジションのクローズは、最初のオープンポジションの条件 下で行われます。つまり、最初に条件1で買いまたは売りのポジションを建て、次に条件2で2つ目のポジションを建てた場合、マジックナンバーが異なるにもかかわらず、終値条件は無視され、2つ目のポジションも条件1でクローズされます。
注文終了後にブレークをかけましたが、同じ種類のポジションが1つでも開かれていれば いいという中途半端な解決 策になっています。例えば、買いポジションが開閉されている間に、先に売りポジションが開かれ、まだ閉じられていない場合、売りポジションは、他の売りポジションが開かれ、その条件に従って閉じられるまで、閉じられるべき条件を見ないことになります。そして、BAYが再びオープンしてクローズすると、再びクローズ条件を逃すことになる。では、どうすればいいのか?
iCustomはどこからデータを取得しているのですか?
カスタムインジケータの バッファから、例えばMAで実践
注文を決済した後にブレークをかけたのですが、同じ種類のポジションを1つだけ建てた 場合のみという中途半端な解決 方法になっています。例えば、BAYポジションが開閉している間にBOYポジションが開かれてまだ閉じていない場合、BAYポジションは他のBAYポジションが(自分の条件で)開閉するまで閉じる条件を見出さない。そして、BAYが再びオープンしてクローズすると、再びクローズ条件を逃すことになる。では、どうすればいいのか?
breakをcontinueに置き換えてみてください。
私のコード例が何もクローズしないのは不思議です。おそらく価格の正規化についてでしょう。
breakをcontinueに置き換えてみてください。
交換された。呪われたエラー138(リクオート)。その後、ブレイクバックを与えたら、また138になりました。不思議なことに、今まで気づかなかったのかもしれません。
カスタムインジケータの バッファから、MAで練習して、例えば