Strategi Pelacakan Tren Dinamis dengan Mekanisme Ganda

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

img

Gambaran umum

Strategi Pelacakan Tren Dinamis Dual-Mekanisme menggabungkan sinyal dari dua strategi perdagangan yang berbeda untuk melacak tren. Pertama-tama menggunakan strategi 123 Reversal untuk mengidentifikasi titik pembalikan harga, kemudian menggunakan indeks Harga Sintetis (D_DSP) untuk menentukan arah tren harga, dan akhirnya menghasilkan sinyal perdagangan dengan menggabungkan kedua sinyal.

Strategi ini terutama digunakan untuk pelacakan tren jangka menengah. Dengan menetapkan titik stop-loss dinamis melalui mekanisme ganda, ini dapat secara efektif mengunci keuntungan dan menghindari kerugian dari perluasan. Sementara itu, menggabungkan indikator tren dan pembalikan untuk konfirmasi ganda membantu mengurangi perdagangan yang 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. Strategi ini mengidentifikasi pola pembalikan harga menggunakan dua batang pembalikan berturut-turut.

Secara khusus, ini menghasilkan sinyal beli ketika harga penutupan lebih tinggi dari penutupan sebelumnya selama dua hari berturut-turut dan osilator Stochastic Slow 9 hari di bawah 50.

Indeks Harga Sintetis yang Dibutuhkan

Indeks Detrended Synthetic Price (D_DSP) menunjukkan arah tren harga dan berada dalam fase dengan siklus dominan dari data harga aktual.

Jika D_DSP positif, itu menunjukkan tren harga naik. Jika negatif, itu menunjukkan tren harga turun.

Mekanisme Dua

Strategi ini menggabungkan strategi 123 Reversal dan sinyal indeks D_DSP. Jika kedua sinyal setuju (baik panjang atau pendek), perdagangan akan dihasilkan. Jika sinyal tidak setuju, posisi akan ditutup.

Konfirmasi ganda ini menyaring kebisingan dan mengunci keuntungan tren.

Keuntungan

Keuntungan terbesar dari strategi ini adalah dua tingkat stop loss yang diimplementasikan. Pertama, Stochastics cepat dan lambat membentuk stop loss yang terhambat waktu. Kedua, strategi pembalikan itu sendiri mengandung fitur stop loss.

Dua stop loss memaksimalkan penguncian keuntungan dan mencegah kerugian silang dari strategi stop loss tunggal.

Risiko

Risiko terbesar berasal dari pengaturan parameter yang tidak fleksibel. Misalnya, panjang siklus yang salah dapat menyebabkan hilangnya tren arus utama, kehilangan keuntungan atau peningkatan kerugian. Konfirmasi ganda yang terlalu kaku juga dapat menyebabkan kehilangan stop tepat waktu.

Selain itu, ketika menggabungkan strategi pembalikan dan tren, posisi clearing ketika sinyal tidak setuju dapat kehilangan peluang ketika tren berlanjut ke satu arah utama.

Optimalisasi

Strategi ini dapat dioptimalkan dengan beberapa cara:

  1. Mengoptimalkan parameter siklus menggunakan data backtesting untuk menemukan nilai optimal.

  2. Tambahkan lebih banyak strategi stop loss seperti breakout atau trailing stop loss untuk menetapkan titik stop loss yang lebih dinamis dan masuk akal.

  3. Perbaiki aturan konfirmasi ganda untuk mencegah over-clearing posisi.

  4. Tambahkan filter seperti filter volatilitas untuk menghindari penilaian yang salah dari volatilitas tren tahap akhir.

Kesimpulan

Strategi Pelacakan Tren Dinamis Dual-Mekanisme menerapkan pelacakan tren yang efektif dan pengendalian risiko melalui stop loss ganda dari Stochastics cepat dan lambat dan konfirmasi ganda dari pembalikan dan sinyal tren.

Optimasi aturan dan parameter yang terus menerus diharapkan menghasilkan hasil yang baik. Tetapi optimasi strategi membutuhkan sejumlah besar data historis. Filter seleksi saham dan mekanisme stop loss juga membutuhkan penyempurnaan terus menerus. Pelacakan real-time untuk beberapa periode dianjurkan untuk lebih memvalidasi 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 banyak