Sistem pelacakan pembalikan rata-rata bergerak ganda

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

img

Gambaran umum

Sistem Pelacakan Pembalikan Rata-rata Bergerak Ganda mengintegrasikan strategi pola pembalikan 123 dan strategi Ichimoku untuk mengidentifikasi peluang pembalikan dan melacak tren untuk hasil yang berlebihan.

Logika Strategi

Strategi ini terdiri dari dua sub-strategi:

  1. 123 Strategi pola pembalikan

Strategi ini diperdagangkan berdasarkan pola harga.

  • Pergi panjang ketika harga penutupan naik selama dua hari berturut-turut dan stokastik lambat 9 hari berada di bawah 50.

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

Ini menggunakan break-out hari sebelumnya untuk menentukan pembalikan dan menggunakan stokastik untuk menyaring kebisingan.

  1. Strategi Ichimoku

Strategi ini berdagang berdasarkan lima garis silang Ichimoku. Logika adalah:

  • Pergi panjang ketika harga penutupan di atas garis dasar.

  • Pergi short ketika harga penutupan berada di bawah garis konversi.

Di mana garis dasar adalah titik tengah tertinggi tertinggi dan terendah terendah selama 26 hari terakhir, dan garis konversi adalah titik tengah tertinggi tertinggi dan terendah terendah selama 9 hari terakhir.

Strategi akhir menggabungkan sinyal dari kedua sub-strategi, masuk ketika kedua sinyal panjang atau pendek dan keluar ketika mereka tidak setuju.

Analisis Keuntungan

  • Menggabungkan pembalikan dan mengikuti tren, fleksibel dalam menangkap pembalikan dan tren.

  • 123 pola sederhana dan efektif dalam mengidentifikasi pembalikan.

  • Parameter Ichimoku dioptimalkan, dengan risiko keluar yang lebih rendah.

  • Menggabungkan dua strategi yang berbeda dapat mencapai optimasi.

Analisis Risiko

  • Strategi pembalikan rentan terhadap perangkap dan kerugian. Pertimbangkan jangka waktu penahan yang lebih pendek atau tambahkan stop loss untuk mengendalikan risiko.

  • Ichimoku dapat mengalami whipsaws di pasar yang terbatas rentang fine-tune parameter atau menambahkan filter untuk mengurangi perdagangan yang tidak perlu.

  • Parameter yang tidak kompatibel saat menggabungkan strategi dapat menyebabkan sinyal yang terlalu sering atau jarang.

Arahan Optimasi

  • Uji lebih banyak indikator untuk filter yang lebih baik, misalnya memasukkan volume.

  • Mengoptimalkan parameter Ichimoku untuk menyesuaikan karakteristik instrumen.

  • Tambahkan mekanisme stop loss, misalnya set exit berdasarkan ATR.

  • Tambahkan modul manajemen uang untuk pengendalian risiko.

  • Mengumpulkan lebih banyak data untuk backtesting yang kuat, menemukan masalah dan mengulangi.

Kesimpulan

Sistem Pelacakan Pembalikan Rata-rata Bergerak Ganda menggabungkan kekuatan strategi pembalikan dan mengikuti tren melalui optimasi dan kombinasi untuk generasi alfa. Ini memiliki manfaat perdagangan tetapi risiko seperti whipsaws dan stop loss ada. Kita perlu terus meningkatkan logika dalam backtest dan menerapkan kontrol risiko yang tepat untuk stabilitas dan kinerja dunia nyata. Secara keseluruhan, ini memberikan pendekatan yang baik untuk menggabungkan strategi yang berbeda 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 banyak