モメンタム閾値駆動型バランスフォーストレーディング戦略

BOP TA MA RSI THRESHOLD momentum LEVERAGE EQUITY
作成日: 2025-02-24 09:35:40 最終変更日: 2025-02-27 16:50:22
コピー: 1 クリック数: 368
2
フォロー
319
フォロワー

モメンタム閾値駆動型バランスフォーストレーディング戦略 モメンタム閾値駆動型バランスフォーストレーディング戦略

概要

この戦略は,動力に基づく取引システムであり,主にバランス・オブ・パワー (Balance of Power) の指標を4時間周期で取引する.買い手側の力の対比を測定し,指標が既定の値を破るときに取引シグナルをトリガーする.戦略には,ダイナミックなポジション管理,調整可能なレバレッジ,視覚的な取引追跡などの機能が含まれ,市場トレンドの転換点を効果的に捉えることができる.

戦略原則

戦略の核心は, ((閉盘価格 - 開盤価格) / ((最高価格 - 最低価格) を計算して市場の買入力のバランスを測定する.この値は1に近づくと強い看板動力を表示し,-1に近づくと強い下落圧力を表示する.具体的取引論理は以下の通りである.

  • ポジション開設条件:平衡力の指数で0.8を打つとき,買手の力が強いことを示し,入場は多めにする
  • 平仓条件:平衡力の指数の下の -0.8 通過時,売り手の圧力が増加することを示す平仓出場
  • ポジション管理:口座権益に基づいて動的に調整し,レバレッジ倍数設定できます

戦略的優位性

  1. シグナル明瞭:固定値のトリガーを使用し,頻繁な取引を避け,高確信度シグナルに焦点を当てます.
  2. リスク管理: ダイナミックなポジションと調整可能なレバレッジによる柔軟なリスク管理
  3. ビジュアル化:戦略の追及と最適化のための取引マークと履歴を提供
  4. 適応性: 波動的な市場環境に対応し,トレンドの転換を把握する

戦略リスク

  1. スライドポイントリスク: 激しい波動で大きなスライドポイントに直面する可能性がある
  2. 偽の突破の危険性:偽の突破信号を誘発して損失を招く可能性
  3. トレンド依存: 波動的な市場では不良な結果が出る可能性
  4. リーバードリスク: 過剰なリーバードは重大な損失をもたらす

戦略最適化の方向性

  1. トレンドフィルターを導入し,他の技術指標と組み合わせて大きなトレンドの方向を判断します.
  2. オプティマイズする値設定:異なる市場環境の動向に応じて値調整
  3. リスク管理手段の強化
  4. タイムフィルターを増やす:重要な経済データの発表などの時間要因を考慮する

要約する

この戦略は,市場動力の変化をバランスの取れた力の指標で捉え,ダイナミックなポジション管理とリスク管理を組み合わせて,比較的完全な取引システムを構築しています.一定のリスクがあるものの,継続的な最適化と完善によって,戦略の安定性と収益性をさらに向上させることができます.動力の取引に興味のあるトレーダーの使用と研究に適しています.

ストラテジーソースコード
/*backtest
start: 2024-02-25 00:00:00
end: 2025-02-22 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"SOL_USDT"}]
*/

//@version=5
strategy(title="Balance of Power for US30 4H", format=format.price, precision=2, default_qty_type=strategy.percent_of_equity, default_qty_value=100, overlay=true, commission_value=0.01, max_labels_count=500, max_lines_count = 500)

leverage = input.float(5, "Leverage 1:", tooltip="Multiply your equity (100%) times the leverage.")

p = (close - open) / (high - low)
qty = strategy.equity * leverage / close

if ta.crossover(p, 0.8)
    strategy.entry("L", strategy.long, qty=qty)

if ta.crossunder(p, -0.8)
    strategy.close("L")

green   = color.new(#0097a7, 0)
red     = color.new(#ff195f, 0)
green90 = color.new(#0097a7, 85)
red90   = color.new(#ff195f, 85)

if strategy.position_size > strategy.position_size[1]
    label.new(bar_index, low * 0.999, text="▲", textcolor=green, size=size.normal, textalign=text.align_center, color=green90, style=label.style_text_outline)
    label.new(bar_index, low * 0.999, text="Buy", textcolor=green, size=size.tiny, textalign=text.align_center, color=green90, style=label.style_label_up)

if strategy.position_size < strategy.position_size[1]
    label.new(bar_index, high * 1.001, text="▼", textcolor=red, size=size.normal, textalign=text.align_center, color=red90, style=label.style_text_outline)
    label.new(bar_index, high * 1.001, text="Close", textcolor=red, size=size.tiny, textalign=text.align_center, color=red90, style=label.style_label_down)


var float tradeEntryPrice = na
var int   tradeEntryBar   = na

if strategy.position_size > 0 and strategy.position_size[1] == 0
    tradeEntryPrice := close
    tradeEntryBar   := bar_index


if strategy.position_size == 0 and strategy.position_size[1] > 0
    exitPrice = close
    exitBar   = bar_index
    tradeColor = (exitPrice - tradeEntryPrice > 0) ? green : red

    topPrice    = math.max(tradeEntryPrice, exitPrice)
    bottomPrice = math.min(tradeEntryPrice, exitPrice)

    box.new(tradeEntryBar, topPrice, exitBar, bottomPrice, border_width=0, bgcolor=color.new(tradeColor, 85))
    line.new(tradeEntryBar, topPrice, exitBar, topPrice, color=tradeColor, width=1)
    line.new(tradeEntryBar, bottomPrice, exitBar, bottomPrice, color=tradeColor, width=1)