Trend Mengikut Strategi Crossover Purata Bergerak

Penulis:ChaoZhang, Tarikh: 2023-11-01 17:18:13
Tag:

img

Ringkasan

Strategi ini menggunakan prinsip salib emas dan salib kematian purata bergerak, digabungkan dengan penunjuk RSI untuk membantu dalam pengenalan trend dan penjejakan. Ia pergi lama apabila purata bergerak jangka pendek melintasi di atas purata bergerak jangka panjang, dan pergi pendek apabila purata bergerak jangka pendek melintasi di bawah purata bergerak jangka panjang. Ini adalah strategi trend berikut biasa.

Logika Strategi

Strategi ini berdasarkan prinsip-prinsip berikut:

  1. Menggunakan EMA dan bukannya SMA untuk mencerminkan perubahan harga terkini dan bertindak balas lebih cepat terhadap pecah.

  2. Sistem persilangan purata bergerak berganda: EMA jangka pendek melintasi EMA jangka panjang menandakan masuk panjang, sementara EMA jangka pendek melintasi di bawah EMA jangka panjang menandakan masuk pendek. Ini menggunakan prinsip salib emas dan salib kematian untuk menentukan pembalikan trend.

  3. Indikator RSI membantu menapis pecah palsu dengan memberi isyarat keadaan overbought / oversold.

  4. Pelbagai purata bergerak yang ditumpuk bersama: EMA 55 tempoh untuk isyarat jangka pendek, EMA 100 tempoh untuk trend jangka sederhana, dan EMA 200 tempoh untuk penapisan trend jangka panjang.

  5. Pengaturan stop loss dan mengambil keuntungan yang munasabah untuk mengawal risiko.

Logik perdagangan utama adalah:

  1. Masukkan panjang apabila EMA 55-period melintasi di atas EMA 100-period, dan EMA 12-period di atas EMA 200-period.

  2. Masuk pendek apabila EMA 100 tempoh melintasi di bawah EMA 200 tempoh.

  3. Tetapkan stop loss dan mengambil keuntungan selepas masuk untuk mengoptimumkan pulangan.

  4. Tutup kedudukan panjang/pendek apabila RSI menunjukkan overbought/oversold untuk mengelakkan risiko pembalikan.

  5. Gabungan beberapa tempoh purata bergerak menyumbang kepada kedua-dua trend tracking dan pengesahan pembalikan, dengan itu mengelakkan terperangkap dalam penyatuan yang berpanjangan sambil mengikuti trend utama.

Kelebihan

Kelebihan utama strategi ini ialah:

  1. Logik mudah berdasarkan crossover purata bergerak, mudah difahami dan dilaksanakan.

  2. Tindak balas yang lebih cepat terhadap perubahan harga dan pembalikan trend dengan menggunakan EMA.

  3. Pelbagai tempoh purata bergerak menyumbang kepada penjejakan trend dan pengenalan pembalikan.

  4. RSI menyaring penyebaran palsu dan meningkatkan ketepatan isyarat.

  5. Parameter stop loss / mengambil keuntungan lalai mengawal risiko perdagangan dengan berkesan.

  6. Sangat boleh disesuaikan dengan menyesuaikan tempoh purata bergerak, nisbah stop loss / mengambil keuntungan dll.

Risiko

Risiko utama strategi ini ialah:

  1. Rendah untuk dipukul dalam pasaran yang berubah-ubah, menghasilkan isyarat yang tidak aktif.

  2. Parameter lalai mungkin tidak sesuai dengan semua produk dan jangka masa, yang memerlukan pengoptimuman.

  3. Hanya diterajui isyarat teknikal, terdedah kepada perubahan asas dan risiko peristiwa.

  4. Mungkin kurang berprestasi apabila indeks naik tetapi lebar pasaran berlainan.

  5. Risiko keuntungan mengambil terlalu awal dan terlepas sebahagian besar pergerakan trend.

Untuk menangani risiko ini, pengoptimuman berikut boleh dibuat:

  1. Tambah penapis seperti kelantangan untuk mengelakkan kebocoran palsu.

  2. Uji balik untuk mencari parameter optimum untuk setiap produk.

  3. Stop loss yang lebih ketat dan mengambil keuntungan untuk mengehadkan risiko whipsaw di pasaran yang berbeza.

  4. Masukkan penapis asas untuk mengelakkan isyarat sebelum peristiwa besar.

Arahan pengoptimuman

Strategi ini boleh dioptimumkan dalam aspek berikut:

  1. Mengoptimumkan tempoh purata bergerak untuk mencari kombinasi jangka pendek, sederhana dan panjang yang terbaik, melalui pembelajaran mesin dll.

  2. Uji harga penutupan berbanding harga biasa untuk prestasi.

  3. Tambah penapis kelantangan untuk hanya menerima isyarat pada bar kelantangan tinggi.

  4. Mengoptimumkan nisbah stop loss / mengambil keuntungan untuk ketepatan yang lebih tinggi atau menetapkan berhenti dinamik berdasarkan peratusan.

  5. Membina model komposit dengan penunjuk tambahan seperti Stochastics, MACD, Bollinger Bands untuk meningkatkan prestasi.

  6. Ujian balik di pelbagai produk, jangka masa dan keadaan pasaran untuk ketahanan.

  7. Menggunakan pembelajaran mesin untuk pengoptimuman parameter pelbagai dimensi.

Kesimpulan

Ini adalah strategi trend yang mudah difahami berdasarkan logik crossover purata bergerak yang mudah. Ia mempunyai kelebihan seperti pelaksanaan yang mudah, kebolehpercayaan, dan potensi penyesuaian yang tinggi. Tetapi ia juga membawa risiko pasaran yang melekat, yang memerlukan pengoptimuman berterusan parameter dan modul berdasarkan hasil backtest, untuk menjadikan strategi lebih kukuh dan pintar. Menggabungkan analisis teknikal dengan penyelidikan asas dapat meningkatkan kelengkapan dan kebolehpercayaannya.


/*backtest
start: 2023-10-24 00:00:00
end: 2023-10-31 00:00:00
period: 15m
basePeriod: 5m
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/
// © pernath

//@version=5
strategy("TREND_CATCHER", overlay=true, commission_value=0.05, commission_type=strategy.commission.percent, initial_capital=1000)

//#####variables##############
profit_short=input(title='profit_short', defval=27)
stop_short=input(title='stop_short', defval=2)

stop_long=input(title='stop_long', defval=3)
profit_long=input(title='profit_long', defval=35)


media_1=input(title='media_1', defval=55)
media_2=input(title='media_2', defval=100)
resta_medias=input(title='resta_medias', defval=0)
resta_medias2=input(title='resta_medias2', defval=0)

RSI_periodos=input(title='RSI_periodos', defval=42)
//###############VARIABLES###################




//#####Alert#####
id_bot = ""
email_token = ""
long_open =""
long_close =""
short_open =""
short_close =""
//#  {{strategy.order.alert_message}}


//#############################
//#############################

//###############EMA##############/
//plot(ta.ema(close, 1), title='ema 5', color=color.white)
plot(ta.ema(close, 12), title='ema 12', color=color.white)
plot(ta.ema(close, 25), title='ema 25', color=color.white)
plot(ta.ema(close, 30), title='ema 30', color=color.white, linewidth=1)
plot(ta.ema(close, 40), title='ema 40', color=color.white, linewidth=1)
plot(ta.ema(close, 55), title='ema 55', color=color.orange, linewidth=1)
plot(ta.ema(close, 100), title='ema 100', color=color.red, linewidth=1)
plot(ta.ema(close, 200), title='ema 200', color=color.white, linewidth=3)

//#############################/





//######VISUAL#############
EMA50 = ta.ema(close, 55)
EMA100 = ta.ema(close, 100)


estado_medias=EMA50-EMA100




a = plot(EMA50, title="EMA(50)", color=color.orange, linewidth=1 ) 
b = plot(EMA100, title="EMA(100)", color=color.red, linewidth=1 )


var color col = na
col := estado_medias>resta_medias ? color.green : color.red
fill(a,b,color=col,transp=40)


//######VISUAL#############





Go_Short=(ta.crossunder(ta.ema(close,100),ta.ema(close,200)))
Go_Long=((ta.crossover(ta.ema(close,55),ta.ema(close,100))and(ta.ema(close,12)>ta.ema(close,200))))


strategy.close("enter long", (Go_Short),alert_message=long_open)

cancelar_short=((ta.crossunder(ta.ema(close,25),ta.ema(close,6))))



if Go_Short
    strategy.entry("enter short", strategy.short,1, alert_message=short_open) 
  
strategy.exit("cerrar short", "enter short", 1, profit=close*profit_short/100/syminfo.mintick, loss=close*stop_short/100/syminfo.mintick, alert_message=short_close)




strategy.close("enter short", (Go_Long),alert_message=short_close)
cancelar=((ta.crossunder(ta.ema(close,12),ta.ema(close,30))))



if Go_Long
    strategy.entry("enter long", strategy.long,1,alert_message=long_open)

strategy.exit("cerrar long", "enter long", 1, profit=close*profit_long/100/syminfo.mintick, loss=close*stop_long/100/syminfo.mintick, alert_message=long_close)




strategy.close("enter short", (cancelar_short),alert_message=short_close)

strategy.close("enter long", (cancelar),alert_message=long_close)


//posiciones abiertas
bgcolor((strategy.position_size > 0 or strategy.position_size < 0) ? color.blue : na, transp=70)









Lebih lanjut