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

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

img

Ringkasan

Ini adalah strategi penjejakan trend yang mudah tetapi menguntungkan berdasarkan persilangan satu jam TENKAN dan KIJUN dalam sistem ICHIMOKU digabungkan dengan penunjuk ADX untuk menapis pasaran trend lemah untuk menjana isyarat perdagangan.

Logika Strategi

Strategi ini menggunakan garis penukaran (TENKAN) dan garis asas (KIJUN) silang dalam sistem ICHIMOKU untuk menentukan arah trend pasaran. garisan TENKAN dikira berdasarkan purata tertinggi tertinggi dan terendah terendah 18 lilin yang lalu, mewakili garis penukaran pantas. garisan KIJUN berdasarkan 58 tempoh lilin, yang mewakili garis penukaran standard.

Apabila TENKAN melintasi di atas KIJUN, ia adalah isyarat bullish. Apabila TENKAN melintasi di bawah KIJUN, ia adalah isyarat bearish. Ini bertujuan untuk menangkap pembalikan trend jangka sederhana.

Selain itu, penunjuk ADX digunakan untuk mengukur kekuatan trend. Hanya apabila ADX melebihi 20, yang menunjukkan trend yang kuat, isyarat akan dicetuskan.

Ringkasnya, strategi ini mengenal pasti arah trend jangka menengah melalui persilangan TENKAN dan KIJUN, dan menggunakan ADX untuk menapis pecah palsu, untuk mengesan trend jangka panjang.

Analisis Kelebihan

Kelebihan utama strategi ini ialah:

  1. Menggunakan sistem ICHIMOKU yang matang dan boleh dipercayai untuk menentukan arah trend dan titik perubahan.

  2. Menyaring pasaran trend lemah menggunakan ADX untuk mengelakkan whipsaws dalam penyatuan.

  3. Jangka masa satu jam menapis bunyi pasaran dan hanya menangkap trend jangka menengah hingga panjang.

  4. Logiknya mudah dan mudah diikuti untuk peniaga trend.

  5. Hasil backtesting yang kukuh terutamanya pada syiling cap pasaran tinggi seperti ETH / BTC.

Analisis Risiko

Beberapa risiko untuk diperhatikan mengenai strategi ini:

  1. Parameter ICHIMOKU sensitif, memerlukan penyesuaian untuk pasangan yang berbeza.

  2. ADX mungkin terlewat dalam beberapa kes, menyebabkan ketiadaan kemasukan.

  3. Berprestasi rendah di pasaran pelbagai dengan sering stop loss hit.

  4. Prestasi sangat berbeza di antara pasangan dan jangka masa yang berbeza.

  5. Penguatkuasaan panjang kedudukan boleh berisiko, stop loss / mengambil keuntungan yang betul diperlukan.

Pengoptimuman boleh dilakukan melalui penyesuaian parameter ADX, menambah penapis seperti MACD untuk mengurangkan isyarat palsu, atau pelarasan dinamik parameter untuk ketahanan.

Arahan pengoptimuman

Beberapa arah utama untuk meningkatkan strategi:

  1. Pengoptimuman dinamik parameter TENKAN dan KIJUN untuk penyesuaian yang lebih baik.

  2. Mencari penunjuk trend yang lebih baik untuk menggantikan atau menggabungkan dengan ADX.

  3. Menambah stop loss / mengambil keuntungan untuk mengawal nisbah risiko / ganjaran.

  4. Menggabungkan pemodelan dengan penunjuk pelengkap untuk meningkatkan kestabilan.

  5. Modularisasi dan fleksibiliti untuk penyesuaian parameter pada lebih banyak pasangan.

  6. Pengurusan risiko kuantitatif e.g. kawalan pengambilan maksimum terhadap pergerakan melampau.

Kesimpulan

Kesimpulannya, ini adalah strategi penjejakan trend yang mudah namun praktikal, terutamanya berdasarkan silang TENKAN / KIJUN dan ADX untuk mengenal pasti trend jangka menengah hingga panjang dan menghasilkan isyarat. Ia telah menunjukkan hasil pengujian balik yang positif, terutama pada pasangan BTC dengan cap pasaran tinggi seperti ETH / BTC, dengan keuntungan yang agak stabil. Tetapi ia juga bergantung pada penyesuaian parameter, memerlukan pengoptimuman setiap pasangan. Kawalan risiko setiap perdagangan juga diperlukan untuk mengehadkan kerugian apabila trend berbalik. Secara keseluruhan ini menawarkan rujukan strategi trend berikut yang berharga untuk 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 lanjut