Strategi pembalikan crossover rata-rata bergerak ganda

Penulis:ChaoZhang, Tanggal: 2023-11-24 17:03:47
Tag:

img

Gambaran umum

Strategi Reversal Crossover Dual Moving Average adalah strategi trend following yang menggabungkan strategi 123 Reversal dan strategi DiNapoli Detrended Oscillator untuk menghasilkan sinyal perdagangan melalui crossover dua moving average untuk melacak tren pasar.

Logika Strategi

Strategi ini terdiri dari dua bagian:

  1. 123 Reversal Strategy: Strategi ini menggunakan indikator Stochastic untuk menghasilkan sinyal. Ini mengirim sinyal beli ketika harga penutupan naik setelah dua hari berturut-turut penurunan, sementara garis cepat stochastic berada di bawah garis lambat dan di bawah 50; mengirim sinyal jual ketika harga penutupan menurun setelah dua hari berturut-turut kenaikan, sementara garis cepat stochastic berada di atas garis lambat dan di atas 50.

  2. DiNapoli Detrended Oscillator Strategy: Strategi ini menggunakan garis rata-rata bergerak harga untuk menghasilkan sinyal perdagangan ketika harga melebihi atau turun di bawah garis rata-rata bergerak dengan nilai tertentu. Secara khusus, ia mengirim sinyal beli ketika harga melebihi nilai pemicu positif dari garis rata-rata bergerak, dan sinyal jual ketika harga turun di bawah nilai pemicu negatif dari garis rata-rata bergerak.

Setelah masing-masing dari dua strategi di atas menghasilkan sinyal perdagangan yang terpisah, strategi ini mengintegrasikannya dan hanya mengirim pesanan perdagangan yang sebenarnya ketika kedua sinyalnya konsisten, yaitu ketika dua rata-rata bergerak membentuk sinyal ke arah yang sama; jika tidak, tidak ada tindakan yang diambil.

Analisis Keuntungan

Dengan menggabungkan sinyal perdagangan rata-rata bergerak ganda, strategi ini dapat secara efektif melacak tren pasar dan memiliki keuntungan berikut:

  1. Gunakan sepenuhnya kekuatan indikator Stochastic dalam menilai momentum dan tren, menghindari kerugian yang disebabkan oleh sinyal yang menyesatkan dari indikator tunggal.

  2. Indikator DiNapoli dapat secara efektif mengidentifikasi tren dan menghindari pembukaan posisi yang tidak perlu karena fluktuasi acak.

  3. Crossover rata-rata bergerak ganda dapat secara efektif mengurangi sinyal palsu dan meningkatkan kualitas sinyal untuk memberikan bukti kuat untuk menilai arah pasar.

  4. Parameter yang dapat disesuaikan dari strategi memungkinkan pengguna untuk memilih kombinasi parameter berdasarkan preferensi pribadi untuk beradaptasi secara fleksibel dengan lingkungan pasar yang berbeda.

Analisis Risiko

Strategi ini juga memiliki risiko berikut:

  1. Dalam pasar bull, strategi dapat melewatkan peluang pembelian karena pengaturan parameter indikator yang terlalu hati-hati. Parameter dapat disesuaikan dengan tepat untuk membuat strategi lebih agresif.

  2. Dalam pasar bear, sinyal crossover rata-rata bergerak ganda dapat tertinggal, mengakibatkan kondisi overbought dan oversold.

  3. Dalam hal pergerakan pasar yang besar secara sepihak, sinyal crossover rata-rata bergerak ganda mungkin lambat.

Optimalisasi

Strategi dapat dioptimalkan dengan cara berikut:

  1. Uji dan optimalkan parameter indikator Stochastic dan DiNapoli untuk menemukan kombinasi parameter yang optimal.

  2. Tambahkan indikator penilaian tambahan lainnya seperti indikator Volume untuk memperkaya logika internal strategi dan meningkatkan akurasi sinyal.

  3. Menggunakan metode pembelajaran mesin untuk melatih dan mengoptimalkan parameter strategi dan aturan generasi sinyal sehingga sepenuhnya beradaptasi dengan perubahan pasar.

  4. Menghakimi struktur lokal dengan indikator teknis canggih untuk membedakan antara sinyal jangka menengah dan jangka panjang, memungkinkan strategi untuk beroperasi dalam beberapa kerangka waktu.

Kesimpulan

Strategi pembalikan crossover rata-rata bergerak ganda mengintegrasikan dua indikator untuk membentuk sinyal perdagangan crossover rata-rata bergerak ganda, yang dapat secara efektif melacak tren pasar dan memperoleh pengembalian yang relatif baik sambil mengendalikan risiko. Ini adalah strategi trend yang dapat diandalkan. Strategi dapat terus ditingkatkan dan ditingkatkan melalui optimasi parameter dan penambahan indikator tambahan.


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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 18/02/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
// DiNapoli Detrended Oscillator Strategy
//
// 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

DiNapoli(Length, Trigger) =>
    pos = 0.0
    xSMA = sma(close, Length)
    nRes = close - xSMA
    pos := iff(nRes > Trigger, 1,
    	     iff(nRes <= Trigger, -1, nz(pos[1], 0)))    
    pos

strategy(title="Combo Backtest 123 Reversal & DiNapoli Detrended Oscillator", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
LengthDiN = input(14, minval=1)
TriggerDiN = input(0)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posDiN = DiNapoli(LengthDiN, TriggerDiN)
pos = iff(posReversal123 == 1 and posDiN == 1 , 1,
	   iff(posReversal123 == -1 and posDiN == -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