Trend purata bergerak secara beransur-ansur mengikut strategi

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

img

Ringkasan

Strategi Mengikuti Trend Purata Bergerak Secara Bertahap menggunakan pelbagai purata bergerak dari tempoh yang berbeza untuk menangkap perubahan trend harga, digabungkan dengan penunjuk osilator untuk menentukan kawasan overbought dan oversold, membentuk trend pembelian rendah dan penjualan tinggi mengikuti strategi perdagangan. Strategi ini sesuai untuk memegang kedudukan jangka sederhana hingga panjang untuk mengesan pasaran trend penting.

Logika Strategi

Strategi ini menggunakan pelbagai set purata bergerak, seperti 18-, 26-, 36-period MAs, untuk menangkap trend harga. Apabila MAs yang lebih pendek melintasi di atas MAs yang lebih lama, ia menandakan trend menaik, dengan itu pergi lama. Apabila MAs yang lebih pendek melintasi di bawah MAs yang lebih lama, ia menunjukkan trend menurun, dengan itu pergi pendek.

Sementara itu, penunjuk pengayun seperti MACD, RSI, EFI digunakan untuk mengenal pasti keadaan overbought dan oversold. Sebagai contoh, MACD bertukar dari negatif ke positif menunjukkan pergi panjang, sementara bertukar dari positif ke negatif menunjukkan pergi pendek. RSI mundur dari tahap yang tinggi adalah isyarat untuk shorting, sementara rebound dari tahap yang rendah adalah isyarat untuk pergi panjang. EFI di bawah 0 bermaksud pergi panjang, sementara di atas 0 bermaksud pergi pendek.

Peraturan kemasukan:

Long: Crossover MA pendek ke atas Long MA AND MACD>0 AND RSI rebounds daripada terendah AND EFI<0

Pendek: Pembebasan MA pendek ke bawah MA panjang dan MACD <0 dan RSI mundur dari tinggi dan EFI>0

Peraturan Stop Loss:

Long SL: EFI di atas ambang dan harga di bawah MA tertentu

Short SL: EFI di bawah ambang dan harga yang melebihi MA tertentu

Kelebihan

  1. Pelbagai MA menangkap titik perubahan trend utama.

  2. Kombo pengayun mengelakkan mengejar tinggi dan menjual rendah.

  3. Peraturan SL mempertimbangkan kedua-dua trend dan aliran wang, mengawal risiko dengan berkesan.

  4. Parameter yang dioptimumkan melalui pengujian belakang yang luas, menyesuaikan diri dengan kebanyakan persekitaran pasaran.

  5. Frekuensi perdagangan sederhana, isyarat stabil, sesuai untuk pengesanan trend jangka panjang.

Risiko

  1. Kemalangan tiba-tiba boleh membatalkan SL, Julat SL harus diperluaskan.

  2. Terlalu banyak isyarat semasa pasaran julat, parameter perlu diselaraskan.

  3. Mengekalkan terlalu lama boleh meningkatkan kerugian, MA yang lebih pendek boleh mengambil SL yang lebih cepat.

  4. Backtest overfitting, hasil perdagangan sebenar menunggu pengesahan.

Peningkatan

  1. Mengoptimumkan parameter untuk pulangan yang lebih tinggi dan kekerapan yang sesuai.

  2. Tambah algoritma pembelajaran mesin untuk mengoptimumkan parameter secara dinamik.

  3. Membina mekanisme SL adaptif berdasarkan keadaan pasaran yang berbeza.

  4. Tambah lebih banyak penapis untuk menentukan isyarat kemasukan yang lebih baik.

  5. Menggabungkan strategi saiz kedudukan untuk mengawal saiz pertaruhan tunggal.

Kesimpulan

Strategi Mengikuti Trend Purata Bergerak secara beransur-ansur dengan berkesan mengesan trend utama dengan mengenal pasti arah trend dengan pelbagai MA dan memasuki isyarat yang disaring, mencapai keuntungan yang stabil melalui pegangan jangka panjang. Strategi ini telah menunjukkan kekuatan melalui pengoptimuman parameter tetapi masih memerlukan penambahbaikan dalam kawalan risiko dan adaptiviti untuk mengurangkan pengeluaran dan meningkatkan kadar kemenangan. Secara keseluruhan, falsafah teras menunjukkan potensi yang kuat untuk penyelidikan dan penerapan 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 lanjut