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

ストップ・ロスの動的多期RSIトレンド 戦略に従う

作者: リン・ハーンチャオチャン開催日:2024年12月5日 16:25:17
タグ:RSIエイマATR

img

概要

この戦略は,技術指標の組み合わせに基づいたトレンドフォロー戦略であり,主にRSIオーバーバイト/オーバーセール条件,EMAクロスオーバー,ダイナミックストップロスの取引を使用している.この戦略は,リターンを増幅するためにレバレッジと組み合わせて1.5%のリスク制御を使用している.その核心は,資本を保護するためにダイナミックなテイク・プロフィートとストップロスのレベルを使用しながら,複数の技術指標を通じてトレンドを確認することである.この戦略は,迅速かつ頻繁な取引に適した小型口座の特徴のために特別に設計されている.

戦略の原則

この戦略は,RSI (相対強度指数),EMA (指数移動平均値),ATR (平均真の範囲) の3つの主要な技術指標を使用している.エントリーシグナルは,短期EMA (9期) と長期EMA (21期) のクロスオーバーによって確認され,RSIが合理的な範囲内である必要があります (長RSI<70,短RSI>30).この戦略は,ATRベースのダイナミックストップ・ロスを採用し,ストップ・ロスの4倍に設定されたメリット・テイクレベルを使用して,リスクを制御しながら利益保護を可能にします.各取引は,潜在的な利益を増強するために2倍レバレッジを使用して,口座の1.5%をリスクします.

戦略 の 利点

  1. 厳格なリスク管理: リスク管理の固定割合,各取引リスクを1.5%に制限
  2. ダイナミックストップ・ロスの設計:ATRベースのダイナミックストップは市場の変動により良く適応する
  3. 複数の信号の確認: RSI でフィルタリングされた EMA クロスオーバーは信号の信頼性を向上させる
  4. リスク・リターン比の最適化: 4倍のストップ・ロスの利得は,期待される利回りがより良くなることを有利にします
  5. 小規模な口座に適している: 適度なレバレッジは収益の可能性を高める
  6. 高度な自動化: 市場条件の最適化のためにすべてのパラメータを調整可能

戦略リスク

  1. 市場変動リスク: 変動する市場で頻繁にストップ・ロスを可能とする
  2. 利息リスク: 2倍の利息が損失を拡大する
  3. 誤ったブレイクリスク: EMAのクロスオーバーは誤った信号を生む可能性があります
  4. スリップリスク: 急速な市場では,重大なスリップが可能です.
  5. 資金管理リスク: 適切なポジションサイズ管理を必要とする

戦略の最適化方向

  1. トレンドフィルターを追加: 長期トレンド決定を組み込む
  2. 入口時間を最適化します. 容量指標を使用して入口点を改善します.
  3. 動的パラメータ調整: 変動に基づいてATR倍数を自動的に調整する
  4. 市場情勢指標を導入:高リスク市場環境をフィルタリング
  5. 強化されたマネー管理: 動的ポジションサイズメカニズムを追加

概要

これは,トレード成功率を改善するために複数の技術指標を使用する,よく設計されたトレンドフォロー戦略である.この戦略は,小規模なアカウントに適した包括的なリスク管理メカニズムを備えている.しかし,ライブトレーディングでは,異なる市場の状態に適応するために,適時なパラメータ調整で,変化する市場状況に注意を払わなければならない.ライブ実装の前に徹底的なバックテストを行い,小規模なポジションを使用して戦略の特徴に徐々に適応することを推奨する.


/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-04 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Aggressive Scalper Strategy", overlay=true)

// Parameters
account_balance = input.float(28.37, title="Account Balance", tooltip="Update this with your balance")
risk_per_trade = input.float(0.015, title="Risk per Trade", tooltip="1.5% risk")
leverage = input.int(2, title="Leverage", minval=1)
stop_loss_percentage = input.float(0.015, title="Stop Loss Percentage", tooltip="1.5% stop loss")
take_profit_multiplier = input.float(4, title="Take Profit Multiplier", tooltip="Take Profit is 4x Stop Loss")
stop_loss_multiplier = input.float(2, title="Stop Loss Multiplier", tooltip="Dynamic Stop Loss Multiplier")

// Trade Size Calculation
position_size = account_balance * risk_per_trade / (stop_loss_percentage / leverage)
trade_qty = position_size / close // This gives you the qty in terms of contracts

// Indicators
rsiLength = input.int(14, title="RSI Length")
emaShort = input.int(9, title="Short-term EMA Length")
emaLong = input.int(21, title="Long-term EMA Length")
rsi = ta.rsi(close, rsiLength)
emaShortLine = ta.ema(close, emaShort)
emaLongLine = ta.ema(close, emaLong)

// Entry Conditions
longCondition = ta.crossover(emaShortLine, emaLongLine) and rsi < 70
shortCondition = ta.crossunder(emaShortLine, emaLongLine) and rsi > 30

// ATR for dynamic stop loss and take profit levels
atrLength = input.int(14, title="ATR Length")
atrMultiplier = input.float(1.5, title="ATR Multiplier")
atr = ta.atr(atrLength)

// Dynamic Take Profit and Stop Loss Levels
longTakeProfitLevel = close + (atr * take_profit_multiplier)
longStopLossLevel = close - (atr * stop_loss_multiplier)
shortTakeProfitLevel = close - (atr * take_profit_multiplier)
shortStopLossLevel = close + (atr * stop_loss_multiplier)

// Strategy Execution
if (longCondition)
    strategy.entry("Long", strategy.long, qty=trade_qty)
    strategy.exit("Take Profit/Stop Loss", from_entry="Long", limit=longTakeProfitLevel, stop=longStopLossLevel)

if (shortCondition)
    strategy.entry("Short", strategy.short, qty=trade_qty)
    strategy.exit("Take Profit/Stop Loss", from_entry="Short", limit=shortTakeProfitLevel, stop=shortStopLossLevel)

// Alert Conditions
alertcondition(longCondition, title="Buy Signal", message="Long position entry signal detected.")
alertcondition(shortCondition, title="Sell Signal", message="Short position entry signal detected.")

// Display Information on Chart
var table_info = table.new(position.top_right, 2, 2, frame_color=color.blue, frame_width=1)
if (bar_index == na)
    table.cell(table_info, 0, 0, text="Aggressive Scalper", bgcolor=color.blue)
    table.cell(table_info, 1, 0, text="Account Balance: $" + str.tostring(account_balance), text_color=color.white)
    table.cell(table_info, 1, 1, text="Risk per Trade: " + str.tostring(risk_per_trade * 100) + "%", text_color=color.white)
    table.cell(table_info, 0, 1, text="Leverage: " + str.tostring(leverage) + "x", text_color=color.white)


関連性

もっと