Strategi Perdagangan Kuantitatif Triple Super Trend Ichimoku Cloud


Tanggal Pembuatan: 2023-12-27 15:22:40 Akhirnya memodifikasi: 2023-12-27 15:22:40
menyalin: 1 Jumlah klik: 1074
1
fokus pada
1623
Pengikut

Strategi Perdagangan Kuantitatif Triple Super Trend Ichimoku Cloud

Ringkasan

Strategi ini adalah strategi perdagangan kuantitatif yang menggabungkan tiga indikator supertrend, indikator Awan Ichimoku, indikator rata-rata real wavelength (ATR), dan indikator moving average (EMA). Strategi ini membentuk sistem perdagangan yang lebih lengkap dengan menentukan arah tren pasar melalui tiga indikator supertrend, tekanan dukungan awan Ichimoku, pengaturan stop loss indikator ATR, dan konfirmasi tren indikator EMA.

Prinsip Strategi

Logika inti dari strategi ini didasarkan pada penilaian tiga indikator overtrend. Indikator overtrend menilai arah tren dengan membandingkan harga dengan rasio besar dan kecil dari gelombang nyata rata-rata dalam periode tertentu. Strategi ini menggunakan tiga set indikator overtrend dengan parameter yang berbeda.

Selain itu, Ichimoku Cloud Indicator memberikan ketebalan awan untuk menilai kekuatan dan kelemahan tren saat ini, sehingga menyingkirkan beberapa sinyal palsu. Indikator ATR digunakan untuk mengatur titik-titik stop loss. Indikator EMA digunakan untuk mengkonfirmasi tren garis tengah dan panjang.

Secara khusus, melakukan overtrading ketika harga berada di atas tiga set indikator overtrending; melakukan shorting ketika harga berada di bawah tiga set indikator overtrending. Pada saat yang sama, meminta harga berada di atas atau di bawah awan Ichimoku, memfilter sinyal yang tidak pasti.

Keunggulan Strategis

  1. Tiga parameter indikator supertrend yang berbeda dapat secara efektif menyaring kebisingan di pasar dan menentukan arah tren dengan akurasi yang tinggi.

  2. Ichimoku Cloud Indicator menilai tren kuat lemah, menghindari false breakout. ATR stop loss setup masuk akal, untuk menghindari kerugian besar.

  3. Indikator EMA membantu menentukan arah tren garis tengah dan panjang, saling memverifikasi dengan penilaian supertrend, dan meningkatkan keandalan sinyal lebih lanjut.

  4. Kombinasi berbagai indikator, indikator yang berbeda dapat saling diverifikasi, penilaian komprehensif tren pasar, sinyal yang lebih dapat diandalkan.

Risiko Strategis

  1. Meskipun ada risiko untuk masuk ke area yang tidak valid, meskipun ada penilaian dari indikator awan Ichimoku. Dalam hal ini, indikator ATR akan mengendalikan sebagian kerugian dalam kisaran tertentu.

  2. Ketika pasar sangat berfluktuasi, stop loss yang ditetapkan oleh indikator ATR dapat dipicu secara langsung, sehingga meningkatkan tingkat kerugian strategi. Pada saat ini parameter ATR dapat disesuaikan atau meningkatkan jangkauan stop loss.

  3. Jika parameter indikator triple overtrend tidak disetel dengan benar, banyak sinyal tidak valid dapat dihasilkan. Ini memerlukan banyak pengulangan untuk menemukan kombinasi optimal.

Arah optimasi strategi

  1. Indikator lain dapat ditambahkan ke penilaian, seperti indikator volatilitas, indikator Brin band, dan lain-lain, untuk membantu memfilter sinyal, meningkatkan keandalan.

  2. Hal ini dapat dilakukan dengan memperbaiki metode perhitungan ATR untuk secara dinamis menyesuaikan stop loss dalam fluktuasi besar dan mengurangi tingkat kerugian.

  3. Model pembelajaran mesin dapat dimasukkan untuk menilai sinyal jual beli dengan pelatihan data historis, mengurangi pengaruh pengaturan parameter buatan, dan meningkatkan akurasi sinyal.

Meringkaskan

Strategi ini menggabungkan tiga bagian dari supertrend, Ichimoku Cloud, ATR, dan EMA. Melalui indikator yang berbeda, sinyal saling diverifikasi untuk menentukan arah tren pasar. Ichimoku Cloud dan ATR mengendalikan risiko stop loss, EMA membantu mengkonfirmasi tren garis tengah.

Kode Sumber Strategi
/*backtest
start: 2022-12-20 00:00:00
end: 2023-12-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(title="HyperTrend", shorttitle="HyperTrend", overlay=true )

// 
float percent_of_portfo = input.int(2, title = "percent of portfo per order", minval = 0, maxval = 100) / 100

// ichimoku Cloud
conversionPeriods = input.int(9, minval=1, title="Conversion Line Length", group = "ichimoku")
basePeriods = input.int(26, minval=1, title="Base Line Length", group = "ichimoku")
laggingSpan2Periods = input.int(52, minval=1, title="Leading Span B Length", group = "ichimoku")
displacement = input.int(26, minval=1, title="Lagging Span", group = "ichimoku")
donchian(len) => math.avg(ta.lowest(len), ta.highest(len))
conversionLine = donchian(conversionPeriods)
baseLine = donchian(basePeriods)
leadLine1 = math.avg(conversionLine, baseLine)
leadLine2 = donchian(laggingSpan2Periods)
p1 = plot(leadLine1, offset = displacement - 1, color=#A5D6A7,
	 title="Leading Span A", display = display.none)
p2 = plot(leadLine2, offset = displacement - 1, color=#ef9a9a,
	 title="Leading Span B", display = display.none)
plot(leadLine1 > leadLine2 ? leadLine1 : leadLine2, offset = displacement - 1, title = "Kumo Cloud Upper Line", display = display.none) 
plot(leadLine1 < leadLine2 ? leadLine1 : leadLine2, offset = displacement - 1, title = "Kumo Cloud Lower Line", display = display.none) 
fill(p1, p2, color = leadLine1 > leadLine2 ? color.rgb(67, 160, 72, 59) : color.rgb(244, 67, 54, 70))


// three supertrend

//1
atrPeriod1 = input(10, "ATR Length1", group="SuperTrend")
factor1 = input.float(1.0, "Factor1", step = 0.01, group="SuperTrend")

[supertrend1, direction1] = ta.supertrend(factor1, atrPeriod1)
supertrend1 := barstate.isfirst ? na : supertrend1

bodyMiddle1 = plot(barstate.isfirst ? na : (open + close) / 2, display = display.none)
upTrend1 =    plot(direction1 < 0 ? supertrend1 : na, "Up Trend",   color = color.green, style = plot.style_linebr)
downTrend1 =  plot(direction1 < 0 ? na : supertrend1, "Down Trend", color = color.red,   style = plot.style_linebr)


//2
atrPeriod2 = input(11, "ATR Length2", group="SuperTrend")
factor2 = input.float(2.0, "Factor2", step = 0.01, group="SuperTrend")

[supertrend2, direction2] = ta.supertrend(factor2, atrPeriod2)
supertrend2 := barstate.isfirst ? na : supertrend2

bodyMiddle2 = plot(barstate.isfirst ? na : (open + close) / 2, display = display.none)
upTrend2 =    plot(direction2 < 0 ? supertrend2 : na, "Up Trend",   color = color.green, style = plot.style_linebr)
downTrend2 =  plot(direction2 < 0 ? na : supertrend2, "Down Trend", color = color.red,   style = plot.style_linebr)


//3
atrPeriod3 = input(12, "ATR Length2", group="SuperTrend")
factor3 = input.float(3.0, "Factor2", step = 0.01, group="SuperTrend")

[supertrend3, direction3] = ta.supertrend(factor3, atrPeriod3)
supertrend3 := barstate.isfirst ? na : supertrend3

bodyMiddle3 = plot(barstate.isfirst ? na : (open + close) / 2, display = display.none)
upTrend3 =    plot(direction3 < 0 ? supertrend3 : na, "Up Trend",   color = color.green, style = plot.style_linebr)
downTrend3 =  plot(direction3 < 0 ? na : supertrend3, "Down Trend", color = color.red,   style = plot.style_linebr)


// ATR
lengthATR = input.int(title="Length (ATR)", defval=14, minval=1, group="ATR")
smoothingATR = input.string(title="Smoothing (ATR)", defval="RMA", options=["RMA", "SMA", "EMA", "WMA"], group="ATR")
ma_function(sourceATR, lengthATR) =>
	switch smoothingATR
		"RMA" => ta.rma(sourceATR, lengthATR)
		"SMA" => ta.sma(sourceATR, lengthATR)
		"EMA" => ta.ema(sourceATR, lengthATR)
		=> ta.wma(sourceATR, lengthATR)
ATR = ma_function(ta.tr(true), lengthATR)
plot(ATR, title = "ATR", color=color.new(#B71C1C, 0), display = display.none)

// EMA
lenEMA = input.int(200, minval=1, title="Length of EMA", group="EMA")
srcEMA = input(close, title="Source of EMA", group="EMA")
offset = input.int(title="Offset (EMA)", defval=0, minval=-500, maxval=500, group="EMA")
outEMA = ta.ema(srcEMA, lenEMA)
plot(outEMA, title="EMA", color=color.blue, offset=offset, display = display.none)

ma(sourceEMA, lengthEMA, type) =>
    switch type
        "SMA" => ta.sma(sourceEMA, lengthEMA)
        "EMA" => ta.ema(sourceEMA, lengthEMA)
        "SMMA (RMA)" => ta.rma(sourceEMA, lengthEMA)
        "WMA" => ta.wma(sourceEMA, lengthEMA)
        "VWMA" => ta.vwma(sourceEMA, lengthEMA)

typeMA = input.string(title = "Method (EMA)", defval = "SMA", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group="EMA")
smoothingLengthEMA = input.int(title = "Smoothing Length (EMA)", defval = 5, minval = 1, maxval = 100, group="EMA")

smoothingLine = ma(outEMA, smoothingLengthEMA, typeMA)
plot(smoothingLine, title="Smoothing Line", color=#f37f20, offset=offset, display=display.none)


//logic



if (open + ATR > supertrend1) and (open + ATR > supertrend2) and (open + ATR > supertrend3) 
	strategy.entry("L", strategy.long)
else if (open < supertrend1 + ATR) and (open < supertrend2 + ATR) and (open < supertrend3 + ATR) 
	strategy.entry("S", strategy.short)
else
	strategy.close_all("C")