Strategi Perdagangan Pembalikan Momentum

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

img

Gambaran umum

Strategi ini menggabungkan pola pembalikan 123 dan Ease of Movement (EOM) untuk perdagangan pada titik balik. Pola pembalikan 123 menghasilkan sinyal ketika harga membentuk pola tertentu selama 3 hari berturut-turut. Strategi EOM memanfaatkan perubahan harga dan volume untuk mengukur momentum pasar. Kombinasi kedua strategi ini mempertimbangkan pola teknis serta momentum, meningkatkan keakuratan sinyal perdagangan.

Logika Strategi

Strategi ini terdiri dari dua komponen:

  1. 123 Pola Pembalikan
  • Gunakan Stoch untuk mengidentifikasi tingkat overbought dan oversold
  • Pergi pendek ketika harga turun selama 2 hari berturut-turut dan garis cepat Stoch berada di atas garis lambat
  • Pergi panjang ketika harga naik selama 2 hari berturut-turut dan garis cepat Stoch berada di bawah garis lambat
  1. Mudah Bergerak
  • Menghitung titik tengah kisaran hari sebelumnya
  • Menghitung perubahan titik tengah relatif pada hari sebelumnya
  • Perhitungan rasio gerak titik tengah dan volume
  • Rasio di atas ambang menunjukkan bullish, di bawah ambang bearish

Strategi berjalan panjang ketika sinyal EOM dan 123 sejajar di sisi panjang, dan berjalan pendek ketika sinyal sejajar di sisi pendek.

Analisis Keuntungan

Keuntungan dari strategi ini:

  1. Menggabungkan pola harga dan momentum untuk akurasi sinyal yang lebih baik

  2. 123 pola menangkap titik balik, EOM pengukur momentum tren, dua saling melengkapi

  3. Stoch menghindari whipsaws selama konsolidasi

  4. Sederhana dan mudah diterapkan

  5. Parameter yang dapat disesuaikan untuk lingkungan pasar yang berbeda

Analisis Risiko

Risiko yang harus dipertimbangkan:

  1. Terlalu bergantung pada pengaturan parameter, pengaturan yang tidak tepat dapat menyebabkan overtrading atau hilangnya perdagangan

  2. Banyak filter dapat menghasilkan terlalu sedikit sinyal

  3. EOM sensitif terhadap volatilitas, dapat menghasilkan sinyal palsu

  4. Kinerja hidup lebih lemah dari backtest, perlu untuk mengontrol ukuran posisi

  5. Hanya cocok untuk saham tren, bukan pasar rentang

Arah Peningkatan

Strategi dapat ditingkatkan dengan:

  1. Mengoptimalkan parameter untuk menyeimbangkan frekuensi dan kualitas sinyal

  2. Menambahkan stop loss untuk mengendalikan kerugian perdagangan tunggal

  3. Menambahkan filter tren untuk menghindari perdagangan yang bertentangan dengan tren

  4. Menggabungkan ukuran posisi berdasarkan volatilitas

  5. Menggunakan pembelajaran mesin untuk mengoptimalkan parameter secara dinamis

Kesimpulan

Strategi ini mengintegrasikan pola harga dan momentum untuk nilai praktis yang tinggi. Tetapi frekuensi perdagangan, kontrol kerugian dan risiko kontra-tren perlu dikelola. Peningkatan lebih lanjut dalam parameter, stop loss, penyaringan tren dapat meningkatkan stabilitas dan profitabilitas. Logika jelas dan mudah diterapkan untuk pedagang 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 banyak