Strategi ini adalah strategi kombinasi dua faktor, yang didorong oleh faktor reversal dan faktor channel band, yang memungkinkan overlay multi-faktor, yang dapat memberikan keunggulan strategi di berbagai lingkungan pasar.
Strategi ini terdiri dari dua substrategi:
123 Strategi pembalikan: Jika harga penutupan dua hari berturut-turut turun, jika hari ini harga penutupan menembus dua hari terendah sebelumnya, dan pada hari ke-9 melewati garis lambat pada garis cepat dari indikator acak, lakukan lebih banyak; Jika harga penutupan dua hari berturut-turut naik, jika hari ini harga penutupan menembus dua hari teratas sebelumnya, dan pada hari ke-9 melewati garis lambat di bawah garis cepat dari indikator acak, lakukan kosong.
Filter band: menghitung indikator band untuk harga dalam periode tertentu, melakukan plus ketika indikator band lebih besar dari suatu nilai threshold, dan kosong ketika indikator band lebih kecil dari suatu nilai threshold.
Sinyal kombinasi adalah: Jika strategi 123 reversal dan strategi filter band adalah sinyal yang sama, maka ambillah posisi yang sama; Jika keduanya adalah sinyal yang sama, maka ambillah posisi yang sama; Jika tidak, maka hapuslah.
Strategi ini menggunakan faktor reversal dan faktor tren secara komprehensif, yang memungkinkan perdagangan kuantitatif yang didorong oleh banyak faktor. Dengan verifikasi dua faktor, kemungkinan kesalahan perdagangan dapat dikurangi, sehingga strategi dapat berkinerja baik di berbagai pasar. Kemudian, strategi dapat dioptimalkan lebih lanjut dengan penyesuaian parameter dan pengaturan stop loss, sehingga stabilitas dan profitabilitas strategi dapat ditingkatkan.
/*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 )