
Strategi ini menggunakan 2 indikator untuk menghasilkan sinyal perdagangan: Indeks Moving Average 20⁄20 dan Indeks Reversal Average Real Range. Ini menggabungkan dua ide strategi utama, mengikuti tren dan reversal jangka pendek, untuk menemukan peluang reversal.
Strategi ini terdiri dari dua bagian:
2⁄20 Indeks Moving Average. Indeks ini menghitung pergerakan rata-rata indeks selama 20 hari terakhir, dan menghasilkan sinyal perdagangan ketika harga melewati moving average dari atas ke bawah atau dari bawah ke atas.
Average True Range Reversal Indicator. Hal ini didasarkan pada harga rata-rata real range berfluktuasi untuk menghitung titik stop loss, menghasilkan sinyal ketika harga menembus titik stop loss.
Strategi ini mengintegrasikan kedua sinyal tersebut. Bila 2⁄20 EMA menghasilkan sinyal multihead dan ATR berbalik menghasilkan sinyal kosong, maka kosongkan; bila 2⁄20 EMA menghasilkan sinyal kosong dan ATR berbalik menghasilkan sinyal multihead, maka lakukan lebih banyak.
Strategi ini menggabungkan dua ide utama, yaitu mengikuti tren dan membalikkan, yang bertujuan untuk menemukan peluang untuk membalikkan harga.
2⁄20 EMA dapat mengidentifikasi tren jangka menengah dan menghindari kebisingan pasar.
Indikator ATR Reversal dapat menangkap reversal harga jangka pendek dan mengambil peluang untuk reversal.
Kombinasi sinyal keduanya dapat menangkap lebih awal saat terjadi pergeseran tren jangka menengah, sehingga meningkatkan probabilitas keuntungan.
Pengaturan stop loss ATR lebih masuk akal dan memiliki efek kontrol risiko tertentu.
Kode ATR dapat disesuaikan dengan karakteristik varietas.
Anda dapat memilih untuk melakukan transaksi positif atau negatif, sesuai dengan situasi yang berbeda.
Strategi ini juga memiliki risiko sebagai berikut:
Parameter 2⁄20 EMA lebih lambat, kemungkinan kehilangan kesempatan garis pendek.
ATR stop mudah terobosan, dan stop loss harus relaksasi sesuai.
Indikator tunggal mudah menghasilkan sinyal yang salah, harus digabungkan dengan filter faktor lebih lanjut.
Perhatikan jumlah transaksi untuk menghindari transaksi yang terlalu sering.
Optimasi parameter dan pengujian ulang diperlukan untuk memastikan kesesuaian dengan varietas tersebut.
Anda harus mematuhi manajemen dana yang ketat dan mengontrol risiko.
Strategi ini dapat dioptimalkan dengan:
Menyesuaikan parameter EMA untuk mencari kombinasi optimal
Mengoptimalkan ukuran ATR, menyeimbangkan stop loss
Meningkatkan kondisi penyaringan, menggabungkan indikator seperti tingkat perputaran, volatilitas
Menambahkan Modul Manajemen Uang, Mengubah Posisi Secara Dinamis
Menambahkan strategi stop loss, seperti Chandelier Exit
Uji efek dari berbagai varietas untuk menemukan kombinasi terbaik
Menambahkan model pembelajaran mesin untuk meningkatkan kinerja dengan data besar
Menggabungkan berbagai strategi untuk menemukan lebih banyak Alpha
Strategi ini mengintegrasikan dua pemikiran besar, dengan kemampuan tertentu untuk menangkap harga berbalik. Namun, ada juga risiko yang ditimbulkan oleh pemilihan parameter yang tidak tepat. Dapat meningkatkan stabilitas dan profitabilitas strategi lebih lanjut dengan mengoptimalkan strategi stop loss, menambahkan kondisi penyaringan, dll.
/*backtest
start: 2022-10-27 00:00:00
end: 2023-11-02 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
// Average True Range Trailing Stops Strategy, by Sylvain Vervoort
// The related article is copyrighted material from Stocks & Commodities Jun 2009
// Please, use it only for learning or paper trading. Do not for real trading.
//
//
// 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
ATRR(nATRPeriod,nATRMultip) =>
pos = 0.0
xATR = ta.atr(nATRPeriod)
nLoss = nATRMultip * xATR
xATRTrailingStop = 0.0
xATRTrailingStop := close > nz(xATRTrailingStop[1], 0) and close[1] > nz(xATRTrailingStop[1], 0) ? math.max(nz(xATRTrailingStop[1]), close - nLoss) :
close < nz(xATRTrailingStop[1], 0) and close[1] < nz(xATRTrailingStop[1], 0) ? math.min(nz(xATRTrailingStop[1]), close + nLoss) :
close > nz(xATRTrailingStop[1], 0) ? close - nLoss : close + nLoss
pos:= close[1] < nz(xATRTrailingStop[1], 0) and close > nz(xATRTrailingStop[1], 0) ? 1 :
close[1] > nz(xATRTrailingStop[1], 0) and close < nz(xATRTrailingStop[1], 0) ? -1 : nz(pos[1], 0)
pos
strategy(title='Combo 2/20 EMA & Average True Range Reversed', shorttitle='Combo', overlay=true)
var I1 = '●═════ 2/20 EMA ═════●'
Length = input.int(14, minval=1, group=I1)
var I2 = '●═════ Average True Range Reversed ═════●'
nATRPeriod = input.int(5, group=I2)
nATRMultip = input.float(3.5, 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)
prePosATRR = ATRR(nATRPeriod,nATRMultip)
iff_1 = posEMA20 == -1 and prePosATRR == -1 and StartTrade ? -1 : 0
pos = posEMA20 == 1 and prePosATRR == 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)