Sistem yang Kuat Menggabungkan Strategi Pembalikan dan Mengikuti Trend

Penulis:ChaoZhang, Tarikh: 2023-10-27 16:22:08
Tag:

img

Ringkasan

Sistem Penembusan Pembalikan Double Dip menggabungkan unsur-unsur pembalikan dan strategi mengikuti trend dalam perdagangan kuantitatif. Ia menghasilkan isyarat beli dengan mengesan hari turun berturut-turut berbanding dengan harga penutupan sebelumnya, dan isyarat jual apabila harga melintasi di atas garis purata bergerak T3, yang membolehkan perdagangan yang menguntungkan sambil menguruskan risiko.

Cara Ia Bekerja

Sistem ini terdiri daripada dua komponen:

  1. 123 Peralihan

Ia memerhatikan perubahan harga penutupan selama N hari yang lalu. Jika penutupan hari ini lebih tinggi daripada semalam, dan semalam lebih rendah daripada hari sebelumnya, ia menandakan dua hari turun berturut-turut dan mencetuskan isyarat beli. Ia juga menggunakan penunjuk STOCH - apabila garis pantas STOCH hari ini lebih rendah daripada garis perlahan, ia mengesahkan lagi kesahihan isyarat beli.

  1. Purata Bergerak T3

Garis T3 dikira berdasarkan purata bergerak eksponensial menggunakan formula khas. Dengan menyesuaikan parameter, ia mengawal kepekaan purata bergerak terhadap perubahan harga. Isyarat jual dihasilkan apabila harga melintasi di atas garis T3.

Sistem menggabungkan dua isyarat di atas, menghasilkan isyarat dagangan sebenar hanya apabila isyarat beli 123 Reversal dan isyarat T3 Sell berlaku bersama-sama.

Analisis Kelebihan

  • Berkesan untuk perdagangan pembalikan perikanan bawah dan menunggang pantulan trend yang bertentangan
  • Purata bergerak membantu mengunci keuntungan dan menguruskan risiko
  • Mekanisme isyarat ganda meningkatkan kesahihan isyarat dan mengurangkan isyarat palsu
  • Menggabungkan kekuatan kedua-dua strategi trend-mengikuti dan pembalikan
  • Parameter yang boleh diselaraskan membolehkan fleksibiliti untuk keadaan pasaran yang berbeza

Analisis Risiko

  • Isyarat pembalikan mungkin palsu, yang membawa kepada perdagangan yang rugi
  • Penyesuaian parameter yang tidak betul boleh menyebabkan perdagangan berlebihan, meningkatkan kos
  • Menjual isyarat dari purata bergerak mungkin awal keluar trend menguntungkan
  • Risiko seperti perburuan stop-loss kekal semasa pasaran yang tidak menentu
  • Parameter perlu dioptimumkan untuk instrumen yang berbeza

Untuk menangani risiko, perkara berikut boleh dilakukan:

  1. Sesuaikan parameter pembalikan untuk meningkatkan kesahihan isyarat
  2. Penyesuaian parameter purata bergerak untuk memanjangkan tempoh penahan
  3. Tambah stop-loss untuk hadkan kerugian
  4. Mengoptimumkan parameter secara berasingan untuk instrumen yang berbeza

Peluang Peningkatan

Strategi ini boleh ditingkatkan dalam beberapa aspek:

  1. Tambah penapis untuk memastikan kesahihan isyarat

    Indikator tambahan seperti volume breakout boleh ditambah sebagai penapis untuk mengelakkan perdagangan palsu.

  2. Penyesuaian parameter untuk pasaran yang berubah

    Uji semula pelbagai kombinasi parameter dan pilih set yang memberikan pulangan tertinggi.

  3. Menggabungkan pembelajaran mesin untuk pengoptimuman adaptif

    Mengumpul set data sejarah yang besar, melatih model ML untuk meramalkan titik masuk / keluar yang optimum, dan mengoptimumkan parameter secara dinamik.

  4. Mengoptimumkan parameter secara berasingan untuk instrumen yang berbeza

    Instrumen mempunyai ciri yang berbeza, jadi parameter optimum mereka juga berbeza.

Kesimpulan

Double Dip Reversal Breakout System secara sinergis menggabungkan trend-mengikuti dan perdagangan pembalikan. Ia membolehkan membeli pada tahap terendah selepas penurunan dan mendapatkan keuntungan dari trend menggunakan purata bergerak. Gabungan yang berkesan antara isyarat pembalikan dan trend memanfaatkan peluang pembalikan sambil mengunci keuntungan. Walaupun terdapat beberapa risiko, strategi dapat dipertingkatkan melalui pengoptimuman parameter, menambah penapis dan lain-lain untuk memenuhi keadaan pasaran yang berbeza.


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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 16/09/2021
// 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
// This indicator plots the moving average described in the January, 1998 issue
// of S&C, p.57, "Smoothing Techniques for More Accurate Signals", by Tim Tillson.
// This indicator plots T3 moving average presented in Figure 4 in the article.
// T3 indicator is a moving average which is calculated according to formula:
//     T3(n) = GD(GD(GD(n))),
// where GD - generalized DEMA (Double EMA) and calculating according to this:
//     GD(n,v) = EMA(n) * (1+v)-EMA(EMA(n)) * v,
// where "v" is volume factor, which determines how hot the moving average’s response
// to linear trends will be. The author advises to use v=0.7.
// When v = 0, GD = EMA, and when v = 1, GD = DEMA. In between, GD is a less aggressive
// version of DEMA. By using a value for v less than1, trader cure the multiple DEMA
// overshoot problem but at the cost of accepting some additional phase delay.
// In filter theory terminology, T3 is a six-pole nonlinear Kalman filter. Kalman
// filters are ones that use the error — in this case, (time series - EMA(n)) — 
// to correct themselves. In the realm of technical analysis, these are called adaptive
// moving averages; they track the time series more aggres-sively when it is making large
// moves. Tim Tillson is a software project manager at Hewlett-Packard, with degrees in
// mathematics and computer science. He has privately traded options and equities for 15 years.  
//
// 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


T3A(Length, b) =>
    pos = 0.0
    xPrice = close
    xe1 = ema(xPrice, Length)
    xe2 = ema(xe1, Length)
    xe3 = ema(xe2, Length)
    xe4 = ema(xe3, Length)
    xe5 = ema(xe4, Length)
    xe6 = ema(xe5, Length)
    c1 = -b*b*b
    c2 = 3*b*b+3*b*b*b
    c3 = -6*b*b-3*b-3*b*b*b
    c4 = 1+3*b+b*b*b+3*b*b
    nT3Average = c1 * xe6 + c2 * xe5 + c3 * xe4 + c4 * xe3
    pos:= iff(nT3Average > close, -1,
           iff(nT3Average < close, 1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & T3 Averages", shorttitle="Combo", overlay = true)
line1 = input(true, "---- 123 Reversal ----")
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
line2 = input(true, "---- T3 Averages ----")
LengthT3 = input(5, minval=1)
b = input(0.7, minval=0.01,step=0.01) 
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posT3A = T3A(LengthT3, b)
pos = iff(posReversal123 == 1 and posT3A == 1 , 1,
	   iff(posReversal123 == -1 and posT3A == -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