Strategi pelacakan tren berdasarkan integrasi multi-indikator


Tanggal Pembuatan: 2023-09-13 17:16:51 Akhirnya memodifikasi: 2023-09-13 17:16:51
menyalin: 1 Jumlah klik: 666
1
fokus pada
1617
Pengikut

Strategi ini disebut strategi pelacakan tren yang didasarkan pada integrasi multi-indikator. Strategi ini mengintegrasikan penggunaan tiga indikator RSI, ADX dan MACD, melakukan over setelah mengkonfirmasi tren naik, dan melakukan posisi kosong setelah mengkonfirmasi tren turun.

Indikator RSI menilai kondisi overbought oversold. Jika RSI di atas 30 berarti overbought berakhir, maka pertimbangan overbought. Jika RSI di bawah 70 berarti overbought berakhir, maka pertimbangan overbought.

Indikator ADX menilai kekuatan tren. ADX di atas 25 berarti memasuki tren, di bawah 25 berarti berakhir.

Indikator MACD menentukan tren jangka pendek. Differential Inflation Index (DIFF) di atas DEA mewakili kenaikan garis pendek, pertimbangkan untuk melakukan lebih banyak. Differential Inflation Index (DIFF) di bawah DEA mewakili penurunan garis pendek, pertimbangkan posisi rata.

Ketika tiga indikator RSI, ADX dan MACD menunjukkan sinyal multihead pada saat yang sama, melakukan overdoing. Ketika tiga indikator menunjukkan berakhirnya tren multihead, melakukan posisi terdepan.

Keuntungan dari strategi ini adalah bahwa pengesahan multi-indikator dapat secara efektif mencegah munculnya sinyal palsu. Namun parameter indikator perlu dioptimalkan secara terpisah, dan strategi stop loss sangat diperlukan.

Secara keseluruhan, penggunaan integrasi indikator meningkatkan efisiensi penilaian, tetapi pedagang masih perlu mempertahankan kecerdasan, menyesuaikan dan memverifikasi parameter strategi sesuai dengan situasi aktual.

Kode Sumber Strategi
/*backtest
start: 2023-09-05 00:00:00
end: 2023-09-08 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// RSI
//@version=3
// strategy("Femi Strategy", overlay=true)
strategy("Femi Strategy", overlay=false)
RSIlength = input( 14 )
overSold = input( 30 )
overBought = input( 70 )
price = close

vrsi = rsi(price, RSIlength)



//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)





// ADX

//@version=3
adxlen = input(14)
dilen = input(14)
adxThreshold = input( 25 )
dirmov(len) =>
	up = change(high)
	down = -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 = rma(tr, len)
	plus = fixnan(100 * rma(plusDM, len) / truerange)
	minus = fixnan(100 * rma(minusDM, len) / truerange)
	[plus, minus]

adx(dilen, adxlen) =>
	[plus, minus] = dirmov(dilen)
	sum = plus + minus
	adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)

sig = adx(dilen, adxlen)


// MACD
//@version=3
MACDZero = input(0)
fastLength = input(12)
slowlength = input(26)
MACDLength = input(9)

MACD = ema(close, fastLength) - ema(close, slowlength)
aMACD = ema(MACD, MACDLength)
delta = MACD - aMACD



source = close
length = input(20, minval=1)
mult = input(2.0, minval=0.001, maxval=50)

basis = sma(source, length)
dev = mult * stdev(source, length)

upper = basis + dev
lower = basis - dev

if (not na(vrsi))
    if (crossover(delta, MACDZero))
        strategy.entry("FEMIMACDLE", strategy.long, comment="FEMIMACDLE")
    else
        strategy.cancel(id="FEMIMACDLE")
        
    
    if (crossunder(vrsi, overSold))
        strategy.entry("FEMIRSILE", strategy.long, comment="FEMIRSILE")
    else
        strategy.cancel(id="FEMIRSILE")
        
        
    // if(crossover(sig, adxThreshold)) // crossover(sig, adxThreshold) crossover(delta, MACDZero) crossunder(vrsi, overSold)
    //     strategy.entry("FEMIADXLE", strategy.long, comment="FEMIADXLE")
    // else
    //     strategy.cancel(id="FEMIADXLE")
        
        
    // if (crossover(source, lower))
    //     strategy.entry("FEMIBBLE", strategy.long, comment="FEMIBBLE")
    // else
    //     strategy.cancel(id="FEMIBBLE")
        
    // if(crossunder(sig, adxThreshold))
        // strategy.cancel(id="FEMILE")
        // strategy.exit(id="FEMILE")
        
    // if (crossunder(delta, MACDZero))
        // strategy.entry("FEMIMACDSE", strategy.short, comment="FEMIMACDSE")
    if (crossover(vrsi, overBought))
        // strategy.entry("FEMIRSISE", strategy.short, comment="FEMIRSISE")
        strategy.close("FEMIRSILE")
        strategy.close("FEMIMACDLE")
        strategy.close("FEMIADXLE")
        strategy.close("FEMIBBLE")
    
    if (crossunder(sig, adxThreshold) and crossunder(delta, MACDZero) and crossunder(source, upper)) // crossover(delta, MACDZero) crossover(vrsi, overSold) crossover(sig, adxThreshold)
        strategy.close("FEMIRSILE")
        strategy.close("FEMIMACDLE")
        strategy.close("FEMIADXLE")
        strategy.close("FEMIBBLE")
        
    // if(crossunder(source, upper))
    //     strategy.close("FEMIRSILE")
    //     strategy.close("FEMIMACDLE")
    //     strategy.close("FEMIADXLE")
    //     strategy.close("FEMIBBLE")
        // strategy.entry("FEMIADXSE", strategy.short, comment="FEMIADXSE")
    // else
    //     strategy.cancel(id="FEMISE")

// plot(sig, color=red, title="ADX", linewidth=2, style=areabr)
// plot(adxThreshold, color=blue, title="ADX")


// plot(vrsi, color=green, title="RSI", linewidth=2, style=areabr)
// plot(overSold, color=blue, title="RSI")
// plot(overBought, color=red, title="RSI")

// plot(delta, color=green, title="MACD", linewidth=2, style=areabr)
// plot(MACDZero, color=blue, title="MACD")
// plot(overBought, color=red, title="MACD")
//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)