Trend Rata-rata Gerak bertahap Mengikuti Strategi

Penulis:ChaoZhang, Tanggal: 2023-10-26 17:08:43
Tag:

img

Gambaran umum

Strategi Mengikuti Tren Rata-rata Bergerak bertahap menggunakan beberapa rata-rata bergerak dari periode yang berbeda untuk menangkap perubahan tren harga, dikombinasikan dengan indikator osilator untuk menentukan area overbought dan oversold, membentuk tren pembelian rendah dan penjualan tinggi mengikuti strategi perdagangan. Strategi ini cocok untuk posisi kepemilikan jangka menengah hingga panjang untuk melacak tren pasar penting.

Logika Strategi

Strategi ini menggunakan beberapa set rata-rata bergerak, seperti 18-, 26-, 36-periode MAs, untuk menangkap tren harga. Ketika MAs yang lebih pendek melintasi di atas MAs yang lebih panjang, itu menandakan tren naik, sehingga pergi panjang. Ketika MAs yang lebih pendek melintasi di bawah MAs yang lebih panjang, itu menunjukkan tren menurun, sehingga pergi pendek.

Sementara itu, indikator osilator seperti MACD, RSI, EFI digunakan untuk mengidentifikasi kondisi overbought dan oversold. Misalnya, MACD berputar dari negatif ke positif menunjukkan pergi panjang, sementara berputar dari positif ke negatif menunjukkan pergi pendek. RSI mundur dari tingkat tinggi adalah sinyal untuk shorting, sementara rebound dari tingkat rendah adalah sinyal untuk pergi panjang. EFI di bawah 0 berarti pergi panjang, sementara di atas 0 berarti pergi pendek.

Aturan masuk:

Long: Crossover MA pendek ke atas Long MA AND MACD>0 AND RSI rebound dari terendah AND EFI<0

Short: Crossover MA pendek ke bawah Long MA AND MACD<0 AND RSI retreat dari high AND EFI>0

Aturan stop loss:

Long SL: EFI di atas ambang dan harga di bawah MA yang ditentukan

Short SL: EFI di bawah ambang dan harga di atas MA yang ditentukan

Keuntungan

  1. Beberapa MAs menangkap titik perubahan tren utama.

  2. Kombinasi osilator menghindari mengejar puncak dan menjual terendah.

  3. Aturan SL mempertimbangkan tren dan arus uang, secara efektif mengendalikan risiko.

  4. Parameter dioptimalkan melalui backtesting yang luas, adaptif untuk sebagian besar lingkungan pasar.

  5. Frekuensi perdagangan sedang, sinyal stabil, cocok untuk pelacakan tren jangka panjang.

Risiko

  1. Kecelakaan mendadak dapat membatalkan SL, rentang SL harus diperluas.

  2. Terlalu banyak sinyal selama pasar rentang, parameter harus disesuaikan.

  3. Menyimpan terlalu lama dapat memperkuat kerugian, MAs yang lebih pendek dapat mengambil SL lebih cepat.

  4. Backtest overfitting, hasil perdagangan nyata menunggu validasi.

Peningkatan

  1. Mengoptimalkan parameter untuk pengembalian yang lebih tinggi dan frekuensi yang tepat.

  2. Tambahkan algoritma pembelajaran mesin untuk mengoptimalkan parameter secara dinamis.

  3. Membangun mekanisme SL adaptif berdasarkan kondisi pasar yang berbeda.

  4. Tambahkan filter untuk menentukan sinyal masuk yang lebih baik.

  5. Menggabungkan strategi ukuran posisi untuk mengontrol ukuran taruhan tunggal.

Kesimpulan

Strategi Mengikuti Tren Rata-rata Bergerak bertahap secara efektif melacak tren utama dengan mengidentifikasi arah tren dengan beberapa MAs dan memasuki sinyal yang disaring, mencapai keuntungan yang stabil melalui kepemilikan jangka panjang. Strategi ini telah menunjukkan ketahanan melalui optimasi parameter tetapi masih membutuhkan peningkatan dalam pengendalian risiko dan adaptivitas untuk mengurangi penarikan dan meningkatkan tingkat kemenangan. Secara keseluruhan, filosofi inti menunjukkan potensi yang kuat untuk penelitian dan aplikasi lebih lanjut.


/*backtest
start: 2023-09-25 00:00:00
end: 2023-10-25 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © murdocksilva

//@version=5

strategy("Daily_Mid Term_Consulting BOLT")

//calculo longuitud
longuitud = input(58, title= "longitud_sma")


px = ta.sma(close, 1)
px2 = ta.sma(low, 1)

Length1 = input.int(18)
Length2 = input.int(18)
Length3 = input.int(26)
Length4 = input.int(36)
Length5 = input.int(78)
Length6 = input.int(1)
Length7 = input.int(1500)
Length8 = input.int(58)
Length9 = input.int(3000)
Length10 = input.int(2)
Length11 = input.int(14)
ma1 = ta.sma(low, Length1)
ma2 = ta.sma(high, Length2)
ma3 = ta.sma(close, Length3)
ma4 = ta.sma(close, Length4)
ma5 = ta.sma(close, Length5)
ma6 = ta.sma(close, Length6)
ma7 = ta.sma(close, Length7)
ma8 = ta.sma(close, Length8)
ma9 = ta.sma(close, Length9)
ma10 = ta.sma(close, Length10)
ma11 = ta.sma(close, Length11)

// calculo EFI
efi = (close[1]-close) * volume / 1000
efi_indicador = (efi[1] + efi) / 2

//Variable  RSI - calculo desv estandar
b = (px-ma10)*(px-ma10)
b2 = (px[1]-ma10[1])*(px[1]-ma10[1])
c = b + b2
c2 = c / 2
desv = math.sqrt(c2)/10

//calculo MACD
macd = ma4 - ma5

//calculo RSI
rsi = ta.rsi(close, 9)

// calculo Divergencia
ma = ta.sma(close, longuitud)
dist = close - ma
porcentaje = dist * 100 / close
ma_dista = ta.sma(porcentaje, 333)

//condición de entrada y salida long
long = ma1[1] < ma1 and ma2[1] < ma2 and macd > 0 and px > ma3 and efi_indicador < 9 and px > ma7 and macd[1] < macd
clong = efi_indicador > 22000 and px < ma8
strategy.entry("BUY", strategy.long, when = long)
strategy.close("BUY", when = clong)

//condición de entrada y salida short
short = ma1[1] > ma1 and ma2[1] > ma2 and macd < 0 and px < ma3 and efi_indicador > 9 and macd[1] > macd 
cshort =  efi_indicador < 14000 and px > ma8 and ma11 > desv
strategy.entry("SELL", strategy.short, when = short)
strategy.close("SELL", when = cshort)

//SL Y TP
//strategy.exit("long exit", "Daily_Mid Term_Consulting BOLT", profit = close * 40 / syminfo.mintick, loss = close * 0.02 / syminfo.mintick)
//strategy.exit("shot exit", "Daily_Mid Term_Consulting BOLT", profit = close * 40 / syminfo.mintick, loss = close * 0.02 / syminfo.mintick)

// GRAFICA smas
plot(ma1, color=color.new(color.orange, 0))
plot(ma2, color=color.new(color.orange, 0))
plot(ma3, color=color.new(color.orange, 0))
plot(ma4, color=color.new(color.orange, 0))
plot(ma5, color=color.new(color.orange, 0))
plot(ma6, color=color.new(color.green, 0))
plot(ma7, color=color.new(color.orange, 0))
plot(ma8, color=color.new(color.orange, 0))
plot(ma9, color=color.new(color.orange, 0))
//GRAFICA MACD
plot(macd, color=color.new(color.red, 0), style = plot.style_columns)
//GRAFICA DIVERGENCIA
plot(porcentaje, style = plot.style_columns)
//GRAFICA MA DIVERGENCIA
plot(ma_dista, color=color.new(color.white, 0))
//GRAFICA MA DIVERGENCIA
plot(desv, color=color.new(color.blue, 0))
//GRAFICA EFI
plot(efi_indicador, color=color.new(color.yellow, 0))
// GRAFICA RSI
l1 = hline(70, color=color.new(color.green, 0))
l2 = hline(30, color=color.new(color.green, 0))
plot(rsi, color=color.new(color.white, 0))




//prueba 1 stop loss and take profit
//sl = 0.05
//tp = 0.1    
//calculo de precio para sl y tp
//longstop=strategy.position_avg_price*(1-sl)
//longprofit=strategy.position_avg_price*(1+tp)

//shortstop=strategy.position_avg_price*(1+sl)
//shortprofit=strategy.position_avg_price*(1-tp)

//if (long)
  //  strategy.exit("BUY", strategy.long)

//sl and tp  long|short
//if strategy.entry("BUY", strategy.long)

//if strategy.position_avg_price > 0
//strategy.exit("BUY", limit = longprofit, stop = longstop)

//if strategy.position_avg_price < 0
//strategy.exit("SELL", limit = shortprofit, stop=shortstop)

Lebih banyak