Sumber daya yang dimuat... Pemuatan...

Tren Saluran Rata-rata Bergerak Ganda Mengikuti Strategi

Penulis:ChaoZhangTanggal: 2024-09-26 16:28:19
Tag:SMAEMARSIMACD

img

Gambaran umum

Strategi ini adalah sistem mengikuti tren berdasarkan pada rata-rata bergerak dan saluran ganda. Strategi ini menggunakan sinyal silang dari rata-rata bergerak jangka pendek dan jangka panjang, dikombinasikan dengan saluran yang dibentuk oleh rata-rata bergerak eksponensial (EMA), untuk menangkap tren pasar dan mengeksekusi perdagangan. Strategi ini berlaku untuk posisi panjang dan pendek, menggunakan mekanisme stop-loss dan take-profit untuk manajemen risiko dan keuntungan.

Prinsip Strategi

Logika inti dari strategi mencakup komponen utama berikut:

  1. Dua Simple Moving Averages (SMA) sebagai indikator tren utama: SMA 55 periode dan 300 periode.
  2. Dua Exponential Moving Averages (EMA) membentuk saluran perdagangan: 576-periode dan 676-periode EMA.
  3. Sinyal masuk panjang dipicu ketika SMA jangka pendek melintasi SMA jangka panjang atau EMA; sinyal masuk pendek terjadi ketika SMA jangka pendek melintasi SMA jangka panjang atau EMA.
  4. Strategi stop loss dan take profit titik tetap, dengan stop loss ditetapkan pada 1/70 dari harga masuk dan take profit pada 1/140 dari harga masuk.
  5. Mekanisme trailing stop diaktifkan ketika keuntungan mencapai 300 poin untuk melindungi keuntungan akumulasi.
  6. Strategi ini mencakup kondisi keluar, seperti penutupan posisi otomatis ketika harga mencapai level stop-loss atau take-profit.

Keuntungan Strategi

  1. Integrasi multi-indikator: Menggabungkan beberapa moving average dan saluran EMA meningkatkan akurasi identifikasi tren.
  2. Perdagangan bidirectional: Strategi ini dapat menghasilkan keuntungan di pasar bullish dan bearish, meningkatkan efisiensi modal.
  3. Manajemen risiko: Menggunakan stop-loss dan take-profit titik tetap, secara efektif mengendalikan risiko untuk setiap perdagangan.
  4. Perlindungan keuntungan: Menggunakan mekanisme trailing stop untuk mengunci keuntungan parsial selama tren berkelanjutan.
  5. Fleksibilitas: Parameter strategi dapat disesuaikan untuk beradaptasi dengan kondisi pasar yang berbeda.

Risiko Strategi

  1. Risiko pasar yang bervariasi: Di pasar samping, sinyal palsu yang sering dapat menyebabkan kerugian berturut-turut.
  2. Risiko tergelincir: Di pasar yang sangat volatile, harga eksekusi yang sebenarnya dapat menyimpang secara signifikan dari harga ideal.
  3. Overtrading: Sinyal perdagangan yang sering dapat mengakibatkan biaya transaksi yang berlebihan.
  4. Sensitivitas parameter: Kinerja strategi mungkin sangat sensitif terhadap pengaturan parameter, berpotensi memerlukan penyesuaian yang sering untuk lingkungan pasar yang berbeda.

Arah Optimasi Strategi

  1. Menggabungkan indikator volatilitas: Pertimbangkan untuk menambahkan ATR (Average True Range) untuk menyesuaikan secara dinamis tingkat stop-loss dan take-profit, beradaptasi dengan volatilitas pasar yang bervariasi.
  2. Meningkatkan penyaringan kekuatan tren: Memperkenalkan ADX (Indeks Arah Rata-rata) untuk menyaring sinyal tren yang lemah, mengurangi kerugian dari pecah palsu.
  3. Optimalkan waktu masuk: Pertimbangkan untuk menggabungkan RSI (Relative Strength Index) atau MACD (Moving Average Convergence Divergence) untuk meningkatkan waktu masuk dan meningkatkan tingkat kemenangan.
  4. Memperbaiki manajemen uang: Menerapkan ukuran posisi dinamis, menyesuaikan ukuran perdagangan berdasarkan ekuitas akun dan volatilitas pasar.
  5. Perpanjang periode backtesting: Lakukan backtest jangka panjang untuk memverifikasi stabilitas strategi di berbagai lingkungan pasar.

Kesimpulan

Strategi ini menyediakan sistem perdagangan yang komprehensif dengan menggabungkan beberapa indikator teknis. Strategi ini tidak hanya menangkap tren utama tetapi juga menggabungkan manajemen risiko dan mekanisme perlindungan keuntungan. Meskipun beberapa risiko potensial ada, melalui optimasi terus menerus dan penyesuaian parameter, strategi ini memiliki potensi untuk berkinerja baik dalam berbagai kondisi pasar. Optimasi di masa depan harus berfokus pada peningkatan kualitas sinyal, meningkatkan manajemen risiko, dan meningkatkan kemampuan adaptasi strategi.


/*backtest
start: 2024-08-26 00:00:00
end: 2024-09-24 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("RC BTC Vegas 5min free ", overlay=true )

// 定义输入参数
short_ma_length = input.int(55, title="Short MA Length")
long_ma_length = input.int(300, title="Long MA Length")

ema1_length = input.int(576, title="EMA 1 Length")
ema2_length = input.int(676, title="EMA 2 Length")
// 计算移动平均线 
short_ma = ta.sma(close, short_ma_length)
long_ma = ta.sma(close, long_ma_length)
ema1 = ta.ema(close, ema1_length)
ema2 = ta.ema(close, ema2_length)
// 确定买入和卖出信号 
enter_long = ta.crossover(short_ma +5 , ema1)
enter_long2 = ta.crossover(short_ma +5 , long_ma)
enter_long3 =ta.crossover(long_ma+5  , ema1)

exit_long = ta.crossunder(short_ma -5, ema1) 
exit_long2 = ta.crossunder(short_ma -5, long_ma) 
exit_long3 = ta.crossunder(long_ma-5 , ema1)

// 记录进场价格
var float long_stop_loss = na
var float long_take_profit = na

if (enter_long or exit_long  )
    long_stop_loss := close

if (enter_long or exit_long)
    long_take_profit := close

// 根据进场价格计算止损和止盈点数 
stop_loss_points = long_stop_loss /70
take_profit_points  = long_take_profit /140
// 设置固定点数的止损和止
Along_stop_loss = close - stop_loss_points
Along_take_profit = close + take_profit_points
short_stop_loss = close + stop_loss_points
short_take_profit = close - take_profit_points

// 检查持仓利润是否达到300点
long_profit_target_reached = (strategy.position_size > 0 and (close - strategy.position_avg_price) >= take_profit_points)
short_profit_target_reached = (strategy.position_size < 0 and (strategy.position_avg_price - close) >= take_profit_points)

// 即时止损和止盈检查
long_stop_loss_hit = (strategy.position_size > 0 and close <= strategy.position_avg_price - stop_loss_points)
long_take_profit_hit = (strategy.position_size > 0 and close >= strategy.position_avg_price + take_profit_points)
short_stop_loss_hit = (strategy.position_size < 0 and close >= strategy.position_avg_price + stop_loss_points)
short_take_profit_hit = (strategy.position_size < 0 and close <= strategy.position_avg_price - take_profit_points)
// 上一根K棒的止盈止损检查
long_stop_loss_hit_prev = (strategy.position_size > 0 and low[1] <= strategy.position_avg_price - stop_loss_points)
long_take_profit_hit_prev = (strategy.position_size > 0 and high[1]>= strategy.position_avg_price + take_profit_points)
short_stop_loss_hit_prev = (strategy.position_size < 0 and high[1] >= strategy.position_avg_price + stop_loss_points)
short_take_profit_hit_prev = (strategy.position_size < 0 and low[1] <= strategy.position_avg_price - take_profit_points)

// 创建警报条件
alertcondition(long_stop_loss_hit, title="Long Stop Loss Hit", message="Long position stop loss hit")
alertcondition(long_take_profit_hit, title="Long Take Profit Hit", message="Long position take profit hit")
alertcondition(short_stop_loss_hit, title="Short Stop Loss Hit", message="Short position stop loss hit")
alertcondition(short_take_profit_hit, title="Short Take Profit Hit", message="Short position take profit hit")
// 移动止损输入
initialProfitLevel = input.float(9, title="Initial Profit Level (points)")
trailingStopIncrement = input.float(3, title="Trailing Stop Increment (points)")
if (close - long_take_profit >= 150)
    strategy.exit("多單移平", from_entry="Buy", trail_price=close+5 , trail_offset=5  )
if (close - long_take_profit <= -150)
    strategy.exit("空單移平", from_entry="Sell", trail_price=close-5 , trail_offset=5)

// 执行多单交易
if (enter_long or enter_long2  )
    strategy.entry("Buy", strategy.long, qty=1 , comment = "做多")

if (long_stop_loss_hit or long_take_profit_hit  ) 
    strategy.close("Buy",comment = "多單平倉")
//死亡交叉才跟著做空就打開
if (exit_long  or exit_long2  )
    strategy.entry("Sell" ,strategy.short, qty=1 , comment = "做空")

// 执行空单交易
if ( short_take_profit_hit or short_stop_loss_hit ) 
    strategy.close("Sell",comment = "空單平倉")

// 绘制移动平均线
plot(short_ma, title="Short MA", color=color.blue)
plot(long_ma, title="Long MA", color=color.red)

// 绘制进场和出场点
plotshape(series=enter_long, location=location.belowbar, color=color.green, style=shape.labelup, text="做多")
plotshape(series=exit_long , location=location.abovebar, color=color.red, style=shape.labeldown, text="做空") 
plotshape(series=long_take_profit_hit , location=location.abovebar, color=color.yellow, style=shape.labeldown, text="多單止盈")  
plotshape(series=short_take_profit_hit , location=location.abovebar, color=color.yellow, style=shape.labeldown, text="空單止盈") 
plotshape(series=short_stop_loss_hit , location=location.abovebar, color=color.black, style=shape.labeldown, text="空單止損") 
plotshape(series=long_stop_loss_hit , location=location.abovebar, color=color.black, style=shape.labeldown, text="多單止損") 
 
// 绘制止盈和止损点
plot(series=enter_long ? Along_take_profit : na, title="Take Profit", color=color.green, linewidth=2, style=plot.style_linebr)
plot(series=enter_long ? Along_stop_loss : na, title="Stop Loss", color=color.red, linewidth=2, style=plot.style_linebr)


Berkaitan

Lebih banyak