Strategi Perdagangan Kuantitatif EMA Crossover Multi-Periode

Penulis:ChaoZhang, Tanggal: 2023-12-27 17:09:23
Tag:

img

Gambaran umum

Artikel ini memperkenalkan strategi perdagangan kuantitatif yang didasarkan pada titik persimpangan EMA (Exponential Moving Averages) selama tiga periode yang berbeda.

Prinsip Strategi

Strategi ini menggunakan EMA tiga periode yang berbeda: 10 hari, 100 hari, dan 200 hari. sinyal beli atau jual dihasilkan berdasarkan arah crossover ketika EMA jangka pendek (10 hari) melintasi EMA jangka panjang (100-hari atau 200 hari). strategi ini juga menggabungkan filter waktu untuk memastikan perdagangan hanya dilaksanakan dalam kerangka waktu tertentu. Kombinasi ini menambah fleksibilitas dan kemampuan beradaptasi dengan strategi.

Analisis Keuntungan

Kekuatan strategi ini terletak pada kesederhanaan dan kemampuan beradaptasi yang tinggi. EMA multi-periode memberikan pandangan multi-dimensi tentang tren pasar, meningkatkan keakuratan keputusan perdagangan. Selain itu, filter waktu menghindari ketidakstabilan selama periode pasar tertentu, mengurangi risiko potensial.

Analisis Risiko

Meskipun efektif, strategi membawa risiko tertentu. Risiko utama adalah volatilitas pasar karena peristiwa yang tidak terduga, yang dapat menyebabkan kegagalan strategi. Selain itu, EMA dapat tertinggal, menunda refleksi perubahan pasar. Metode untuk mengurangi risiko ini termasuk pemantauan pasar real-time dan menggabungkan indikator teknis lainnya untuk meningkatkan akurasi keputusan.

Arah Optimalisasi

Arah optimasi untuk strategi ini termasuk penggunaan terintegrasi dari berbagai indikator teknis, seperti Indeks Kekuatan Relatif (RSI) dan Bollinger Bands, untuk memperdalam dan memperluas analisis pasar.

Kesimpulan

Secara keseluruhan, ini

strategi perdagangan kuantitatif crossover EMA multi-periode adalah alat yang efektif yang dapat membantu pedagang membuat keputusan yang lebih baik di pasar yang tidak stabil. Dengan optimasi dan adaptasi terus menerus terhadap perubahan pasar, strategi ini memiliki potensi untuk mencapai pengembalian yang lebih tinggi dalam usaha perdagangan di masa depan.


/*backtest
start: 2022-12-20 00:00:00
end: 2023-12-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
start = timestamp(2023,1,1,0,0)
end = timestamp(2024,1,1,0,0)
strategy("Tester Emas", overlay = true)

periodo1 = input(10,"Periodo_1")
periodo2 = input(100,"Periodo_2")
periodo3 = input(200,"Periodo_3")

//definir media moviles
ema1 = ta.ema(close,periodo1)
ema2 = ta.ema(close,periodo2)
ema3 = ta.ema(close,periodo3)

//Desde
desde_a = input(2000, title = "Desde año")
desde_m = input.int(   1, title = "Desde mes", minval=1, maxval = 12)
desde_d = input.int(   1, title = "Desde dia", minval=1, maxval = 31)

//Hasta
hasta_a = input(2030, title = "Hasta año")
hasta_m = input.int(   1, title = "Hasta mes", minval=1, maxval = 12)
hasta_d = input.int(   1, title = "Hasta dia", minval=1, maxval = 31)

FechaValida() => true

//Condicion de entradas
longCondition = ta.crossover(ema1, ema2)
shortCondition = ta.crossunder(ema1,ema2)

alcista = (ema1 > ema2) and (ema2 > ema3)
comprado =strategy.position_size > 0



//Comprar o vender segun las condiciones de entradas

//if (longCondition)
if (not comprado and alcista and FechaValida())
    // Round redondea mi capital para comprar las acciones en cantidades enteras
    cantidad = math.round(strategy.equity/ close)
    strategy.entry("Compra", strategy.long, cantidad)
//if (shortCondition)
if (comprado and not alcista and FechaValida())
    //strategy.entry("Venta", strategy.short)
    strategy.close("Compra" , comment = "Venta")

if (comprado and not FechaValida())
    //Cierre x finalizacion de periodo
    //strategy.entry("Venta", strategy.short)
    strategy.close("Compra" , comment = "Venta x fin")

//Graficar las medias moviles
plot(ema1, color = color.green, title = "Ema1")
plot(ema2, color = color.yellow, title = "Ema2")
plot(ema3, color = color.red, title = "Ema2")
//GMarca los cruces de medias
bgcolor(longCondition ? color.green : na)
bgcolor(shortCondition ? color.red : na)

Lebih banyak