
Strategi ini menggabungkan purata bergerak dua indeks dan tiga rata-rata Williams untuk membentuk satu trend yang komprehensif dan sistem untuk menghasilkan isyarat pembalikan trend. Ia mempunyai kecekapan memegang kedudukan yang sangat baik dan dapat menyaring isyarat palsu dengan berkesan.
Strategi ini terdiri daripada dua sub-strategi:
Rata-rata Bergerak Eksponensial Ganda (DEMA). Ia menggabungkan prestasi pengesanan trend rata-rata bergerak indeks tunggal, dan keterlambatan rata-rata bergerak indeks ganda. Ia boleh melakukan lebih banyak dengan lebih cepat apabila harga naik; ia juga boleh melakukan lebih cepat apabila harga turun.
Tiga rata-rata Williams. Ia terdiri daripada garis panjang, garis tengah, dan garis pendek. Ia menggunakan persilangan rata-rata berkala yang berbeza untuk menilai perubahan trend untuk menghasilkan isyarat perdagangan. Ia berfungsi sebagai isyarat ganda apabila garis pendek melintasi garis tengah dan garis tengah melintasi garis panjang. Ia berfungsi sebagai isyarat kosong apabila garis pendek melintasi garis tengah dan garis tengah melintasi garis panjang.
Isyarat dagangan strategi ini adalah untuk menjalankan operasi tegangan dan tegangan hasil dari kedua-dua substrategi di atas. Iaitu, strategi ini hanya akan menghantar pesanan apabila kedua-dua substrategi menghantar isyarat pada masa yang sama. Ini dapat mengurangkan isyarat palsu dengan berkesan dan meningkatkan kestabilan pegangan.
Kelebihan terbesar strategi ini adalah bahawa ia dapat menyaring isyarat palsu dengan berkesan, yang ditentukan oleh struktur strategi. Walaupun purata bergerak ganda dan purata Williams mempunyai kelemahan masing-masing, menggabungkan keduanya dapat memanfaatkan kelebihan masing-masing dan saling mengimbangi. Ini membolehkan strategi ini untuk memegang kedudukan yang cekap dalam keadaan trend, dan dapat menghentikan kerugian dalam keadaan yang tidak teratur.
Di samping itu, parameter strategi ini mempunyai ruang yang luas untuk pengoptimuman, yang dapat disesuaikan dengan parameter purata bergerak berganda dan parameter rata-rata tiga baris Williams, untuk menyesuaikan diri dengan ciri-ciri pasaran yang berbeza dan tempoh, yang mempunyai daya serasi yang kuat.
Risiko utama strategi ini ialah apabila keadaan pasaran mengalami turun naik yang teruk, titik-titik berhenti mungkin akan ditembusi dan menyebabkan kerugian yang besar. Ini adalah masalah yang umum dengan strategi purata bergerak. Selain itu, dalam keadaan yang bergolak, strategi ini mungkin sering membuka kedudukan kosong dan meningkatkan kerugian kos perdagangan.
Untuk mengawal risiko ini, disarankan untuk menggunakan kaedah Analisis Walk Forward ketika mengoptimumkan parameter, dan menetapkan titik berhenti yang munasabah. Pada masa yang sama, indikator tambahan boleh diperkenalkan untuk menilai keadaan perdagangan, dan menghentikan perdagangan dalam keadaan yang bergolak.
Strategi ini mempunyai beberapa penyesuaian:
Menyesuaikan parameter purata bergerak berganda untuk pelbagai jenis dan tempoh.
Menyesuaikan kitaran tiga garis rata-rata Williams dengan kekerapan turun naik pasaran.
Menambah syarat untuk membuka kedudukan, menapis isyarat dagangan pada tahap tertentu. Contohnya, tidak berdagang semasa turun naik yang kuat.
Tambah indikator stop loss untuk mengawal kerugian. Anda boleh mencuba kaedah untuk menjejaki stop loss, stop loss purata dan sebagainya.
Masukkan parameter pengoptimuman automatik algoritma pembelajaran mesin.
Strategi ini dengan menggabungkan kelebihan purata bergerak ganda dan purata Williams, mewujudkan penapisan isyarat perdagangan yang berkesan, boleh mengurangkan isyarat palsu, meningkatkan kecekapan memegang kedudukan. Ia boleh mendapatkan prestasi yang lebih baik melalui parameter yang dioptimumkan mengikut keadaan pasaran, mempunyai potensi aplikasi yang besar.
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
////////////////////////////////////////////////////////////
// Copyright by HPotter v1.0 21/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
// This indicator calculates 3 Moving Averages for default values of
// 13, 8 and 5 days, with displacement 8, 5 and 3 days: Median Price (High+Low/2).
// The most popular method of interpreting a moving average is to compare
// the relationship between a moving average of the security's price with
// the security's price itself (or between several moving averages).
//
//
// 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
BWA3Lines(LLength,MLength,SLength,LOffset,MOffset,SOffset) =>
pos = 0.0
xLSma = ta.sma(hl2, LLength)[LOffset]
xMSma = ta.sma(hl2, MLength)[MOffset]
xSSma = ta.sma(hl2, SLength)[SOffset]
pos := close < xSSma and xSSma < xMSma and xMSma < xLSma ? -1 :
close > xSSma and xSSma > xMSma and xMSma > xLSma ? 1 : nz(pos[1], 0)
pos
strategy(title='Combo 2/20 EMA & Bill Williams Averages. 3Lines', shorttitle='Combo', overlay=true)
var I1 = '●═════ 2/20 EMA ═════●'
Length = input.int(14, minval=1, group=I1)
var I2 = '●═════ 3Lines ═════●'
LLength = input.int(13, minval=1, group=I2)
MLength = input.int(8,minval=1, group=I2)
SLength = input.int(5,minval=1, group=I2)
LOffset = input.int(8,minval=1, group=I2)
MOffset = input.int(5,minval=1, group=I2)
SOffset = input.int(3,minval=1, 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)
prePosBWA3Lines = BWA3Lines(LLength,MLength,SLength,LOffset,MOffset,SOffset)
iff_1 = posEMA20 == -1 and prePosBWA3Lines == -1 and StartTrade ? -1 : 0
pos = posEMA20 == 1 and prePosBWA3Lines == 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)