Trend Momentum Berikutan Strategi Osislasi

Penulis:ChaoZhang, Tarikh: 2023-11-16 16:46:51
Tag:

img

Ringkasan

Strategi ini menggabungkan indikator purata bergerak, harga jumlah dan goyangan untuk membentuk penapis tiga, yang bertujuan untuk menangkap trend jangka sederhana dan mencapai pulangan yang baik semasa pasaran trend.

Prinsip-prinsip

Strategi ini terdiri daripada tiga komponen utama:

  1. Penunjuk purata bergerak

Gunakan EMA 20 hari dan EMA 60 hari untuk membina penapis trend. Isyarat beli dihasilkan apabila MA jangka pendek melintasi di atas MA jangka panjang. Isyarat jual dihasilkan apabila MA jangka pendek melintasi di bawah MA jangka panjang.

  1. Indikator Harga Volume

Menggunakan jumlah lebih daripada perolehan untuk mengira penunjuk VP, menilai arah aliran modal. VP yang meningkat menunjukkan aliran masuk bersih sementara VP yang menurun menunjukkan aliran keluar bersih. Pembalikan VP boleh menandakan perubahan trend.

  1. Bollinger Bands

Gunakan Lebar Saluran Donchian 20 hari untuk mengira Parameter Bollinger Bands, membentuk jalur atas dan bawah. Harga yang mendekati jalur atas mungkin menghadapi tekanan mundur, sementara harga yang mendekati jalur bawah mungkin bangkit kembali.

Menggabungkan tiga komponen membina strategi trend-mengikuti. Ia menjana isyarat beli apabila MA pendek melintasi di atas MA panjang, VP berada dalam trend menaik dan harga baru meninggalkan band atas. Isyarat jual dihasilkan apabila MA pendek melintasi di bawah MA panjang, VP berada dalam trend menurun dan harga baru meninggalkan band bawah.

Kelebihan

Strategi ini mempunyai kelebihan berikut:

  1. Penapis penunjuk tiga membantu mengelakkan pemotongan palsu.

  2. Mempertimbangkan trend, aliran modal dan overbought / oversold meningkatkan kebolehpercayaan isyarat.

  3. Parameter yang dioptimumkan sesuai untuk tempoh dan produk yang berbeza.

  4. Pengeluaran yang boleh dikawal dan pulangan yang stabil.

  5. Logik yang jelas dan penyesuaian parameter yang fleksibel.

Risiko

Terdapat juga beberapa risiko:

  1. Risiko pembalikan trend. Perubahan trend boleh menyebabkan stop loss.

  2. VP kelewatan isu. VP kelewatan perubahan harga dan mungkin terlepas titik masuk atau keluar.

  3. Parameter yang sukar disesuaikan. Parameter memerlukan penyesuaian untuk produk dan jangka masa yang berbeza.

  4. Pengendalian pengurangan perlu diperbaiki. Lebih baik dengan berhenti dinamik atau saiz kedudukan.

Arahan Peningkatan

Strategi ini boleh ditingkatkan dalam aspek berikut:

  1. Tambah kaedah stop loss seperti trailing stop untuk kawalan pengeluaran yang lebih lanjut.

  2. Tambah modul pengukuran kedudukan untuk menyesuaikan saiz secara dinamik berdasarkan turun naik.

  3. Mengoptimumkan parameter untuk mencari set terbaik untuk produk dan tempoh yang berbeza.

  4. Meningkatkan model pembelajaran mesin untuk meningkatkan ketepatan isyarat.

  5. Sertakan analisis sentimen dan berita untuk menilai peristiwa tiba-tiba.

Kesimpulan

Strategi ini menggabungkan penunjuk MA, VP dan Bollinger Band untuk melakukan dengan baik dalam menangkap trend jangka sederhana. Penambahbaikan lanjut dalam stop loss, saiz kedudukan dan penyesuaian parameter dapat mencapai hasil yang lebih baik. Logiknya jelas dan parameter fleksibel untuk penyesuaian.


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

//@version=3
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 29/04/2019
// This is combo strategies for get 
// a cumulative signal. Result signal will return 1 if two strategies 
// is long, -1 if all strategies is short and 0 if signals of strategies is not equal.
//
// 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.
//
// Secon strategy
// The Average Directional Movement Index Rating (ADXR) measures the strength 
// of the Average Directional Movement Index (ADX). It's calculated by taking 
// the average of the current ADX and the ADX from one time period before 
// (time periods can vary, but the most typical period used is 14 days).
// Like the ADX, the ADXR ranges from values of 0 to 100 and reflects strengthening 
// and weakening trends. However, because it represents an average of ADX, values 
// don't fluctuate as dramatically and some analysts believe the indicator helps 
// better display trends in volatile markets.
//
// 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

fADX(Len) =>
    up = change(high)
    down = -change(low)
    trur = rma(tr, Len)
    plus = fixnan(100 * rma(up > down and up > 0 ? up : 0, Len) / trur)
    minus = fixnan(100 * rma(down > up and down > 0 ? down : 0, Len) / trur)
    sum = plus + minus 
    100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), Len)

ADXR(LengthADX, LengthADXR, Signal1, Signal2) =>
    xADX = fADX(LengthADX)
    xADXR = (xADX + xADX[LengthADXR]) / 2
    pos = 0.0
    pos := iff(xADXR < Signal1, 1,
           iff(xADXR > Signal2, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal and Average Directional Movement Index Rating", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
LengthADX = input(title="Length ADX", defval=14)
LengthADXR = input(title="Length ADXR", defval=14)
Signal1 = input(13, step=0.01)
Signal2 = input(45, step=0.01)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posADXR = ADXR(LengthADX, LengthADXR, Signal1, Signal2 )
pos = iff(posReversal123 == 1 and posADXR == 1 , 1,
	   iff(posReversal123 == -1 and posADXR == -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 ? red: possig == 1 ? green : blue ) 

Lebih lanjut