トリプル・バリア・ラベリング・パイプラインでは、min_ret の閾値として、任意の定数(0.5~1.0%)や従来のスプレッドの仮定が頻繁に使用されます。実際の往復取引コストよりも低い閾値を設定すると、パイプラインはコストに起因するノイズを取引可能なシグナルとしてラベル付けしてしまいます。 その結果、ラベル付けされたデータセットはエッジを体系的に過大評価することになり、それらのラベルを用いて学習されたモデルは、真の市場構造ではなく、ラベル付けスキームに起因する人工的な現象に過学習してしまう。
TransactionCostCollector.mq5 は、この問題のデータ収集段階を解決するスタンドアロンスクリプトです。このスクリプトは、過去のスプレッド分布をサンプリングし、対象のチャートシンボルに関するブローカーのスワップレートと手数料の診断情報を読み取り、すべてを構造化された CSV ファイルにエクスポートします。 このCSVファイルは、関連するPythonクラス「TransactionCostModel」 によって処理され、すべてのコストを比率リターンに変換し、ラベル付け処理のための銘柄固有のmin_ret 閾値を算出します。

TransactionCostCollectorの出力を示す3パネルの図:セッションごとの日中のコスト内訳(a)、全コスト分布(b)、およびmin_ret選定のためのパーセンタイル曲線(c)
このスクリプトは、1回の実行で単一の銘柄について以下の3つのコスト要素を収集します:
| パラメータ | デフォルト | 説明 |
|---|---|---|
| InpBars | 50000 | サンプリングするスプレッド履歴のバー数。値を大きくすると、より代表的な分布が得られ、セッションごとの変動をより多く捉えることができます。H1では50,000バーで約5.7年、M15では約1.4年をカバーします。ターミナルで当該銘柄の履歴が限られている場合は、この値を小さくしてください。 |
| 入力/出力ファイル | (空白) | 出力ファイル名を上書きします。空白(デフォルト)の場合、ファイル名は<SYMBOL>_costs.csv となります。例えば、EURUSD の場合はEURUSD_costs.csv となります。 ファイルは、ターミナルのデータフォルダ内のMQL5\Files\ に書き込まれます(FILE_WRITE | FILE_CSV モード)。 |
CSV は、セクション、キー、値、単位の 4 列構成を採用しています。セクションは以下の通りです。
付属のPythonクラス「TransactionCostModel」は、CSVを読み込み、トリプルバリアのラベル付けに必要なmin_retを 計算します:
from afml.transaction_costs import load_cost_model import pandas as pd model = load_cost_model( csv_path = "EURUSD_costs.csv", spread_percentile = "p95_pips", # 保守的 slippage_pips = 0.4, commission_per_lot = 7.0, # 参照取引より lot_size = 0.01, ) close = pd.read_parquet("EURUSD_H1.parquet")["close"] min_ret = model.min_ret_for_symbol( price_series = close, holding_days = 1.0, cost_multiplier = 1.5, # 1.5倍の損益分岐点 ) print(f"min_ret = {min_ret:.6f}")
ロットあたりの手数料率は、すべてのブローカーでプログラムから読み取れるわけではありません。推奨される手順は次のとおりです。デモ口座で正確に1.0標準ロットの参照取引を開き、取引開始直後にターミナルからACCOUNT_COMMISSION_BLOCKEDを読み取り、その後取引を決済します。 ブロックされた値を1.0で割ると、1ロットあたりの手数料率が得られます。口座明細書と照合して確認してください。この作業は、各ブローカーとの取引関係ごとに1回行う必要があります。
平均スプレッドは、アジアセッション、夜間の上下動が収まる時間帯、および整然としたトレンド相場といった、相場が静かな期間の影響を強く受けます。 しかし、戦略のエントリーは、不確実性が最も高い瞬間(モデルがシグナルを生成するタイミング)と重なることがよくあります。min_retの 入力値として95パーセンタイルのスプレッドを使用することで、平均的な市場状況ではなく、典型的なエントリー条件におけるコスト環境を反映させることができます。
MetaQuotes Ltdによって英語から翻訳されました。
元のコード: https://www.mql5.com/en/code/73173
Institutional Harmonic Volumetric Gravity Center
加重調和平均の数学的手法を活用した定量的な出来高密度エンジンであり、算術上の外れ値を除去し、機関投資家の流動性の真の重心位置を特定する。
Close Profit Positions
利益確定のポジションを決済する
Heiken ashi as series
すべてのバッファを「シリーズ」として設定したヘイケンアシ
SetSLByLoss - set Stop Loss on all open positions by target loss amount
口座の通貨建てで設定された目標損失額(例:1ポジションあたり50ドル)に基づき、すべてのオープンポジションにストップロスを設定するスクリプトです。あらゆる入金額通貨およびFX銘柄に対応しています。ブローカーのストップレベルやフリーズレベルを検証します。通貨換算は自動的に行われます。