Strategi ini dikenali sebagai
Strategi ini terdiri daripada dua bahagian:
Indikator DEMA. Indikator ini mengira purata bergerak eksponensial 20 hari dan 2 hari. Ia menghasilkan isyarat perdagangan apabila harga memecahkan garis 2 hari dari atas atau memecahkan garis 20 hari dari bawah.
(Highest Price - Lowest Price) /Close Price Volatility Index. Indeks ini mencerminkan julat turun naik harga dalam satu tempoh. Di sini kita mengira purata bergerak mudah 16 hari indeks turun naik selama 20 bar terakhir. Apabila turun naik bar semasa lebih tinggi atau lebih rendah daripada nilai purata ini, ia menghasilkan isyarat perdagangan.
Isyarat dari kedua-dua bahagian digabungkan. Jika DEMA dan indeks turun naik memberi isyarat pada masa yang sama, pesanan perdagangan panjang atau pendek akhir akan dihasilkan.
Strategi ini mempunyai kelebihan berikut:
Menggabungkan beberapa penunjuk boleh mengurangkan isyarat palsu dan meningkatkan kebolehpercayaan isyarat.
Garis 20 hari dapat mengenal pasti trend jangka menengah hingga panjang dengan berkesan, dan garis 2 hari dapat menangkap turun naik jangka pendek, menjadikan kombinasi itu dapat disesuaikan dengan persekitaran pasaran yang berbeza.
Indeks turun naik boleh mencerminkan turun naik pasaran dan peluang perdagangan dengan berkesan.
Dengan menyesuaikan parameter, ia boleh menyesuaikan diri dengan produk dan pasaran kitaran yang berbeza.
Strategi ini juga mempunyai beberapa risiko:
Dalam trend turun naik yang rendah, indeks turun naik boleh menghasilkan isyarat yang salah.
Dalam pasaran satu hala yang cepat, EMA berganda mungkin tertinggal. Memendekkan parameter dengan betul atau menggabungkan dengan penunjuk lain boleh membantu.
Kerumitan yang meningkat dari pelbagai penunjuk juga meningkatkan risiko pengoptimuman berlebihan.
Strategi ini juga boleh dioptimumkan dalam aspek berikut:
Menambah mekanisme stop loss dapat mengawal secara berkesan setiap kehilangan pesanan.
Mengoptimumkan parameter untuk produk dan kitaran yang berbeza untuk meningkatkan kebolehsesuaian.
Meningkatkan penunjuk kecairan dan turun naik untuk meningkatkan kualiti isyarat.
Menambah algoritma pembelajaran mesin untuk mencapai parameter dinamik dan pelarasan berat.
Dengan menggabungkan EMA berganda dan indeks turun naik, strategi ini dapat mencapai prestasi perdagangan yang baik di kedua-dua pasaran tren dan turun naik. Terdapat juga risiko tertentu yang memerlukan pengoptimuman dan penambahbaikan lanjut. Tetapi secara keseluruhan, idea strategi jelas dan mempunyai nilai praktikal.
/*backtest start: 2023-11-17 00:00:00 end: 2023-12-17 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 //////////////////////////////////////////////////////////// // Copyright by HPotter v1.0 12/04/2022 // This is combo strategies for get a cumulative signal. // // First strategy // This indicator plots 2/20 exponential moving average. For the Mov // Avg X 2/20 Indicator, the EMA bar will be painted when the Alert criteria is met. // // Second strategy // This histogram displays (high-low)/close // Can be applied to any time frame. // // // WARNING: // - For purpose educate only // - This script to change bars colors. //////////////////////////////////////////////////////////// EMA20(Length) => pos = 0.0 xPrice = close xXA = ta.ema(xPrice, Length) nHH = math.max(high, high[1]) nLL = math.min(low, low[1]) nXS = nLL > xXA or nHH < xXA ? nLL : nHH iff_1 = nXS < close[1] ? 1 : nz(pos[1], 0) pos := nXS > close[1] ? -1 : iff_1 pos HLCH(input_barsback,input_percentorprice,input_smalength) => pos = 0.0 xPrice = (high-low)/close xPriceHL = (high-low) xPrice1 = input_percentorprice ? xPrice * 100: xPriceHL xPrice1SMA = ta.sma(math.abs(xPrice1), input_smalength) pos := xPrice1SMA[input_barsback] > math.abs(xPrice1) ? 1 : xPrice1SMA[input_barsback] < math.abs(xPrice1) ? -1 : nz(pos[1], 0) pos strategy(title='Combo 2/20 EMA & (H-L)/C Histogram', shorttitle='Combo', overlay=true) var I1 = '●═════ 2/20 EMA ═════●' Length = input.int(14, minval=1, group=I1) var I2 = '●═════ (H-L)/C Histogram ═════●' input_barsback = input(20, title="Look Back", group=I2) input_percentorprice = input(false, title="% change", group=I2) input_smalength = input(16, title="SMA Length", group=I2) var misc = '●═════ MISC ═════●' reverse = input.bool(false, title='Trade reverse', group=misc) var timePeriodHeader = '●═════ Time Start ═════●' d = input.int(1, title='From Day', minval=1, maxval=31, group=timePeriodHeader) m = input.int(1, title='From Month', minval=1, maxval=12, group=timePeriodHeader) y = input.int(2005, title='From Year', minval=0, group=timePeriodHeader) StartTrade = time > timestamp(y, m, d, 00, 00) ? true : false posEMA20 = EMA20(Length) prePosHLCH = HLCH(input_barsback,input_percentorprice,input_smalength) iff_1 = posEMA20 == -1 and prePosHLCH == -1 and StartTrade ? -1 : 0 pos = posEMA20 == 1 and prePosHLCH == 1 and StartTrade ? 1 : iff_1 iff_2 = reverse and pos == -1 ? 1 : pos possig = reverse and pos == 1 ? -1 : iff_2 if possig == 1 strategy.entry('Long', strategy.long) if possig == -1 strategy.entry('Short', strategy.short) if possig == 0 strategy.close_all() barcolor(possig == -1 ? #b50404 : possig == 1 ? #079605 : #0536b3)