Strategi pembalikan crossover purata bergerak berganda

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

img

Ringkasan

Strategi Pembalikan Crossover Purata Bergerak Berganda adalah strategi mengikuti trend yang menggabungkan strategi Pembalikan 123 dan strategi DiNapoli Detrended Oscillator untuk menjana isyarat perdagangan melalui pembalikan crossover purata bergerak berganda untuk mengesan trend pasaran.

Logika Strategi

Strategi ini terdiri daripada dua bahagian:

  1. 123 Strategi Pembalikan: Strategi ini menggunakan penunjuk Stochastic untuk menjana isyarat. Ia menghantar isyarat beli apabila harga penutupan meningkat selepas dua hari berturut-turut penurunan, sementara garis pantas stochastic berada di bawah garis perlahan dan di bawah 50; ia menghantar isyarat jual apabila harga penutupan menurun selepas dua hari berturut-turut kenaikan, sementara garis pantas stochastic berada di atas garis perlahan dan di atas 50.

  2. DiNapoli Detrended Oscillator Strategy: Strategi ini menggunakan garis purata bergerak harga untuk menjana isyarat perdagangan apabila harga melebihi atau jatuh di bawah garis purata bergerak dengan nilai tertentu. Khususnya, ia menghantar isyarat beli apabila harga melebihi nilai pencetus positif garis purata bergerak, dan isyarat jual apabila harga jatuh di bawah nilai pencetus negatif garis purata bergerak.

Selepas setiap dua strategi di atas menjana isyarat dagangan yang berasingan, strategi ini mengintegrasikannya dan hanya menghantar pesanan dagangan sebenar apabila kedua-dua isyarat konsisten, iaitu apabila purata bergerak berganda membentuk isyarat ke arah yang sama; jika tidak, tiada tindakan diambil.

Analisis Kelebihan

Dengan menggabungkan isyarat perdagangan purata bergerak berganda, strategi ini dapat dengan berkesan mengesan trend pasaran dan mempunyai kelebihan berikut:

  1. Gunakan sepenuhnya kekuatan penunjuk Stochastic dalam menilai momentum dan trend, mengelakkan kerugian yang disebabkan oleh isyarat yang mengelirukan dari mana-mana penunjuk tunggal.

  2. Penunjuk DiNapoli dapat mengenal pasti trend dengan berkesan dan mengelakkan pembukaan kedudukan yang tidak perlu disebabkan oleh turun naik rawak.

  3. Crossover purata bergerak berganda dapat mengurangkan isyarat palsu dengan berkesan dan meningkatkan kualiti isyarat untuk memberikan bukti yang kukuh untuk menilai arah pasaran.

  4. Parameter strategi yang boleh disesuaikan membolehkan pengguna memilih kombinasi parameter berdasarkan pilihan peribadi untuk menyesuaikan diri dengan fleksibel dengan persekitaran pasaran yang berbeza.

Analisis Risiko

Strategi ini juga mempunyai risiko berikut:

  1. Dalam pasaran lembu, strategi mungkin terlepas peluang membeli kerana tetapan parameter penunjuk yang terlalu berhati-hati. Parameter boleh diselaraskan dengan sewajarnya untuk menjadikan strategi lebih agresif.

  2. Dalam pasaran beruang, isyarat crossover purata bergerak berganda mungkin tertinggal, mengakibatkan keadaan overbought dan oversold.

  3. Dalam kes pergerakan pasaran satu sisi yang besar, isyarat crossover purata bergerak berganda mungkin perlahan.

Pengoptimuman

Strategi ini boleh dioptimumkan dengan cara berikut:

  1. Uji dan optimumkan parameter penunjuk Stochastic dan DiNapoli untuk mencari kombinasi parameter yang optimum.

  2. Tambah penunjuk penilaian tambahan lain seperti penunjuk Volume untuk memperkayakan logik dalaman strategi dan meningkatkan ketepatan isyarat.

  3. Menggunakan kaedah pembelajaran mesin untuk melatih dan mengoptimumkan parameter strategi dan peraturan penjanaan isyarat untuk menjadikannya disesuaikan sepenuhnya dengan perubahan pasaran.

  4. Mengkaji struktur tempatan dengan penunjuk teknikal maju untuk membezakan antara isyarat jangka sederhana dan jangka panjang, yang membolehkan strategi beroperasi dalam pelbagai jangka masa.

Kesimpulan

Strategi pembalikan crossover purata bergerak berganda menggabungkan dua penunjuk untuk membentuk isyarat perdagangan crossover purata bergerak berganda, yang dapat dengan berkesan mengesan trend pasaran dan memperoleh pulangan yang agak baik sambil mengawal risiko. Ini adalah strategi trend yang boleh dipercayai. Strategi ini boleh terus ditingkatkan dan dinaik taraf melalui pengoptimuman parameter dan menambah penunjuk tambahan. Ia mempunyai prospek aplikasi yang luas.


/*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 lanjut