Strategi kuantitatif mengikuti tren ganda


Tanggal Pembuatan: 2024-02-27 15:54:24 Akhirnya memodifikasi: 2024-02-27 15:54:24
menyalin: 0 Jumlah klik: 579
1
fokus pada
1617
Pengikut

Strategi kuantitatif mengikuti tren ganda

Ringkasan

Gagasan inti dari strategi ini adalah menggabungkan strategi 123 reversal dan indikator osilator pelangi, untuk mencapai pelacakan tren ganda, untuk meningkatkan keberhasilan strategi. Strategi ini, dengan melacak tren harga jangka pendek dan menengah, secara dinamis menyesuaikan posisi, untuk mencapai keuntungan yang lebih besar dari pasar besar.

Prinsip Strategi

Strategi ini terdiri dari dua bagian:

  1. 123 Strategi berbalik: Jika dua hari sebelumnya harga tutup turun dan harga tutup hari ini naik, dan pada hari ke-9 garis Slow K di bawah 50, lakukan lebih banyak; Jika dua hari sebelumnya harga tutup naik dan harga tutup hari ini turun, dan pada hari ke-9 garis Fast K di atas 50, lakukan short.

  2. Indikator oscillator pelangi: Indikator ini mencerminkan seberapa jauh harga dari rata-rata bergerak, ketika indikator di atas 80 menunjukkan bahwa pasar cenderung tidak stabil; ketika indikator di bawah 20, menunjukkan bahwa pasar cenderung berbalik.

Strategi ini menggabungkan keduanya, dengan membuka posisi ketika sinyal shorting muncul, atau posisi kosong.

Analisis Keunggulan

Strategi ini memiliki keuntungan sebagai berikut:

  1. Filter ganda, meningkatkan kualitas sinyal, mengurangi kesalahan penilaian.
  2. Mengubah posisi secara dinamis, mengurangi kerugian dalam perdagangan satu arah.
  3. Mengintegrasikan indikator jangka pendek dan menengah untuk meningkatkan stabilitas strategis.

Analisis risiko

Strategi ini juga memiliki risiko sebagai berikut:

  1. Optimasi parameter yang tidak tepat dapat menyebabkan overmatch.
  2. Penempatan ganda akan meningkatkan biaya transaksi.
  3. Stop loss dapat dipukul dengan mudah saat harga saham berfluktuasi tajam.

Risiko ini dapat dikurangi dengan menyesuaikan parameter, mengoptimalkan manajemen posisi, dan mengatur stop loss yang masuk akal.

Arah optimasi

Strategi ini dapat dioptimalkan dengan:

  1. Optimalkan parameter untuk menemukan kombinasi optimal.
  2. Menambahkan modul manajemen posisi untuk menyesuaikan posisi berdasarkan volatilitas dan dinamika penarikan.
  3. Tambahkan modul stop loss, pengaturan stop loss mobile yang masuk akal.
  4. Menambahkan algoritma pembelajaran mesin untuk membantu menentukan titik balik tren.

Meringkaskan

Strategi ini mengintegrasikan 123 strategi reversal dan indikator osilator pelangi, memungkinkan pelacakan tren ganda, dan memiliki ruang untuk keuntungan tambahan, sementara mempertahankan stabilitas yang tinggi. Dengan terus mengoptimalkan, diharapkan untuk meningkatkan tingkat keuntungan strategi lebih lanjut.

Kode Sumber Strategi
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 25/05/2021
// 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
// Ever since the people concluded that stock market price movements are not 
// random or chaotic, but follow specific trends that can be forecasted, they 
// tried to develop different tools or procedures that could help them identify 
// those trends. And one of those financial indicators is the Rainbow Oscillator 
// Indicator. The Rainbow Oscillator Indicator is relatively new, originally 
// introduced in 1997, and it is used to forecast the changes of trend direction.
// As market prices go up and down, the oscillator appears as a direction of the 
// trend, but also as the safety of the market and the depth of that trend. As 
// the rainbow grows in width, the current trend gives signs of continuity, and 
// if the value of the oscillator goes beyond 80, the market becomes more and more 
// unstable, being prone to a sudden reversal. When prices move towards the rainbow 
// and the oscillator becomes more and more flat, the market tends to remain more 
// stable and the bandwidth decreases. Still, if the oscillator value goes below 20, 
// the market is again, prone to sudden reversals. The safest bandwidth value where 
// the market is stable is between 20 and 80, in the Rainbow Oscillator indicator value. 
// The depth a certain price has on a chart and into the rainbow can be used to judge 
// the strength of the move.
//
// 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


RO(Length, LengthHHLL) =>
    pos = 0.0
    xMA1 = sma(close, Length)
    xMA2 = sma(xMA1, Length)
    xMA3 = sma(xMA2, Length)
    xMA4 = sma(xMA3, Length)
    xMA5 = sma(xMA4, Length)
    xMA6 = sma(xMA5, Length)
    xMA7 = sma(xMA6, Length)
    xMA8 = sma(xMA7, Length)
    xMA9 = sma(xMA8, Length)
    xMA10 = sma(xMA9, Length)
    xHH = highest(close, LengthHHLL)
    xLL = lowest(close, LengthHHLL)
    xHHMAs = max(xMA1,max(xMA2,max(xMA3,max(xMA4,max(xMA5,max(xMA6,max(xMA7,max(xMA8,max(xMA9,xMA10)))))))))
    xLLMAs = min(xMA1,min(xMA2,min(xMA3,min(xMA4,min(xMA5,min(xMA6,min(xMA7,min(xMA8,min(xMA9,xMA10)))))))))
    xRBO = 100 * ((close - ((xMA1+xMA2+xMA3+xMA4+xMA5+xMA6+xMA7+xMA8+xMA9+xMA10) / 10)) / (xHH - xLL))
    xRB = 100 * ((xHHMAs - xLLMAs) / (xHH - xLL))
    pos:= iff(xRBO > 0, 1,
           iff(xRBO < 0, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Rainbow Oscillator", shorttitle="Combo", overlay = true)
line1 = input(true, "---- 123 Reversal ----")
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
line2 = input(true, "---- Rainbow Oscillator ----")
LengthRO = input(2, minval=1)
LengthHHLL = input(10, minval=2, title="HHV/LLV Lookback")
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posRO = RO(LengthRO, LengthHHLL)
pos = iff(posReversal123 == 1 and posRO == 1 , 1,
	   iff(posReversal123 == -1 and posRO == -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 )