ボラティリティブレイクアウト取引戦略


作成日: 2023-12-11 14:20:48 最終変更日: 2023-12-11 14:20:48
コピー: 1 クリック数: 638
1
フォロー
1621
フォロワー

ボラティリティブレイクアウト取引戦略

概要

波動突破取引戦略は,単一の価格行動に基づく戦略である.価格と取引量の変化を分析することによって,買入と売却のシグナルを誘発する.この戦略は,アラートと組み合わせて,他の取引所またはシステムで注文を誘発するために使用することもできる.

戦略原則

この戦略は,K線の閉盘価格,開盤価格,最高価格および最低価格を分析して価格の動きと強さを判断する.

具体的には,最近3つのK線の閉盘価格が連続して開盘価格より高くまたは低いかを分析する.もしそうであれば,価格が連続して上方または下方突破してトレンド的動作を生じることを示す.

さらに,この戦略は,特定の周期における最大取引量を統計する.現在のKラインの取引量が,最近期の最大値を超えた場合,取引量が増幅され,市場への巨大な取引力を反映する.

この戦略は,価格がK線を3回連続で突破し,取引量が増加すると同時に,買入または売却のシグナルを生じます.

戦略的優位性

これは,価格行動と取引量シグナルを利用するシンプルで効果的な戦略である.

  1. 原則は明確で分かりやすく実行できます
  2. 市場変化を把握する,突発的な状況に敏感
  3. 基本的なK線と取引量データを分析するだけで,複雑なアルゴリズムを必要としません.
  4. パラメータを柔軟に調整し,異なる品種と周期に対応できます
  5. 低コストで中小規模な投資家に適しています.

リスク分析

この戦略にはいくつかの潜在的リスクがあります.

  1. 価格の動きを予測できず,ある程度の盲目さがある.
  2. 誤ったトリガー信号に敏感で,無意味な取引が増加する可能性があります.
  3. 金融危機の状況の整理で誤った信号が出る可能性
  4. 損失拡大の危険性がある

これらのリスクを制御するために,移動停止,最適化パラメータの組み合わせ,または他の指標または戦略の組み合わせを使用することを考慮することができます.

最適化の方向

これは基本的な戦略であり,さらに多くの改善を図る余地があります.

  1. 損失を抑えるためのストップ・ストップ戦略
  2. より多くの品種と周期に対応する最適化パラメータ
  3. フィルタリング信号を他の指標に追加する
  4. トレンド追跡戦略の組み合わせで,トレンドの自動調整を実現する
  5. 機械学習アルゴリズムと組み合わせて,動的パラメータと信号の最適化を実現
  6. 定量化研究とフィードバックモジュールを追加し,戦略を進化させ,最適化する

要約する

この戦略は,全体として非常に実用的な価格行動に基づく戦略である.これは,参加しやすく,容易に理解し,実施コストが低いという利点がある.しかしながら,ある程度の盲目性がある.さらに最適化と組み合わせを進めて,より良い戦略強化を実現する必要がある.全体として,これは非常に価値のある戦略的考えであり,深入な研究と応用に値する.

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

//@version=4
strategy("SPAS", overlay=true, pyramiding=5, calc_on_order_fills=true)

int signal_hh = 0
int signal_ll = 0

if close[1] >= open[1] and close[2] >= open[2] and close[3] >= open[3]
    signal_hh := 1

if close[1] <= open[1] and close[2] <= open[2] and close[3] <= open[3]
    signal_ll := 1

plotchar(signal_hh, char='H', size=size.tiny, location=location.abovebar)
plotchar(signal_ll, char='L', size=size.tiny, location=location.abovebar)

int signal_vol = 0
float max_volume = 0.0
int vol_length = input(title="Volume length", type=input.integer, defval=3)

for i = vol_length to 1
    if volume[i] > max_volume
        max_volume := volume[i]

if volume[0] > max_volume
    signal_vol := 1

plotchar(signal_vol, char='V', size=size.tiny, location=location.bottom)

int signal_buy = 0
int signal_sell = 0

if signal_hh and signal_vol
    signal_buy := 1
    label.new(bar_index, high, "B", color=color.green)
    strategy.entry("buy", strategy.long, 5)//, when=strategy.position_size <= 0)

if signal_ll and signal_vol
    signal_sell := 1
    label.new(bar_index, low, "S", color=color.red)
    strategy.entry("sell", strategy.short, 5)//, when=strategy.position_size > 0)

//plotchar(signal_buy, char='B', color=color.green, size=size.tiny, location=location.abovebar)
plotarrow(signal_buy, colorup=color.green, colordown=color.orange, transp=0, maxheight=20)

//plotchar(signal_sell, char='S', color=color.red, size=size.tiny, location=location.abovebar)
plotarrow(signal_sell * -1, colorup=color.green, colordown=color.orange, transp=0, maxheight=20)