私たちのファンページに参加してください
BestInterval - MetaTrader 5のためのライブラリ
- ビュー:
- 1675
- 評価:
- パブリッシュ済み:
- 2019.01.22 08:30
- このコードに基づいたロボットまたはインジケーターが必要なら、フリーランスでご注文ください フリーランスに移動
市場パターンは、1日または1週間の間隔によって異なります。 このため、TS取引を時間で制限するのが合理的です。
たとえば、アジア-アメリカの取引セッション中にクロスペアを取引するのに適したスキャルピングTSがある場合や、ボラティリティが高いときにTSを定期的に無効にしたい場合があります。
つまり、どのようにして最良のTS取引時間を見つけるかを定義する必要があります。 原則として、そのような間隔は、アルゴリズムトレーダーの直感に基くか内蔵のテスターによって選択されます。 直感は戦略とは関係ありません。 このタスクを解決するために内蔵テスターを使用すると、自動的にパス数が桁違いに増加します。これは最適化時間とコストの増加を意味します(クラウド)。 それでも改善できるものがあるでしょう。
時々、時間フィルターがないが故に、存在している良いTSの性質が隠されてしまうことがあります。 このTSのための適切な取引間隔を見つけることができるならば、それはさらなる研究の基礎として使われることができます...
実装
このクロスプラットフォームライブラリでは、最適なTS操作間隔を迅速かつ効率的に見つけることができます。
コメント付きの使用例:
#include <MT4Orders.mqh> // https://www.mql5.com/ja/code/16006 #include <fxsaber\BestInterval\BestInterval.mqh> // 最良の取引間隔を計算する void OnDeinit( const int ) { BESTINTERVAL BestInterval; // 最良の取引間隔を計算するためのオブジェクトを作成する BestInterval.Set(); // 取引履歴を配置する const int AmountIntervals = 3; // 不適切な取引感覚を破棄する for (int i = 0; i < AmountIntervals; i++) if (BestInterval.DeleteWorseInterval()) // 何かを破棄した Print(BestInterval.ToString()); // 取得された取引データを印字する else break; // その他の場合は終了する }
それでは、スキャルパーEA内のライブラリの実際のアプリケーションを見てみましょう。
スキャルパー
MT5テスターで24時間体制のスキャルパーを起動しましょう。 以下が見えます。
シングルパスのログを見てみます。
Amount of Delete Intervals = 0 00:00:00 - 23:59:59 : Profit = 20121.00, Total = 1138, PF = 1.68, Mean = 17.68 SUMMARY: 00:00:00 - 23:59:59 : Profit = 20121.00, Total = 1138, PF = 1.68, Mean = 17.68
ここにあるのは未処理パッセージデータです。破棄された間隔はありません。
次に、次のログエントリを見てみます。 弱い間隔を破棄した効果が徐々に示されています。
1つの間隔は破棄されています。
Amount of Delete Intervals = 1 00:00:00 - 10:08:04 : Profit = 6830.00, Total = 203, PF = 3.10, Mean = 33.65 11:05:24 - 23:59:59 : Profit = 17086.00, Total = 819, PF = 1.93, Mean = 20.86 SUMMARY: 00:00:00 - 23:59:59 : Profit = 23916.00, Total = 1022, PF = 2.10, Mean = 23.40
強調表示されている文字列は取引間隔です。 10~11amには取引がないことがわかります。 したがって、この期間は破棄されます。
2つの期間が破棄されます。
Amount of Delete Intervals = 2 00:00:00 - 10:08:04 : Profit = 6830.00, Total = 203, PF = 3.10, Mean = 33.65 11:05:24 - 12:21:06 : Profit = 2767.00, Total = 112, PF = 2.46, Mean = 24.71 13:02:59 - 23:59:59 : Profit = 15915.00, Total = 664, PF = 2.17, Mean = 23.97 SUMMARY: 00:00:00 - 23:59:59 : Profit = 25512.00, Total = 979, PF = 2.36, Mean = 26.06
最終的に、3つの期間が破棄されます。
Amount of Delete Intervals = 3 00:00:00 - 10:08:04 : Profit = 6830.00, Total = 203, PF = 3.10, Mean = 33.65 11:05:24 - 12:21:06 : Profit = 2767.00, Total = 112, PF = 2.46, Mean = 24.71 13:02:59 - 17:26:06 : Profit = 7476.00, Total = 348, PF = 1.98, Mean = 21.48 17:47:36 - 23:59:59 : Profit = 9640.00, Total = 288, PF = 3.31, Mean = 33.47 SUMMARY: 00:00:00 - 23:59:59 : Profit = 26713.00, Total = 951, PF = 2.57, Mean = 28.09
TSパラメータは間隔が破棄されるごとに改善されます。
計算したフィルタをTSに適用しましょう。
前と後の2つのチャートを視覚的に比較できます。 おそらく、誰かが適切なGIFアニメーションを作ればもっと明快でしょう...
その結果、TSのパラメータは、時間や努力をほとんどかけないで大幅に改善されました。
OnTester
前の例は、最初のEAに2つの文字列だけを追加することに基づいていました。
#define BESTINTERVAL_ONTESTER // 最適化基準 - 最良間隔利益 #include <fxsaber\BestInterval\BestInterval.mqh> // 最良の取引感覚を計算する
強調表示された文字列を使用すると、EAに他に何も書かないですみます。 同時に、カスタム最適化基準も指定されているため、オプティマイザーは昔ながらの方法で適切な間隔を探さないですみます。 この基準はすぐに適切な計算間隔のTS結果を返し、標準的最適化を使用した場合よりもはるかに多くのTSの可能性を示します。
計算後に検出された間隔を適用するには、入力にBestInteval Action = true を設定します。
概要
最良の取引間隔の計算を含め、すべてのTSは広く確認される必要があります。 したがって、このツールは必須です。
現在、過去、未来のすべてのTSを取得して、最適な取引時間(上記の2つの文字列)の検索をそれらにリンクすうることが合理的です。 それによって収益性の高いTSの開発がかなり簡単になり、すでに開発されたものの堅牢性が改善します。
機能
- 仮想取引環境を使用して、検出された間隔で取引を有効/無効にすることをお勧めします。
- このライブラリアルゴリズムは非常に高速です。 それは同じ目的のためにサードパーティの取引アナライザで簡単に実装することができます。
- このアイディアはオリジナルですが、 おそらく類似物があるでしょう。
- 週内の間隔を実行するのに十分な時間がありませんでしたが、 将来的には追加するかもしれません...
- ライブラリはクロスプラットフォームで、 MT4でもMT5でも使用できます。
- 最適な間隔の計算とテスターでの適用は、元のEAのソースコードを変更することなく実行されます。
追記
スクリーンショットと適切なMT4/5シングルパスログセグメントの形式で、ライブラリの適用前と適用後の経験(上記のとおり)をご共有ください。
MetaQuotes Ltdによってロシア語から翻訳されました。
元のコード: https://www.mql5.com/ru/code/22710
Price Momentum Oscillator
Extreme EAEAではiCCI (Commodity Channel Index、商品チャネル指数、CCI)指標と2つのiMA (Moving Average、移動平均、MA)指標が使用されます。
入力パラメータに時間枠選択オプションを備えたHLCrossSigForWPR指標です。
RJTX_Matches_Smoothed_AlertRJTX_Matches_Smoothed指標はアラート、電子メール、プッシュ通知を備えています。