Sistem Pengesanan Pembalikan Purata Bergerak Berganda

Penulis:ChaoZhang, Tarikh: 2023-11-07 16:00:33
Tag:

img

Ringkasan

Sistem Pengesanan Pembalikan Purata Bergerak Berganda mengintegrasikan strategi corak pembalikan 123 dan strategi Ichimoku untuk mengenal pasti peluang pembalikan dan mengesan trend untuk pulangan berlebihan.

Logika Strategi

Strategi ini terdiri daripada dua sub-strategi:

  1. 123 Strategi corak pembalikan

Strategi ini berdagang berdasarkan corak harga.

  • Pergi panjang apabila harga penutupan meningkat selama dua hari berturut-turut dan stokastik perlahan 9 hari berada di bawah 50.

  • Pergi pendek apabila harga penutupan jatuh selama dua hari berturut-turut dan stokastik cepat 9 hari di atas 50.

Ia menggunakan penembusan hari sebelumnya untuk menentukan pembalikan dan menggunakan stokastik untuk menapis bunyi bising.

  1. Strategi Ichimoku

Strategi ini berdagang berdasarkan persilangan lima garis Ichimoku. Logikanya adalah:

  • Pergi panjang apabila harga penutupan berada di atas garis asas.

  • Pergi pendek apabila harga penutupan berada di bawah garis penukaran.

Di mana garis asas adalah titik tengah tertinggi tertinggi dan terendah terendah selama 26 hari yang lalu, dan garis penukaran adalah titik tengah tertinggi tertinggi dan terendah terendah selama 9 hari yang lalu. Ia menggunakan persilangan purata bergerak untuk mengenal pasti trend.

Strategi akhir menggabungkan isyarat dari kedua-dua sub-strategi, memasuki apabila kedua-dua isyarat panjang atau pendek dan keluar apabila mereka tidak bersetuju.

Analisis Kelebihan

  • Menggabungkan pembalikan dan trend-mengikuti, fleksibel dalam menangkap pembalikan dan trend.

  • corak 123 adalah mudah dan berkesan dalam mengenal pasti pembalikan.

  • Parameter Ichimoku telah dioptimumkan, dengan risiko keluar yang lebih rendah.

  • Menggabungkan dua strategi yang berbeza boleh mencapai pengoptimuman.

Analisis Risiko

  • Strategi pembalikan terdedah kepada perangkap dan kerugian. Pertimbangkan tempoh tahan yang lebih pendek atau tambah stop loss untuk mengawal risiko.

  • Ichimoku boleh mengalami whipsaws di pasaran yang terhad dalam julat, menyesuaikan parameter atau menambah penapis untuk mengurangkan perdagangan yang tidak perlu.

  • Parameter yang tidak serasi apabila menggabungkan strategi boleh menyebabkan isyarat yang terlalu kerap atau jarang.

Arahan pengoptimuman

  • Uji lebih banyak penunjuk untuk penapis yang lebih baik, contohnya memasukkan jumlah.

  • Mengoptimumkan parameter Ichimoku untuk menyesuaikan ciri instrumen.

  • Tambahkan mekanisme stop loss, contohnya keluar set berdasarkan ATR.

  • Tambah modul pengurusan wang untuk kawalan risiko.

  • Mengumpul lebih banyak data untuk pengujian balik yang kukuh, menemui masalah dan berulang.

Kesimpulan

Sistem Pengesanan Pembalikan Purata Bergerak Berganda menggabungkan kekuatan pembalikan dan strategi mengikuti trend melalui pengoptimuman dan kombinasi untuk generasi alpha. Ia mempunyai kelebihan perdagangan tetapi risiko seperti whipsaws dan stop loss wujud. Kita perlu terus meningkatkan logika dalam backtest dan melaksanakan kawalan risiko yang betul untuk kestabilan dan prestasi dunia nyata. Secara keseluruhan ia menyediakan pendekatan yang baik untuk menggabungkan strategi yang berbeza untuk hasil keseluruhan yang lebih baik.


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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 26/11/2020
// This is combo strategies for get a cumulative signal. 
//
// First strategy
// This System was created from the Book "How I Tripled My Money In The 
// Futures Market" by Ulf Jensen, Page 183. This is reverse type of strategies.
// The strategy buys at market, if close price is higher than the previous close 
// during 2 days and the meaning of 9-days Stochastic Slow Oscillator is lower than 50. 
// The strategy sells at market, if close price is lower than the previous close price 
// during 2 days and the meaning of 9-days Stochastic Fast Oscillator is higher than 50.
//
// Second strategy
//  Ichimoku Strategy
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
Reversal123(Length, KSmoothing, DLength, Level) =>
    vFast = sma(stoch(close, high, low, Length), KSmoothing) 
    vSlow = sma(vFast, DLength)
    pos = 0.0
    pos := iff(close[2] < close[1] and close > close[1] and vFast < vSlow and vFast > Level, 1,
	         iff(close[2] > close[1] and close < close[1] and vFast > vSlow and vFast < Level, -1, nz(pos[1], 0))) 
	pos

middleDonchian(Length) =>
    lower = lowest(Length)
    upper = highest(Length)
    avg(upper, lower)    
    
Ichimoku2c(conversionPeriods, basePeriods,laggingSpan2Periods,displacement) =>
    pos = 0.0
    Tenkan = middleDonchian(conversionPeriods)
    Kijun =  middleDonchian(basePeriods)
    xChikou = close
    SenkouA = middleDonchian(laggingSpan2Periods)
    SenkouB = (Tenkan[basePeriods] + Kijun[basePeriods]) / 2
    pos := iff(close < SenkouA[displacement], -1,
              iff(close > SenkouB, 1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Ichimoku2c", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
conversionPeriods = input(9, minval=1),
basePeriods = input(26, minval=1)
laggingSpan2Periods = input(52, minval=1),
displacement = input(26, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posIchimoku2c = Ichimoku2c(conversionPeriods, basePeriods,laggingSpan2Periods,displacement)
pos = iff(posReversal123 == 1 and posIchimoku2c == 1 , 1,
	   iff(posReversal123 == -1 and posIchimoku2c == -1, -1, 0)) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1 , 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	 
if (possig == 0) 
    strategy.close_all()
barcolor(possig == -1 ? #b50404: possig == 1 ? #079605 : #0536b3 )

Lebih lanjut