
Chiến lược phá vỡ đường trung bình di chuyển kép (Dual Moving Average Breakout Strategy) là một chiến lược giao dịch định lượng dựa trên đường trung bình di chuyển nhanh và đường trung bình di chuyển chậm. Nó sử dụng đường trung bình di chuyển chỉ số (EMA) của hai chu kỳ khác nhau làm tín hiệu giao dịch.
Lý luận cốt lõi của chiến lược này là sử dụng đường trung bình di chuyển nhanh và đường trung bình di chuyển chậm để tạo ra tín hiệu giao dịch. Trong chiến lược, chu kỳ đường trung bình di chuyển nhanh được định nghĩa là 12 ngày và chu kỳ đường trung bình di chuyển chậm là 26 ngày.
Xác định xu hướng thị trường và tạo ra tín hiệu giao dịch thông qua giao dịch giữa đường trung bình di chuyển nhanh và đường trung bình di chuyển chậm là một chiến lược trung bình di chuyển kép điển hình.
Chiến lược phá vỡ đường trung bình hai động có những lợi thế sau:
Tuy nhiên, chiến lược phá vỡ đường trung bình di động đôi cũng có một số rủi ro:
Giải pháp:
Chiến lược phá vỡ đường trung bình di động đôi có thể được tối ưu hóa từ:
Chiến lược đột phá đường trung bình di động kép là một chiến lược giao dịch định lượng đơn giản và thực tế. Nó có lợi thế như logic chiến lược đơn giản, dễ thực hiện, nhưng cũng có một số vấn đề thích nghi với thị trường. Chúng ta có thể làm cho nó trở thành một hệ thống giao dịch có lợi nhuận ổn định bằng các phương pháp tối ưu hóa tham số, lọc tín hiệu, kiểm soát rủi ro.
/*backtest
start: 2023-01-17 00:00:00
end: 2024-01-23 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("CDC Action Zone V.2", overlay=true)
// CDC ActionZone V2 29 Sep 2016
// CDC ActionZone is based on a simple 2MA and is most suitable for use with medium volatility market
// 11 Nov 2016 : Ported to Trading View with minor UI enhancement
LSB = input(title="Long/Short", defval="Long only", options=["Long only", "Short only" , "Both"])
src = input(title="Data Array",type=input.source,defval=ohlc4)
prd1=input(title="Short MA period", type=input.integer,defval=12)
prd2=input(title="Long MA period",type=input.integer,defval=26)
AP = ema(src,2)
Fast = ema(AP,prd1)
Slow = ema(AP,prd2)
Bullish = Fast>Slow
Bearish = Fast<Slow
Green = Bullish and AP>Fast
Red = Bearish and AP<Fast
Yellow = Bullish and AP<Fast
Blue = Bearish and AP>Fast
Buy = Bullish and Bearish[1]
Sell = Bearish and Bullish[1]
alertcondition(Buy,"Buy Signal","Buy")
alertcondition(Sell,"Sell Signal","Sell")
//Plot
l1=plot(Fast,"Fast", linewidth=1,color=color.red)
l2=plot(Slow,"Slow", linewidth=2,color=color.blue)
bcolor = Green ? color.lime : Red ? color.red : Yellow ? color.yellow : Blue ? color.blue : na
barcolor(color=bcolor)
fill(l1,l2,bcolor)
// === INPUT BACKTEST RANGE ===
FromYear = input(defval = 2000, title = "From Year", minval = 1920)
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 = 1921)
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() => true // create function "within window of time"
if LSB == "Long only" and Buy and window()
strategy.entry("L",true)
if LSB == "Long only" and Sell and window()
strategy.close("L",qty_percent=100,comment="TP Long")
if LSB == "Both" and Buy and window()
strategy.entry("L",true)
if LSB == "Both" and Sell and window()
strategy.entry("S",false)
if LSB == "Short only" and Sell and window()
strategy.entry("S",false)
if LSB == "Short only" and Buy and window()
strategy.close("S",qty_percent=100,comment="TP Short")