
Triple EMA Trend Tracking Strategi adalah strategi yang sangat sesuai untuk mengesan trend pasaran. Ia menggunakan tiga EMA yang berbeza sebagai isyarat binaan kedudukan, untuk membina kedudukan overhead atau kosong apabila terdapat pengesahan trend yang mencukupi.
Kelebihan strategi ini adalah bahawa ia dapat mengurangkan isyarat palsu dan memastikan bahawa trend masuk setelah cukup kekuatan. Pada masa yang sama, ia dilengkapi dengan sistem hentian kerugian yang dapat mengikuti hentian kerugian mengikut turun naik pasaran, sehingga mencapai kesan pengurusan risiko yang lebih baik.
Strategi ini menggunakan tiga EMA kitaran 7, 14 dan 21 sebagai penunjuk isyarat binaan. Logiknya ialah, apabila harga menembusi tiga EMA pada masa yang sama, buat lebih banyak; apabila harga menembusi tiga EMA pada masa yang sama, buat lebih sedikit.
Reka bentuk seperti ini dapat mengurangkan isyarat palsu dan memastikan bahawa trend cukup jelas dan kemudian masuk. Pada masa yang sama, tiga kitaran EMA yang diset dengan betul dapat menangkap perkembangan trend pasaran tepat pada masanya.
Strategi ini menggunakan sistem penangguhan yang beradaptasi berdasarkan ATR dan penarikan balik maksimum. Ia akan mengira kadar turun naik harga dalam masa nyata dan menetapkan garis penangguhan berdasarkan itu. Secara khusus, ia akan mengira beberapa kali ganda ATR sebagai kawasan penangguhan.
Dalam proses kenaikan, garis berhenti akan bergerak ke atas dengan ketinggian baru, dengan kesan pengesanan yang lebih baik. Apabila harga kembali ke titik rendah zon penangguhan, garis berhenti akan diaktifkan, dan berhenti berhenti. Ini dapat mengawal risiko berhenti bergantung pada keadaan pasaran tertentu.
Strategi ini menggunakan kaedah penutupan peratusan tetap. Setelah membuka kedudukan, garis penutupan akan ditetapkan pada peratusan tertentu dari harga masuk. Apabila harga mencapai garis penutupan, ia akan mengambil keuntungan dari kedudukan yang bersih.
Keuntungan dari stop-loss yang tetap ini ialah anda boleh menetapkan keuntungan sasaran dan keluar apabila ia dicapai. Anda juga boleh mengelakkan risiko harga jatuh kembali.
Ia boleh digunakan untuk menentukan trend dengan menggunakan indikator untuk mengelakkan kedudukan buta dalam keadaan gegaran. Ia juga boleh digunakan untuk membuat penutupan bergerak atau stop loss yang lebih fleksibel. Secara keseluruhan, ia masih memerlukan penilaian buatan untuk menggunakan strategi.
Strategi ini juga boleh dioptimumkan dalam beberapa aspek:
Menggunakan lebih banyak penunjuk untuk menentukan masa masuk, seperti MACD, KD, dan lain-lain, untuk mengelakkan terjebak dalam keadaan gegaran.
Cubalah menggerakkan penghalang, atau gunakan cara yang lebih fleksibel untuk menghalang.
Menambah mekanisme pengesanan ke bawah dalam mod hentian, dapat mengesan titik rendah lagi jika harga turun lagi, sehingga mengawal risiko.
Sesuai dengan ciri-ciri pelbagai jenis, menyesuaikan parameter kitaran EMA, mengoptimumkan penghakiman trend.
Tambah modul pengurusan kedudukan, anda boleh menyesuaikan kedudukan tunggal mengikut peratusan penggunaan dana.
Strategi pengesanan trend EMA bertiga adalah strategi pengesanan trend yang sangat praktikal. Ia mempunyai kebolehan menilai trend yang kuat, dengan mekanisme penghentian dan kerugian yang dapat disesuaikan, yang dapat menguruskan pesanan secara automatik. Dari sudut pengoptimuman, sistem penghentian dan kerugian dapat disempurnakan lagi, yang membolehkan ia disesuaikan dengan keadaan pasaran masa nyata.
/*backtest
start: 2023-01-01 00:00:00
end: 2023-06-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy(shorttitle='Three EMAs Trend-following Strategy',title='Three EMAs Trend-following Strategy (by Coinrule)', overlay=true, initial_capital = 1000, process_orders_on_close=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, commission_type=strategy.commission.percent, commission_value=0.1)
//Backtest dates
fromMonth = input(defval = 1, title = "From Month", type = input.integer, minval = 1, maxval = 12)
fromDay = input(defval = 1, title = "From Day", type = input.integer, minval = 1, maxval = 31)
fromYear = input(defval = 2020, title = "From Year", type = input.integer, minval = 1970)
thruMonth = input(defval = 1, title = "Thru Month", type = input.integer, minval = 1, maxval = 12)
thruDay = input(defval = 1, title = "Thru Day", type = input.integer, minval = 1, maxval = 31)
thruYear = input(defval = 2112, title = "Thru Year", type = input.integer, minval = 1970)
showDate = input(defval = true, title = "Show Date Range", type = input.bool)
start = timestamp(fromYear, fromMonth, fromDay, 00, 00) // backtest start window
finish = timestamp(thruYear, thruMonth, thruDay, 23, 59) // backtest finish window
window() => time >= start and time <= finish ? true : false // create function "within window of time"
ema_1 = ema(close, input(7))
ema_2 = ema(close, input(12))
ema_3 = ema(close, input(21))
Take_profit= ((input (4))/100)
longTakeProfit = strategy.position_avg_price * (1 + Take_profit)
length = input(20, "Length", minval = 2)
src = input(close, "Source")
factor = input(3.0, "Multiplier", minval = 0.25, step = 0.25)
volStop(src, atrlen, atrfactor) =>
var max = src
var min = src
var uptrend = true
var stop = 0.0
atrM = nz(atr(atrlen) * atrfactor, tr)
max := max(max, src)
min := min(min, src)
stop := nz(uptrend ? max(stop, max - atrM) : min(stop, min + atrM), src)
uptrend := src - stop >= 0.0
if uptrend != nz(uptrend[1], true)
max := src
min := src
stop := uptrend ? max - atrM : min + atrM
[stop, uptrend]
[vStop, uptrend] = volStop(src, length, factor)
go_long = crossover(close, ema_1) and crossover(close, ema_2) and crossover(close, ema_3)
closeLong = close > longTakeProfit or crossunder(close, vStop)
//Entry
strategy.entry(id="long", long = true, when = go_long and window())
//Exit
strategy.close("long", when = closeLong and window())
plot(vStop,"Vstop", color.black, linewidth=2)
plot(ema_1,"EMA Short", color.green, linewidth=1)
plot(ema_2,"EMA Mid", color.purple, linewidth=1)
plot(ema_3,"EMA Long", color.red, linewidth=1)