DMI dan strategi gabungan purata bergerak

Penulis:ChaoZhang, Tarikh: 2023-09-19 21:51:14
Tag:

Ringkasan

Strategi ini menggabungkan strategi pembalikan 123, strategi DMI dan strategi purata bergerak untuk membentuk strategi gabungan yang berkesan. Ia boleh membuat operasi terbalik pada titik pembalikan trend dan mengikuti trend apabila trend berterusan. Sementara itu, ia menggunakan purata bergerak untuk menapis dan mengenal pasti arah trend pasaran untuk meningkatkan kadar kemenangan strategi.

Logika Strategi

  1. Strategi pembalikan: pergi panjang apabila harga penutupan lebih tinggi daripada penutupan sebelumnya selama 2 hari berturut-turut dan garis K perlahan 9 hari di bawah 50; pergi pendek apabila harga penutupan lebih rendah daripada penutupan sebelumnya selama 2 hari berturut-turut dan garis K cepat 9 hari di atas 50.

  2. Strategi DMI: pergi panjang apabila +DI melintasi di atas -DI; pergi pendek apabila -DI melintasi di bawah +DI.

  3. Strategi purata bergerak: pergi panjang apabila harga penutupan melintasi MA; pergi pendek apabila harga penutupan melintasi MA.

  4. Buka kedudukan apabila tiga strategi memberikan isyarat yang konsisten, jika tidak tutup kedudukan.

Strategi ini menggabungkan strategi trend dan strategi pembalikan, yang dapat menangkap peluang pembalikan dan peluang mengikuti trend. Penapis purata bergerak dapat mengurangkan isyarat palsu. Pelbagai strategi mengesahkan satu sama lain dan meningkatkan kebolehpercayaan isyarat.

Analisis Kelebihan

  1. Menggabungkan pelbagai strategi meningkatkan kadar kemenangan. 123 pembalikan untuk menangkap titik perubahan, DMI untuk menangkap trend dan penapis MA untuk menapis isyarat.

  2. Menggabungkan strategi pembalikan dan trend membolehkan menangkap pembalikan dan trend dengan fleksibel.

  3. Penapis MA mengurangkan isyarat palsu dari turun naik jangka pendek.

  4. Menggabungkan pelbagai strategi mengesahkan isyarat dan mengelakkan kegagalan strategi tunggal.

  5. Pelbagai parameter membolehkan pengoptimuman untuk kombinasi parameter terbaik dan kestabilan yang lebih tinggi.

Analisis Risiko

  1. Strategi pembalikan cenderung terperangkap dalam trend yang terikat julat.

  2. DMI mungkin terlepas peluang trend awal. boleh memendekkan parameter DMI untuk meningkatkan kepekaan.

  3. MA mempunyai kesan kelewatan dan boleh melambatkan penjanaan isyarat.

  4. Walaupun menggabungkan strategi meningkatkan kadar kemenangan, ia juga meningkatkan kerumitan.

  5. Strategi ini sensitif terhadap kos transaksi. Harus mengurangkan stop loss untuk mengelakkan perdagangan berlebihan.

Arahan pengoptimuman

  1. Mengoptimumkan parameter setiap strategi untuk mencari kombinasi terbaik.

  2. Tambah penunjuk lain seperti MACD, RSI untuk menapis isyarat dan meningkatkan kestabilan.

  3. Tambah strategi stop loss seperti trailing stop loss untuk mengawal risiko.

  4. Mengoptimumkan saiz kedudukan seperti saiz tetap / dinamik untuk meningkatkan pulangan.

  5. Parameter penyuntingan halus untuk produk tertentu untuk meningkatkan kesesuaian.

  6. Tambah model pembelajaran mesin untuk membantu keputusan dan meningkatkan prestasi.

Kesimpulan

Strategi ini membentuk sistem gabungan yang fleksibel dengan menggabungkan strategi pembalikan, trend dan penapis MA dengan berkesan. Ia dapat menangkap peluang pembalikan dan trend yang mengikuti, dan meningkatkan kebolehpercayaan isyarat melalui pelbagai strategi. Masih ada ruang untuk penambahbaikan lebih lanjut dalam parameter, stop loss, saiz kedudukan dan sebagainya. Dengan aplikasi mahir, strategi praktikal dan boleh diperluas ini dapat menghasilkan keuntungan yang cukup dalam perdagangan langsung.


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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 15/10/2019
// 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
// The related article is copyrighted material from Stocks & Commodities Aug 2009 
//
// 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

fFilter(xSeriesSum, xSeriesV, Filter) =>
    iff(xSeriesV > Filter, xSeriesSum, 0)

DMIMA(Length_MA, Length_DMI) =>
    pos = 0.0
    xMA = sma(close, Length_MA)
    up = change(high)
    down = -change(low)
    trur = rma(tr, Length_DMI)
    xPDI = fixnan(100 * rma(up > down and up > 0 ? up : 0, Length_DMI) / trur)
    xNDI = fixnan(100 * rma(down > up and down > 0 ? down : 0, Length_DMI) / trur)
    nPDI = xPDI
    nNDI = xNDI
    nMA = xMA
    nPDI_1 = xPDI[1]
    nNDI_1 = xNDI[1]
    nMA_1 = xMA[1]
    bMDILong = iff(nPDI > nNDI and nPDI_1 < nNDI_1, true, 
                 iff(nPDI < nNDI and nPDI_1 > nNDI_1, false, false)) 
    bMDIShort = iff(nPDI > nNDI and nPDI_1 < nNDI_1, false, 
                  iff(nPDI < nNDI and nPDI_1 > nNDI_1, true, false)) 
    bMALong = iff(close > nMA and close[1] < nMA_1, true, 
                 iff(close < nMA and close[1] > nMA_1, false, false))
    bMAShort = iff(close > nMA and close[1] < nMA_1, false, 
                 iff(close < nMA and close[1] > nMA_1, true, false))
    pos := iff(bMDILong and bMALong, 1, 
         iff(bMDIShort and bMAShort, -1, nz(pos[1], 0)))
    pos

strategy(title="Combo Backtest 123 Reversal & DMI & Moving Average", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
Length_MA = input(30, minval=1)
Length_DMI = input(14, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posDMIMA = DMIMA(Length_MA,Length_DMI)
pos = iff(posReversal123 == 1 and posDMIMA == 1 , 1,
	   iff(posReversal123 == -1 and posDMIMA == -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