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.
Strategi ini terutama didasarkan pada indikator berikut untuk penilaian:
EMA: Menggunakan 2 set 13 dan 21 siklus EMA untuk menentukan sinyal perdagangan ketika harga terobosan.
Pola K-line: menilai arah entitas K-line dan menggunakannya dengan indikator EMA untuk menyaring terobosan palsu.
Resistensi Dukungan: Dibangun oleh titik tertinggi dalam 10 siklus terakhir untuk menentukan apakah terobosan melewati area ini untuk meningkatkan keandalan sinyal.
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:
Sinyal bullish: EMA cepat menembus EMA lambat ke atas dengan garis Yang K-line, menutup posisi pendek dan membuka panjang.
Sinyal bearish: EMA cepat pecah melalui EMA lambat dengan garis Yin K-line, posisi panjang datar.
Stop loss exit: Stop loss exit pada posisi saat ini ketika sinyal reverse muncul.
Risiko di atas dapat dikurangi melalui metode seperti menghindari optimasi yang berlebihan, pemilihan parameter yang cermat, pengendalian ukuran posisi yang ketat.
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) ///////////////////////////////////////////////////////////////////////////////////////////