Strategi Dagangan Pembalikan Momentum

Penulis:ChaoZhang, Tarikh: 2023-11-15 15:36:39
Tag:

img

Ringkasan

Strategi ini menggabungkan corak pembalikan 123 dan Kemudahan Pergerakan (EOM) untuk berdagang pada titik perubahan. Corak pembalikan 123 menghasilkan isyarat apabila harga membentuk corak tertentu selama 3 hari berturut-turut. Strategi EOM menggunakan perubahan harga dan jumlah untuk mengukur momentum pasaran. Gabungan kedua-dua strategi mempertimbangkan corak teknikal serta momentum, meningkatkan ketepatan isyarat perdagangan.

Logika Strategi

Strategi ini terdiri daripada dua komponen:

  1. 123 corak pembalikan
  • Gunakan Stoch untuk mengenal pasti tahap overbought dan oversold
  • Pergi pendek apabila harga jatuh selama 2 hari berturut-turut dan garis cepat Stoch di atas garis perlahan
  • Pergi panjang apabila harga meningkat selama 2 hari berturut-turut dan garis cepat Stoch berada di bawah garis perlahan
  1. Kemudahan Pergerakan
  • Mengira titik tengah julat hari sebelumnya
  • Mengira perubahan pada titik pertengahan berbanding hari sebelumnya
  • Mengira nisbah pergerakan titik tengah dan jumlah
  • Nisbah di atas ambang menunjukkan bullish, di bawah ambang bearish

Strategi ini berjalan lama apabila isyarat EOM dan 123 sejajar di sisi panjang, dan berjalan pendek apabila isyarat sejajar di sisi pendek.

Analisis Kelebihan

Kelebihan strategi ini:

  1. Menggabungkan corak harga dan momentum untuk ketepatan isyarat yang lebih baik

  2. 123 corak menangkap titik perubahan, EOM pengukur momentum trend, dua melengkapi satu sama lain

  3. Stoch mengelakkan whipsaws semasa penyatuan

  4. Sederhana dan mudah dilaksanakan

  5. Parameter yang boleh disesuaikan untuk persekitaran pasaran yang berbeza

Analisis Risiko

Risiko yang perlu dipertimbangkan:

  1. Terlalu bergantung kepada tetapan parameter, tetapan yang tidak betul boleh menyebabkan perdagangan berlebihan atau hilang

  2. Banyak penapis boleh menghasilkan terlalu sedikit isyarat

  3. EOM sensitif terhadap turun naik, boleh menghasilkan isyarat palsu

  4. Prestasi langsung lebih lemah daripada backtest, perlu mengawal saiz kedudukan

  5. Hanya sesuai untuk saham trend, bukan pasaran julat

Arahan Penambahbaikan

Strategi ini boleh ditingkatkan dengan:

  1. Mengoptimumkan parameter untuk mengimbangi kekerapan dan kualiti isyarat

  2. Menambah stop loss untuk mengawal kerugian perdagangan tunggal

  3. Menambah penapis trend untuk mengelakkan perdagangan yang bertentangan dengan trend

  4. Memasukkan saiz kedudukan berdasarkan turun naik

  5. Menggunakan pembelajaran mesin untuk mengoptimumkan parameter secara dinamik

Kesimpulan

Strategi ini mengintegrasikan corak harga dan momentum untuk nilai praktikal yang tinggi. Tetapi kekerapan perdagangan, kawalan kerugian dan risiko kontra-trend perlu diuruskan. Penambahbaikan lanjut dalam parameter, stop loss, penapisan trend dapat meningkatkan kestabilan dan keuntungan. Logiknya jelas dan mudah dilaksanakan untuk peniaga kuant.


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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 14/04/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
// This indicator gauges the magnitude of price and volume movement. 
// The indicator returns both positive and negative values where a 
// positive value means the market has moved up from yesterday's value 
// and a negative value means the market has moved down. A large positive 
// or large negative value indicates a large move in price and/or lighter 
// volume. A small positive or small negative value indicates a small move 
// in price and/or heavier volume.
// A positive or negative numeric value. A positive value means the market 
// has moved up from yesterday's value, whereas, a negative value means the 
// market has moved down. 
//
// 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

EOM(BuyZone, SellZone) =>
    pos = 0
    xHigh = high
    xLow = low
    xVolume = volume
    xHalfRange = (xHigh - xLow) * 0.5
    xMidpointMove = mom(xHalfRange, 1)
    xBoxRatio = iff((xHigh - xLow) != 0, xVolume / (xHigh - xLow), 0)
    nRes = iff(xBoxRatio != 0, 1000000 * ((xMidpointMove - xMidpointMove[1]) / xBoxRatio), 0)
    pos := iff(nRes > BuyZone, 1,
             iff(nRes < SellZone, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Ease of Movement (EOM)", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
BuyZone = input(4000, minval=1)
SellZone = input(-4000)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posEOM = EOM(BuyZone, SellZone)
pos = iff(posReversal123 == 1 and posEOM == 1 , 1,
	   iff(posReversal123 == -1 and posEOM == -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