Chiến lược này là một hệ thống giao dịch chỉ số đa kỹ thuật chủ yếu sử dụng đường chéo EMA, điều kiện bán quá mức RSI và đường chéo vàng MACD để xác nhận giao dịch. Nó sử dụng các lệnh giới hạn năng động để vào và nhiều cơ chế thoát để quản lý rủi ro. Chiến lược sử dụng Đường trung bình chuyển động theo cấp số (EMA) 9 giai đoạn và 21 giai đoạn như các chỉ số xu hướng chính, kết hợp với Chỉ số sức mạnh tương đối (RSI) và Đường trung bình chuyển động (MACD) để lọc các tín hiệu giao dịch.
Logic giao dịch cốt lõi bao gồm các thành phần chính sau:
Chiến lược sử dụng các lệnh giới hạn để nhập để đạt được giá nhập tốt hơn và kết hợp nhiều chỉ số kỹ thuật để cải thiện độ chính xác giao dịch.
Đây là một chiến lược giao dịch đa chỉ số có cấu trúc tốt xác định xu hướng bằng cách sử dụng đường trung bình động, lọc tín hiệu với RSI và MACD, và kiểm soát rủi ro thông qua các lệnh giới hạn và nhiều cơ chế dừng.
/*backtest start: 2019-12-23 08:00:00 end: 2024-12-09 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("SMA 9 & 21 with RSI and MACD Buy Strategy", overlay=true) // Inputs for Simple Moving Averages sma_short = ta.ema(close, 9) sma_long = ta.ema(close, 21) // Plotting SMA plot(sma_short, color=color.green, title="SMA 9") plot(sma_long, color=color.red, title="SMA 21") // RSI Calculation rsi_length = input.int(14, title="RSI Length") rsi_threshold = input.int(70, title="RSI Threshold") rsi = ta.rsi(close, rsi_length) // MACD Calculation macd_fast = input.int(8, title="MACD Fast Length") macd_slow = input.int(18, title="MACD Slow Length") macd_signal = input.int(6, title="MACD Signal Length") [macd_line, signal_line, _] = ta.macd(close, macd_fast, macd_slow, macd_signal) // Inputs for Limit Order Offset limit_offset = input.int(50, title="Limit Order Offset", minval=1) // 50 points below 9 EMA // User input for specific date simulationStartDate = input(timestamp("2024-12-01 00:00"), title="Simulation Start Date", group = "Simulation Dates") simulationEndDate = input(timestamp("2024-12-30 00:00"), title="Simulation End Date", group = "Simulation Dates") // Declare limit_price as float var float limit_price = na // Calculate Limit Order Price if (sma_short[1] < sma_long[1] and sma_short > sma_long) // 9 EMA crosses above 21 EMA limit_price := sma_short - limit_offset // Buy Signal Condition (only on the specified date) buy_condition = not na(limit_price) and rsi < rsi_threshold and ta.crossover(macd_line, signal_line) // Sell Signal Condition (MACD crossover down) sell_condition = ta.crossunder(macd_line, signal_line) // Track Entry Price for Point-Based Exit var float entry_price = na if (buy_condition ) strategy.order("Buy", strategy.long, comment="Limit Order at 9 EMA - Offset", limit=limit_price) label.new(bar_index, limit_price, "Limit Buy", style=label.style_label_up, color=color.green, textcolor=color.white) entry_price := limit_price // Set entry price // Exit Conditions exit_by_macd = sell_condition exit_by_points = not na(entry_price) and ((close >= entry_price + 12) or (close <= entry_price - 12)) // Adjust as per exit points // Exit all positions at the end of the day if hour == 15 and minute > 10 and strategy.position_size > 0 strategy.close_all() // Close all positions at the end of the day strategy.cancel_all() // Exit based on sell signal or point movement if (exit_by_macd or exit_by_points and strategy.position_size > 0 ) strategy.close("Buy") label.new(bar_index, close, "Close", style=label.style_label_down, color=color.red, textcolor=color.white)