
Strategi ini menggabungkan dua indikator dengan menggunakan purata bergerak dua indeks (DEMA) dan penapis bandpass (BPF) untuk mencapai penyaringan ganda untuk menembusi pembelian dan pembelian yang berlebihan, membentuk isyarat perdagangan yang stabil untuk memaksimumkan keuntungan.
Strategi ini terdiri daripada dua sub-strategi:
Penggunaan purata bergerak indeks ganda pada hari ke-2 dan ke-20 membentuk tanda membeli dan menjual garpu emas. Penunjuk ini menapis sebahagian daripada bunyi harga, yang membantu untuk mencari trend.
Penunjuk BPF menggabungkan perubahan matematik, mengesan komponen yang berputar dalam harga, membentuk kawasan overbuy oversell dalam satu kitaran, dan menghantar isyarat perdagangan. Strategi ini ditetapkan untuk kitaran 20 hari, parameter normalisasi 0.5.
Apabila kedua-duanya digabungkan, isomotor melakukan banyak isyarat shorting yang menunjukkan bahawa faktor trend dan kitaran telah disahkan, dan oleh itu lebih dipercayai, dan menghasilkan titik masuk dan keluar yang lebih stabil.
Kelebihan terbesar strategi ini adalah penapisan dua kali ganda, yang menjadikan isyarat lebih stabil dan boleh dipercayai. DEMA meluruskan harga, mengenal pasti arah trend; BPF mengenal pasti ciri-ciri kitaran, menentukan kawasan overbought dan oversold. Kedua-duanya disahkan secara silang, yang dapat mengurangkan kemungkinan isyarat palsu yang dihasilkan oleh bunyi harga dan penyesuaian kitaran.
Di samping itu, strategi itu sendiri tidak sering berdagang, mengelakkan kehilangan dana dan yuran yang berlebihan. Waktu memegang kedudukan adalah garis panjang dan tengah, yang membantu mengelakkan kesan turun naik rawak.
Risiko terbesar strategi ini adalah salah menilai keadaan pasaran. Dalam keadaan goyah, mudah menghasilkan isyarat yang salah; apabila trend berbalik, hentian mungkin lebih besar. Selain itu, masalah penetapan parameter juga akan memberi kesan besar kepada prestasi strategi.
Risiko ini boleh dikawal dan diperbaiki dengan cara mengoptimumkan parameter indikator, menetapkan stop loss dan menggabungkannya dengan indikator lain. Apabila menilai bahawa pasaran memasuki tahap goyah dan bertukar tangan, anda boleh mempertimbangkan untuk menangguhkan strategi untuk mengelakkan gangguan dari keadaan yang tidak baik.
Strategi ini boleh dioptimumkan dalam beberapa aspek:
Pengoptimuman kitaran masa. Uji tetapan parameter DEMA dan BPF yang berbeza untuk menentukan kombinasi kitaran yang optimum.
Tambah seting stop loss. Tetapkan stop loss yang munasabah untuk mengelakkan peningkatan kerugian. Tetap tepat untuk mengunci sebahagian keuntungan.
Tambah penapis untuk penunjuk lain, seperti Volume, MACD, dan lain-lain, untuk mengelakkan isyarat disesatkan oleh pertaruhan pengurangan besar.
Optimasi penyesuaian parameter. Membolehkan parameter DEMA dan BPF untuk menyesuaikan secara dinamik mengikut keadaan pasaran terkini, memastikan ketegasan indikator.
Strategi ini mengintegrasikan kelebihan kedua-dua indikator EMA dan BPF, penapisan ganda meningkatkan kualiti isyarat, mengejar keuntungan jangka panjang yang stabil. Risiko terutamanya berasal dari kesalahan penghakiman keadaan pasaran dan parameter yang tidak betul.
/*backtest
start: 2023-01-10 00:00:00
end: 2024-01-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
////////////////////////////////////////////////////////////
// Copyright by HPotter v1.0 05/04/2022
// This is combo strategies for get a cumulative signal.
//
// First strategy
// This indicator plots 2/20 exponential moving average. For the Mov
// Avg X 2/20 Indicator, the EMA bar will be painted when the Alert criteria is met.
//
// Second strategy
// The related article is copyrighted material from
// Stocks & Commodities Mar 2010
//
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
EMA20(Length) =>
pos = 0.0
xPrice = close
xXA = ta.ema(xPrice, Length)
nHH = math.max(high, high[1])
nLL = math.min(low, low[1])
nXS = nLL > xXA or nHH < xXA ? nLL : nHH
iff_1 = nXS < close[1] ? 1 : nz(pos[1], 0)
pos := nXS > close[1] ? -1 : iff_1
pos
BPF(Length,Delta,SellZone,BuyZone) =>
pos = 0.0
xPrice = hl2
beta = math.cos(3.14 * (360 / Length) / 180)
gamma = 1 / math.cos(3.14 * (720 * Delta / Length) / 180)
alpha = gamma - math.sqrt(gamma * gamma - 1)
BP = 0.0
BP := 0.5 * (1 - alpha) * (xPrice - xPrice[2]) + beta * (1 + alpha) * nz(BP[1]) - alpha * nz(BP[2])
pos:= BP > SellZone ? 1 :
BP <= BuyZone? -1 : nz(pos[1], 0)
pos
strategy(title='Combo 2/20 EMA & Bandpass Filter', shorttitle='Combo', overlay=true)
var I1 = '●═════ 2/20 EMA ═════●'
Length = input.int(14, minval=1, group=I1)
var I2 = '●═════ Bandpass Filter ═════●'
LengthBPF = input.int(20, minval=1, group=I2)
Delta = input(0.5, group=I2)
SellZone = input.float(5, step = 0.01, group=I2)
BuyZone = input.float(-5, step = 0.01, group=I2)
var misc = '●═════ MISC ═════●'
reverse = input.bool(false, title='Trade reverse', group=misc)
var timePeriodHeader = '●═════ Time Start ═════●'
d = input.int(1, title='From Day', minval=1, maxval=31, group=timePeriodHeader)
m = input.int(1, title='From Month', minval=1, maxval=12, group=timePeriodHeader)
y = input.int(2005, title='From Year', minval=0, group=timePeriodHeader)
StartTrade = time > timestamp(y, m, d, 00, 00) ? true : false
posEMA20 = EMA20(Length)
prePosBPF = BPF(LengthBPF,Delta,SellZone,BuyZone)
iff_1 = posEMA20 == -1 and prePosBPF == -1 and StartTrade ? -1 : 0
pos = posEMA20 == 1 and prePosBPF == 1 and StartTrade ? 1 : iff_1
iff_2 = reverse and pos == -1 ? 1 : pos
possig = reverse and pos == 1 ? -1 : iff_2
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)