
Strategi ini menggunakan 2 indikator untuk menghasilkan isyarat perdagangan: Indeks Pergerakan Rata-rata 2⁄20 dan Indeks Reversal Julat Reversal Julat Reversal. Ia menggabungkan trend mengikuti dan reversal jangka pendek dua pemikiran strategi utama untuk mencari peluang reversal.
Strategi ini terdiri daripada dua bahagian:
Indeks Moving Average 2⁄20: Ia mengira purata pergerakan indeks selama 20 hari terakhir, menghasilkan isyarat perdagangan apabila harga menembusi dari atas ke bawah atau dari bawah ke arah purata bergerak.
Indikator Reversal Rentang Rata-Rata Pergerakan Nyata. Ia mengira titik hentian berdasarkan rantau rata-rata pergerakan sebenar harga, dan memberi isyarat apabila harga menembusi titik hentian. Ia menggunakan 3.5 kali ATR sebagai titik hentian.
Strategi ini menggabungkan kedua-dua isyarat. Apabila 2/20EMA menghasilkan isyarat multihead dan ATR berbalik menghasilkan isyarat kosong, buat kosong; Apabila 2/20EMA menghasilkan isyarat kosong dan ATR berbalik menghasilkan isyarat multihead, buat lebih banyak.
Strategi ini menggabungkan trend-following dan reversal dengan tujuan untuk mencari peluang untuk membalikkan harga.
2⁄20 EMA dapat mengenal pasti trend pertengahan dan mengelakkan gangguan pasaran.
Penunjuk ATR berbalik menangkap perubahan harga jangka pendek dan mengambil peluang untuk berbalik.
Dengan menggabungkan kedua-dua isyarat ini, ia dapat ditangkap lebih awal apabila trend bertukar dalam jangka masa pertengahan, dan dengan itu meningkatkan peluang untuk memperoleh keuntungan.
Tetapan stop loss ATR lebih munasabah dan mempunyai kesan kawalan risiko tertentu.
Pekali ATR boleh disesuaikan untuk menyesuaikan ciri-ciri varieti yang berbeza.
Anda boleh memilih untuk berdagang ke arah positif atau ke arah terbalik.
Strategi ini juga mempunyai risiko:
2⁄20 parameter EMA lambat, mungkin terlepas peluang garisan pendek.
Hentikan ATR mudah ditembusi, dan hentikan Hentikan harus dikurangkan.
Indikator tunggal mudah menghasilkan isyarat yang salah, lebih banyak faktor perlu disaring.
Perhatikan jumlah transaksi untuk mengelakkan terlalu kerap.
Parameter perlu dioptimumkan dan diuji semula untuk mengesahkan kesesuaian dengan jenis tersebut.
Mematuhi peraturan pengurusan dana yang ketat dan mengawal risiko.
Strategi ini boleh dioptimumkan dengan:
Menyesuaikan parameter EMA untuk mencari kombinasi parameter terbaik
Mengoptimumkan saiz ATR, mengimbangi stop loss
Menambah syarat penapisan, menggabungkan penunjuk seperti kadar pertukaran, kadar turun naik
Menambah modul pengurusan wang, penyesuaian kedudukan secara dinamik
Menambah strategi henti rugi, seperti Chandelier Exit
Uji kesesuaian antara varieti yang berbeza untuk mencari kombinasi terbaik
Menggunakan model pembelajaran mesin untuk meningkatkan prestasi menggunakan data besar
Menggabungkan pelbagai substrategi untuk mencari lebih banyak Alpha
Strategi ini mengintegrasikan dua pemikiran besar dan mempunyai keupayaan untuk menangkap harga berbalik. Tetapi ada juga risiko yang timbul daripada pemilihan parameter yang tidak betul.
/*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)