Strategi Pengesanan Trend Dinamik Dual-Mekanisme

Penulis:ChaoZhang, Tarikh: 2024-01-31 11:13:44
Tag:

img

Ringkasan

Strategi Pengesanan Trend Dinamis Dual-Mekanisme menggabungkan isyarat dari dua strategi perdagangan yang berbeza untuk mengesan trend. Ia mula-mula menggunakan strategi 123 Reversal untuk mengenal pasti titik pembalikan harga, kemudian menggunakan indeks Harga Sintetik yang Terganggu (D_DSP) untuk menentukan arah trend harga, dan akhirnya menghasilkan isyarat perdagangan dengan menggabungkan kedua-dua isyarat.

Strategi ini digunakan terutamanya untuk pengesanan trend jangka sederhana. Dengan menetapkan titik stop-loss dinamik melalui mekanisme berganda, ia dapat mengunci keuntungan dengan berkesan dan mengelakkan kerugian daripada berkembang. Sementara itu, menggabungkan indikator trend dan pembalikan untuk pengesahan berganda membantu mengurangkan perdagangan bising.

Logika Strategi

123 Strategi Pembalikan

Strategi 123 Reversal berasal dari halaman 183 buku Ulf Jensen How I Tripped My Money in the Futures Market. Ia mengenal pasti corak pembalikan harga menggunakan dua bar pembalikan berturut-turut.

Khususnya, ia menghasilkan isyarat beli apabila harga penutupan lebih tinggi daripada penutupan sebelumnya selama dua hari berturut-turut dan Osilator Stochastic Lambat 9 hari di bawah 50.

Indeks Harga Sintetik

Indeks Harga Sintetik (D_DSP) menunjukkan arah trend harga dan berada dalam fasa dengan kitaran dominan data harga sebenar.

Jika D_DSP positif, ia menunjukkan trend harga menaik. Jika negatif, ia menunjukkan trend harga menurun.

Mekanisme Berganda

Strategi ini menggabungkan strategi 123 Reversal dan isyarat indeks D_DSP. Jika kedua-dua isyarat bersetuju (baik panjang atau pendek), perdagangan akan dihasilkan. Jika isyarat tidak bersetuju, kedudukan akan ditutup.

Pengesahan berganda ini menapis bunyi bising dan mengunci keuntungan trend.

Kelebihan

Kelebihan terbesar strategi ini adalah dua tahap stop loss yang dilaksanakan. Pertama, Stochastics yang cepat dan perlahan membentuk stop loss yang tercetak dalam masa. Kedua, strategi pembalikan itu sendiri mengandungi ciri stop loss.

Dua stop loss memaksimumkan kunci keuntungan dan menghalang kerugian silang dari satu strategi stop loss.

Risiko

Risiko terbesar berasal dari tetapan parameter yang tidak fleksibel. Sebagai contoh, panjang kitaran yang salah boleh menyebabkan tren arus perdana yang hilang, kehilangan keuntungan atau peningkatan kerugian. Penegasan berganda yang terlalu kaku juga boleh menyebabkan kehilangan berhenti tepat pada masanya.

Juga, apabila menggabungkan strategi pembalikan dan trend, kedudukan pembersihan apabila isyarat tidak bersetuju boleh kehilangan peluang apabila trend berterusan ke arah arus perdana.

Pengoptimuman

Strategi ini boleh dioptimumkan dengan beberapa cara:

  1. Mengoptimumkan parameter kitaran menggunakan lebih banyak data backtesting untuk mencari nilai optimum.

  2. Tambah lebih banyak strategi stop loss seperti breakout atau trailing stop loss untuk menetapkan titik stop loss yang lebih dinamik dan munasabah.

  3. Sempurnakan peraturan pengesahan berganda untuk mengelakkan kedudukan yang berlebihan.

  4. Tambah penapis seperti penapis turun naik untuk mengelakkan penilaian yang salah dari turun naik trend peringkat akhir.

Kesimpulan

Strategi Pengesanan Trend Dinamik Dual-Mekanisme melaksanakan pengesanan trend dan kawalan risiko yang berkesan melalui kehilangan berhenti dua Stochastics yang cepat dan perlahan dan pengesahan dua isyarat pembalikan dan trend. Ia mempertimbangkan kedua-dua dimensi masa tindakan harga serta arah itu sendiri untuk membentuk asas keputusan berbilang dimensi.

Pengoptimuman berterusan peraturan dan parameter dijangka menghasilkan hasil yang baik. Tetapi pengoptimuman strategi memerlukan sejumlah besar data sejarah. Penapis pemilihan saham dan mekanisme stop loss juga memerlukan penyempurnaan berterusan. Pengesanan masa nyata untuk beberapa tempoh disyorkan untuk mengesahkan lagi strategi.


/*backtest
start: 2023-12-31 00:00:00
end: 2024-01-30 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 18/11/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
// Detrended Synthetic Price is a function that is in phase with the 
// dominant cycle of real price data. This DSP is computed by subtracting 
// a half-cycle exponential moving average (EMA) from the quarter cycle 
// exponential moving average.
// See "MESA and Trading Market Cycles" by John Ehlers pages 64 - 70. 
//
// 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

D_DSP(Length) =>
    pos = 0.0
    xHL2 = hl2
    xEMA1 = ema(xHL2, Length)
    xEMA2 = ema(xHL2, 2 * Length)
    xEMA1_EMA2 = xEMA1 - xEMA2
    pos := iff(xEMA1_EMA2 > 0, 1,
             iff(xEMA1_EMA2 < 0, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & D_DSP (Detrended Synthetic Price)", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
LengthDSP = input(14, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posD_DSP = D_DSP(LengthDSP)
pos = iff(posReversal123 == 1 and posD_DSP == 1 , 1,
	   iff(posReversal123 == -1 and posD_DSP == -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