DMI dan strategi kombinasi rata-rata bergerak

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

Gambaran umum

Strategi ini menggabungkan strategi pembalikan 123, strategi DMI dan strategi rata-rata bergerak untuk membentuk strategi kombinasi yang efektif. Ini dapat melakukan operasi terbalik pada titik pembalikan tren dan mengikuti tren ketika tren berlanjut. Sementara itu, menggunakan rata-rata bergerak untuk menyaring dan mengidentifikasi arah tren pasar untuk meningkatkan tingkat kemenangan strategi.

Logika Strategi

  1. 123 strategi pembalikan: pergi panjang ketika harga penutupan lebih tinggi dari penutupan sebelumnya selama 2 hari berturut-turut dan garis K lambat 9 hari di bawah 50; pergi pendek ketika harga penutupan lebih rendah dari penutupan sebelumnya selama 2 hari berturut-turut dan garis K cepat 9 hari di atas 50.

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

  3. Strategi rata-rata bergerak: pergi panjang ketika harga penutupan melintasi MA; pergi pendek ketika harga penutupan melintasi MA.

  4. Buka posisi ketika tiga strategi memberikan sinyal yang konsisten, jika tidak tutup posisi.

Strategi ini menggabungkan strategi tren dan strategi pembalikan, yang dapat menangkap peluang pembalikan dan peluang mengikuti tren. Filter rata-rata bergerak dapat mengurangi sinyal palsu. Beberapa strategi saling memverifikasi dan meningkatkan keandalan sinyal.

Analisis Keuntungan

  1. Menggabungkan beberapa strategi meningkatkan tingkat kemenangan. 123 pembalikan untuk menangkap titik balik, DMI untuk menangkap tren dan filter MA untuk menyaring sinyal.

  2. Menggabungkan strategi pembalikan dan tren memungkinkan untuk menangkap pembalikan dan tren secara fleksibel.

  3. Filter MA mengurangi sinyal palsu dari fluktuasi jangka pendek.

  4. Menggabungkan beberapa strategi memverifikasi sinyal dan menghindari kegagalan strategi tunggal.

  5. Beberapa parameter memungkinkan optimasi untuk kombinasi parameter terbaik dan stabilitas yang lebih tinggi.

Analisis Risiko

  1. Strategi pembalikan cenderung terjebak dalam tren yang terikat rentang.

  2. DMI dapat melewatkan peluang tren awal. dapat memperpendek parameter DMI untuk meningkatkan sensitivitas.

  3. MA memiliki efek keterlambatan dan dapat menunda generasi sinyal.

  4. Meskipun menggabungkan strategi meningkatkan tingkat kemenangan, itu juga meningkatkan kompleksitas. pengujian parameter yang cermat diperlukan.

  5. Strategi ini sensitif terhadap biaya transaksi. Harus meredakan stop loss untuk menghindari over-trading.

Arahan Optimasi

  1. Optimalkan parameter dari setiap strategi untuk menemukan kombinasi terbaik.

  2. Tambahkan indikator lain seperti MACD, RSI untuk menyaring sinyal dan meningkatkan stabilitas.

  3. Tambahkan strategi stop loss seperti trailing stop loss untuk mengendalikan risiko.

  4. Mengoptimalkan ukuran posisi seperti ukuran tetap / dinamis untuk meningkatkan pengembalian.

  5. Parameter penyempurnaan khusus untuk produk tertentu untuk meningkatkan kemampuan beradaptasi.

  6. Tambahkan model pembelajaran mesin untuk membantu keputusan dan meningkatkan kinerja.

Kesimpulan

Strategi ini membentuk sistem kombinasi yang fleksibel dengan secara efektif menggabungkan strategi pembalikan, tren dan filter MA. Ini dapat menangkap peluang pembalikan dan tren-mengikuti, dan meningkatkan keandalan sinyal melalui beberapa strategi. Masih ada ruang untuk perbaikan lebih lanjut dalam parameter, stop loss, ukuran posisi dan sebagainya. Dengan aplikasi terampil, strategi praktis dan dapat 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 banyak