資源の読み込みに... 荷物...

ストカスティックオシレーターに基づく波動範囲取引戦略

作者: リン・ハーンチャオチャン,日付: 2024-06-17 14:52:10
タグ:ATR

img

概要

この戦略は,ストカスティックオシレーターを使用して,過剰購入および過剰売却の市場状況を特定し,リスクと報酬パラメータを事前に定義した取引を誘発し,不安定な取引範囲内の価格変動をキャピタライズする.この戦略の背後にある主なアイデアは,リスクを厳格に制御しながら,取引範囲の低端で購入し,高端で販売することです.

戦略の論理

  1. ストカスティック・オシレーターが過売り値 (20) を下回ると,戦略はロングポジションに入ります.過買い値 (80) を上回ると,戦略はショートポジションに入ります.
  2. ストップ・ロストとテイク・プロフィートのレベルは,平均真差 (ATR) の2倍に基づいて設定され,各取引は口座資本の1%をリスクとする.
  3. 過剰取引を防ぐため,この戦略は各取引の間に最低20バーを強制し,冷却期間を許可し,ウィップソーを避ける.

戦略 の 利点

  1. 戦略は変動する取引範囲内の価格変動を把握し,低値で購入し,高値で売却して潜在的に利益を得ることができます.
  2. ATRベースのストップ・ロストとテイク・プロフィートレベル,取引1回1パーセントの固定リスクを含む厳格なリスク管理措置を採用し,引き下げと単一の取引損失を制御するのに役立ちます.
  3. 取引の間隔を最低限 (20バー) に設定することで,この戦略は頻繁な取引や市場の騒音に騙されないようにします.
  4. 戦略論理は明確で,理解し,実行しやすいため,様々な市場環境での適用に適しています.

戦略リスク

  1. 戦略の成功は,取引範囲を正しく特定することに大きく依存します.範囲が誤って特定された場合,取引を損なう可能性があります.
  2. 市場がトレード範囲を突破してトレンドを形成すると 戦略はトレンドをフォローする機会を逃す可能性があります
  3. 既存のリスク管理措置にもかかわらず,極端な市場状況下では,戦略は依然として期待を超える損失を経験する可能性があります.
  4. 戦略パラメータ (例えば,過買い/過売りレベル,ATR倍数) は,異なる市場条件に最適化する必要がある.不適切なパラメータは,不良なパフォーマンスを引き起こす可能性があります.

戦略の最適化方向

  1. 他の技術指標 (MACD,RSIなど) を組み合わせて取引信号を確認し,信号の信頼性を向上させることを検討する.
  2. ダイナミックなストップ・ロスト・テイク・プロフィート・メカニズムを導入し,価格が有利な方向に動くとストップ・ロストレベルを調整し,潜在的に高い収益を達成する.
  3. 取引範囲の識別については,正確性を向上させるために,機械学習アルゴリズムなどのより高度な技術を使用することを探求します.
  4. トレンド市場では,トレンドに反して取引しないようにトレンドフィルターを導入することを検討してください.

概要

ストコスタスティックオシレーターに基づく波動性範囲取引戦略は,オシレーターのオーバーバイトとオーバーセールシグナルを事前に定義された取引範囲内で資本化しようとします. 戦略は厳格なリスク管理と取引間隔を通じてリスクを制御します. 戦略には一定の利点がありますが,その成功は主に取引範囲を正しく特定することに依存します. 将来の最適化方向性には,他の技術指標を組み合わせ,動的なストップロストとテイクプロフィートレベルを導入し,より高度な範囲識別技術を使用して,トレンドフィルターを追加します. 戦略を実践する際に,パーマータとリスク管理規則を個人好みやリスク耐性に応じて調整することを確認してください.


/*backtest
start: 2023-06-11 00:00:00
end: 2024-06-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Range Trading with Stochastic", overlay=true)

// Input Parameters
overboughtLevel = input.int(80, title="Overbought Level", minval=1, maxval=100)
oversoldLevel = input.int(20, title="Oversold Level", minval=1, maxval=100)
stochLength = input.int(14, title="Stochastic Length", minval=1)
riskPerTrade = input.float(0.01, title="Risk per Trade (%)", minval=0.01, maxval=100, step=0.01)
barsBetweenTrades = input.int(20, title="Bars Between Trades", minval=1)

// Calculate Stochastic Oscillator
k = ta.sma(ta.stoch(close, high, low, stochLength), 3)
d = ta.sma(k, 3)

// Variables to Track Time Since Last Trade
var lastTradeBar = 0
barsSinceLastTrade = bar_index - lastTradeBar

// Risk Management
atr = ta.atr(14)
stopLoss = 2 * atr
takeProfit = 2 * atr
riskAmount = strategy.equity * riskPerTrade / 100
positionSize = 1

// Entry Conditions
longCondition = k < oversoldLevel and strategy.position_size == 0 and barsSinceLastTrade >= barsBetweenTrades
shortCondition = k > overboughtLevel and strategy.position_size == 0 and barsSinceLastTrade >= barsBetweenTrades

// Entry/Exit Orders
if longCondition
    strategy.entry("Long", strategy.long, qty=positionSize)
    strategy.exit("Long Exit", "Long", stop=close - stopLoss, limit=close + takeProfit)
    lastTradeBar := bar_index // Update last trade bar
if shortCondition
    strategy.entry("Short", strategy.short, qty=positionSize)
    strategy.exit("Short Exit", "Short", stop=close + stopLoss, limit=close - takeProfit)
    lastTradeBar := bar_index // Update last trade bar

// Plot Stochastic
plot(k, color=color.blue, title="%K")
plot(d, color=color.orange, title="%D")
hline(overboughtLevel, color=color.red, title="Overbought")
hline(oversoldLevel, color=color.green, title="Oversold")



関連性

もっと