記事の目次
根拠と適用範囲
情報源は、局所極値という用語と、情報を逆算してプロットすることの危険性を裏付けています。同点解消、イベント処理、および下記の取引実験は研究提案です。この実装については、収益性に関するバックテストは実施されていません。
実践の流れ
- バーを検証する閉じた観測値の完全なウィンドウを受け入れる。
- rバーを後ろに移動候補i=t−rを評価します。
- 両側を比較する登録されたプラトー規約を適用する。
- 確認時刻を記録する発生時刻と確認時刻を別々に保存する。
- 戦略にパスする取引のトリガーとなるのは、後続の情報のみとする。
極値には発生時刻と確認時刻がある
バーiの新高値は候補にすぎません。右窓r=3なら、後続の3本が閉じるまで、それらの高値が候補高値より低いかは確定できません。occurred_at=iとconfirmed_at=i+3を保存します。見やすさのためにiへ印を描いても、確認と必要なデータ処理が済む前に、そのイベントに基づく注文は出せません。
TradingView は左右の足を用いるピボットの形状を説明し [1]、過去の位置にピボットを描くと、いつ判明したかを誤って伝える可能性があると警告しています [2]。SciPy のfind_peaksでは、平坦なピークに別の規則を用います [3]。したがって、実装を比較する際に最終的な図が一致するだけでは不十分です。選ぶ基準点と、情報が利用可能になった時刻が異なる場合があるためです。
確認されたピボットポイントは、たとえ価格が後にその水準を突破したとしても、歴史的な観測値として残ります。その後のブレイクアウトを、以前のピボットポイントが間違っていた証拠として扱うことは、局所的極値の定義と永続的な抵抗線の予測を混同することになります。観測値は、将来の使用に関する仮説とは別に保存してください。
明確な同点時の判定基準を備えた決定論的な定義
提案されたベースラインはl=r=2を使用し、等しい高値の最も右側の点を選択します。H[i]は、すべての左側の高値以上でなければならず、すべての右側の高値よりも厳密に大きくなければなりません。安値については、不等式を逆にします。これらのパラメータとタイブレークルールは、最適値や特定のライブラリの正確な再現ではなく、実験的な設定です。
有効なバーを、順序付けされた一意のタイムスタンプと既知の取引カレンダーとともに、l+r+1 個要求します。ウィンドウが欠落データを通過する場合は、その理由を記録し、確認をスキップします。欠落した期間を架空のフラット取引バーで埋めると、プラトーとその確認遅延の両方が変わる可能性があります。予定された夜間の閉鎖は、説明のつかない欠落バーとは異なります。
銘柄・時間軸・検出器バージョン・発生時刻・種類を含むIDで各イベントを一度だけ発行します。アウトサイドバーで高値と安値の両条件を満たす場合は曖昧な観測として記録します。後続のパターン検出で、その足の高値と安値の到達順を作り上げてはいけません。
on_closed_bar(t):
i = t - r
if i < l or window_has_missing_bar(i-l, t): return
high_ok = H[i] >= max(H[i-l:i]) and H[i] > max(H[i+1:t+1])
low_ok = L[i] <= min(L[i-l:i]) and L[i] < min(L[i+1:t+1])
if high_ok and low_ok: emit_ambiguous(i, confirmed_at=t)
elif high_ok: emit_once('HIGH', i, H[i], confirmed_at=t)
elif low_ok: emit_once('LOW', i, L[i], confirmed_at=t)
数値例と必ず失敗するケース
合成ハイ100、102、105、104、103は、インデックス2にある105を識別します。l=r=2の場合、イベントはインデックス4が閉じられた後にのみ利用可能になります。 09:00から13:00までの時間足バーの終値において、極値は11:00に発生し、確認は13:00に行われました。この確認に基づく注文は、その後のみ発注可能です。
最後の高値を106へ替えると105の候補は不成立です。確認されておらず公開もされていないため、過去のピボットを削除する必要はありません。100, 102, 105, 105, 104, 103では右端を採る規則で二つ目の105を選びます。左右とも厳密な不等号にすれば同値の頂上は不採用となり、別バージョンの検出器になります。
H=108 と L=95 を含む外側のバーは、隣接する高値を超えつつ、隣接する安値を下回る可能性があります。OHLC では、108 と 95 のどちらが先に発生したかを判断できません。両方の事実または曖昧性フラグを保持しますが、ヘッドアンドショルダーズ シーケンスの 2 つの順序付きステップとして扱わないでください。有用なテストでは、同じ OHLC バーを 2 つの可能なバー内経路と比較し、バーのみの検出器が入力から得られない情報を主張しないことを確認します。
アンカーを独自の取引仮説に変える
検出器自体は発注しません。提案する実験は、確認済みピボット高値に余裕幅を加えた水準を後の終値が上抜いてから買います。buffer=max(2 ticks,0.1×ATR from before the trigger bar)で、ATRにはトリガー足より前の値を使います。次の約定可能な始値で入る方式と、待機する買い逆指値で入る方式は別の執行モデルです。測定前に選びます。
事前に確認されたピボットローは構造的なストップロスを定義することができ、固定されたKバーの有効期間は高値が候補レベルとして残る期間を制限します。必要なアンカーが利用可能になる前に発生したと思われるブレイクアウトは記録しないでください。別の検出器または遅延データによってレベルが既に突破されていることが示された場合は、古い設定を拒否するか、別の遅延エントリー戦略を定義します。
生のピボットストリームは変更できないようにしてください。高値と安値が交互に現れる表現は、下流の変換処理です。連続する2つの高値はマージまたは候補の置換が必要になる場合がありますが、これらの操作はバージョン管理とタイムスタンプを付ける必要があります。以前に公開されたパターンが、後続のデータからより良いアンカーを密かに取得することはできません。無効化、有効期限切れ、または置換候補の作成は明示的に記録してください。
執行テストにはシグナルと約定の間の価格ギャップ、反転した売り戦略での貸株不足、次の足が開く前のストップ水準通過を含めます。検出が正しくても取引なしや採算の悪い取引になり得るため、報告で区別します。
ボリュームの特徴は特定のタイムスタンプに属します
occurred_atにおける出来高とconfirmed_atにおける出来高は、別々の列に表示してください。前者は極値における取引活動を表し、後者はその後の確認期間中の活動を表します。次の3本のバーを使用する機能は、確認時に利用可能であり、ピボットバーで遡って利用することはできません。そのタイムスタンプは、使用する最新の入力値に追従する必要があります。
価格だけの設定と、後のトリガー時のRVOLを加えた設定を比較します。RVOLは現在出来高を直前20本の出来高中央値で割り、1.5を実験閾値とします。株式の日中データでは、寄り付きの活動と昼間の足を混ぜるより同じセッション内時刻の基準が明確です。FXのティックボリュームは配信者固有の更新数であり、約定契約数を自動的に表すものではありません。
出来高が、同程度のボラティリティと時間帯のグループ内で情報を追加するかどうかをテストしてください。そうしないと、出来高フィルターは単に執行コストの高い幅の広いバーを選択するだけになってしまう可能性があります。拒否された機会も記録してください。約定した取引のみを評価すると、フィルターによってほとんどの機会が削除されたり、エクスポージャーが大幅に変更されたりしたことが隠されてしまう可能性があります。
リターンを評価する前に、イベントの正当性を確認してください。
各時点までのデータだけを順に再生し、その終端までに公開されたイベントを比較します。100本を追記しても、既存イベントのID・価格・種類・確認時刻を変えてはいけません。画像ではなく記録を比較します。同値の高安、アウトサイドバー、欠損期間、呼値変更、および銘柄が許す場合は負の価格をテストデータに含めます。
1,000バーあたりのピボット数、確認遅延時間、アンカー間の間隔、および最後のアンカーが判明した時点で既に無効になっている下流パターンの割合を測定します。これらの診断結果は、利益統計を導入する前に、検出器の変更が機会セットをどのように変化させるかを説明します。
開発データでl=r=2を3・5と比較し、最終テスト前に設定を固定します。非対称窓も別の登録済み設定として試します。見た目の良いアンカーだけでは純期待値の高さを立証できません。最終取引評価にはスプレッド、手数料、ギャップ、ストップ執行、数量、確認遅延の機会費用を含めます。
よくある落とし穴
後から印を付けた極値の時刻ちょうどにエントリーする
過去へ描いた印の時刻を注文時刻に使う誤りです。各時点までのデータだけを再生すると、その時には情報が未確定だったことが分かります。
ローカルピボットとセッションピボットポイントの混同
局所極値とセッションベースのP、R、Sの公式は、それぞれ異なる入力値を持つ異なるツールである。
結果を見てから尺度を選択する
左右のペアはそれぞれ研究試行です。失敗したバリアントと選択された構成の両方を保持してください。
この手法を使う前のチェックリスト
ご自身のデータで確認した項目にチェックを入れてください。進捗はこのブラウザに保存されますが、戦略の収益性を認定するものではありません。
よくある質問
r=0は遅延を解消しますか?
過去のみの極値検出器を作成することはできますが、右側反転の確認はできません。これは別の信号であり、別途評価が必要です。
価格は確定したピボットポイントを突破できるだろうか?
はい。歴史的な極値は正しく特定されており、その後の抵抗の突破によってその観察結果が消えることはありません。
研究資料
各資料は、その横に記載された定義や根拠を支えています。擬似コード、架空の例、提案パラメータは別途検証が必要です。
- Auto trendlinesTradingView. 左右窓ピボットの定義を参照。商用の事例を収益性の証拠とは扱いません。 確認日: .
- Pine Script: RepaintingTradingView. 過去位置への描画と、変動する未確定データの節を参照。 確認日: .
- scipy.signal.find_peaksSciPy. 同値の頂上と欠損データの扱いを参照。API仕様であり投資収益の証拠ではありません。 確認日: .
関連する手法
リスクについて
この内容は学習と研究設計を目的とし、金融上の助言ではありません。Backtestは過去データのシミュレーションであり、将来の成果を保証せず、実際の売買注文も行いません。このライブラリの手法が、そのままアプリで利用できる機能とは限りません。関連情報: 検証方法 および 学習センター.
実際の資金を使う前にルールを検証する
アプリの対応範囲、データ、個々の模擬取引を確認してください。高度な検出手法は別途実装が必要な場合があります。
App StoreでBacktestをダウンロード