
Strategi ini adalah strategi gabungan dua faktor yang didorong oleh faktor penukaran balik dan faktor saluran gelombang, yang mewujudkan penumpukan pelbagai faktor, yang dapat memberikan kelebihan strategi dalam keadaan pasaran yang berbeza.
Strategi ini terdiri daripada dua sub-strategi:
123 Strategi pembalikan: apabila harga penutupan jatuh dua hari berturut-turut, jika harga penutupan hari ini menembusi harga terendah dua hari berturut-turut sebelumnya, dan pada hari ke-9 melintasi garis perlahan pada garis cepat penunjuk rawak, buat lebih banyak; apabila harga penutupan meningkat dua hari berturut-turut, jika harga penutupan hari ini jatuh di bawah harga tertinggi dua hari berturut-turut sebelumnya, dan pada hari ke-9 melintasi garis perlahan di bawah garis cepat penunjuk rawak, buat kosong.
Penapis gelombang: mengira indikator gelombang harga dalam tempoh tertentu, melakukan lebih banyak apabila indikator gelombang lebih besar daripada nilai terhad tertentu, dan kosong apabila indikator gelombang lebih kecil daripada nilai terhad tertentu.
Isyarat gabungan adalah: jika strategi 123 berbalik dan strategi penapis gelombang adalah isyarat yang sama, maka ambillah kedudukan yang lebih banyak; jika kedua-duanya adalah isyarat yang sama, maka ambillah kedudukan yang sama; jika tidak, bersih.
Strategi ini menggunakan faktor pembalikan dan faktor trend secara komprehensif, mewujudkan perdagangan kuantitatif yang didorong oleh pelbagai faktor. Dengan pengesahan dua faktor, kemungkinan perdagangan yang salah dapat dikurangkan, menjadikan strategi berfungsi dengan baik di pelbagai pasaran. Kemudian, strategi ini dapat dioptimumkan lagi dengan penyesuaian parameter dan tetapan stop loss, yang meningkatkan kestabilan dan keuntungan strategi.
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
////////////////////////////////////////////////////////////
// Copyright by HPotter v1.0 21/05/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.
//
// Second strategy
// The related article is copyrighted material from
// Stocks & Commodities Mar 2010
// You can use in the xPrice any series: Open, High, Low, Close, HL2, HLC3, OHLC4 and ect...
//
// 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
Bandpass_Filter(Length, Delta, TriggerLevel) =>
xPrice = hl2
beta = cos(3.14 * (360 / Length) / 180)
gamma = 1 / cos(3.14 * (720 * Delta / Length) / 180)
alpha = gamma - sqrt(gamma * gamma - 1)
BP = 0.0
pos = 0.0
BP := 0.5 * (1 - alpha) * (xPrice - xPrice[2]) + beta * (1 + alpha) * nz(BP[1]) - alpha * nz(BP[2])
pos := iff(BP > TriggerLevel, 1,
iff(BP <= TriggerLevel, -1, nz(pos[1], 0)))
pos
strategy(title="Combo Backtest 123 Reversal & Bandpass Filter", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
LengthBF = input(20, minval=1)
Delta = input(0.5)
TriggerLevel = input(0)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posBandpass_Filter = Bandpass_Filter(LengthBF, Delta, TriggerLevel)
pos = iff(posReversal123 == 1 and posBandpass_Filter == 1 , 1,
iff(posReversal123 == -1 and posBandpass_Filter == -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 )