記事の目次
根拠と適用範囲
FidelityはMFIと極端な読み取り値の制限について説明しています。TradingViewはインジケーターとしての実装について文書化しています。どちらも提案されたエントリールールの実績が検証されておらず、データ品質調査はすべての現在のフィードではなく、過去の取引所サンプルを対象としています。[1] [2] [3]
実践の流れ
- 入力値を検証する代表価格と出来高は、同じ銘柄と同じデータ締切時刻を使う。
- 生フローを分類代表価格の変化で分類し、同値の場合の扱いを明示する。
- 比率を計算するフルウィンドウが必要で、総流量がゼロの場合にも対応します。
- 確認をお待ちください極端な値動きや乖離は、取引の候補となるものの、自動的に取引が行われるわけではない。
- ボリューム寄与度をテストするボリューム加重ありとなしで、同一の候補者を比較する。
RSIとは異なる計算だが、実際の資金移動ではない
標準価格はTP=(H+L+C)/3です。生のフローはTPにボリュームを乗じたものです。標準価格が上昇した場合はフローをプラス、下落した場合はマイナスとして分類します。マイナスのフローは比率の非負の値として保存され、分母からマイナスの値を差し引くものではありません。ここで使用されている規則では、標準価格が変わらない場合はどちらのグループにも含まれません。
出来高が加重に影響するため、MFI は、終値の変化のみに基づく RSI と異なる場合があります。[1] 出来高の多い日は、複数の小規模な観測結果を支配する可能性があります。それでも、MFI は OHLCV の変形であり、積極的な買い手、新規ファンドへの加入、または機関投資家の口座を特定することはできません。
マネーフローという名称は単位の違いを見えにくくする。代表価格に基軸資産の売買数量を掛けると売買代金に近い値になる。一方、既に建値通貨で示された売買代金に代表価格を掛けると、価格でさらに重み付けすることになる。両方とも計算できるが互換の定義ではない。元フィールドと単位を指標設定とともに保存する。
安定した比率と明示的な境界ケース
一般的な式は 100−100/(1+P/N) で、合計が正の場合は 100P/(P+N) と等価です。後者の式は、N がゼロの場合に直接 N で割ることを回避します。P が正で N がゼロの場合、MFI は 100 と等しくなります。P がゼロで N が正の場合、その値はゼロになります。両方ともゼロの場合、この記事では利用できないデータを返します。
14個の分類済みバーでは、最初の寄与の方向を決定するために、追加の先行する典型的な価格が必要です。したがって、完全なウォームアップには、この計算のために15 OHLCの観測値が含まれます。合計を作成する前に、欠落または無効なフィールドがないか確認してください。欠落したバーが、価格が変わらない観測値に黙って変換されてはなりません。
プラットフォームによっては、等価価格や初期化の処理方法が異なる場合があります。戦略のパフォーマンスを比較する前に、手計算で算出した小さなフィクスチャをバーごとに比較してください。一見無害に見える慣習の違いでも、閾値の交差が1バーずれる可能性があり、日中のエントリーとストップの距離が大きく変わる可能性があります。
このバージョンには、完了した観測値のみが含まれます。ライブの暫定的なMFIは役立つ場合がありますが、現在の出来高、高値、安値は変化する可能性があるため、別のイベント定義が必要です。同じバーで以前にストラテジーがエントリーしたと主張しながら、完了した値をテストしないでください。
このバージョンでは、正の標準価格、非負の出来高、および15個の有効な観測値が必要です。非正の先物価格は、負の生フローを生成する可能性があり、非負フローの解釈と0–100の範囲を破ることになります。その場合は、絶対値を黙って取得したり、重みを変更したりするのではなく、unsupported_price_domainを返します。
if not valid_full_window(t,15): return INSUFFICIENT_DATA
for i in t-14..t:
if not finite(H[i],L[i],C[i],V[i]): return INVALID_DATA
if not (L[i] <= C[i] <= H[i]) or V[i] < 0: return INVALID_DATA
TP[i] = (H[i]+L[i]+C[i])/3
if TP[i] <= 0: return UNSUPPORTED_PRICE_DOMAIN
for i in t-13..t:
positive[i] = TP[i]*V[i] if TP[i] > TP[i-1] else 0
negative[i] = TP[i]*V[i] if TP[i] < TP[i-1] else 0
P = sum(positive[t-13:t+1])
N = sum(negative[t-13:t+1])
MFI[t] = NA if P+N == 0 else 100*P/(P+N)
# 14 closed bars plus a previous TP are required.
# No decision uses an unfinished bar.
計算結果と、失敗した底値予想
14期間戦略設定を変更せずに、3本のバーを使用して計算結果を表示します。ウィンドウ直前の典型的な価格は100です。次の値は101、100、102で、出来高は10、20、10です。プラスのフローPは1010+1020=2030、マイナスのフローNは2000です。MFIは100×2030/4030で、おおよそ50.37です。
下降傾向にある標準価格バーの出来高が大きいほど、上昇傾向にある2つの観測値が相殺されます。上昇2回と下落1回だけを数えると、この重み付けが見落とされてしまいます。逆に、この結果からは、買い手と売り手のどちらが取引を開始したかは分かりません。その符号は、標準価格の変化から得られたものです。
反転が失敗する合成例では、MFI が 25 から 18 へ移る間に価格が 100 から 97 へ下落する。MFI が 20 未満という理由だけで買うと、指標が 10 付近にとどまったまま価格が 92 へさらに下落し、買い手はその下落を被り得る。極端な指標値だけでは売買圧力の枯渇は確認できない。同様に、MFI が 80 超でも上昇トレンドが続く場合があり、閾値を超えるたびに直ちに空売りするのは別の仮説である [1]。
合成図は、最初に 20 未満となった後も意図的に低下を続ける。候補作成とエントリー確認を別の状態にする理由を示している。オシレーターは確率ではなく、MFI が 80 でも将来の特定の動きが 80% の確率で起こるという意味ではない。
反転型とトレンドフォロー型は別々に用意されている。
提案する反転版では、まず MFI が 20 を下回ることを要求する。その後 MFI が 20 を上抜き返し、価格の終値が前の足の高値を上回るのを待つ。対象はイベント前の情報で判定したレンジ相場に限る。次の実行可能な時点で入り、イベント領域の下にストップを置く。五本以内に確認できなければ候補を取消す。
しきい値とタイムアウトは研究設定です。新しい低い読み取り値が得られた場合にタイマーをリセットするか、同じ候補を更新するかを定義します。よりシンプルなベースラインでは、固定されたイベントウィンドウを1つ使用し、有効な回復結果が得られるまで繰り返しリセットしません。期限切れおよび無効になった候補は、確認済みの候補と併せて記録します。
トレンド追随版では、スイング安値が順次切り上がる価格構造を維持し、MFI の押し戻りと回復を補助特徴として扱う。MFI が 20 未満になる必要はない。勝ったときにはトレンド取引、別の説明が都合よいときには平均回帰取引と事後的に呼び分けず、検証前に版を選ぶ。
決済ルールは明確かつ安定的に維持してください。インジケーターの回復は、構造的ストップの拡大を正当化するものではありません。固定報酬目標、トレーリング決済、時間ストップはそれぞれ異なる実験です。決済選択による改善とMFIフィルターによる改善を混同せず、これらを比較検討してください。
MFIを因果価格ピボットにマッチさせる
p1 と p2 を確定した価格安値とする。強気ダイバージェンス候補では、二つ目の価格安値が低くなる一方、それぞれのピボット時刻に正確に対応する MFI は高くなる必要がある。候補は p2 の確認時刻に利用可能となり、その後の価格トリガーを待つ。各ピボット付近の最小 MFI を探す別方式では、探索半径、確認遅延、同値時の選択規則を固定する必要がある。
例えば、low1=100とMFI1=18、およびlow2=98とMFI2=28は、提案された乖離比較を満たします。p2の右側に2本のバーが必要な場合は、両方が揃うまで待ちます。確認前に発生したネックラインブレイクは、遡及エントリーとして割り当てることはできません。エントリー確認前に価格が構造的無効化レベルをブレイクした場合は、候補をキャンセルします。
イベント発生時刻と利用可能時刻は分けて記録してください。チャート上ではこれらのタイムスタンプはほぼ同じように見えるかもしれませんが、急激な反転局面では、遅延によって有利な値動きの大部分が失われてしまう可能性があります。有用な検出ツールは、このコストを以前のピボットポイントに描かれたマーカーの背後に隠すのではなく、明らかにするべきです。
実際にどのボリュームが貢献しているかを特定する
同じ価格候補の集合で RSI、MFI、出来高を一定にした MFI 計算を比較する。これにより出来高加重、代表価格、窓の選択の寄与を分けられる。無関係の標本で RSI と MFI を最適化しても、出来高を追加する効果は分離できない。
評価を時系列で分割し、判断時に利用可能だったラベルでトレンド相場とレンジ相場を別々に報告する。空売り版ではスプレッド、スリッページ、借株費用を含める。成功したダイバージェンスだけでなく、利用不能値、反転しない極値、取消し、取引頻度、ドローダウン、費用控除後の期待損益を追跡する。
結果を解釈する前に、ボリュームソースを検査してください。[3]の過去の取引所品質調査は、疑わしいまたは矛盾したアクティビティのチェックを促すものであり、普遍的な現在のエラー率を提供するものではありません。よりクリーンなフィードでは優位性が失われる戦略は、あらゆる市場に一般化するのではなく、データに依存するものとして説明する必要があります。
よくある落とし穴
20未満になるたびに買う
オシレーターは、価格が下落し続ける間も低いままとなることがある。
負のフローと負の算術を混同する
符号付きの負の合計を差し引くと、意図した比率が変わります。
未確認のピボットで参入
確認に必要な後続のバーは、ピボット自体では入手できなかった。
この手法を使う前のチェックリスト
ご自身のデータで確認した項目にチェックを入れてください。進捗はこのブラウザに保存されますが、戦略の収益性を認定するものではありません。
よくある質問
MFIは出来高を加えただけのRSIか?
考え方は似ていますが、この式は終値の変化ではなく、通常価格に出来高を掛けたものをグループ化しています。違いを明確に検証してください。
MFIは、市場に流入する資金を識別するものですか?
いいえ。価格と出来高の観測を分類するものであり、口座間の資金移動や売買を仕掛けた側を直接測定するものではない。
研究資料
各資料は、その横に記載された定義や根拠を支えています。擬似コード、架空の例、提案パラメータは別途検証が必要です。
- Money Flow IndexFidelity. MFIの定義、一般的な解釈、および極値値の限界。 確認日: .
- Pine functions for popular indicatorsTradingView. 検証済みの取引実績のない、パインインジケーターのドキュメント。 確認日: .
- Crypto Wash TradingNBER. これは仮想通貨の取引量に関する歴史的研究であり、普遍的な現代的修正ではない。 確認日: .
関連する手法
リスクについて
この内容は学習と研究設計を目的とし、金融上の助言ではありません。Backtestは過去データのシミュレーションであり、将来の成果を保証せず、実際の売買注文も行いません。このライブラリの手法が、そのままアプリで利用できる機能とは限りません。関連情報: 検証方法 および 学習センター.
実際の資金を使う前にルールを検証する
アプリの対応範囲、データ、個々の模擬取引を確認してください。高度な検出手法は別途実装が必要な場合があります。
App StoreでBacktestをダウンロード