ブレイクアウトストップロス反転戦略


作成日: 2024-02-05 14:56:16 最終変更日: 2024-02-05 14:56:16
コピー: 0 クリック数: 645
1
フォロー
1617
フォロワー

ブレイクアウトストップロス反転戦略

概要

この戦略は,突破理論に基づいた長短線量化取引戦略である.これは,最近100日間の最高閉店価格を計算して,突破が発生したかどうかを判断する.最近の一日の閉店価格が前100日間の最高閉店価格を超えた場合,買取信号を発信する.多頭ポジションに入ると,25日間の取引後に強制的に平損ポジションを停止する.

戦略原則

この戦略の核心的な論理は,技術分析の中央の突破理論に基づいている.突破理論は,価格が前期間の最高点または最低点を超えると,市場の転換が起こり,新たな上昇または下降の傾向に入ることができることを示している.

具体的には,この策略は,Pine Scriptの内置関数を呼び出すことによって実行されます.ta.highest(),過去100バーの最高閉店価格を計算する. そして,現在のK線の閉店価格がこの最高閉店価格より高いかどうかを比較する. 閉店価格が100日最高閉店価格を突破し,上昇方向に突破した場合,買い信号が生じる.

戦略は,多頭ポジションに入ると,クローズオフの条件を設定します.ta.barssince()函数統計は,多行後に入ったバー数,バー数25を超えると,強制的に止損平仓を強制する.

この戦略の入場論理は以下のようにまとめられます.

  1. 最近の100日間の最大閉店価格を計算する
  2. Kラインの現在の閉店価格が最高閉店価格より高いかどうかを比較する
  3. 買入信号が作られ,多方向に作られる
  4. ポジションの25日目の営業日以降に,強制的に平仓を停止する

優位分析

この戦略の最大の利点は,価格トレンドのターニングポイントを捕捉することであり,高い順位取引の成功率を有する.また,ストップ・ロジックの設定は,単一損失を効果的に制御することができます.

具体的には以下の通りです.

1. 順調な取引で成功率が高い

突破理論は,価格が重要な価格領域を超えた後に,新しいトレンドへの入りを代表すると考えます.この戦略は,この理論に基づいて設計されたので,価格の逆転の瞬間を捕捉して,順位取引を実現する確率が高いのです.

2. リスクがコントロール可能で 損失を抑える仕組み

戦略は,25取引日後の止損退出のメカニズムを設定し,単一の損失を一定範囲で制御し,大きな損失の発生を回避し,全体的なリスクを制御することができます.

3. 中長線に適したポジション

戦略の保有期間は,デフォルトで25取引日,約1ヶ月である.これは中長線戦略にとって適した保有期間範囲であり,短期間過ぎるとウィップソーを引き起こさないし,長期にわたって保有してもリスクが増加しない.

4. パラメータが少なく,最適化が容易

この戦略の主なパラメータは突破ウィンドウ期と保有期のみで,パラメータ数が少なく,テストし,最適パラメータを探すのに最適化が容易で,实体での運用コストは低い.

5. 多種間の切り替え

戦略は特定の品種に固有の指標を使用していません.その取引ロジックは,株式指数,外貨,商品,暗号通貨などの複数の品種に適用され,市場の状況に応じて異なる品種間の切り替えが可能で,戦略の適応性を高めます.

リスク分析

この戦略は,上記の利点にもかかわらず,実際の使用においては,いくつかのリスクがあります.

1. 騙される危険性

戦略は移動ストップまたはストップを追跡するメカニズムを設定していません.入るトレンドが形成されていない場合,またはブレイクが実際に偽のブレイクである場合は,ストップポイントに引っ張られる可能性があります.これはこの戦略の最大のリスクポイントです.

2. パラメータを最適化する必要がある

既定のパラメータは必ずしも最適のパラメータではない.実盤のプロセスは,特定の品種と市場環境に適したパラメータ配置を最適化方法で探す必要がある可能性があります.これは,戦略の調整と追跡の作業量を増加させるでしょう.

3. 効果と市場との関連性

この戦略は,傾向に過度に依存し,市場を整理する際に不良なパフォーマンスを発揮し,異なるモデルの市場環境に対する適応性が低い. 震動型市場に出会った場合,頻繁に套入または止損を触発され,利益は不安定である可能性があります.

最適化の方向

この戦略が実体でより安定したパフォーマンスを得るために,以下の点で最適化および改善することができます.

1. モバイル・ストップ・メカニズムを増やす

ストップロスを追跡するロジックを追加し,ポジション紙の利潤の大きさに応じて,移動ストップポイントを設定して追跡し,その結果,各取引の最大損失を一定範囲に制限する.これは個人のリスクを大幅に減らすことができる.

2. 市場条件に合わせてパラメータを調整する

この戦略の2つの大きなパラメータ (ブレイクウィンドウとポジション保持時間) に対して,範囲または数値のリストを設定し,市場の相対的な強さ (例えば,ATR指標を使用して計算することによって) に基づいてパラメータの値を動的に設定し,さらにパラメータを最適化します.

3. トレンド判断のルールと組み合わせる

傾向が不明な場合や偽の突破状況で被套されるリスクを最大限に減らす.事前の傾向分析の結果 (目視判断や定量分析など) を組み合わせて,分析によりより明確な傾向が確定したときに取引に参加することができます.

4. 様々な品種と市場環境のテスト

複数の品種 (株価指数,商品,外貨,暗号通貨など) および各取引区間 (日線,60分など) で戦略パラメータとルールをテストして最適化し,より広範な市場環境に適応し,安定性を高めます.

要約する

この突破的な止損逆転戦略は,使いやすくて,トレンドを判断し把握する能力が強く,多空ポジションを効率的に配置して,継続的に利益を得ることができる.我々は,そのコード分析を行い,戦略の優位性とリスク点を特定し,戦略の安定性と実戦性をさらに向上させるための提案を出した.最適化と改善後に,この戦略は,量化投資の優れた基礎モデルになることができる.

ストラテジーソースコード
/*backtest
start: 2023-01-29 00:00:00
end: 2024-02-04 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © All_Verklempt

//@version=5
strategy("Breakout Strategy", overlay=true)

// Input variable for breakout period
breakoutPeriod = input.int(100, title="Breakout Period", minval=1)

// Calculate the highest close of the past breakout period
highestClose = ta.highest(close, breakoutPeriod)

// Input variables for start and end dates
startYear = input.int(2022, title="Start Year", minval=1900)
startMonth = input.int(1, title="Start Month", minval=1, maxval=12)
startDay = input.int(1, title="Start Day", minval=1, maxval=31)

endYear = input.int(2023, title="End Year", minval=1900)
endMonth = input.int(12, title="End Month", minval=1, maxval=12)
endDay = input.int(31, title="End Day", minval=1, maxval=31)

// Convert start and end dates to timestamp
startDate = timestamp(startYear, startMonth, startDay, 00, 00)
endDate = timestamp(endYear, endMonth, endDay, 23, 59)

// Entry condition: Breakout and higher close within the specified date range
enterLong = close > highestClose[1] and close > close[1]

// Exit condition: Close the long position after twenty-five bars
exitLong = ta.barssince(enterLong) >= 25

// Strategy logic
if (enterLong)
    strategy.entry("Long", strategy.long)

if (exitLong)
    strategy.close("Long")