ADX-Based One-Hour TENKAN KIJUN Cross Trend Tracking Strategy

Penulis:ChaoZhang, Tanggal: 2023-12-08 15:37:00
Tag:

img

Gambaran umum

Ini adalah strategi pelacakan tren yang sederhana namun menguntungkan berdasarkan rantai waktu satu jam TENKAN dan KIJUN di sistem ICHIMOKU dikombinasikan dengan indikator ADX untuk menyaring pasar tren yang lemah untuk menghasilkan sinyal perdagangan.

Logika Strategi

Strategi ini menggunakan garis konversi (TENKAN) dan garis dasar (KIJUN) silang dalam sistem ICHIMOKU untuk menentukan arah tren pasar. garis TENKAN dihitung berdasarkan rata-rata tertinggi tertinggi dan terendah terendah dari 18 lilin terakhir, mewakili garis konversi cepat. garis KIJUN didasarkan pada 58 periode lilin, yang mewakili garis konversi standar.

Ketika TENKAN melintasi di atas KIJUN, itu adalah sinyal bullish. Ketika TENKAN melintasi di bawah KIJUN, itu adalah sinyal bearish. Ini bertujuan untuk menangkap pembalikan tren jangka menengah.

Selain itu, indikator ADX digunakan untuk mengukur kekuatan tren. hanya ketika ADX di atas 20, menunjukkan tren yang kuat, sinyal akan dipicu.

Singkatnya, strategi ini mengidentifikasi arah tren jangka menengah melalui TENKAN dan KIJUN silang, dan menggunakan ADX untuk menyaring keluar false breakouts, untuk melacak tren jangka panjang.

Analisis Keuntungan

Keuntungan utama dari strategi ini adalah:

  1. Menggunakan sistem ICHIMOKU yang matang dan dapat diandalkan untuk menentukan arah tren dan titik balik.

  2. Menyaring pasar yang lemah menggunakan ADX untuk menghindari kegagalan dalam konsolidasi.

  3. Kerangka waktu satu jam menyaring kebisingan pasar dan hanya menangkap tren jangka menengah hingga panjang.

  4. Logikanya sederhana dan mudah diikuti oleh pedagang tren.

  5. Hasil backtesting yang solid terutama pada koin dengan kapitalisasi pasar tinggi seperti ETH/BTC.

Analisis Risiko

Beberapa risiko yang perlu diperhatikan tentang strategi ini:

  1. Parameter ICHIMOKU sensitif, membutuhkan kustomisasi untuk pasangan yang berbeda.

  2. ADX mungkin terlambat dalam beberapa kasus, menyebabkan tidak masuk.

  3. Berkinerja buruk di berbagai pasar dengan hit stop loss yang sering.

  4. Kinerja sangat bervariasi di berbagai pasangan dan kerangka waktu.

  5. Penguasaan posisi jangka panjang bisa berisiko, perlu stop loss/take profit yang tepat.

Optimasi dapat dilakukan melalui penyesuaian parameter ADX, menambahkan filter seperti MACD untuk mengurangi sinyal palsu, atau penyesuaian dinamis parameter untuk ketahanan.

Arahan Optimasi

Beberapa arah utama untuk meningkatkan strategi:

  1. Optimasi dinamis dari parameter TENKAN dan KIJUN untuk adaptasi yang lebih baik.

  2. Mencari indikator tren yang lebih baik untuk menggantikan atau menggabungkan dengan ADX.

  3. Menambahkan stop loss/take profit untuk mengontrol rasio risiko/pembayaran.

  4. Menggabungkan pemodelan dengan indikator pelengkap untuk meningkatkan stabilitas.

  5. Modularisasi dan fleksibilitas untuk pengaturan parameter pada lebih banyak pasangan.

  6. Manajemen risiko kuantitatif misalnya pengendalian penarikan maksimum terhadap gerakan ekstrem.

Kesimpulan

Kesimpulannya, ini adalah strategi pelacakan tren yang sederhana namun praktis, terutama didasarkan pada silang TENKAN / KIJUN dan ADX untuk mengidentifikasi tren jangka menengah hingga panjang dan menghasilkan sinyal. Ini telah menunjukkan hasil backtesting positif, terutama pada pasangan BTC dengan kapitalisasi pasar tinggi seperti ETH / BTC, dengan profitabilitas yang relatif stabil. Tetapi juga bergantung pada penyesuaian parameter, membutuhkan optimasi per pasangan. Kontrol risiko per perdagangan juga diperlukan untuk membatasi kerugian ketika tren terbalik. Secara keseluruhan ini menawarkan referensi strategi trend berikut yang berharga bagi pedagang algo.


/*backtest
start: 2023-11-07 00:00:00
end: 2023-12-07 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy(title="Odin's Kraken (TK Cross Strategy)", shorttitle="Odin's Kraken", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

src = input(close, title="Source")

// define tk in ichimoku

conversionPeriods = input(18, minval=1, title="Conversion Line Periods (Tenkan)"),
basePeriods = input(58, minval=1, title="Base Line Periods (Kijun)")

donchian(len) => avg(lowest(len), highest(len))

conversionLine = donchian(conversionPeriods)
baseLine = donchian(basePeriods)

TK_Uptrend = crossover(conversionLine,baseLine)
TK_Downtrend = crossunder(conversionLine,baseLine)

plot(conversionLine, color=lime, title="Tenkan", linewidth=3)
plot(baseLine, color=red, title="Kijun", linewidth=3)

// define ADX

adxlen = input(14, title="ADX Smoothing")
dilen = input(14, title="DI Length")
th = input(title="threshold", defval=20)
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)
	
[plus, minus] = dirmov(dilen)
sig = adx(dilen, adxlen)

// backtesting range

// From Date Inputs
fromDay = input(defval = 3, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 9, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2018, title = "From Year", minval = 1970)
 
// To Date Inputs
toDay = input(defval = 3, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 9, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2019, title = "To Year", minval = 1970)
 
// Calculate start/end date and time condition
startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true

// open long and short

longCondition = TK_Uptrend
if (longCondition and sig > 12 and time_cond)
    strategy.entry("LONG", strategy.long)

shortCondition = TK_Downtrend
if (shortCondition and sig > 12 and time_cond)
    strategy.entry("SHORT", strategy.short)

// close trade if backtesting criteria not met

if (not time_cond)
    strategy.close_all()




Lebih banyak