Strategi Dagangan Kombo Berdasarkan 123 Reversal dan MACD

Penulis:ChaoZhang, Tarikh: 2023-09-19 17:17:30
Tag:

Ringkasan

Strategi ini menggabungkan 123 corak pembalikan dan penunjuk MACD untuk menjana isyarat perdagangan yang lebih kuat melalui penapisan.

Logika Strategi

  1. Strategi pembalikan membeli apabila dua hari terakhir adalah hari turun dan hari ini tutup adalah atas, dengan Stochastic di bawah ambang; menjual apabila dua hari terakhir adalah hari naik dan hari ini turun, dengan Stochastic di atas ambang.

  2. Strategi MACD berjalan panjang apabila MA pantas berada di atas MA perlahan, dan pendek apabila MA pantas berada di bawah MA perlahan.

  3. Perdagangan hanya dilakukan apabila kedua-dua strategi bersetuju, jika tidak, tiada tindakan diambil.

Analisis Kelebihan

Kelebihan utama:

  1. Isyarat gabungan berkesan menapis pelarian palsu, meningkatkan kadar kemenangan.

  2. 123 menangkap pembalikan jangka pendek, MACD menilai arah trend jangka menengah dan panjang.

  3. Stochastic dengan 123 mengelakkan perdagangan berlebihan selepas pembalikan trend.

  4. Dua strategi berkongsi tugas yang berbeza, saling mengesahkan, mengelakkan pengoptimuman berlebihan.

  5. Mudah bertukar antara panjang / pendek, dapat disesuaikan dengan pelbagai persekitaran pasaran.

Analisis Risiko

Risiko utama:

  1. Isyarat gabungan mungkin terlalu konservatif, kehilangan peluang yang baik.

  2. Kembali adalah mudah terdedah kepada peristiwa tiba-tiba, terdedah kepada kegagalan.

  3. Kekurangan stop loss mendedahkan strategi kepada kerugian besar.

  4. Penapisan berganda boleh menyebabkan perdagangan trend yang hilang.

  5. Kekurangan pengoptimuman parameter, nilai lalai mungkin tidak sesuai dengan semua instrumen.

Arahan pengoptimuman

Penambahbaikan:

  1. Uji kombinasi parameter yang berbeza untuk mencari nilai optimum.

  2. Tambah stop loss kepada loss kawalan setiap perdagangan.

  3. Masukkan lebih banyak penunjuk penapis untuk meningkatkan kualiti isyarat.

  4. Memperkenalkan model pembelajaran mesin untuk pengoptimuman parameter automatik.

  5. Ujian merentasi lebih banyak instrumen perdagangan untuk menilai ketahanan.

  6. Set parameter suis berdasarkan keadaan pasaran.

Ringkasan

Secara keseluruhan, menggabungkan isyarat dua mengelakkan pengoptimuman berlebihan berbanding dengan strategi tunggal. Dengan penambahan seperti lebih banyak penapis, hentikan kerugian dan sebagainya, ia boleh menjadi strategi perdagangan kuantitatif yang kukuh dan praktikal.


/*backtest
start: 2023-09-11 00:00:00
end: 2023-09-14 02:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 24/07/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
// This is one of the techniques described by William Blau in his book
// "Momentum, Direction and Divergence" (1995). If you like to learn more,
// we advise you to read this book. His book focuses on three key aspects
// of trading: momentum, direction and divergence. Blau, who was an electrical
// engineer before becoming a trader, thoroughly examines the relationship 
// between price and momentum in step-by-step examples. From this grounding,
// he then looks at the deficiencies in other oscillators and introduces some
// innovative techniques, including a fresh twist on Stochastics. On directional 
// issues, he analyzes the intricacies of ADX and offers a unique approach to help 
// define trending and non-trending periods.
// Blau`s indicator is like usual MACD, but it plots opposite of meaningof
// stndard MACD indicator.  
//
// 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

fADX(Len) =>
    up = change(high)
    down = -change(low)
    trur = rma(tr, Len)
    plus = fixnan(100 * rma(up > down and up > 0 ? up : 0, Len) / trur)
    minus = fixnan(100 * rma(down > up and down > 0 ? down : 0, Len) / trur)
    sum = plus + minus 
    100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), Len)

EMACD(r,SmthLen,LengthMACD) =>
    pos = 0
    source = close
    fastMA = ema(source, r)
    slowMA = ema(source, LengthMACD)
    xmacd = fastMA - slowMA
    xMA_MACD = ema(xmacd, SmthLen)
    pos := iff(xmacd < xMA_MACD, -1,
    	     iff(xmacd > xMA_MACD, 1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Ergodic MACD", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
r = input(14, minval=1)
LengthMACD = input(21, minval=1)
SmthLen = input(5, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posEMACD = EMACD(r,SmthLen,LengthMACD)
pos = iff(posReversal123 == 1 and posEMACD == 1 , 1,
	   iff(posReversal123 == -1 and posEMACD == -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