
Strategi ini menggabungkan penggunaan indikator indeks bergerak ((ADX) dan indeks gerakan ke arah atas ((DI +) untuk menentukan arah dan tren pasar, sementara menggunakan rata-rata bergerak cepat dan lambat untuk menentukan arah dan waktu perdagangan, termasuk dalam strategi perdagangan yang mengikuti tren. Strategi ini dapat secara efektif menangkap titik balik dari garis tengah yang pendek, dan berkinerja baik di pasar dengan volatilitas rendah dan tren yang jelas.
Logika inti dari strategi ini adalah bahwa sinyal beli dihasilkan ketika garis + DI menerobos ADX dari arah bawah, dan sinyal jual dihasilkan ketika garis + DI terjatuh dari arah atas ke arah ADX. Oleh karena itu, strategi ini bergantung pada persilangan antara indikator DI dan ADX untuk menilai tren pasar dan titik balik. Sementara itu, hubungan antara garis cepat dan lambat digunakan untuk menilai tren pasar secara keseluruhan, dan hanya akan dipertimbangkan untuk menghasilkan sinyal perdagangan ketika EMA cepat lebih tinggi dari EMA lambat.
Secara khusus, sinyal beli akan muncul jika kondisi berikut ini terpenuhi: 1. EMA cepat lebih tinggi dari EMA lambat 2 , + DI garis menembus garis ADX dari bawah 3 ADX di bawah 30
Sinyal jual muncul ketika kondisi berikut terpenuhi: 1 ADX lebih dari 30 2 , + DI garis jatuh dari atas ke bawah garis ADX
Strategi ini juga menambahkan logika stop loss, yang akan keluar dari semua posisi ketika harga di bawah harga stop loss.
Strategi ini menggabungkan DI, ADX, dan indikator garis rata-rata, yang dapat secara efektif menentukan titik-titik perubahan tren pasar. Strategi ini memiliki keuntungan sebagai berikut:
Strategi ini juga memiliki beberapa risiko yang perlu diperhatikan:
Risiko ini dapat ditingkatkan dengan mengoptimalkan parameter ADX dan rata-rata, menyesuaikan tingkat stop loss, dan mengkonfirmasi sinyal dengan indikator lain.
Strategi ini masih bisa dioptimalkan lebih jauh:
Strategi ADX cross-trend secara keseluruhan lebih stabil, dan dapat secara efektif menangkap ruang reversal pada periode sebelum fluktuasi, tetapi perlu memperhatikan pengendalian risiko. Dengan cara lebih lanjut mengoptimalkan parameter pengaturan, masuk yang ketat dan aturan stop loss, dan lain-lain, dapat memperoleh hasil yang lebih baik setelah risiko disesuaikan. Strategi ini berlaku untuk akun perdagangan garis pendek yang dipegang di garis panjang.
/*backtest
start: 2022-12-01 00:00:00
end: 2023-12-07 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © mohanee
//@version=4
//ADX strategy
SmoothedTrueRange=0.00
SmoothedDirectionalMovementPlus=0.00
SmoothedDirectionalMovementMinus=0.00
strategy(title="ADX strategy", overlay=false,pyramiding=3, default_qty_type=strategy.fixed, default_qty_value=3, initial_capital=10000, currency=currency.USD)
len = input(11, title="ADX Length", minval=1)
threshold = input(30, title="threshold", minval=5)
fastEma=input(13, title="Fast EMA",minval=1, maxval=50)
slowEma=input(55, title="Slow EMA",minval=10, maxval=200)
stopLoss =input(8, title="Stop Loss",minval=1) //
TrueRange = max(max(high-low, abs(high-nz(close[1]))), abs(low-nz(close[1])))
DirectionalMovementPlus = high-nz(high[1]) > nz(low[1])-low ? max(high-nz(high[1]), 0): 0
DirectionalMovementMinus = nz(low[1])-low > high-nz(high[1]) ? max(nz(low[1])-low, 0): 0
SmoothedTrueRange:= nz(SmoothedTrueRange[1]) - (nz(SmoothedTrueRange[1])/len) + TrueRange
SmoothedDirectionalMovementPlus := nz(SmoothedDirectionalMovementPlus[1]) - (nz(SmoothedDirectionalMovementPlus[1])/len) + DirectionalMovementPlus
SmoothedDirectionalMovementMinus:= nz(SmoothedDirectionalMovementMinus[1]) - (nz(SmoothedDirectionalMovementMinus[1])/len) + DirectionalMovementMinus
DIPlus = SmoothedDirectionalMovementPlus / SmoothedTrueRange * 100
DIMinus = SmoothedDirectionalMovementMinus / SmoothedTrueRange * 100
DX = abs(DIPlus-DIMinus) / (DIPlus+DIMinus)*100
ADX = sma(DX, len)
plot(DIPlus, color=color.green, title="DI+")
//plot(DIMinus, color=color.red, title="DI-")
plot(ADX, color=color.black, title="ADX")
hline(threshold, color=color.black, linestyle=hline.style_dashed)
fastEmaVal=ema(close,fastEma)
slowEmaVal=ema(close,slowEma)
//long condition
longCondition= ADX < threshold and crossover(DIPlus,ADX) and fastEmaVal > slowEmaVal
barcolor(longCondition ? color.yellow: na)
strategy.entry(id="ADXLE", long=true, when= longCondition and strategy.position_size<1)
barcolor(strategy.position_size>1 ? color.blue: na)
bgcolor(strategy.position_size>1 ? color.blue: na)
//Add
strategy.entry(id="ADXLE", comment="Add", long=true, when= strategy.position_size>1 and close<strategy.position_avg_price and crossover(DIPlus,ADX) )
//calculate stop Loss
stopLossVal = strategy.position_avg_price - (strategy.position_avg_price*stopLoss*0.01)
strategy.close(id="ADXLE",comment="SL Exit", when=close<stopLossVal) //close all on stop loss
//exit condition
exitCondition= ADX > threshold and crossunder(DIPlus,ADX) // and fastEmaVal > slowEmaVal
strategy.close(id="ADXLE",comment="TPExitAll", qty=strategy.position_size , when= exitCondition) //close all