Đây là một chiến lược theo xu hướng dựa trên sự kết hợp của các chỉ số kỹ thuật, chủ yếu sử dụng các điều kiện mua/bán quá mức RSI, chéo EMA và dừng lỗ động cho giao dịch. Chiến lược sử dụng kiểm soát rủi ro 1,5% kết hợp với đòn bẩy để khuếch đại lợi nhuận.
Chiến lược sử dụng ba chỉ số kỹ thuật chính: RSI (Chỉ số sức mạnh tương đối), EMA (Trung bình chuyển động theo cấp số), và ATR (Phạm vi thực tế trung bình). Các tín hiệu đầu vào được xác nhận bằng cách chéo giữa EMA ngắn hạn (9 giai đoạn) và EMA dài hạn (21 giai đoạn), trong khi yêu cầu RSI nằm trong phạm vi hợp lý (RSI dài <70, RSI ngắn>30). Chiến lược sử dụng stop-loss động dựa trên ATR, với mức lấy lợi nhuận được đặt ở mức 4 lần stop-loss, cho phép bảo vệ lợi nhuận trong khi kiểm soát rủi ro. Mỗi giao dịch rủi ro 1,5% tài khoản, sử dụng đòn bẩy 2x để tăng lợi nhuận tiềm năng.
Đây là một chiến lược theo xu hướng được thiết kế tốt sử dụng nhiều chỉ số kỹ thuật để cải thiện tỷ lệ thành công giao dịch. Chiến lược có các cơ chế kiểm soát rủi ro toàn diện phù hợp với các tài khoản nhỏ. Tuy nhiên, trong giao dịch trực tiếp, phải chú ý đến điều kiện thị trường thay đổi, với điều chỉnh tham số kịp thời để thích nghi với các trạng thái thị trường khác nhau.
/*backtest start: 2019-12-23 08:00:00 end: 2024-12-04 00:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Aggressive Scalper Strategy", overlay=true) // Parameters account_balance = input.float(28.37, title="Account Balance", tooltip="Update this with your balance") risk_per_trade = input.float(0.015, title="Risk per Trade", tooltip="1.5% risk") leverage = input.int(2, title="Leverage", minval=1) stop_loss_percentage = input.float(0.015, title="Stop Loss Percentage", tooltip="1.5% stop loss") take_profit_multiplier = input.float(4, title="Take Profit Multiplier", tooltip="Take Profit is 4x Stop Loss") stop_loss_multiplier = input.float(2, title="Stop Loss Multiplier", tooltip="Dynamic Stop Loss Multiplier") // Trade Size Calculation position_size = account_balance * risk_per_trade / (stop_loss_percentage / leverage) trade_qty = position_size / close // This gives you the qty in terms of contracts // Indicators rsiLength = input.int(14, title="RSI Length") emaShort = input.int(9, title="Short-term EMA Length") emaLong = input.int(21, title="Long-term EMA Length") rsi = ta.rsi(close, rsiLength) emaShortLine = ta.ema(close, emaShort) emaLongLine = ta.ema(close, emaLong) // Entry Conditions longCondition = ta.crossover(emaShortLine, emaLongLine) and rsi < 70 shortCondition = ta.crossunder(emaShortLine, emaLongLine) and rsi > 30 // ATR for dynamic stop loss and take profit levels atrLength = input.int(14, title="ATR Length") atrMultiplier = input.float(1.5, title="ATR Multiplier") atr = ta.atr(atrLength) // Dynamic Take Profit and Stop Loss Levels longTakeProfitLevel = close + (atr * take_profit_multiplier) longStopLossLevel = close - (atr * stop_loss_multiplier) shortTakeProfitLevel = close - (atr * take_profit_multiplier) shortStopLossLevel = close + (atr * stop_loss_multiplier) // Strategy Execution if (longCondition) strategy.entry("Long", strategy.long, qty=trade_qty) strategy.exit("Take Profit/Stop Loss", from_entry="Long", limit=longTakeProfitLevel, stop=longStopLossLevel) if (shortCondition) strategy.entry("Short", strategy.short, qty=trade_qty) strategy.exit("Take Profit/Stop Loss", from_entry="Short", limit=shortTakeProfitLevel, stop=shortStopLossLevel) // Alert Conditions alertcondition(longCondition, title="Buy Signal", message="Long position entry signal detected.") alertcondition(shortCondition, title="Sell Signal", message="Short position entry signal detected.") // Display Information on Chart var table_info = table.new(position.top_right, 2, 2, frame_color=color.blue, frame_width=1) if (bar_index == na) table.cell(table_info, 0, 0, text="Aggressive Scalper", bgcolor=color.blue) table.cell(table_info, 1, 0, text="Account Balance: $" + str.tostring(account_balance), text_color=color.white) table.cell(table_info, 1, 1, text="Risk per Trade: " + str.tostring(risk_per_trade * 100) + "%", text_color=color.white) table.cell(table_info, 0, 1, text="Leverage: " + str.tostring(leverage) + "x", text_color=color.white)