Hệ thống giao dịch hai EMA vàng xanh là một hệ thống giao dịch theo dõi xu hướng dựa trên đường trung bình di chuyển hai chỉ số. Hệ thống sử dụng đường trung bình EMA của hai chu kỳ khác nhau để đánh giá hướng xu hướng hiện tại và đưa ra quyết định giao dịch dựa trên mối quan hệ giữa giá và đường trung bình EMA.
Chiến lược này chủ yếu dựa trên hai đường trung bình EMA, một đường trung bình EMA có chu kỳ nhanh hơn và một đường trung bình EMA có chu kỳ chậm hơn. Khi EMA nhanh trên EMA chậm, nó được coi là tăng; khi EMA nhanh dưới EMA chậm, nó được coi là giảm.
Dựa trên mối quan hệ giữa giá và hai đường trung bình EMA, đường K có thể được chia thành các khu vực giao dịch khác nhau:
Khi EMA nhanh nằm trên EMA chậm và giá nằm trên EMA nhanh (G1), vùng mua mạnh có thể được mua tại thời điểm này.
Khi EMA nằm dưới EMA chậm và giá nằm dưới EMA nhanh, R1 có thể được bán.
Khi EMA nhanh hoặc chậm giao nhau, giá có thể được phân chia thành vùng màu vàng (cảnh báo) và màu cam (đứng chờ) dựa trên mối quan hệ của nó với hai EMA. Hai vùng này đại diện cho khả năng biến đổi xu hướng và cần được kết hợp với các vùng khác và các chỉ số khác để quyết định giao dịch.
Chiến lược này sẽ phát ra tín hiệu mua và bán dựa trên sự thay đổi của giá trong các khu vực giao dịch khác nhau. Trong khu vực mạnh G1 và R1, chiến lược sẽ phát ra tín hiệu trực tiếp; trong khu vực cảnh báo và quan sát, các chỉ số khác cần được xác nhận.
Ngoài ra, chiến lược này cũng giới thiệu StochRSI để hỗ trợ quyết định khi nào nên mua hoặc bán.
Lập luận của chiến lược đơn giản, rõ ràng, dễ hiểu và dễ thực hiện.
Dựa trên xu hướng hoạt động, có thể nắm bắt hiệu quả các xu hướng trung bình và dài;
Phân biệt vùng mạnh và vùng cảnh báo / quan sát chống lại xu hướng, tín hiệu giao dịch đáng tin cậy hơn;
Kết hợp với StochRSI, bạn có thể xác định chính xác hơn khi nào nên mua hoặc bán.
Một hệ thống theo xu hướng thuần túy có thể không hiệu quả trong một thị trường không có xu hướng rõ ràng;
EMA có thể được thiết lập một cách không chính xác và có thể dẫn đến tín hiệu sai.
Các khu vực cảnh báo trước và khu vực quan sát có rủi ro giao dịch cao và cần được xử lý thận trọng;
Không tính đến nguy cơ dừng lỗ dẫn đến sự gia tăng lỗ.
Các biện pháp sau đây có thể được áp dụng để giảm nguy cơ:
Lựa chọn các loại có xu hướng rõ ràng và tạm dừng giao dịch khi xu hướng yếu hơn;
Tối ưu hóa các tham số chu kỳ EMA để giảm khả năng tín hiệu giả;
Việc giới thiệu các chỉ số khác trong khu vực cảnh báo và quan sát được xác nhận để giảm rủi ro giao dịch;
Thiết lập điểm dừng để kiểm soát tổn thất đơn lẻ.
Chiến lược này có thể được tối ưu hóa theo các khía cạnh sau:
Tiếp tục đưa ra nhiều chỉ số xác nhận như MACD, KDJ, để cải thiện chất lượng tín hiệu;
Các điều kiện lọc được đưa ra trong khu vực giao dịch, như tăng khối lượng giao dịch và tăng tỷ lệ thành công của các giao dịch;
Điều chỉnh các tham số EMA theo các biến động của thị trường, thiết lập các tham số tối ưu hóa;
Tăng chiến lược dừng lỗ, dừng lỗ khi thua lỗ đạt đến một tỷ lệ nhất định;
Tối ưu hóa quản lý vốn, thiết lập quản lý vị trí hợp lý;
Kiểm tra tối ưu hóa trên các giống khác nhau, tìm kiếm sự kết hợp tham số tốt nhất.
Bằng cách giới thiệu nhiều chỉ số phán đoán hỗ trợ, tối ưu hóa tham số động, chiến lược dừng lỗ, cải thiện sự ổn định của hệ thống, giảm rủi ro từ khía cạnh quản lý tài chính, chiến lược này có thể có hiệu quả giao dịch tốt hơn.
Hệ thống giao dịch hai EMA vàng xanh là một hệ thống giao dịch theo dõi xu hướng dựa trên so sánh hai đường EMA trung bình. Nó phân biệt các khu vực giao dịch khác nhau, phán đoán hướng xu hướng dựa trên mối quan hệ giữa giá và đường EMA trung bình và tạo ra tín hiệu giao dịch, là một hệ thống theo dõi xu hướng có logic rõ ràng, dễ thực hiện. Chiến lược này có lợi thế như nắm bắt xu hướng hiệu quả, quy tắc giao dịch đơn giản và trực quan, nhưng cũng có một số rủi ro. Bằng cách giới thiệu các chỉ số phụ trợ, thiết lập tham số tối ưu hóa động, dừng lỗ và quản lý vốn tối ưu hóa, các phương pháp có thể làm giảm rủi ro và tiếp tục nâng cao tính ổn định và khả năng sinh lợi của hệ thống.
/*backtest
start: 2023-01-01 00:00:00
end: 2023-10-25 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Vvaz_
//base-on CDC ActionZone By Piriya a simple 2EMA and is most suitable for use with medium volatility market
//@version=4
strategy(title="Vin's Playzone" ,shorttitle="VPz", overlay=true, margin_long=4, margin_short=2)
//variable
srcf = input(title="Source",type=input.source,defval=close)
tffix = input(title="Fixed Timeframe",type=input.bool,defval=true)
tfn = input(title="Timeframe in",type=input.resolution,defval="D")
ema1 = input(title="Fast EMA",type=input.integer,defval=12)
ema2 = input(title="Slow EMA",type=input.integer,defval=26)
ema3 = input(title="EMA 100",type=input.bool,defval=true)
smooter =input(title="Smoothing period (1 = no smoothing)",type=input.integer,defval=2)
fillbar =input(title="Fill Bar Color",type=input.bool,defval=true)
emasw = input(title="Show EMA",type=input.bool,defval=true)
bssw = input(title="Show Buy-Sell signal",type=input.bool,defval=true)
plotmm = input(title="Show Buy-Sell Momentum",type=input.bool,defval=true)
plotmmsm = input(title="RSI Smoothing",type=input.integer,defval=0,minval=0,maxval=2)
//math
xcross =ema(srcf,smooter)
efast = tffix ? ema(security(syminfo.tickerid,tfn,ema(srcf,ema1), gaps = barmerge.gaps_off,lookahead = barmerge.lookahead_on),smooter) :ema(xcross,ema1)
eslow = tffix ? ema(security(syminfo.tickerid,tfn,ema(srcf,ema2), gaps = barmerge.gaps_off,lookahead = barmerge.lookahead_on),smooter) :ema(xcross,ema2)
ema3x = ema(xcross,100)
//Zone
Bull = efast > eslow
Bear = efast < eslow
G1 = Bull and xcross > efast //buy
G2 = Bear and xcross > efast and xcross > eslow //pre-buy1
G3 = Bear and xcross > efast and xcross < eslow //pre-buy2
R1 = Bear and xcross < efast //sell
R2 = Bull and xcross < efast and xcross < eslow //pre-sell1
R3 = Bull and xcross < efast and xcross > eslow //pre-sell2
//color
bcl = G1 ? color.green : G2 ? color.yellow : G3 ? color.orange :R1 ? color.red :R2 ? color.orange : R3 ? color.yellow : color.black
barcolor(color=fillbar ? bcl : na )
//plots
line1 = plot(ema3 ? ema3x : na ,"EMA100",color=color.white)
line2 = plot(emasw ? efast : na ,"Fast EMA",color=color.green)
line3 = plot(emasw ? eslow : na ,"Slow EMA",color=color.red)
fillcl = Bull ? color.green : Bear ? color.red : color.black
fill(line2,line3,fillcl)
//actions
buywhen = G1 and G1[1]==0
sellwhen = R1 and R1[1]==0
bullish = barssince(buywhen) < barssince(sellwhen)
bearish = barssince(sellwhen) < barssince(buywhen)
buy = bearish[1] and buywhen
sell = bullish[1] and sellwhen
bullbearcl = bullish ? color.green : bearish ? color.red : color.black
//plot trend
plotshape(bssw ? buy : na ,style=shape.arrowup,title="BUY",location=location.belowbar,color=color.green)
plotshape( bssw ? sell : na ,style=shape.arrowdown ,title="Sell",location=location.abovebar,color=color.red)
// Momentum Signal using StochRSI
smoothK = input(5,"StochRSI smooth K",type=input.integer,minval=1)
smoothD = input(4,"StochRSI smooth D",type=input.integer,minval=1)
RSIlen = input(14,"RSI length",type=input.integer,minval=1)
STOlen = input(14,"Stochastic length",type=input.integer,minval=1)
SRsrc = input(close,"Source for StochasticRSI",type=input.source)
OSlel = input(20,"Oversold Threshold",type=input.float,minval=0.00)
OBlel = input(80,"Oversold Threshold",type=input.float,minval=0.00)
rsil = rsi(SRsrc,RSIlen)
K = sma(stoch(rsil,rsil,rsil,STOlen),smoothK)
D = sma(K,smoothD)
buymore = iff( bullish ,iff(D < OSlel and crossover(K,D), 2, iff(D > OSlel and crossover(K,D), 1,0)),0)
sellmore = iff( bearish,iff(D > OBlel and crossunder(K,D), 2, iff(D < OBlel and crossunder(K,D), 1,0)),0)
//plot momentum
plotshape(plotmm ? buymore > plotmmsm ? buymore : na : na ,"Buy More!" ,style=shape.triangleup,location=location.belowbar,color=color.green)
plotshape(plotmm ? sellmore > plotmmsm ? sellmore : na : na ,"Sell More!" ,style=shape.triangledown,location=location.abovebar,color=color.red)
// === INPUT BACKTEST RANGE ===
FromYear = input(defval = 2009, title = "From Year", minval = 2009)
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
ToYear = input(defval = 9999, title = "To Year", minval = 2009)
ToMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
ToDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31)
// === FUNCTION EXAMPLE ===
start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window
finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window
window() => time >= start and time <= finish ? true : false // create function "within window of time"
//stratgy excuter
strategy.entry("Long",true,when=window() and buy or buymore)
strategy.close("Long",when=window() and sell or sellmore,comment="TP Long")
strategy.entry("Short",false,when=window() and sell or sellmore)
strategy.close("Short",when=window() and buy or buymore,comment="TP Short")