Chiến lược xu hướng định lượng JBravo là một chiến lược theo xu hướng dựa trên đường trung bình động. Nó sử dụng đường trung bình động đơn giản 9 ngày, đường trung bình động nhân tố 20 ngày và đường trung bình động đơn giản 180 ngày để xác định hướng xu hướng thị trường, cũng như tín hiệu mua và bán cuối cùng.
Tên chiến lược được lấy cảm hứng từ nhân vật hoạt hình Johnny Bravo, đại diện cho một quyết định giao dịch tự tin và quyết định.
Một tín hiệu mua được tạo ra khi giá đóng vượt trên đường trung bình di chuyển đơn giản 9 ngày; Một tín hiệu bán được tạo ra khi giá đóng vượt dưới đường trung bình di chuyển theo cấp số nhân 20 ngày.
Nếu các đường trung bình động 9 ngày, 20 ngày và 180 ngày đều di chuyển lên, và đường trung bình động 9 ngày trên đường trung bình động 20 ngày, đường trung bình động 20 ngày trên đường trung bình động 180 ngày, một tín hiệu mua mạnh được tạo ra.
Nếu các đường trung bình động 9 ngày, 20 ngày và 180 ngày đều di chuyển xuống, và đường trung bình động 9 ngày thấp hơn đường trung bình động 20 ngày, đường trung bình động 20 ngày thấp hơn đường trung bình động 180 ngày, một tín hiệu bán mạnh được tạo ra.
Khi đường giá trung bình khối lượng trọng số vượt qua đường trung bình động biểu thức 20 ngày tăng lên, một tín hiệu
Chiến lược này kết hợp các ý tưởng theo xu hướng và chiến lược đột phá. Mức trung bình động có thể xác định rõ hướng của xu hướng thị trường và giảm khả năng giao dịch sai. Đồng thời, nó sử dụng các chỉ số VWAP linh hoạt để xác định thời gian nhập cảnh, kiểm soát rủi ro trong khi ủng hộ đột phá trong thị trường.
So với việc sử dụng chỉ trung bình động, chiến lược này thêm cơ chế nhập cảnh tích cực của
Nhìn chung, chiến lược này có mức thu nhỏ và lợi nhuận ổn định.
Mặc dù chiến lược làm tăng sức mạnh của các mục nhập, các điểm dừng lỗ có thể thường xuyên được kích hoạt trong các thị trường ngang.
Điều này có nghĩa là chiến lược có thể tạo ra một số lượng giao dịch ảo không thực sự phản ánh biến động giá thị trường.
Để giảm rủi ro, chúng tôi có thể điều chỉnh chu kỳ của các đường trung bình động phù hợp; hoặc thêm một mô-đun dừng lỗ để dừng lỗ khi lỗ đạt đến một mức độ nhất định.
Chiến lược có thể được tối ưu hóa theo các hướng sau:
Điều chỉnh các thông số trung bình động và tối ưu hóa các thông số chu kỳ để tìm kết hợp thông số tối ưu
Thêm các chỉ số khối lượng để tránh tín hiệu sai trong thời gian biến động giá mạnh mẽ
Tăng các mô-đun dừng lỗ và thiết lập các quy tắc thoát để kiểm soát mỗi lỗ giao dịch
Kết hợp các lựa chọn của các lĩnh vực nóng trên thị trường để làm cho các chiến lược được nhắm mục tiêu hơn
Tối ưu hóa tỷ lệ vị trí mở, tối ưu hóa quy mô khác nhau cho các thông số khác nhau
Chiến lược xu hướng định lượng JBravo tích hợp phân tích trung bình động và phán đoán xu hướng VWAP. Nó theo đuổi lợi nhuận lâu dài ổn định trong khi có một mức độ nhất định của các cơ chế giao dịch tích cực. Chiến lược này phù hợp với cổ phần dài hạn trung bình, với rủi ro trung bình cao và lợi nhuận cao. Nó có thể trở thành một phần của các chiến lược giao dịch danh mục đầu tư với khả năng thích nghi thị trường rất tốt.
[/trans]
/*backtest start: 2022-12-20 00:00:00 end: 2023-12-26 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/ // © bradvaughn //@version=4 strategy("JBravo Swing", overlay = false) var buy_in_progress = false //Moving Averages smaInput1 = input(title="Display SMA 9", type=input.bool, defval=true) smaInput2 = input(title="Display EMA 20", type=input.bool, defval=true) smaInput4 = input(title="Display SMA 180", type=input.bool, defval=true) colored_180 = input(false, title="Color-code 180 trend direction") vwapInput = input(title="Display VWAP", type=input.bool, defval=true) sma9 = sma(close, 9) ema20 = ema(close, 20) sma180 = sma(close, 180) //Plot Moving Averages plot(smaInput1 ? sma9 : na, color= color.red, title="SMA 9") plot(smaInput2 ? ema20 : na, color = color.yellow, title="EMA 20") // Plot VWAP vwap1 = vwap(hlc3) plot(vwapInput ? vwap1 : na, color = color.blue, title="VWAP") vwaplong = vwap1 > ema20 vwapshort = vwap1 < ema20 //Color SMA 180 trend direction if selected sma180_uptrend = sma(close, 180) > sma(close[2], 180) colr = sma180_uptrend == true or colored_180 == false ? color.white : colored_180 == true ? color.gray : na plot(smaInput4 ? sma180 : na, color = colr, title="SMA 180") //Get value of lower end of candle buyLow = iff(lowest(open, 1) < lowest(close, 1), lowest(open, 1), lowest(close, 1)) sellLow = lowest(close, 1) // Find the lower MA for crossover sell condition sellma = iff((sma9<ema20), sma9, ema20) //SMA 9 trend direction sma9_uptrend = sma(close, 9) > sma(close[2], 9) //EMA 20 trend direction ema20_uptrend = ema(close, 20) > sma(close[2], 20) //Buy or sell if conditions are met // Buy when the candle low is above the SMA9 // Sell when the candle low is below the lower of SMA9 and EMA20 Buy = iff(buy_in_progress == false and buyLow > sma9 == true, true, false) Sell = iff(buy_in_progress == true and sellLow < sellma == true, true, false) // Determine stong buy and strong sell conditions. // If moving averages are all up, then this will qualify a buy as a strong buy. // If the moving averages are not up (ie. down) then this will qualify a sell as a strong sell StrongBuy = iff (Buy and sma9_uptrend and sma180_uptrend and ema20_uptrend and (sma9 > ema20) and (ema20 > sma180), true, false) StrongSell = iff (Sell and not sma9_uptrend and not sma180_uptrend and not ema20_uptrend and (sma9 < ema20) and (ema20 < sma180), true, false) //Update Trading status if bought or sold if Buy buy_in_progress := true if Sell buy_in_progress := false // Clear Buy and Sell conditions if StrongBuy or StrongSell conditions exist. // This disables plotting Buy and Sell conditions if StrongBuy Buy := false if StrongSell Sell := false //Display BUY/SELL indicators plotshape(Buy,title="Buy", color=color.green, style=shape.arrowup,location=location.belowbar, text="Buy") plotshape(StrongBuy,title="Strong Buy", color=color.green, style=shape.arrowup,location=location.belowbar, text="Strong Buy") plotshape(Sell,title="Sell", color=color.red, style=shape.arrowdown,text="Sell") plotshape(StrongSell,title="Strong Sell", color=color.red, style=shape.arrowdown,text="Strong Sell") strategy.entry("GoGo Long", strategy.long, 1, when=vwaplong and vwapInput) strategy.entry("GoGo Short", strategy.short, 1, when=vwapshort and vwapInput) strategy.close("GoGo Long", when = vwapshort and vwapInput) strategy.close("GoGo Short", when = vwaplong and vwapInput) alertcondition(Buy, title="Buy Signal", message="Buy") alertcondition(Sell, title="Sell Signal", message="Sell")