Strategi Dual Moving Average ADX Timing mengidentifikasi tren dengan menggabungkan rata-rata bergerak 2/20 dan indikator ADXR untuk menghasilkan sinyal perdagangan di awal tren.
Logika inti dari strategi Dual Moving Average ADX Timing didasarkan pada komponen utama berikut:
2/20 Exponential Moving Average (EMA)
Indikator ADXR
Sinyal perdagangan
Inovasi utama dari strategi ini adalah menggunakan indikator ADXR untuk mengidentifikasi tren pada tahap awal, dan menggabungkannya dengan sinyal rata-rata bergerak tradisional untuk meningkatkan kualitas dan stabilitas.
Keuntungan utama dari strategi Dual Moving Average ADX Timing:
Ada juga beberapa risiko utama untuk strategi ini:
Pengaturan parameter ADXR yang tidak benar dapat menyebabkan perdagangan hilang.
Lebih banyak sinyal palsu dapat terjadi dalam kondisi pasar khusus.
Parameter EMA tetap gagal beradaptasi dengan perubahan pasar.
Tidak dapat mengidentifikasi rentang perdagangan, dapat menghasilkan perdagangan yang terlalu tidak signifikan.
Strategi dapat dioptimalkan dan ditingkatkan lebih lanjut dari aspek berikut:
Optimasi parameter EMA untuk adaptasi otomatis dengan kondisi pasar.
Memperluas rentang parameter ADXR untuk menangkap sinyal perdagangan yang lebih efektif.
Tambahkan indikator penilaian tren tambahan untuk sinyal kombinasi untuk meningkatkan kualitas.
Tambahkan strategi stop loss dan mengambil standar keuntungan untuk mengendalikan risiko per perdagangan.
Mengoptimalkan manajemen uang untuk ukuran posisi dinamis berdasarkan status akun.
Strategi Dual Moving Average ADX Timing secara inovatif menggabungkan rata-rata bergerak ganda tradisional dan indikator ADXR untuk meningkatkan kualitas sinyal dan meningkatkan stabilitas. Ini dapat secara efektif mengidentifikasi tahap awal tren dengan kinerja historis yang layak.
/*backtest start: 2023-11-05 00:00:00 end: 2023-12-05 00:00:00 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 //////////////////////////////////////////////////////////// // Copyright by HPotter v1.0 04/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 // The Average Directional Movement Index Rating (ADXR) measures the strength // of the Average Directional Movement Index (ADX). It's calculated by taking // the average of the current ADX and the ADX from one time period before // (time periods can vary, but the most typical period used is 14 days). // Like the ADX, the ADXR ranges from values of 0 to 100 and reflects strengthening // and weakening trends. However, because it represents an average of ADX, values // don't fluctuate as dramatically and some analysts believe the indicator helps // better display trends in volatile markets. // // // 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 fADX(Len) => up = ta.change(high) down = -ta.change(low) trur = ta.rma(ta.tr, Len) plus = fixnan(100 * ta.rma(up > down and up > 0 ? up : 0, Len) / trur) minus = fixnan(100 * ta.rma(down > up and down > 0 ? down : 0, Len) / trur) sum = plus + minus 100 * ta.rma(math.abs(plus - minus) / (sum == 0 ? 1 : sum), Len) ADXR(LengthADX,LengthADXR,Signal1,Signal2) => pos = 0.0 xADX = fADX(LengthADX) xADXR = (xADX + xADX[LengthADXR]) / 2 pos := xADXR < Signal1 ? 1 : xADXR > Signal2 ? -1 : nz(pos[1], 0) pos strategy(title='Combo 2/20 EMA & ADXR', shorttitle='Combo', overlay=true) var I1 = '●═════ 2/20 EMA ═════●' Length = input.int(14, minval=1, group=I1) var I2 = '●═════ ADXR ═════●' LengthADX = input(title="Length ADX", defval=14) LengthADXR = input(title="Length ADXR", defval=14) Signal1 = input.float(13, step=0.01) Signal2 = input.float(45, step=0.01) 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) prePosADXR = ADXR(LengthADX,LengthADXR,Signal1,Signal2) iff_1 = posEMA20 == -1 and prePosADXR == -1 and StartTrade ? -1 : 0 pos = posEMA20 == 1 and prePosADXR == 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)