Strategi Pembalikan Kombinasi Dwi Faktor dan Penunjuk Bertambah


Tarikh penciptaan: 2023-12-26 12:20:57 Akhirnya diubah suai: 2023-12-26 12:20:57
Salin: 0 Bilangan klik: 594
1
fokus pada
1623
Pengikut

Strategi Pembalikan Kombinasi Dwi Faktor dan Penunjuk Bertambah

Gambaran keseluruhan

Strategi ini adalah strategi perdagangan berbalik-balik gabungan berdasarkan model faktor ganda. Ia menggabungkan dua faktor 123 bentuk berbalik dan indeks peningkatan, mewujudkan kesan tambah kepada isyarat strategi. Strategi ini akan melakukan operasi plus atau minus yang sesuai apabila kedua-dua faktor menghantar isyarat beli atau jual pada masa yang sama.

Prinsip Strategi

123 faktor pembalikan

Faktor ini beroperasi berdasarkan 123 bentuk harga. Apabila hubungan harga penutupan dua hari semasa adalah rendah-rendah dan penunjuk Stoch di bawah 50, maka ia dianggap sebagai isyarat pembalikan bawah, lakukan lebih banyak; apabila hubungan harga penutupan dua hari semasa adalah tinggi-rendah dan penunjuk Stoch di atas 50, maka ia dianggap sebagai isyarat pembalikan atas, lakukan kosong.

Faktor indeks pertumbuhan

Faktor ini berdasarkan peningkatan atau pengurangan julat turun naik harga untuk menilai pembalikan trend. Indeks naik apabila julat turun naik meningkat, dan indeks turun apabila julat turun.

Isyarat sama arah dua faktor akan membuka kedudukan, mewujudkan keuntungan strategi, dan mengelakkan risiko isyarat palsu yang dibawa oleh faktor tunggal.

Analisis kelebihan

  • Model dua faktor, yang menggabungkan bentuk harga dan indikator turun naik untuk meningkatkan ketepatan isyarat
  • 123 bentuk penghakiman extremum tempatan, indeks peningkatan menangkap titik perubahan trend global, kelebihan saling melengkapi
  • Hanya membuka kedudukan apabila dua faktor menghantar isyarat arah, menyaring isyarat palsu dengan berkesan, meningkatkan kestabilan strategi

Analisis risiko

  • Kemungkinan bahawa dua faktor akan menghantar isyarat yang salah pada masa yang sama, membawa risiko kerugian
  • Kemungkinan kegagalan pembalikan wujud dan perlu menetapkan stop loss untuk mengawal kerugian
  • Parameter yang tidak dioptimumkan dengan betul boleh menyebabkan overfit

Risiko boleh dikurangkan dengan meningkatkan set latihan, penangguhan ketat, dan penapisan gabungan faktor-faktor.

Arah pengoptimuman

  • Ujian lebih banyak kombinasi harga dan indikator turun naik
  • Menambah model pembelajaran mesin untuk menilai kualiti isyarat, menyesuaikan kedudukan secara dinamik
  • Faktor-faktor seperti jumlah dagangan, Brin Belt, dan lain-lain yang menggali lebih banyak Alpha
  • Menggunakan kaedah berjalan ke hadapan untuk mengoptimumkan bergulir dan meningkatkan ketahanan

ringkaskan

Strategi ini menggabungkan dua faktor bentuk harga dan indikator turun naik, hanya membuka posisi apabila dua faktor menghantar isyarat arah, mengelakkan risiko isyarat palsu yang dibawa oleh faktor tunggal, dan meningkatkan kestabilan strategi secara keseluruhan. Tetapi ada juga risiko bahawa dua faktor berkemungkinan akan menghantar isyarat yang salah pada masa yang sama. Kita boleh meningkatkan lagi prestasi strategi dan risiko menyesuaikan kadar keuntungan dengan cara seperti memperluas set latihan, pengaturan berhenti, pengoptimuman kombinasi faktor kerugian.

Kod sumber strategi
/*backtest
start: 2023-11-25 00:00:00
end: 2023-12-25 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 22/02/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
// The Mass Index was designed to identify trend reversals by measuring 
// the narrowing and widening of the range between the high and low prices. 
// As this range widens, the Mass Index increases; as the range narrows 
// the Mass Index decreases.
// The Mass Index was developed by Donald Dorsey. 
//
// 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


MASS(Length1,Length2,Trigger) =>
    pos = 0.0
    xPrice = high - low
    xEMA = ema(xPrice, Length1)
    xSmoothXAvg = ema(xEMA, Length1)
    nRes = sum(iff(xSmoothXAvg != 0, xEMA / xSmoothXAvg, 0), Length2)
    pos := iff(nRes > Trigger, -1,
	         iff(nRes < Trigger, 1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & MASS Index", 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, "---- MASS Index ----")
Length1 = input(9, minval=1)
Length2 = input(25, minval=1)
Trigger = input(26.5, step = 0.01)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posMASS = MASS(Length1,Length2,Trigger)
pos = iff(posReversal123 == 1 and posMASS == 1 , 1,
	   iff(posReversal123 == -1 and posMASS == -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 )