JBravo Chiến lược xu hướng định lượng

Tác giả:ChaoZhang, Ngày: 2023-12-27 14:53:07
Tags:

Tổng quan chiến lược

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.

Nguyên tắc chiến lược

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 GoGo Long đượ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 số 20 ngày giảm xuống, một tín hiệu GoGo Short được tạo ra.

Phân tích lợi thế

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 GoGo Juice, có thể có lợi nhuận cao hơn trong xu hướng mạnh.

Nhìn chung, chiến lược này có mức thu nhỏ và lợi nhuận ổn định.

Phân tích rủi ro

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.

Hướng dẫn tối ưu hóa

Chiến lược có thể được tối ưu hóa theo các hướng sau:

  1. Đ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

  2. 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ẽ

  3. 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

  4. 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

  5. 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

Kết luận

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")

Thêm nữa