Strategi ini menggabungkan beberapa indikator teknis untuk mengidentifikasi arah tren dan area overbought dan oversold untuk menghasilkan sinyal perdagangan.
Indikator utama meliputi:
Indeks arah rata-rata ((ADX): menilai kekuatan tren
Indikator Relatif Lemah (RSI): Pertimbangan Terlalu Beli Terlalu Jual
Rata-rata Pivot (SMA): menilai tren jangka pendek
Indikator SAR Ekstrim: Mengukur Tren Jangka Panjang dan Jangka Pendek
Penembusan Jalur: Menembus Tren
Logika transaksi:
ADX menilai tren ada dan cukup kuat
SAR menilai tren jangka pendek dan panjang konsisten
RSI mengidentifikasi zona overbought dan oversold
Masuk saat harga menembus SMA rata-rata
Masuk saat harga menembus saluran
Berbagai indikator saling memverifikasi untuk meningkatkan akurasi penilaian, kombinasi strategi yang berbeda membentuk sistem perdagangan.
Kombinasi multi-indikator untuk meningkatkan kualitas sinyal
Kombinasi strategi, masuk secara sistematis
ADX mengidentifikasi tren, RSI menilai overbought dan oversold
SAR menangkap tren, SMA dan Channel terobosan masuk
Pengaturan multi-parameter yang membutuhkan pengoptimalan pengujian berulang
Kondisi kombinasi yang kurang sering terjadi
Indikator yang sulit untuk dikelola saat sinyal konflik muncul
Strategi ini memanfaatkan berbagai indikator untuk membangun sistem perdagangan yang kuat. Namun, parameter yang harus dioptimalkan harus ditetapkan untuk memastikan frekuensi perdagangan yang wajar. Secara keseluruhan, strategi ini menggabungkan identifikasi tren yang kuat dengan masuk yang efisien.
/*backtest
start: 2023-09-12 00:00:00
end: 2023-09-13 00:00:00
period: 45m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
// strategy("Combined Strategy", overlay=true, default_qty_value=100, initial_capital=1000, margin_long=0.1)
adxlen = input(7, title="ADX Smoothing")
dilen = input(7, title="DI Length")
dirmov(len) =>
up = ta.change(high)
down = -ta.change(low)
plusDM = na(up) ? na : (up > down and up > 0 ? up : 0)
minusDM = na(down) ? na : (down > up and down > 0 ? down : 0)
truerange = ta.rma(ta.tr, len)
plus = fixnan(100 * ta.rma(plusDM, len) / truerange)
minus = fixnan(100 * ta.rma(minusDM, len) / truerange)
[plus, minus]
adx(dilen, adxlen) =>
[plus, minus] = dirmov(dilen)
sum = plus + minus
adx = 100 * ta.rma(math.abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
sig = adx(dilen, adxlen)
// The same on Pine Script™
pine_supertrend(factor, atrPeriod) =>
src = hl2
atr = ta.atr(atrPeriod)
upperBand = src + factor * atr
lowerBand = src - factor * atr
prevLowerBand = nz(lowerBand[1])
prevUpperBand = nz(upperBand[1])
lowerBand := lowerBand > prevLowerBand or close[1] < prevLowerBand ? lowerBand : prevLowerBand
upperBand := upperBand < prevUpperBand or close[1] > prevUpperBand ? upperBand : prevUpperBand
int direction = na
float superTrend = na
prevSuperTrend = superTrend[1]
if na(atr[1]) and ta.rsi(close, 21) < 66 and ta.rsi(close,3) > 80 and ta.rsi(close, 28) > 49 and sig > 20
direction := 1
else if prevSuperTrend == prevUpperBand
direction := close > upperBand ? -1 : 1
else
direction := close < lowerBand ? 1 : -1
superTrend := direction == -1 ? lowerBand : upperBand
[superTrend, direction]
[pineSupertrend, pineDirection] = pine_supertrend(3, 10)
upTrend = pineDirection < 0
downTrend = pineDirection > 0
// Define the 20-period SMA
sma20 = ta.sma(close, 20)
a = ta.rsi(close,14)
OB = input(70)
OS = input(30)
os = a > OB
ob = a < OS
if upTrend and close > pineSupertrend and close > sma20 and os
strategy.entry("Buy", strategy.long)
if ta.crossunder(close, sma20) or ob
strategy.close_all()
//define when to breakout of channel
//("ChannelBreakOutStrategy", overlay=true)
length = input.int(title="Length", minval=1, maxval=1000, defval=5)
upBound = ta.highest(high, length)
downBound = ta.lowest(low, length)
if (not na(close[length]))
strategy.entry("ChBrkLE", strategy.long, stop=upBound + syminfo.mintick, comment="ChBrkLE")
strategy.entry("ChBrkSE", strategy.short, stop=downBound - syminfo.mintick, comment="ChBrkSE")