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.
Strategi ini terutamanya berdasarkan kepada petunjuk berikut untuk penilaian:
EMA: Menggunakan 2 set 13 dan 21 kitaran EMA untuk menentukan isyarat dagangan apabila harga terobosan.
corak K-line: menilai arah entiti K-line dan menggunakannya dengan penunjuk EMA untuk menapis terobosan palsu.
Rintangan sokongan: Dibina oleh titik tertinggi dalam 10 kitaran terakhir untuk menentukan sama ada terobosan melewati kawasan ini untuk meningkatkan kebolehpercayaan isyarat.
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:
Isyarat bullish: EMA yang cepat menembusi EMA yang perlahan ke atas dengan garis Yang K-line, tutup kedudukan pendek dan buka panjang.
Isyarat penurunan: EMA yang cepat pecah melalui EMA yang perlahan dengan garis Yin K-line, kedudukan panjang rata.
Keluar Stop Loss: Keluar Stop Loss pada kedudukan semasa apabila isyarat belakang muncul.
Risiko di atas dapat dikurangkan melalui kaedah seperti mengelakkan pengoptimuman berlebihan, pemilihan parameter yang teliti, mengawal saiz kedudukan dengan ketat.
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) ///////////////////////////////////////////////////////////////////////////////////////////