Chiến lược này là một hệ thống giao dịch định lượng dựa trên chỉ số WaveTrend, kết hợp các cơ chế quản lý rủi ro năng động. Chiến lược tính toán sức mạnh xu hướng thông qua biến động giá, lọc tín hiệu trong các khu vực mua quá mức và bán quá mức và áp dụng các biện pháp kiểm soát rủi ro bao gồm cơ chế dừng lỗ, lấy lợi nhuận và dừng kéo theo.
Cốt lõi của chiến lược nằm trong việc tính toán chỉ số WaveTrend bằng cách sử dụng giá HLC3. Đầu tiên nó tính toán một đường trung bình động theo cấp số n1-thời gian (EMA) làm đường cơ bản, sau đó tính toán độ lệch giá từ đường cơ bản này, bình thường hóa chúng với hệ số 0,015. Điều này dẫn đến hai đường sóng, wt1 và wt2, tương ứng đại diện cho các đường nhanh và chậm. Các tín hiệu giao dịch được tạo ra dựa trên các đường này vượt qua mức mua quá mức và bán quá mức, kết hợp với một hệ thống kiểm soát rủi ro nhiều lớp.
Chiến lược này đạt được một cách tiếp cận giao dịch định lượng toàn diện bằng cách kết hợp chỉ số WaveTrend với một hệ thống quản lý rủi ro mạnh mẽ.
/*backtest start: 2024-11-12 00:00:00 end: 2024-12-11 08:00:00 period: 3h basePeriod: 3h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy(title="WaveTrend [LazyBear] with Risk Management", shorttitle="WT_LB_RM", overlay=true) // Input Parameters n1 = input.int(10, "Channel Length") n2 = input.int(21, "Average Length") obLevel1 = input.int(60, "Over Bought Level 1") obLevel2 = input.int(53, "Over Bought Level 2") osLevel1 = input.int(-60, "Over Sold Level 1") osLevel2 = input.int(-53, "Over Sold Level 2") // Risk Management Inputs stopLossPercent = input.float(50.0, "Stop Loss (%)", minval=0.1, maxval=100) takeProfitPercent = input.float(5.0, "Take Profit (%)", minval=0.1, maxval=100) trailingStopPercent = input.float(3.0, "Trailing Stop (%)", minval=0.1, maxval=100) trailingStepPercent = input.float(2.0, "Trailing Stop Step (%)", minval=0.1, maxval=100) // WaveTrend Calculation ap = hlc3 esa = ta.ema(ap, n1) d = ta.ema(math.abs(ap - esa), n1) ci = (ap - esa) / (0.015 * d) tci = ta.ema(ci, n2) wt1 = tci wt2 = ta.sma(wt1, 4) // Plotting Original Indicators plot(0, color=color.gray) plot(obLevel1, color=color.red) plot(osLevel1, color=color.green) plot(obLevel2, color=color.red, style=plot.style_line) plot(osLevel2, color=color.green, style=plot.style_line) plot(wt1, color=color.green) plot(wt2, color=color.red, style=plot.style_line) plot(wt1-wt2, color=color.blue, style=plot.style_area, transp=80) // Buy and Sell Signals with Risk Management longCondition = ta.crossover(wt1, osLevel1) or ta.crossover(wt1, osLevel2) shortCondition = ta.crossunder(wt1, obLevel1) or ta.crossunder(wt1, obLevel2) // Strategy Entry with Risk Management if (longCondition) entryPrice = close stopLossPrice = entryPrice * (1 - stopLossPercent/100) takeProfitPrice = entryPrice * (1 + takeProfitPercent/100) strategy.entry("Long", strategy.long) strategy.exit("Long Exit", "Long", stop=stopLossPrice, limit=takeProfitPrice, trail_price=close * (1 + trailingStopPercent/100), trail_offset=close * (trailingStepPercent/100)) if (shortCondition) entryPrice = close stopLossPrice = entryPrice * (1 + stopLossPercent/100) takeProfitPrice = entryPrice * (1 - takeProfitPercent/100) strategy.entry("Short", strategy.short) strategy.exit("Short Exit", "Short", stop=stopLossPrice, limit=takeProfitPrice, trail_price=close * (1 - trailingStopPercent/100), trail_offset=close * (trailingStepPercent/100))