Chiến lược Breakout 1 phút là một chiến lược giao dịch định lượng nhằm nắm bắt các tín hiệu breakout trong khoảng thời gian 1 phút để nhận ra lợi nhuận nhanh chóng. Chiến lược này kết hợp nhiều chỉ số như đường trung bình động, ATR, RSI để tạo ra các tín hiệu giao dịch và đạt tỷ lệ rủi ro-lợi nhuận cao hơn trong thời gian nắm giữ ngắn.
Chiến lược này chủ yếu sử dụng các yếu tố sau đây để hình thành tín hiệu giao dịch:
Cụ thể, chiến lược tính toán trung bình N-thời gian của ATR, EMA nhanh, EMA chậm, RSI nhanh và RSI chậm. Kết hợp các điều kiện của kênh phá vỡ giá ATR, EMA Golden Cross và RSI đạt đến mức độ cực, chiến lược gửi tín hiệu mua hoặc bán.
Những lợi thế chính của chiến lược này là:
Ngoài ra còn có một số rủi ro:
Để kiểm soát rủi ro, nên thực hiện dừng lỗ, và các thông số cần phải kiểm tra lại đúng cách để tránh quá mức.
Chiến lược có thể được tối ưu hóa thông qua:
Các thiết lập tham số thử nghiệm trong thời gian ngắn hơn (5 phút, 15 phút);
Thêm nhiều chỉ số lọc như âm lượng để cải thiện chất lượng tín hiệu;
Tối ưu hóa kênh ATR và các thông số trung bình động để tìm kết hợp thông số tốt nhất.
Chiến lược Breakout 1 phút Gem Forest tập trung vào việc nắm bắt xu hướng ngắn hạn bằng cách lọc với nhiều chỉ số, có phản ứng nhanh và đặc điểm rủi ro-lợi nhuận cao. Nó có thể được điều chỉnh theo sở thích rủi ro của người dùng thông qua tối ưu hóa tham số để có kết quả tốt hơn. Tuy nhiên, người dùng nên kiểm soát rủi ro giao dịch thông qua dừng lỗ nghiêm ngặt, tần suất giao dịch hợp lý v.v. Nhìn chung, chiến lược này phù hợp với các nhà đầu tư có kiến thức giao dịch lượng nhất định và dung nạp rủi ro cho giao dịch ngắn hạn.
/*backtest start: 2023-02-12 00:00:00 end: 2024-02-18 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Gem Forest 1 Dakika Scalp", overlay=true) source = close atrlen = input.int(14, "ATR Period") mult = input.float(1, "ATR Multi", step=0.1) smoothing = input.string(title="ATR Smoothing", defval="WMA", options=["RMA", "SMA", "EMA", "WMA"]) ma_function(source, atrlen) => if smoothing == "RMA" ta.rma(source, atrlen) else if smoothing == "SMA" ta.sma(source, atrlen) else if smoothing == "EMA" ta.ema(source, atrlen) else ta.wma(source, atrlen) atr_slen = ma_function(ta.tr(true), atrlen) upper_band = atr_slen * mult + close lower_band = close - atr_slen * mult ShortEMAlen = input.int(21, "Fast EMA") LongEMAlen = input.int(65, "Slow EMA") shortSMA = ta.ema(close, ShortEMAlen) longSMA = ta.ema(close, LongEMAlen) RSILen1 = input.int(25, "Fast RSI Length") RSILen2 = input.int(100, "Slow RSI Length") rsi1 = ta.rsi(close, RSILen1) rsi2 = ta.rsi(close, RSILen2) atr = ta.atr(atrlen) RSILong = rsi1 > rsi2 RSIShort = rsi1 < rsi2 longCondition = open < lower_band shortCondition = open > upper_band GoldenLong = ta.crossover(shortSMA,longSMA) Goldenshort = ta.crossover(longSMA,shortSMA) plotshape(shortCondition, title="Sell Label", text="Sell", location=location.abovebar, style=shape.labeldown, size=size.tiny, color=color.new(color.red, 0), textcolor=color.white) plotshape(longCondition, title="Buy Label", text="Buy", location=location.belowbar, style=shape.labelup, size=size.tiny, color=color.new(color.green, 0), textcolor=color.white) plotshape(Goldenshort, title="Golden Sell Label", text="Golden Crossover Short", location=location.abovebar, style=shape.labeldown, size=size.tiny, color=color.new(color.blue, 0), textcolor=color.white) plotshape(GoldenLong, title="Golden Buy Label", text="Golden Crossover Long", location=location.belowbar, style=shape.labelup, size=size.tiny, color=color.new(color.yellow, 0), textcolor=color.white) if (longCondition) stopLoss = low - atr * 2 takeProfit = high + atr * 5 strategy.entry("long", strategy.long) if (shortCondition) stopLoss = high + atr * 2 takeProfit = low - atr * 5 strategy.entry("short", strategy.short) plot(upper_band) plot(lower_band) plot(shortSMA, color = color.red) plot(longSMA, color = color.yellow)