Sumber dimuat naik... memuat...

Trend Saluran Purata Bergerak Berganda Mengikuti Strategi

Penulis:ChaoZhang, Tarikh: 2024-09-26 16:28:19
Tag:SMAEMARSIMACD

img

Ringkasan

Strategi ini adalah sistem mengikuti trend berdasarkan purata dan saluran bergerak berganda. Ia menggunakan isyarat silang dari purata bergerak jangka pendek dan jangka panjang, digabungkan dengan saluran yang dibentuk oleh purata bergerak eksponensial (EMA), untuk menangkap trend pasaran dan melaksanakan perdagangan. Strategi ini boleh digunakan untuk kedua-dua kedudukan panjang dan pendek, menggunakan mekanisme henti rugi dan mengambil keuntungan untuk pengurusan risiko dan keuntungan.

Prinsip Strategi

  1. Dua purata bergerak mudah (SMA) sebagai penunjuk trend utama: SMA 55 tempoh dan 300 tempoh.
  2. Dua purata bergerak eksponen (EMA) membentuk saluran dagangan: 576-period dan 676-period EMA.
  3. Isyarat masuk panjang diaktifkan apabila SMA jangka pendek melintasi di atas SMA jangka panjang atau EMA; isyarat masuk pendek berlaku apabila SMA jangka pendek melintasi di bawah SMA jangka panjang atau EMA.
  4. Strategi stop-loss dan take-profit titik tetap, dengan stop-loss ditetapkan pada 1/70 daripada harga masuk dan mengambil keuntungan pada 1/140 daripada harga masuk.
  5. Mekanisme hentian pengangkutan diaktifkan apabila keuntungan mencapai 300 mata untuk melindungi keuntungan terkumpul.
  6. Strategi termasuk syarat keluar, seperti penutupan kedudukan automatik apabila harga mencapai tahap stop-loss atau mengambil keuntungan.

Kelebihan Strategi

  1. Integrasi pelbagai penunjuk: Menggabungkan pelbagai purata bergerak dan saluran EMA meningkatkan ketepatan pengenalan trend.
  2. Perdagangan dua arah: Strategi ini boleh memperoleh keuntungan di kedua-dua pasaran bullish dan bearish, meningkatkan kecekapan modal.
  3. Pengurusan risiko: Menggunakan titik berhenti kehilangan dan mengambil keuntungan yang tetap, mengawal risiko untuk setiap perdagangan dengan berkesan.
  4. Perlindungan keuntungan: Menggunakan mekanisme hentian untuk mengunci keuntungan separa semasa trend yang berterusan.
  5. Fleksibiliti: Parameter strategi boleh disesuaikan untuk menyesuaikan diri dengan keadaan pasaran yang berbeza.

Risiko Strategi

  1. Risiko pasaran yang merangkumi: Dalam pasaran sampingan, isyarat palsu yang kerap boleh membawa kepada kerugian berturut-turut.
  2. Risiko tergelincir: Di pasaran yang sangat tidak menentu, harga pelaksanaan sebenar mungkin jauh dari harga ideal.
  3. Overtrading: Isyarat perdagangan yang kerap boleh mengakibatkan kos transaksi yang berlebihan.
  4. Sensitiviti parameter: Prestasi strategi mungkin sangat sensitif terhadap tetapan parameter, berpotensi memerlukan penyesuaian yang kerap untuk persekitaran pasaran yang berbeza.

Arahan Pengoptimuman Strategi

  1. Menggabungkan penunjuk turun naik: Pertimbangkan untuk menambah ATR (Rentang Benar Purata) untuk menyesuaikan secara dinamik tahap stop-loss dan mengambil keuntungan, menyesuaikan diri dengan turun naik pasaran yang berbeza.
  2. Meningkatkan penapisan kekuatan trend: Memperkenalkan ADX (Indeks Arah Purata) untuk menapis isyarat trend yang lemah, mengurangkan kerugian daripada pecah palsu.
  3. Mengoptimumkan masa kemasukan: Pertimbangkan untuk menggabungkan RSI (Indeks Kekuatan Relatif) atau MACD (Divergensi Convergensi Purata Bergerak) untuk meningkatkan masa kemasukan dan meningkatkan kadar kemenangan.
  4. Memperbaiki pengurusan wang: Melaksanakan saiz kedudukan dinamik, menyesuaikan saiz perdagangan berdasarkan ekuiti akaun dan turun naik pasaran.
  5. Memperpanjang tempoh backtesting: Melakukan backtest jangka panjang untuk mengesahkan kestabilan strategi di pelbagai persekitaran pasaran.

Kesimpulan

Strategi trend berikut saluran purata bergerak berganda ini menyediakan sistem dagangan yang komprehensif dengan menggabungkan beberapa penunjuk teknikal. Ia bukan sahaja menangkap trend utama tetapi juga menggabungkan mekanisme pengurusan risiko dan perlindungan keuntungan. Walaupun terdapat beberapa risiko berpotensi, melalui pengoptimuman berterusan dan penyesuaian parameter, strategi ini mempunyai potensi untuk melakukan dengan baik dalam pelbagai keadaan pasaran. Pengoptimuman masa depan harus memberi tumpuan kepada meningkatkan kualiti isyarat, meningkatkan pengurusan risiko, dan meningkatkan kebolehsesuaian 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 lanjut