Strategi Trading Berdasarkan Kombinasi EMA Breakthrough dan K-line Pattern Multiple Time Frame

Penulis:ChaoZhang, Tanggal: 2024-02-21 15:00:06
Tag:

img

Gambaran umum

Strategi ini mengintegrasikan beberapa indikator EMA jangka waktu dan penilaian pola K-line untuk mencapai pengambilan sinyal jangka panjang yang relatif sensitif dan stop-loss exit.

Prinsip Strategi

Strategi ini terutama didasarkan pada indikator berikut untuk penilaian:

  1. EMA: Menggunakan 2 set 13 dan 21 siklus EMA untuk menentukan sinyal perdagangan ketika harga terobosan.

  2. Pola K-line: menilai arah entitas K-line dan menggunakannya dengan indikator EMA untuk menyaring terobosan palsu.

  3. Resistensi Dukungan: Dibangun oleh titik tertinggi dalam 10 siklus terakhir untuk menentukan apakah terobosan melewati area ini untuk meningkatkan keandalan sinyal.

  4. Naik dalam pembagian waktu: 120 siklus dari dekat di atas terbuka untuk menilai sebagai naik dalam pembagian waktu, sebagai penilaian tambahan.

Aturan untuk menghasilkan sinyal perdagangan adalah:

  1. Sinyal bullish: EMA cepat menembus EMA lambat ke atas dengan garis Yang K-line, menutup posisi pendek dan membuka panjang.

  2. Sinyal bearish: EMA cepat pecah melalui EMA lambat dengan garis Yin K-line, posisi panjang datar.

  3. Stop loss exit: Stop loss exit pada posisi saat ini ketika sinyal reverse muncul.

Keuntungan

  1. Indikator EMA jangka waktu berganda menilai tren dengan lebih andal dan menghindari terobosan palsu.
  2. Dikombinasikan dengan arah entitas K-line untuk penyaringan untuk mengidentifikasi tren dengan lebih akurat.
  3. Meningkatkan penilaian pembagian waktu dan mendukung penilaian resistensi untuk memastikan kualitas sinyal.
  4. Gunakan sinyal terbalik sebagai stop loss untuk mengurangi risiko kerugian.

Risiko

  1. Risiko terobosan yang tidak valid yang mengakibatkan kerugian. Multi time frame EMA dan penilaian entitas K-line masih tidak dapat sepenuhnya menghindari dampak terobosan yang tidak valid pada strategi.
  2. Risiko pemilihan parameter yang tidak tepat. pengaturan yang tidak benar dari siklus EMA, siklus penilaian garis K akan menyebabkan penurunan kualitas sinyal.
  3. Risiko kegagalan dalam resistensi dukungan. kegagalan resistensi dukungan historis adalah umum, ini juga akan menyebabkan kurangnya momentum ketika sinyal dihasilkan.
  4. Risiko kegagalan pembagian waktu. situasi pembagian waktu berubah dan tidak dapat sepenuhnya mengandalkannya untuk penilaian.

Risiko di atas dapat dikurangi melalui metode seperti menghindari optimasi yang berlebihan, pemilihan parameter yang cermat, pengendalian ukuran posisi yang ketat.

Arahan Optimasi

  1. Memperkenalkan model pembelajaran mesin untuk membantu penilaian, melatih model klasifikasi untuk menilai arah entitas K-line untuk akurasi yang lebih tinggi.
  2. Meningkatkan mekanisme stop loss adaptif seperti trailing stop atau volatility based stop.
  3. Menggabungkan analisis sentimental, memperkenalkan penilaian opini media tertentu untuk menghindari dampak berita negatif yang besar.
  4. Tambahkan modul manajemen ukuran posisi. Memperkenalkan rasio ukuran posisi tetap atau ukuran berbasis manajemen dana.

Kesimpulan

Strategi ini mengintegrasikan beberapa time frame EMA dan K-line entity judgments untuk penilaian tren yang relatif dapat diandalkan. Judgments tambahan menggunakan support resistance dan time division memastikan kualitas sinyal. Menggunakan sinyal terbalik untuk stop loss dapat secara efektif mengendalikan stop loss tunggal. Optimasi masa depan dapat dilakukan melalui pengenalan model pembelajaran mesin, stop adaptif, analisis sentimen dan modul manajemen ukuran posisi untuk membuat strategi lebih kuat.


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

//@version=2
strategy(title='ck - CryptoSniper Longs Only (Strategy)', shorttitle='ck - CryptoSniper Longs (S) v1', overlay=true, precision=2, commission_value=0.25, default_qty_type=strategy.percent_of_equity, pyramiding=0, default_qty_value=100, initial_capital=100)

open_long = 0
close_position = 0
last_long=close
last_short=close

//Candle body resistance Channel-----------------------------//
len = 34
src = input(close, title="Candle body resistance Channel")
out = sma(src, len)
last8h = highest(close, 13)
lastl8 = lowest(close, 13)
bearish = cross(close,out) == 1 and falling(close, 1)
bullish = cross(close,out) == 1 and rising(close, 1)
channel2=false

//-----------------Support and Resistance 
RST = input(title='Support / Resistance length:', defval=10) 
RSTT = valuewhen(high >= highest(high, RST), high, 0)
RSTB = valuewhen(low <= lowest(low, RST), low, 0)

//--------------------Trend colour ema------------------------------------------------// 
src0 = close, len0 = input(13, minval=1, title="EMA 1")
ema0 = ema(src0, len0)
direction = rising(ema0, 2) ? +1 : falling(ema0, 2) ? -1 : 0

//-------------------- ema 2------------------------------------------------//
src02 = close, len02 = input(21, minval=1, title="EMA 2")
ema02 = ema(src02, len02)
direction2 = rising(ema02, 2) ? +1 : falling(ema02, 2) ? -1 : 0

//=============Hull MA//
show_hma = false
hma_src = input(close, title="HullMA Source:")
hma_base_length = input(8, minval=1, title="HullMA Base Length:")
hma_length_scalar = input(5, minval=0, title="HullMA Length Scalar:")
hullma(src, length)=>wma(2*wma(src, length/2)-wma(src, length), round(sqrt(length)))

//============ signal Generator ==================================//
Period=input(title='Period', defval='120')
ch1 = request.security(syminfo.tickerid, Period, open)
ch2 = request.security(syminfo.tickerid, Period, close)

// Signals//
long = crossover(request.security(syminfo.tickerid, Period, close),request.security(syminfo.tickerid, Period, open))
short = crossunder(request.security(syminfo.tickerid, Period, close),request.security(syminfo.tickerid, Period, open))
last_long := long ? time : nz(last_long[1])
last_short := short ? time : nz(last_short[1])
long_signal = crossover(last_long, last_short) ? 1 : -1
short_signal = crossover(last_short, last_long) ? -1 : 1

if (long_signal == 1)
    strategy.entry("Long Open", strategy.long)

if (short_signal == -1)
    strategy.close("Long Open")
    
if (long_signal[1] == 1 and short_signal[1] == 1)
    open_long := 1
    close_position := 0

if (short_signal[1] == -1 and long_signal[1] == -1)
    open_long := 0
    close_position := 1

plotshape(open_long == 1, title="Open Long", location=location.belowbar, style=shape.triangleup, size=size.small, color=green, transp=10)
plotshape(close_position == 1, title="Close Long", location=location.abovebar, style=shape.triangledown, size=size.small, color=red, transp=10)
//plot(0, title="Trigger", color=white)

///////////////////////////////////////////////////////////////////////////////////////////

Lebih banyak