閉じる問題、助けてください - ページ 3 123456789 新しいコメント Ben 2010.03.12 22:59 #21 皆さん、こんにちは 皆さんの協力で、症状が変わりました。 ステートメント ...if(OrderSelect(index, SELECT_BY_TICKET)) は SELECT_BY_POS. に変更されました。コードは正しいとは程遠いです。このプログラムは、1ピップ後にすぐに売り、そして閉じます。その結果、SLもTPもないことがわかります。そこで、正気度を確認 するために、OrderSendにSLとTP(500)を一枚ずつ挿入してみました。変化なし。全ての約定が1、2pip以内に収まっています。これは面白くなってきました。理由はまだわからないけど!?4時間足1本で1000回以上の約定が発生しています。 これから研究してみますが、何か参考になることがあればお願いします。 Ben 2010.03.12 23:02 #22 Aisさん、こんにちは。 今投稿したら、先に投稿されていましたね。何をしてるんですか? AIRAT SAFIN 2010.03.12 23:20 #23 再びこんにちは 私はより良いロジックの理解のためにプログラムを少しスタイル変更しようとしています 私はプログラムがあなたを喜ばせる ためにしたいと思います。 Ben 2010.03.13 00:42 #24 Ais wrote>> 再びこんにちは 私は、ロジックの理解を深めるためにプログラムを少し作り変えようとしています 私は、プログラムが 以下のようになることを望んでいます。 Aisさん、こんにちは。 あなたはとても親切です。ありがとうございます。あなたの時間は貴重です。再スタイリングは、きっと喜んでいただけると思います。 前回の投稿から、問題の一部を解決しました。プログラムは閉じますが、私が望むようにはいきません。 閉じる問題の鍵は、私がATRを適切に初期化しなかったという事実です。 売りポジションをクローズする前と後をお見せします。 次に......if (OrderClosePrice() >= OrderOpenPrice() + (ATR*2)) 今度は...if (OrderClosePrice() >= OrderOpenPrice() + (40*Point))...this will close the Sell position これは、私が意図したプログラムの動作方法ではありませんでした。しかし、テストのために新しいコードを挿入してみました。 これは、問題がATRの中にあることを証明するのに役立ちます。ATRを正しく初期化していなかったのでしょう。 さらにテストするために、ATRという新しい変数を構築しようとする代わりに、iATRを挿入してみました。 私がどのようにコーディングしようとしたかをお見せします。 if (OrderClosePrice() >= OrderOpenPrice() + ((iATR(NULL,0,20,1)*2)*Point)) これもうまくいきませんでした。 今回もありがとうございました。 ご返事お待ちしております。 Closeing Problems, Please help Need help in understanding MQL5 クックブック: MQL5でのマルチシンボルボラティリティインジケーターの開発 AIRAT SAFIN 2010.03.13 01:19 #25 https://www.mql5.com/ru/forum/124482/page9#284380 Ben 2010.03.14 14:36 #26 Ais wrote>> https://www.mql5.com/ru/forum/124482/page9#284380 Aisさん、こんにちは ご提案ありがとうございます。365(annual)とmy_methodを使い分けるというのは、よくわかりました。短いタイムフレームでのテスト目的 はあくまで便宜的なものであるべきですね。 まだまだ勉強することがたくさんあります。ATRの入れ方はやっとわかったのですが、掛け算ができません。以下はその例です。 現時点ではこのような感じです。// =ハード・ストップ これは動作しますが、私が望むものではありません。 私は、if (OrderClose >= OrderOpenPrice() + (iATR(NULL,0,20,1) )*2 ) の方向で動いています。 これではうまくいきません。私が考えていることが、あなたや他の人に伝われば幸いです。iATRは2倍されます。 これに対して何か提案はありますか?これが解決されると、私は同様にエントリーポジションのATRを半分にすることができました。 もう一つ試した方法があったのですが、うまくいきませんでした...if(OrderClose - OrderOpenPrice - (iATR(NULL,0,20,1)*2)) <= 0)です。 また、お忙しい中、ありがとうございました。あなたの知恵袋をノックしている人はたくさんいるはずです。 乾杯 AIRAT SAFIN 2010.03.14 14:56 #27 ハックルベリーさん、こんにちは! オープニング機能だけやっておきました。 そして今、利益確定のロジックを理解しようとしています。 OrderSend()でストップとテイクが抜けていますが、それはいいとして、損切りするコマンドは損切りした場合のみ実行します。 そして新しいプログラムスタイルのわかりやすさについて意見を 伺いたいのですがhttps://www.mql5.com/en/forum/124521/page2 とりあえず、さよなら!:) Ben 2010.03.14 16:56 #28 Aisさんこんにちは ご回答ありがとうございました。 StopLossやTakeProfitがない理由を説明させていただきます。 OrderSendにSLとTPを挿入しないことで、SLは別の場所にあり、式の下にあります... if (OrderClose >= OrderOpenPrice() + (iATR(NULL,0,20,1))). これは確かに動作しますが、正確には適切なSLではありません。 if (OrderClose >= OrderOpenPrice + (iATR(NULL,0,20,1))*2)... 上の式のiATR...のシフトは、1バーごとに変わる可能性があります。SLとTPでOrderSendを使用することで、シフトの変化を利用することができません。 各機能は 現時点では動作しており、ただ、機能の調整方法を学ぶ必要があります。 ご指摘とご質問ありがとうございました。 Cheers AIRAT SAFIN 2010.03.14 17:52 #29 でも、利益が出たときに注文を閉じる条件は必要です。 リニューアルした関数「iSignalClose」 https://www.mql5.com/en/forum/124521/page2 をご覧ください。 今はもちろん仮想SLの条件です。 でも、仮想TPの条件は必要です。 ご返信お待ちしております。:) AIRAT SAFIN 2010.03.15 02:48 #30 将来的には、これらのパラメータを最適化することが容易になると思われます。 ////////////////////////////////////////////////////////////////////< 3> // < 1.1. Data : Input > //< > // //< > // < 1.1. Input 7 = 4 i 3 d - s > //< > // < 1. Strategy 4 = 2 i 2 d - s /> //< > // < 2. Trading 3 = 2 i 1 d - s /> //< > // </1.1. Input 7 = 4 i 3 d - s > //< > // //< > // < 1. Strategy 4 >=========================================//< > int iBasePeriod = 20 ; //< > int iBaseBar = 1 ; //< > extern double dFactorTP = 2.0 ; //< > extern double dFactorSL = 2.0 ; //< > // </ 1. Strategy 4 >=========================================//< > // //< > // < 2. Trading 3 >==========================================//< > int iSlippage = 1 ; //< > int iMagic = 0 ; //< > double dLots = 0.1 ; //< > // </ 2. Trading 3 >==========================================//< > // //< > // //< > // //< > // </1.1. Data : Input > //< > 例:最適化後、元のパラメータを最適化されたパラメータに変更し、extern宣言を削除する。 Aシステム "の最適化サンプル。チャンピオンシップ2008 Final Edit」(通称「ACB6」)https://www.mql5.com/en/forum/112633/page7#276861。 ファイル: 1e.txt 46 kb 1r.txt 49 kb 123456789 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
皆さん、こんにちは
皆さんの協力で、症状が変わりました。
ステートメント ...if(OrderSelect(index, SELECT_BY_TICKET)) は SELECT_BY_POS. に変更されました。コードは正しいとは程遠いです。このプログラムは、1ピップ後にすぐに売り、そして閉じます。その結果、SLもTPもないことがわかります。そこで、正気度を確認 するために、OrderSendにSLとTP(500)を一枚ずつ挿入してみました。変化なし。全ての約定が1、2pip以内に収まっています。これは面白くなってきました。理由はまだわからないけど!?4時間足1本で1000回以上の約定が発生しています。
これから研究してみますが、何か参考になることがあればお願いします。
Aisさん、こんにちは。
今投稿したら、先に投稿されていましたね。何をしてるんですか?
再びこんにちは
私はより良いロジックの理解のためにプログラムを少しスタイル変更しようとしています
私はプログラムがあなたを喜ばせる ためにしたいと思います。
再びこんにちは
私は、ロジックの理解を深めるためにプログラムを少し作り変えようとしています
私は、プログラムが 以下のようになることを望んでいます。
あなたはとても親切です。ありがとうございます。あなたの時間は貴重です。再スタイリングは、きっと喜んでいただけると思います。
前回の投稿から、問題の一部を解決しました。プログラムは閉じますが、私が望むようにはいきません。
閉じる問題の鍵は、私がATRを適切に初期化しなかったという事実です。
売りポジションをクローズする前と後をお見せします。
次に......if (OrderClosePrice() >= OrderOpenPrice() + (ATR*2))
今度は...if (OrderClosePrice() >= OrderOpenPrice() + (40*Point))...this will close the Sell position
これは、私が意図したプログラムの動作方法ではありませんでした。しかし、テストのために新しいコードを挿入してみました。
これは、問題がATRの中にあることを証明するのに役立ちます。ATRを正しく初期化していなかったのでしょう。
さらにテストするために、ATRという新しい変数を構築しようとする代わりに、iATRを挿入してみました。
私がどのようにコーディングしようとしたかをお見せします。
if (OrderClosePrice() >= OrderOpenPrice() + ((iATR(NULL,0,20,1)*2)*Point))
これもうまくいきませんでした。
今回もありがとうございました。
ご返事お待ちしております。
https://www.mql5.com/ru/forum/124482/page9#284380
https://www.mql5.com/ru/forum/124482/page9#284380
ご提案ありがとうございます。365(annual)とmy_methodを使い分けるというのは、よくわかりました。短いタイムフレームでのテスト目的
はあくまで便宜的なものであるべきですね。
まだまだ勉強することがたくさんあります。ATRの入れ方はやっとわかったのですが、掛け算ができません。以下はその例です。
現時点ではこのような感じです。// =ハード・ストップ
これは動作しますが、私が望むものではありません。
私は、if (OrderClose >= OrderOpenPrice() + (iATR(NULL,0,20,1) )*2 ) の方向で動いています。
これではうまくいきません。私が考えていることが、あなたや他の人に伝われば幸いです。iATRは2倍されます。
これに対して何か提案はありますか?これが解決されると、私は同様にエントリーポジションのATRを半分にすることができました。
もう一つ試した方法があったのですが、うまくいきませんでした...if(OrderClose - OrderOpenPrice - (iATR(NULL,0,20,1)*2)) <= 0)です。
また、お忙しい中、ありがとうございました。あなたの知恵袋をノックしている人はたくさんいるはずです。
乾杯
ハックルベリーさん、こんにちは!
オープニング機能だけやっておきました。
そして今、利益確定のロジックを理解しようとしています。
OrderSend()でストップとテイクが抜けていますが、それはいいとして、損切りするコマンドは損切りした場合のみ実行します。
そして新しいプログラムスタイルのわかりやすさについて意見を 伺いたいのですがhttps://www.mql5.com/en/forum/124521/page2
とりあえず、さよなら!
:)
Aisさんこんにちは
ご回答ありがとうございました。
StopLossやTakeProfitがない理由を説明させていただきます。
OrderSendにSLとTPを挿入しないことで、SLは別の場所にあり、式の下にあります...
if (OrderClose >= OrderOpenPrice() + (iATR(NULL,0,20,1))).
これは確かに動作しますが、正確には適切なSLではありません。
if (OrderClose >= OrderOpenPrice + (iATR(NULL,0,20,1))*2)...
上の式のiATR...のシフトは、1バーごとに変わる可能性があります。SLとTPでOrderSendを使用することで、シフトの変化を利用することができません。
各機能は 現時点では動作しており、ただ、機能の調整方法を学ぶ必要があります。
ご指摘とご質問ありがとうございました。
Cheers
でも、利益が出たときに注文を閉じる条件は必要です。
リニューアルした関数「iSignalClose」 https://www.mql5.com/en/forum/124521/page2 をご覧ください。
今はもちろん仮想SLの条件です。
でも、仮想TPの条件は必要です。
ご返信お待ちしております。
:)
将来的には、これらのパラメータを最適化することが容易になると思われます。
////////////////////////////////////////////////////////////////////< 3> // < 1.1. Data : Input > //< > // //< > // < 1.1. Input 7 = 4 i 3 d - s > //< > // < 1. Strategy 4 = 2 i 2 d - s /> //< > // < 2. Trading 3 = 2 i 1 d - s /> //< > // </1.1. Input 7 = 4 i 3 d - s > //< > // //< > // < 1. Strategy 4 >=========================================//< > int iBasePeriod = 20 ; //< > int iBaseBar = 1 ; //< > extern double dFactorTP = 2.0 ; //< > extern double dFactorSL = 2.0 ; //< > // </ 1. Strategy 4 >=========================================//< > // //< > // < 2. Trading 3 >==========================================//< > int iSlippage = 1 ; //< > int iMagic = 0 ; //< > double dLots = 0.1 ; //< > // </ 2. Trading 3 >==========================================//< > // //< > // //< > // //< > // </1.1. Data : Input > //< >
例:最適化後、元のパラメータを最適化されたパラメータに変更し、extern宣言を削除する。
Aシステム "の最適化サンプル。チャンピオンシップ2008 Final Edit」(通称「ACB6」)https://www.mql5.com/en/forum/112633/page7#276861。