Strategi entri satu sisi berdasarkan rata-rata bergerak

Penulis:ChaoZhang, Tanggal: 2023-12-25 14:09:49
Tag:

img

Gambaran umum

Strategi ini menghitung berbagai jenis rata-rata bergerak untuk menentukan arah tren harga dan menerapkan entri sisi tunggal.

Prinsip Strategi

Strategi ini memungkinkan untuk memilih dari 7 jenis rata-rata bergerak yang berbeda, termasuk Rata-rata Gerak Sederhana (SMA), Rata-rata Gerak Eksponensial (EMA), Rata-rata Gerak Tertimbang Volume (VWMA), Rata-rata Gerak Eksponensial Ganda (DEMA), Rata-rata Gerak Eksponensial Ganda (TEMA), Rata-rata Gerak Adaptif Kaufman (KAMA) dan Garis Tengah Saluran Harga.

Ketika harga penutupan menembus garis rata-rata bergerak ke atas, itu dinilai sebagai tren naik dan posisi panjang dibuka. Ketika harga penutupan menembus garis rata-rata bergerak ke bawah, itu dinilai sebagai tren menurun dan posisi pendek dibuka. Ini dapat menangkap titik balik dalam tren harga dan mencapai entri sisi tunggal.

Analisis Keuntungan

Keuntungan dari strategi ini adalah:

  1. Berbagai jenis moving average dapat dipilih untuk fleksibilitas yang sesuai dengan produk dan siklus yang berbeda.

  2. Masukan satu sisi dapat secara efektif mengendalikan risiko.

  3. Masuk ke arah tren mudah untuk mendapatkan keuntungan.

  4. Sangat mudah dimengerti dan diterapkan.

Analisis Risiko

Ada juga beberapa risiko dengan strategi ini:

  1. Ketika harga berosilasi di sekitar garis rata-rata bergerak, akan ada beberapa sinyal palsu dan posisi masuk terbalik. Stop loss yang tepat harus diatur untuk mengendalikan risiko.

  2. Hal ini tidak dapat sepenuhnya menghindari risiko yang disebabkan oleh pergerakan harga yang cepat naik atau turun.

  3. Analis perlu memilih parameter rata-rata bergerak yang tepat. Parameter yang tidak cocok dapat dengan mudah menyebabkan ketinggalan sinyal perdagangan.

Arahan Optimasi

Strategi dapat dioptimalkan dari aspek berikut:

  1. Gabungkan dengan indikator teknis lainnya seperti MACD, RSI untuk menilai sinyal tren dan membentuk kombinasi perdagangan.

  2. Tambahkan logika stop loss, seperti trailing stop loss atau pending order stop loss

  3. Uji dan optimalkan parameter seperti periode rata-rata bergerak, jenis rata-rata bergerak untuk menemukan kombinasi parameter yang optimal.

  4. Pertimbangkan untuk menggunakan jenis pesanan MarketIfTouched untuk masuk, untuk mengikuti tren.

Ringkasan

Strategi ini menentukan arah tren harga berdasarkan rata-rata bergerak, dan menerapkan entri sisi tunggal. Ini sederhana untuk digunakan dan diimplementasikan, dan dapat secara efektif mengendalikan risiko. Tetapi ada juga risiko sinyal palsu dan entri terbalik. Ini dapat terus ditingkatkan dengan menggabungkan indikator sinyal lainnya, mengoptimalkan parameter, menambahkan stop loss, untuk membuat strategi lebih stabil dan dapat diandalkan.


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

//@version=2
strategy(title = "Noro's MAs Tests v1.1", shorttitle = "MAs tests 1.1", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0)

needlong = input(true, "long")
needshort = input(true, "short")
len = input(30, defval = 30, minval = 2, maxval = 1000, title = "MA length")
type = input(1, defval = 1, minval = 1, maxval = 7, title = "Type")
src = input(close, defval = close, title = "Source")
anti = input(true, defval = true, title = "Antipila")

//DEMA
dema = 2 * ema(src, len) - ema(ema(close, len), len)

//TEMA
xPrice = close
xEMA1 = ema(src, len)
xEMA2 = ema(xEMA1, len)
xEMA3 = ema(xEMA2, len)
tema = 3 * xEMA1 - 3 * xEMA2 + xEMA3

//KAMA
xvnoise = abs(src - src[1])
nfastend = 0.20
nslowend = 0.05
nsignal = abs(src - src[len])
nnoise = sum(xvnoise, len)
nefratio = iff(nnoise != 0, nsignal / nnoise, 0)
nsmooth = pow(nefratio * (nfastend - nslowend) + nslowend, 2) 
kama = nz(kama[1]) + nsmooth * (src - nz(kama[1]))

//PriceChannel
lasthigh = highest(src, len)
lastlow = lowest(src, len)
center = (lasthigh + lastlow) / 2

ma = type == 1 ? sma(src, len) : type == 2 ? ema(src, len) : type == 3 ? vwma(src, len) : type == 4 ? dema : type == 5 ? tema : type == 6 ? kama : type == 7 ? center : 0

plot(ma, color = blue, linewidth = 3, transp = 0)

trend = anti == false and close > ma ? 1 : anti == false and close < ma ? -1 : low > ma ? 1 : high < ma ? -1 : trend[1]

longCondition = trend == 1 and trend[1] == -1
if (longCondition)
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na)

shortCondition = trend == -1 and trend[1] == 1
if (shortCondition)
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na)
    
    
    
    

Lebih banyak