パターンブレイクスルーモメンタム取引戦略とストッププロフィット最適化法の組み合わせ

TP SL
作成日: 2024-12-11 17:20:09 最終変更日: 2024-12-11 17:20:09
コピー: 1 クリック数: 370
1
フォロー
1617
フォロワー

パターンブレイクスルーモメンタム取引戦略とストッププロフィット最適化法の組み合わせ

概要

この戦略は,価格分類理論に基づくトレンド追跡取引システムで,市場内のトップ・ボトム分類構造を識別し,固定ポイントのトリガー条件とストップセットを組み合わせて,取引を自動化します.戦略の核心は,ボトムタイプの上部に複数の単一のエントリーポイントを設定し,トップタイプ下部に空の単一のエントリーポイントを設定し,対応するストップポイントの位置を配合してリスク管理を行います.

戦略原則

戦略の核心的な論理には以下の重要なステップが含まれています.

  1. 型識別:連続した3つのK線の高低点を比較して頂下型を識別する.中間K線の低点は両側K線より低いとき,底型が形成され,中間K線の高点は両側K線より高いとき,頂上型が形成される.
  2. 入場条件:識別を底まで分類した後に,その上107点に複数単一の触発価格を設定する.識別を頂部まで分類した後に,その下107点に空単一の触発価格を設定する.
  3. ストップセット:ポジション開設後,入場価格に基づいて同じポイント数 (107ポイント) のストップセット.
  4. ポジション管理:システムでは,最新の配置位置を継続的に追跡し,それに応じて入場トリガー価格を更新します.

戦略的優位性

  1. 客観性強:戦略は,主観的な判断による偏差を避けるために,明確な数学的な定義に基づいて市場の構造を識別する.
  2. リスク管理: 固定ポイントのストップセットを使用し,各取引の収益目標が明確でリスク管理できます.
  3. 適応性: 戦略は異なる市場環境で機能し,特に波動性の高い市場には適しています.
  4. 高度な自動化: 取引プロセスは信号認識から実行まで自動化され,人間の介入が少なくなります.

戦略リスク

  1. 偽の突破リスク: 短期的な突破の後,市場がすぐに逆転し,損失の停止につながる可能性があります.
  2. 振動市場のリスク:横盤振動市場では,頻繁なトップ・ボトム分類が過剰な取引シグナルを引き起こす可能性があります.
  3. 固定ポイントリスク: 固定エントリーポイントとストップポイントを使用することは,すべての市場環境に適していない可能性があります.
  4. スリップポイントリスク: 波動性の高い市場では,スリップポイントの深刻な問題に直面する可能性があります.

戦略最適化の方向性

  1. ダイナミックポイント数最適化:市場変動率のダイナミックに合わせて入場トリガーポイント数とストップポイント数調整することができる.
  2. トレンドフィルター: トレンド判断の指標を追加し,主要トレンドの方向のみにポジションを開きます.
  3. 市場環境識別:市場環境判断機構を追加し,異なる市場状態で異なるパラメータ設定を採用する.
  4. ポジション管理の最適化:ダイナミックなポジション管理システムを導入し,口座の純額と市場リスクに応じて開設量を調整する.

要約する

この戦略は,型化理論と動量突破思想を組み合わせて,完全な取引システムを構築している.戦略の優点は,その客観性と自動化の高い程度にあるが,市場環境への適応性の問題もある.ダイナミックなパラメータ調整と市場環境の識別などの最適化措置を追加することによって,戦略の安定性と収益性をさらに向上させることができる.実物取引では,投資家は,自身のリスク承受能力と資金規模に応じてパラメータ設定を調整することをお勧めする.

ストラテジーソースコード
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-09 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Fractal Buy/Sell Strategy with 107 Pips Target", overlay=true)

// 输入参数
trigger_pips = input.int(107, title="Entry Distance (Pips)")  // 入场点距离底分型或顶分型的距离
take_profit_pips = input.int(107, title="Take Profit (Pips)") // 止盈点数

pip_value = syminfo.mintick * 10 // 点值(每点等于多少价格单位)

// 计算分型
is_bottom_fractal = low[1] < low[2] and low[1] < low[0] // 判断是否为底分型
is_top_fractal = high[1] > high[2] and high[1] > high[0] // 判断是否为顶分型

// 存储分型位置
var float last_bottom_fractal = na
var float last_top_fractal = na

// 更新分型值
if is_bottom_fractal
    last_bottom_fractal := low[1]
    
if is_top_fractal
    last_top_fractal := high[1]

// 计算开盘价格
bottom_trigger_price = na(last_bottom_fractal) ? na : last_bottom_fractal + trigger_pips * pip_value
top_trigger_price = na(last_top_fractal) ? na : last_top_fractal - trigger_pips * pip_value

// 交易逻辑:底分型多单和顶分型空单
if not na(last_bottom_fractal)
    if close <= bottom_trigger_price
        strategy.entry("Buy", strategy.long)
        strategy.exit("Take Profit", from_entry="Buy", limit=bottom_trigger_price + take_profit_pips * pip_value)
        
if not na(last_top_fractal)
    if close >= top_trigger_price
        strategy.entry("Sell", strategy.short)
        strategy.exit("Take Profit", from_entry="Sell", limit=top_trigger_price - take_profit_pips * pip_value)

// 绘制分型和触发价格
plotshape(series=is_bottom_fractal, style=shape.triangleup, location=location.belowbar, color=color.green, title="Bottom Fractal")
plotshape(series=is_top_fractal, style=shape.triangledown, location=location.abovebar, color=color.red, title="Top Fractal")
plot(bottom_trigger_price, title="Buy Trigger", color=color.green, linewidth=1)
plot(top_trigger_price, title="Sell Trigger", color=color.red, linewidth=1)