Sistem perdagangan Ichimoku Keltner bersepadu berdasarkan strategi purata bergerak


Tarikh penciptaan: 2023-12-20 13:40:08 Akhirnya diubah suai: 2023-12-20 13:40:08
Salin: 0 Bilangan klik: 745
1
fokus pada
1621
Pengikut

Sistem perdagangan Ichimoku Keltner bersepadu berdasarkan strategi purata bergerak

Gambaran keseluruhan

Strategi ini mengintegrasikan strategi garis rata, grafik Awan Ichimoku dan petunjuk teknikal saluran Keltner, yang membolehkan trend-tracking dan perdagangan terobosan, yang digunakan untuk perdagangan algoritma frekuensi tinggi.

Prinsip Strategi

  1. Menggunakan saluran Keltner untuk menentukan sama ada harga saham melebihi saluran naik dan turun sebagai isyarat untuk membuat simpanan
  2. Peta awan Ichimoku untuk menentukan arah trend, digunakan bersama dengan saluran Keltner
  3. Strategi garis rata menghantar isyarat kedudukan kosong

Analisis kelebihan

  1. Mengintegrasikan pelbagai petunjuk teknikal, penilaian menyeluruh, dan meningkatkan ketepatan keputusan
  2. Keltner Channel menilai keadaan yang lebih baik daripada membeli dan menjual, mengelakkan daripada meletakkan saham untuk mengejar kenaikan dan penurunan
  3. Ichimoku Cloud Diagram untuk Mengesan Trend Besar dan Mengelakkan Perdagangan Berlawanan
  4. Strategi penapisan rata-rata untuk mengelakkan getaran yang terlalu sensitif

Analisis risiko

  1. Integrasi multi-indikator, parameter yang lebih rumit dan perlu diuji dengan teliti
  2. Garis peralihan awan dan garis rujukan tidak selalu menjadi isyarat dagangan yang boleh dipercayai
  3. Saluran Keltner memerlukan parameter yang disesuaikan dengan ciri-ciri saham yang berbeza

Arah pengoptimuman

  1. Menilai prestasi pelayan, mengurangkan kitaran purata dengan sewajarnya, meningkatkan kekerapan transaksi
  2. Uji sensitiviti saham yang berbeza terhadap parameter, menetapkan parameter penyesuaian
  3. Meningkatkan strategi penangguhan kerugian dan mengurangkan kerugian tunggal

ringkaskan

Strategi ini mengintegrasikan pelbagai petunjuk teknikal dari carta awan Ichimoku, saluran Keltner dan strategi garis rata, untuk mencapai trend dan penembusan perdagangan yang sangat cekap. Penghakiman strategi ini lebih menyeluruh dan tepat, mengelakkan beberapa isyarat palsu berbanding dengan satu petunjuk.

Kod sumber strategi
/*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))