Strategi Dagangan Berdasarkan Gabungan Penembusan EMA Kerangka Masa Berbilang dan corak K-line

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

img

Ringkasan

Strategi ini mengintegrasikan beberapa penunjuk EMA bingkai masa dan penilaian corak K-line untuk mencapai tangkapan isyarat jangka panjang yang agak sensitif dan keluar stop-loss.

Prinsip Strategi

Strategi ini terutamanya berdasarkan kepada petunjuk berikut untuk penilaian:

  1. EMA: Menggunakan 2 set 13 dan 21 kitaran EMA untuk menentukan isyarat dagangan apabila harga terobosan.

  2. corak K-line: menilai arah entiti K-line dan menggunakannya dengan penunjuk EMA untuk menapis terobosan palsu.

  3. Rintangan sokongan: Dibina oleh titik tertinggi dalam 10 kitaran terakhir untuk menentukan sama ada terobosan melewati kawasan ini untuk meningkatkan kebolehpercayaan isyarat.

  4. Naik dalam pembahagian masa: 120 kitaran penutupan di atas terbuka untuk menilai sebagai kenaikan dalam pembahagian masa, sebagai penghakiman tambahan.

Peraturan untuk menghasilkan isyarat dagangan adalah:

  1. Isyarat bullish: EMA yang cepat menembusi EMA yang perlahan ke atas dengan garis Yang K-line, tutup kedudukan pendek dan buka panjang.

  2. Isyarat penurunan: EMA yang cepat pecah melalui EMA yang perlahan dengan garis Yin K-line, kedudukan panjang rata.

  3. Keluar Stop Loss: Keluar Stop Loss pada kedudukan semasa apabila isyarat belakang muncul.

Kelebihan

  1. Penunjuk EMA jangka masa berbilang menilai trend dengan lebih boleh dipercayai dan mengelakkan terobosan palsu.
  2. Digabungkan dengan arah entiti K-line untuk penapisan untuk mengenal pasti trend dengan lebih tepat.
  3. Meningkatkan penghakiman pembahagian masa dan menyokong penghakiman rintangan untuk memastikan kualiti isyarat.
  4. Gunakan isyarat terbalik sebagai stop loss untuk mengurangkan risiko kerugian.

Risiko

  1. Risiko terobosan yang tidak sah yang mengakibatkan kerugian: Penghakiman EMA pelbagai jangka masa dan entiti K-line masih tidak dapat mengelakkan sepenuhnya kesan terobosan yang tidak sah pada strategi.
  2. Risiko pemilihan parameter yang tidak sesuai. tetapan yang tidak betul kitaran EMA, kitaran penghakiman garis K akan menyebabkan penurunan kualiti isyarat.
  3. Risiko kegagalan dalam rintangan sokongan. kegagalan rintangan sokongan sejarah adalah biasa, ini juga akan menyebabkan kekurangan momentum apabila isyarat dihasilkan.
  4. Risiko kegagalan pembahagian masa: situasi pembahagian masa berubah dan tidak boleh sepenuhnya bergantung kepadanya untuk penilaian.

Risiko di atas dapat dikurangkan melalui kaedah seperti mengelakkan pengoptimuman berlebihan, pemilihan parameter yang teliti, mengawal saiz kedudukan dengan ketat.

Arahan pengoptimuman

  1. Memperkenalkan model pembelajaran mesin untuk membantu pertimbangan. Latih model klasifikasi untuk menilai arah entiti K-line untuk ketepatan yang lebih tinggi.
  2. Meningkatkan mekanisme stop loss adaptif seperti berhenti penghantaran atau berhenti berdasarkan turun naik.
  3. Menggabungkan analisis sentimen. Memperkenalkan penilaian pendapat media tertentu untuk mengelakkan kesan berita negatif yang besar.
  4. Tambah modul pengurusan saiz kedudukan. Memperkenalkan nisbah saiz kedudukan tetap atau saiz berasaskan pengurusan dana.

Kesimpulan

Strategi ini mengintegrasikan pelbagai penghakiman entiti EMA dan K-line untuk penghakiman trend yang agak boleh dipercayai. Penghakiman tambahan menggunakan rintangan sokongan dan pembahagian masa memastikan kualiti isyarat. Menggunakan isyarat terbalik untuk stop loss dapat mengawal kerugian berhenti tunggal dengan berkesan. Pengoptimuman masa depan boleh dilakukan melalui pengenalan model pembelajaran mesin, berhenti adaptif, analisis sentimen dan modul pengurusan saiz kedudukan untuk menjadikan strategi lebih mantap.


/*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 lanjut