Sistem Perdagangan Ichimoku Keltner Terintegrasi Berdasarkan Strategi Rata-rata Bergerak

Penulis:ChaoZhang, Tanggal: 2023-12-20 13:40:08
Tag:

img

Gambaran umum

Strategi ini mengintegrasikan strategi rata-rata bergerak, grafik awan Ichimoku dan indikator teknis saluran Keltner untuk mencapai tren mengikuti dan perdagangan terobosan, yang cocok untuk perdagangan algoritmik frekuensi tinggi.

Prinsip Strategi

  1. Gunakan saluran Keltner untuk menilai apakah harga saham melebihi rel atas dan bawah saluran sebagai sinyal untuk membuka posisi
  2. Grafik awan Ichimoku menilai arah tren dan menggunakan saluran Keltner
  3. Strategi rata-rata bergerak mengirimkan sinyal penutupan

Analisis Keuntungan

  1. Mengintegrasikan beberapa indikator teknis untuk penilaian komprehensif untuk meningkatkan akurasi keputusan
  2. Keltner channel menilai kondisi overbought dan oversold untuk menghindari mengejar high dan membunuh low saat membuka posisi
  3. Grafik awan Ichimoku menilai tren utama untuk menghindari perdagangan melawan tren
  4. Strategi moving average menyaring kejutan dan mencegah sensitivitas yang berlebihan

Analisis Risiko

  1. Integrasi beberapa indikator membuat pengaturan parameter lebih kompleks dan membutuhkan pengujian yang cermat
  2. Pembebasan garis konversi dan garis dasar grafik awan tidak selalu merupakan sinyal perdagangan yang dapat diandalkan
  3. Saluran Keltner perlu menyesuaikan parameter untuk menyesuaikan dengan karakteristik stok yang berbeda

Arahan Optimasi

  1. Mengevaluasi kinerja server dan memperpendek siklus rata-rata bergerak dengan tepat untuk meningkatkan frekuensi perdagangan
  2. Uji sensitivitas stok yang berbeda terhadap parameter dan atur parameter adaptif
  3. Meningkatkan strategi stop loss untuk mengurangi kerugian tunggal

Ringkasan

Strategi ini mengintegrasikan grafik awan Ichimoku, saluran Keltner dan strategi rata-rata bergerak dengan beberapa indikator teknis untuk mencapai pelacakan tren dan perdagangan terobosan yang efisien. Dibandingkan dengan satu indikator, penilaian strategi ini lebih komprehensif dan akurat, menghindari sinyal palsu tertentu. Pada saat yang sama, ada juga masalah bahwa pengaturan parameter lebih kompleks dan perlu dioptimalkan untuk saham individu. Secara umum, strategi ini cocok untuk perdagangan algoritmik frekuensi tinggi dengan efek yang signifikan.


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

//@version=3
// Author: Persio Flexa
// Description: Ichimoku Clouds with Keltner Channel, perfect for margin trading 
strategy("Ichimoku Keltner Strategy", overlay=true) 

// -- Keltner ------------------------------------------------------------------
source = close

useTrueRange = input(true)
length = input(18, minval=1) 
mult = input(1.8)

ma = sma(source, length)
range = useTrueRange ? tr : high - low
rangema = sma(range, length)
upper = ma + rangema * mult
lower = ma - rangema * mult

plot(ma, title="BASE", color=orange,transp=85)
plot(upper, title="UPPER", color=red)
plot(lower, title="LOWER", color=green)

//crossUpper = crossover(source, upper)
//crossLower = crossunder(source, lower)
crossUpper = source > upper
crossLower = source  < lower

bprice = 0.0
bprice := crossUpper ? high+syminfo.mintick : nz(bprice[1])

sprice = 0.0
sprice := crossLower ? low -syminfo.mintick : nz(sprice[1]) 

crossBcond = false
crossBcond := crossUpper ? true 
 : na(crossBcond[1]) ? false : crossBcond[1]

crossScond = false
crossScond := crossLower ? true 
 : na(crossScond[1]) ? false : crossScond[1]

cancelBcond = crossBcond and (source < ma or high >= bprice )
cancelScond = crossScond and (source > ma or low <= sprice )

// ---------------------------------------------------------------------


// -- Ichimoku

ATRlength = input(200, minval=1)
ATRMult = input(2.272, minval=1)

ATR = rma(tr(true), ATRlength)

len = input(26, minval=1, title="EMA Length")
src = input(close, title="Source")
out = ema(src, len)

emaup = out+(ATR*ATRMult)
emadw = out-(ATR*ATRMult)

conversionPeriods = input(15, minval=1),
basePeriods = input(35, minval=1)
laggingSpan2Periods = input(52, minval=1),
displacement = input(26, minval=1)

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

conversionLine = donchian(conversionPeriods)
baseLine = donchian(basePeriods)
leadLine1 = avg(conversionLine, baseLine)
leadLine2 = donchian(laggingSpan2Periods)

p1 = plot(leadLine1, offset = displacement, color=green,transp=85, title="Lead 1")
p2 = plot(leadLine2, offset = displacement, color=red,transp=85, title="Lead 2")
fill(p1, p2,silver) 

longCond    = crossover(conversionLine, baseLine)
shortCond   = crossunder(conversionLine, baseLine)
// -------------------------------------------------------------------------

if (crossUpper and (conversionLine > baseLine))
    strategy.entry("long", strategy.long, stop=bprice, comment="LONG")

if (crossLower and (conversionLine < baseLine))
    strategy.entry("short", strategy.short, stop=sprice, comment="SHORT")
    
strategy.close("long", when = (shortCond and source < lower))
strategy.close("short", when = (longCond and source > upper))

Lebih banyak