Strategi Mengikuti Tren Saluran Rata-rata Bergerak Ganda

SMA EMA RSI MACD
Tanggal Pembuatan: 2024-09-26 16:28:19 Akhirnya memodifikasi: 2024-09-26 16:28:19
menyalin: 2 Jumlah klik: 748
1
fokus pada
1617
Pengikut

Strategi Mengikuti Tren Saluran Rata-rata Bergerak Ganda

Ringkasan

Strategi ini adalah sistem pelacakan tren yang didasarkan pada dua garis rata-rata dan saluran. Ini menggunakan sinyal silang dari rata-rata bergerak jangka pendek dan jangka panjang, digabungkan dengan saluran yang dibentuk oleh rata-rata bergerak indeks ((EMA), untuk menangkap tren pasar dan melakukan perdagangan. Strategi ini berlaku untuk pasar multihead dan kosong untuk mengelola risiko dan keuntungan dengan mengatur stop loss dan stop loss.

Prinsip Strategi

Logika inti dari strategi ini mencakup bagian-bagian utama berikut:

  1. Dua rata-rata bergerak sederhana (SMA) digunakan sebagai indikator tren utama, yaitu SMA 55 dan SMA 300.
  2. Saluran perdagangan dibentuk menggunakan dua rata-rata bergerak indeks ((EMA), yaitu 576 siklus dan 676 siklus EMA.
  3. Ketika SMA jangka pendek memakai SMA atau EMA jangka panjang, memicu sinyal multi; ketika SMA jangka pendek memakai SMA atau EMA jangka panjang, memicu sinyal short.
  4. Strategi stop loss dan stop loss dengan poin tetap, dengan stop loss ditetapkan sebagai 170 dari harga masuk, dan stop loss ditetapkan sebagai 1140 dari harga masuk.
  5. Ketika keuntungan mencapai 300 poin, aktifkan Stop Loss Mobile untuk melindungi keuntungan yang telah diperoleh.
  6. Strategi ini juga menyertakan kondisi posisi terpadat, seperti posisi terpadat otomatis ketika harga mencapai titik stop loss atau stop loss.

Keunggulan Strategis

  1. Kombinasi multi-indikator: meningkatkan akurasi penilaian tren dengan menggabungkan beberapa moving average dan saluran EMA.
  2. Trading dua arah: Strategi ini dapat menghasilkan keuntungan baik di pasar multihead maupun di pasar kosong, meningkatkan efisiensi penggunaan dana.
  3. Pengelolaan risiko: Menggunakan stop loss dan stop loss dengan nilai tetap untuk mengontrol risiko setiap transaksi secara efektif.
  4. Perlindungan keuntungan: Menggunakan mekanisme stop loss bergerak untuk mengunci sebagian keuntungan jika tren berlanjut.
  5. Fleksibilitas: Parameter strategi dapat disesuaikan dengan kondisi pasar yang berbeda.

Risiko Strategis

  1. Risiko pasar bergoyang: Dalam pasar bergoyang horizontal, sinyal palsu dapat sering dipicu, yang menyebabkan kerugian berkelanjutan.
  2. Risiko slippage: Dalam pasar yang sangat fluktuatif, harga transaksi aktual mungkin jauh berbeda dari harga yang ideal.
  3. Terlalu banyak transaksi: seringnya sinyal transaksi dapat menyebabkan biaya transaksi yang terlalu tinggi.
  4. Sensitivitas parameter: Kinerja strategi mungkin sangat sensitif terhadap pengaturan parameter, yang mungkin memerlukan penyesuaian yang sering dilakukan dalam lingkungan pasar yang berbeda.

Arah optimasi strategi

  1. Memperkenalkan indikator volatilitas: Pertimbangkan untuk menambahkan ATR (Average True Range) untuk secara dinamis menyesuaikan stop loss dan stop loss untuk menyesuaikan dengan berbagai kondisi pasar yang berfluktuasi.
  2. Meningkatkan intensitas filter tren: ADX dapat diperkenalkan untuk menyaring sinyal tren lemah, mengurangi kerugian yang disebabkan oleh false breakout.
  3. Optimalkan waktu masuk: Pertimbangkan kombinasi RSI (indicator kekuatan relatif) atau MACD (dispersi konvergensi rata-rata bergerak) untuk mengoptimalkan waktu masuk, meningkatkan peluang menang.
  4. Pengelolaan dana yang optimal: Mengimplementasikan manajemen posisi yang dinamis, menyesuaikan proporsi dana untuk setiap transaksi sesuai dengan nilai bersih akun dan fluktuasi pasar.
  5. Ekstensi siklus pengembalian: Strategi diuji kembali dalam periode waktu yang lebih lama untuk memverifikasi stabilitasnya dalam berbagai lingkungan pasar.

Meringkaskan

Strategi pelacakan tren dua saluran ini menyediakan sistem perdagangan yang komprehensif dengan menggabungkan beberapa indikator teknis. Strategi ini tidak hanya mampu menangkap tren utama, tetapi juga memiliki mekanisme manajemen risiko dan perlindungan keuntungan. Meskipun ada beberapa risiko potensial, strategi ini memiliki potensi untuk berkinerja baik dalam berbagai kondisi pasar melalui optimasi berkelanjutan dan penyesuaian parameter.

Kode 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)