Strategi Mengikuti Trend Saluran Purata Pergerakan Berganda

SMA EMA RSI MACD
Tarikh penciptaan: 2024-09-26 16:28:19 Akhirnya diubah suai: 2024-09-26 16:28:19
Salin: 2 Bilangan klik: 748
1
fokus pada
1617
Pengikut

Strategi Mengikuti Trend Saluran Purata Pergerakan Berganda

Gambaran keseluruhan

Strategi ini adalah sistem pengesanan trend yang berdasarkan garis dua rata-rata dan saluran. Ia menggunakan isyarat silang purata bergerak jangka pendek dan jangka panjang, digabungkan dengan saluran yang dibentuk oleh purata bergerak indeks ((EMA), untuk menangkap trend pasaran dan melakukan perdagangan.

Prinsip Strategi

Logik teras strategi merangkumi bahagian penting berikut:

  1. Menggunakan dua purata bergerak mudah ((SMA)) sebagai penunjuk trend utama, iaitu 55 dan 300 kitaran SMA.
  2. Menggunakan dua purata bergerak indeks ((EMA) membentuk saluran perdagangan, iaitu EMA 576 dan 676 kitaran.
  3. Apabila SMA jangka pendek memakai SMA atau EMA jangka panjang, ia akan mencetuskan isyarat ganda; apabila SMA jangka pendek memakai SMA atau EMA jangka panjang, ia akan mencetuskan isyarat kosong.
  4. Menggunakan strategi berhenti dan hentikan dengan jumlah mata tetap, berhenti ditetapkan sebagai 170 dari harga masuk, dan hentikan ditetapkan sebagai 1140 dari harga masuk.
  5. Apabila keuntungan mencapai 300 mata, menghidupkan mekanisme hentian bergerak untuk melindungi keuntungan yang telah diperoleh.
  6. Strategi ini juga merangkumi syarat-syarat kedudukan rata, seperti kedudukan rata automatik apabila harga menyentuh titik stop loss atau stop loss.

Kelebihan Strategik

  1. Gabungan pelbagai indikator: meningkatkan ketepatan penilaian trend dengan menggabungkan pelbagai purata bergerak dan saluran EMA.
  2. Perdagangan dua hala: Strategi ini boleh menghasilkan keuntungan di pasaran bertopeng dan kosong, meningkatkan kecekapan penggunaan dana.
  3. Pengurusan risiko: Menggunakan stop loss dan stop loss dengan nilai tetap untuk mengawal risiko setiap dagangan.
  4. Perlindungan keuntungan: Menggunakan mekanisme berhenti bergerak untuk mengunci sebahagian keuntungan semasa trend berterusan.
  5. Fleksibiliti: parameter strategi boleh disesuaikan untuk menyesuaikan diri dengan keadaan pasaran yang berbeza.

Risiko Strategik

  1. Risiko pasaran bergolak: Dalam pasaran bergolak, isyarat palsu mungkin sering dicetuskan, menyebabkan kerugian berturut-turut.
  2. Risiko tergelincir: Dalam pasaran yang sangat tidak menentu, harga sebenar mungkin jauh dari harga yang diingini.
  3. Terlalu banyak dagangan: isyarat dagangan yang kerap boleh menyebabkan kos dagangan yang terlalu tinggi.
  4. Sensitiviti parameter: Prestasi strategi mungkin sangat sensitif kepada tetapan parameter, dan mungkin memerlukan penyesuaian yang kerap dalam keadaan pasaran yang berbeza.

Arah pengoptimuman strategi

  1. Pengenalan penunjuk kadar turun naik: Pertimbangkan untuk menambah ATR (rangkaian purata sebenar) untuk secara dinamik menyesuaikan titik hentian dan titik hentian untuk menyesuaikan diri dengan keadaan pasaran yang berbeza.
  2. Meningkatkan penapisan kekuatan trend: ADX boleh diperkenalkan untuk menapis isyarat trend yang lemah, mengurangkan kerugian akibat penembusan palsu.
  3. Optimumkan masa masuk: Pertimbangkan untuk menggabungkan RSI (indikator kekuatan relatif) atau MACD (dispersi keseragaman rata-rata bergerak) untuk mengoptimumkan masa masuk, meningkatkan kadar kemenangan.
  4. Pengurusan dana yang dioptimumkan: Mengendalikan kedudukan yang dinamik, menyesuaikan peratusan dana untuk setiap transaksi mengikut nilai bersih akaun dan turun naik pasaran.
  5. Pelancaran kitaran tinjauan: Strategi diuji dalam kitaran masa yang lebih lama untuk mengesahkan kestabilan dalam keadaan pasaran yang berbeza.

ringkaskan

Strategi pengesanan trend saluran dua hala ini menyediakan sistem perdagangan yang komprehensif dengan menggabungkan beberapa petunjuk teknikal. Ia bukan sahaja dapat menangkap trend utama, tetapi juga mempunyai mekanisme pengurusan risiko dan perlindungan keuntungan. Walaupun terdapat beberapa risiko yang berpotensi, strategi ini mempunyai potensi untuk berfungsi dengan baik dalam pelbagai keadaan pasaran melalui pengoptimuman berterusan dan penyesuaian parameter. Arah pengoptimuman masa depan harus memberi tumpuan kepada peningkatan kualiti isyarat, peningkatan pengurusan risiko dan penambahan strategi adaptasi.

Kod sumber 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)