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

SMA-RSI-MACD マルチインジケータ ダイナミック・リミット・オーダー・トレーディング・戦略

作者: リン・ハーンチャオチャン開催日:2024年12月11日 15:15:49
タグ:SMARSIマックドエイマ

img

概要

この戦略は,主にEMAクロスオーバー,RSIオーバーセール条件,MACDゴールデンクロスを取引確認に使用するマルチテクニカルインジケーター取引システムである. リスク管理のためのダイナミックなリミットオーダーと複数の出口メカニズムを使用する. この戦略は,トレード信号をフィルタリングするために,相対強度指数 (RSI) と移動平均収束差異 (MACD) と組み合わせて,主要トレンドインジケーターとして9期および21期指数的な移動平均値 (EMA) を使用する.

戦略の原則

取引の基本論理には次の主要な要素が含まれます.

  1. 9 期間の EMA が 21 期間の EMA を越えるとき,エントリー信号が発信されます.
  2. 入場価格は,指定されたオフセットで9期間のEMAの下の制限オーダーとして設定されます.
  3. トレード確認には,RSIが値以下でMACDが黄金クロスである必要があります.
  4. 出口シグナルには,MACDデッドクロス,固定利益/損失ポイント,市場終了時の強制閉店が含まれます.
  5. 取引時間は午前9時30分から午後3時10分までです

この戦略は,より良いエントリー価格を達成するためにエントリー制限オーダーを使用し,複数の技術指標を組み合わせて取引の精度を向上させます.

戦略 の 利点

  1. 複数の信号の確認メカニズムは取引の信頼性を向上させる
  2. 制限オーダーのエントリにより良い実行価格を提供します.
  3. 固定利益/損失ポイントはリスク管理を容易にする
  4. 市場末端での強制閉店は,一夜間のリスクを排除する
  5. 取引時間制限は,開場変動を回避する
  6. EMA インディケーターは,傾向反応を迅速にする
  7. RSIとMACDの組み合わせは,誤った信号をフィルタリングするのに役立ちます.

戦略リスク

  1. 複数の信号の確認が機会を逃す可能性があります
  2. 制限オーダーは,急速な価格変動では実行されない可能性があります.
  3. 固定ポイントストップは高波動期に大きな損失をもたらす可能性があります.
  4. MACD信号は価格動きに遅れることがあります.
  5. 戦略は市場変動の変化を考慮しない
  6. パラメータの最適化によりオーバーフィッティングが発生する

戦略の最適化方向

  1. 市場変動に基づいて 適応性のあるストップ・ロストとテイク・プロフィートポイントを導入する
  2. 追加確認信号として音量指標を追加する
  3. トレンド強度フィルターを追加する
  4. ATR を使って制限順序のオフセット計算を最適化する
  5. 不良条件をフィルターするために市場情勢指標を含みます.
  6. 信号強度に基づいて位置サイズメカニズムを追加

概要

この戦略は,移動平均値を使用してトレンドを特定し,RSIとMACDでシグナルをフィルタリングし,リミットオーダーと複数のストップメカニズムを通じてリスクを制御する,よく構造化されたマルチインジケータ取引戦略である.この戦略の強みは,信号信頼性と包括的なリスク制御にあるが,信号遅延とパラメータ最適化という課題に直面している.動的パラメータ調整と追加の補助指標を通じて改善の余地が大きい.トレンド市場状況における保守的な投資家には適している.


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

//@version=5
strategy("SMA 9 & 21 with RSI and MACD Buy Strategy", overlay=true)

// Inputs for Simple Moving Averages
sma_short = ta.ema(close, 9)
sma_long = ta.ema(close, 21)

// Plotting SMA
plot(sma_short, color=color.green, title="SMA 9")
plot(sma_long, color=color.red, title="SMA 21")

// RSI Calculation
rsi_length = input.int(14, title="RSI Length")
rsi_threshold = input.int(70, title="RSI Threshold")
rsi = ta.rsi(close, rsi_length)

// MACD Calculation
macd_fast = input.int(8, title="MACD Fast Length")
macd_slow = input.int(18, title="MACD Slow Length")
macd_signal = input.int(6, title="MACD Signal Length")
[macd_line, signal_line, _] = ta.macd(close, macd_fast, macd_slow, macd_signal)

// Inputs for Limit Order Offset
limit_offset = input.int(50, title="Limit Order Offset", minval=1)  // 50 points below 9 EMA

// User input for specific date
simulationStartDate = input(timestamp("2024-12-01 00:00"), title="Simulation Start Date", group = "Simulation Dates")
simulationEndDate = input(timestamp("2024-12-30 00:00"), title="Simulation End Date", group = "Simulation Dates")

// Declare limit_price as float
var float limit_price = na

// Calculate Limit Order Price
if (sma_short[1] < sma_long[1] and sma_short > sma_long)  // 9 EMA crosses above 21 EMA
    limit_price := sma_short - limit_offset

// Buy Signal Condition (only on the specified date)
buy_condition = not na(limit_price) and rsi < rsi_threshold and ta.crossover(macd_line, signal_line) 

// Sell Signal Condition (MACD crossover down)
sell_condition = ta.crossunder(macd_line, signal_line)

// Track Entry Price for Point-Based Exit
var float entry_price = na

if (buy_condition )
    strategy.order("Buy", strategy.long, comment="Limit Order at 9 EMA - Offset", limit=limit_price)
    label.new(bar_index, limit_price, "Limit Buy", style=label.style_label_up, color=color.green, textcolor=color.white)
    entry_price := limit_price  // Set entry price

// Exit Conditions
exit_by_macd = sell_condition
exit_by_points = not na(entry_price) and ((close >= entry_price + 12) or (close <= entry_price - 12))  // Adjust as per exit points

// Exit all positions at the end of the day
if hour == 15 and minute > 10 and strategy.position_size > 0
    strategy.close_all()  // Close all positions at the end of the day
    strategy.cancel_all()  

// Exit based on sell signal or point movement
if (exit_by_macd or exit_by_points  and strategy.position_size > 0 )
    strategy.close("Buy")
    label.new(bar_index, close, "Close", style=label.style_label_down, color=color.red, textcolor=color.white)

 

関連性

もっと