Triple Super Trend Ichimoku Cloud Strategi Perdagangan Kuantitatif


Tarikh penciptaan: 2023-12-27 15:22:40 Akhirnya diubah suai: 2023-12-27 15:22:40
Salin: 1 Bilangan klik: 1074
1
fokus pada
1623
Pengikut

Triple Super Trend Ichimoku Cloud Strategi Perdagangan Kuantitatif

Gambaran keseluruhan

Strategi ini adalah strategi perdagangan kuantitatif yang menggabungkan tiga petanda trend super, petanda awan Ichimoku, purata gelombang sebenar (ATR), dan purata bergerak indeks (EMA). Strategi ini menilai arah trend pasaran melalui tiga petanda trend super, petanda awan Ichimoku untuk menentukan tekanan sokongan, penempatan stop loss pada petanda ATR, dan pengesahan trend pada petanda EMA, membentuk sistem perdagangan yang lebih lengkap.

Prinsip Strategi

Logik teras strategi ini adalah berdasarkan penghakiman tiga indikator overtrend. Indikator overtrend menilai arah trend dengan membandingkan harga dengan perbandingan besar dan kecil antara harga dan purata gelombang sebenar dalam tempoh tertentu.

Selain itu, ketebalan awan yang diberikan oleh indikator Awan Ichimoku menilai kekuatan dan kelemahan trend semasa, sehingga menghapuskan beberapa isyarat palsu. Indeks ATR digunakan untuk menetapkan titik berhenti. Indeks EMA digunakan untuk mengesahkan trend garis tengah dan panjang.

Khususnya, apabila harga lebih tinggi daripada tiga set indikator overtrend, buat lebih banyak; apabila harga lebih rendah daripada tiga set indikator overtrend, buat kosong. Pada masa yang sama, minta harga lebih tinggi atau lebih rendah daripada awan Ichimoku, saring isyarat yang tidak pasti. Tetapkan titik henti untuk harga pembukaan posisi tolak nilai ATR, untuk mewujudkan pemantauan dinamik.

Kelebihan Strategik

  1. Tiga parameter penunjuk super trend berbeza, dapat menyaring bunyi pasaran dengan berkesan dan menentukan arah trend dengan lebih tepat.

  2. Indeks Awan Ichimoku menilai trend kuat atau lemah, mengelakkan pecah palsu. Tetapan Hentian Kerosakan ATR adalah munasabah, mengelakkan kerugian besar sebanyak mungkin.

  3. Penunjuk EMA membantu menentukan arah trend garis tengah dan panjang, saling mengesahkan dengan penilaian super trend, dan meningkatkan kebolehpercayaan isyarat.

  4. Gabungan pelbagai petunjuk, antara petunjuk yang berbeza boleh saling disahkan, menilai trend pasaran secara menyeluruh, isyarat lebih dipercayai.

Risiko Strategik

  1. Walau bagaimanapun, dengan mengambil keputusan dalam Indeks Awan Ichimoku, terdapat risiko untuk menembusi ketebalan awan dan memasuki kawasan yang tidak berkesan. Dalam kes ini, Indeks ATR akan mengawal sebahagian kerugian dalam julat tertentu.

  2. Apabila pasaran bergelombang, titik-titik berhenti yang ditetapkan oleh penunjuk ATR mungkin akan dicetuskan secara langsung, sehingga meningkatkan kadar kerugian strategi. Dalam kes ini, parameter ATR boleh disesuaikan atau meningkatkan ruang berhenti.

  3. Jika parameter indikator triple overtrend tidak ditetapkan dengan betul, banyak isyarat tidak sah mungkin dihasilkan. Ini memerlukan banyak pengulangan untuk mencari parameter kombinasi terbaik.

Arah pengoptimuman strategi

  1. Indikator lain boleh ditambah lagi, seperti Indikator Kadar Fluktuasi, Indikator Blink Band, dan lain-lain, untuk membantu penapisan isyarat, meningkatkan kebolehpercayaan.

  2. Ia juga boleh digunakan untuk mengurangkan kadar kerugian dengan mengubah cara pengiraan ATR.

  3. Model pembelajaran mesin boleh dimasukkan untuk menilai isyarat jual beli dengan latihan data sejarah, mengurangkan kesan tetapan parameter buatan, dan meningkatkan ketepatan isyarat.

ringkaskan

Strategi ini menggunakan tiga bahagian tiga super trend, Ichimoku awan, penunjuk ATR, dan empat bahagian penunjuk EMA. Melalui petunjuk yang berbeza, saling mengesahkan isyarat, menilai arah trend pasaran. Ichimoku awan dan ATR mengawal risiko kerugian, EMA membantu mengesahkan trend garis panjang tengah. Isyarat strategi ini lebih dipercayai, sesuai untuk memegang garis panjang tengah.

Kod 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")