ストカスティック・モメンタム・ブレイクアウト戦略

作者: リン・ハーンチャオチャン開催日:2023年10月24日 16:35:24
タグ:

img

概要

モメントブレイクアウト戦略は,主にストカスティックオシレーター指標を使用して市場のトレンド方向を決定し,トレンド強さを判断するためのADX指標と組み合わせて取引信号を生成します.この戦略は主に中長期トレンド取引に適しています.

戦略の論理

この戦略は2つの技術指標に基づいています.

  1. ストコスタスティックオシレーター:市場のトレンド方向を決定するために使用される.ストコスタスティックオシレーターの値は0から100までの範囲である.14期間の45と55の間の値は明確なトレンドがないことを意味します.55を超えるストコスタスは上昇信号であり,45未満は下落信号です.

  2. ADX インディケーター: 傾向の強さを判断するために使用されます. ADX が20以下であれば,傾向が弱いことを示します.

ストーカスティックオシレーター値に基づいて,まず上向きまたは下向きの明確な傾向があるかどうかを判断する.ストーカスティックは55を超えると上向きを示します.45を下回ると下向きを示します.

ADXが20を超えているかどうかを確認し,強いトレンドを確認します. ADXが20を超えている場合,トレンド取引に十分な傾向があることを意味します. ADXが20を下回っている場合,トレンドは明らかではないと考えられ,取引信号は生成されません.

ストカスティック・オシレーターとADXを組み合わせることで,次の2つの条件が満たされると取引信号が生成されます.

  1. ストカスティックは55以上で 上昇傾向を示しています
  2. ADXは20以上で 上昇傾向が強いことを確認する

この2つの条件が満たされたときに販売信号が生成されます.

  1. ストカスティックは45を下回る
  2. ADXは20以上で 下落傾向が強いことを確認しています

これらの規則により 戦略は 中長期の傾向をたどるシステムを形成します

利点

この戦略の利点は以下の通りです.

  1. 中期から長期間のトレンドを把握する:ストカスティックとADXを組み合わせることで,主要トレンドを把握し,市場のトレンドの方向性と強さを効果的に決定することができます.

  2. 引き下げ制御: 傾向がはっきりしているときにのみ取引することが,不必要な振動を制御するのに役立ちます.

  3. パラメータ調整:ストカスティックとADXの期間を異なる市場に最適化できます.

  4. シンプル: 総合的な論理はシンプルで直感的に,共通する2つの技術指標から構成されています.

  5. 汎用性: この戦略はパラメータ調整によって異なる市場に適用できます.

リスク

戦略のリスクは

  1. ブレイクポイントの欠落:トレンドフォローする指標として,ストキャスティックとADXは潜在的なトレンド逆転ポイントや早期ブレイクトレードを見逃す可能性があります.

  2. トレンド逆転リスク: トレンドの終わりに近づいて,トレンドが続くと誤って判断し,タイミングで脱出する機会を逃し,損失を増大させる可能性があります.

  3. パラメータ最適化における困難: パラメータは異なる市場のために調整する必要があります.これはいくつかの困難をもたらします.

  4. Whipsaws: 明確なトレンドがない範囲限定市場で複数の無効信号を生成する可能性があります.

  5. 格差: 価格トレンドがストカスティックオシレータートレンドと衝突すると,格差が発生し,損する取引につながる可能性があります.

リスクは以下によって軽減できる:

  1. 地域動向や潜在的ブレイクポイントを特定するための他の指標を追加する.

  2. トレンドが大きく逆転するときに,タイミングで終了するためのトレンド逆転信号を組み込む.

  3. マシン学習を使って パーマータを自動的に最適化します

  4. ADXの値引き値を増やして 市場変動の弱気信号をフィルタリングする

  5. ストカスティック信号の確認と分散取引の回避のために追加指標の適用.

改善 の 方向

戦略を改善する方法:

  1. ターニングポイントを正確に特定するために KとD期間のようなストカスティックパラメータを最適化します

  2. ADX 期間を最適化して,トレンド強さを判断するための最適なパラメータを決定する.

  3. トレンド逆転のシグナルを追加する,例えばストーカスティック・オーバー買い/オーバーセールゾーンにおけるストップ・ロスのポジションサイズを増やす.

  4. RSIやMACDなどの他の指標を組み合わせて 入口と出口のタイミングを調整します

  5. マシン学習を使って 最適なパラメータの組み合わせを見つけます

  6. ストップ損失を移動したり,ストップ損失を逆転させたりするストップ損失戦略を導入し,単一の取引損失を制御します.

  7. トレイリングストップ損失: トレンドが拡大するにつれて利益をロックするためにトレーリングストップ損失を追加します.

  8. 資金管理: ADX 強度に基づいてポジションサイズを調整することによってリスク管理を最適化します.

概要

概要すると,このモメントブレイクアウト戦略は全体的にトレンドフォローシステムであり,ストカスティックを使用してトレンド方向を決定し,ADXを使用して強さを測定し,中長期のトレード戦略を形成する.利点は,トレンドをキャッチし,シンプルで直感的な論理で引き下げを制御することにある.弱点は,早期のブレイクアウトトレードとトレンド逆転リスクの見逃しである.我々はパラメータチューニング,シグナルを追加,リスクを制御しながら報酬/リスクを改善するためにストップロスの実装などの方法によって最適化することができます.


/*backtest
start: 2023-09-23 00:00:00
end: 2023-10-23 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Created by Bitcoinduke
//Original Creator is Jake Bernstein 
// Link: https://school.stockcharts.com/doku.php?id=trading_strategies:stochastic_pop_drop
// Tested: XBTUSD 3h | BTCPERP FTX 3h
//@version=4
// strategy(shorttitle="Stochastic Pop and Drop", title="Pop and Drop", overlay=false, 
//      calc_on_every_tick=false, pyramiding=0, default_qty_type=strategy.cash, 
//      default_qty_value=1000, currency=currency.USD, initial_capital=1000,
//      commission_type=strategy.commission.percent, commission_value=0.075)

upper_threshold_buy = input(55, minval=50, title="Buy Entry/Exit Line")
lower_threshold_sell = input(45, maxval=50, title="Sell Entry/Exit Line")

oscillator_length = input(14, minval=1, title="Stochastic Length - Default 14")
sma_length = input(2, minval=1, title="SMA Length - 3-day (3 by default) simple moving average of stoch")

stoch_oscillator = sma(stoch(close, high, low, oscillator_length), sma_length)

//Upper and Lower Entry Lines
upper_line = upper_threshold_buy
lower_line = lower_threshold_sell

stoch_color = stoch_oscillator >= upper_line ? green : stoch_oscillator <= lower_line ? red : purple

//Charts
plot(stoch_oscillator, title="Stochastic", style=histogram, linewidth=4, color=stoch_color)
upper_threshold = plot(upper_line, title="Upper Line", style=line, linewidth=4, color=green)
lower_threshold = plot(lower_line, title="Lower Line", style=line, linewidth=4, color=red)

// Strategy Logic
LongSignal = stoch_oscillator >= upper_line and not (stoch_oscillator > lower_line and stoch_oscillator < upper_line) ? true : false
ShortSignal = stoch_oscillator <= lower_line and not (stoch_oscillator > lower_line and stoch_oscillator < upper_line) ? true : false

strategy.entry("POP_Short", strategy.short, when=ShortSignal)
strategy.entry("POP_Long", strategy.long, when=LongSignal)

// === Backtesting Dates === thanks to Trost

testPeriodSwitch = input(true, "Custom Backtesting Dates")
testStartYear = input(2019, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testStartHour = input(0, "Backtest Start Hour")
testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, testStartHour, 0)
testStopYear = input(2020, "Backtest Stop Year")
testStopMonth = input(1, "Backtest Stop Month")
testStopDay = input(5, "Backtest Stop Day")
testStopHour = input(0, "Backtest Stop Hour")
testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, testStopHour, 0)
testPeriod() =>
    time >= testPeriodStart and time <= testPeriodStop ? true : false
testPeriod_1 = testPeriod()
isPeriod = testPeriodSwitch == true ? testPeriod_1 : true
// === /END



もっと