Chiến lược Sunny Supertrend là một chiến lược theo xu hướng dựa trên các chỉ số ATR và SuperTrend. Nó có thể dự đoán chính xác sự đảo ngược xu hướng và hoạt động hoàn hảo như một chỉ số thời gian. Chiến lược có thể tăng sự kiên nhẫn và giúp các nhà giao dịch vào và ra khỏi thị trường vào đúng thời điểm.
Chiến lược sử dụng chỉ số SuperTrend để xác định hướng xu hướng hiện tại. Khi chỉ số SuperTrend thay đổi hướng, chúng tôi nghĩ rằng một sự đảo ngược xu hướng có thể xảy ra. Ngoài ra, chiến lược cũng sử dụng hướng của các thân nến để phán đoán phụ trợ. Khi một tín hiệu đảo ngược tiềm năng xuất hiện và hướng thân nến phù hợp với hướng trước đó, tín hiệu không hợp lệ được lọc ra.
Cụ thể, chiến lược tạo ra các tín hiệu giao dịch theo logic sau:
Chỉ số Supertrend có xu hướng tạo ra các tín hiệu dư thừa cần được lọc Giải pháp: Chiến lược này sử dụng hướng thân nến cho phán đoán phụ trợ để lọc hiệu quả các tín hiệu không hợp lệ
Các thông số siêu xu hướng có xu hướng tối ưu hóa quá mức
Giải pháp: Sử dụng các tham số mặc định để tránh tinh chỉnh thủ công và tối ưu hóa quá mức
Không thể xử lý sự đảo ngược xu hướng cực nhanh Giải pháp: Điều chỉnh tham số thời gian ATR phù hợp để đối phó với sự biến động thị trường nhanh hơn
Chiến lược siêu xu hướng nắng là một chiến lược đảo ngược xu hướng hiệu quả dựa trên chỉ số siêu xu hướng. Nó kết hợp các hướng cơ thể nến để phán đoán phụ trợ, có thể lọc hiệu quả các tín hiệu không hợp lệ và cải thiện chất lượng tín hiệu. Chiến lược này hoạt động đơn giản, thích nghi cao và có thể được sử dụng rộng rãi trên nhiều sản phẩm và khung thời gian. Bằng cách tối ưu hóa các thông số hợp lý và tăng cơ chế dừng lỗ, hiệu suất của chiến lược có thể được tăng thêm.
/*backtest start: 2023-11-12 00:00:00 end: 2023-12-12 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Sunny Supertrend Strategy", overlay=true, default_qty_type=strategy.percent_of_equity) atrPeriod = input(10, "ATR Length") factor = input.float(3.0, "Factor", step = 0.01) [_, direction] = ta.supertrend(factor, atrPeriod) shor= close > open and close[1] > open[1] and close[2] > open[2] lon = open > close and open[1] > close[1] and open[2] > close[2] tt= ta.change(direction) < 0 ss= ta.change(direction) > 0 long= tt longexit = lon or ss short= ss shortexit = shor or tt longPosMem = false longexitPosMem = false shortPosMem = false shortexitPosMem = false longPosMem := long ? true : short ? false : longPosMem[1] longexitPosMem := longexit ? true : shortexit ? false : longexitPosMem[1] shortPosMem := short ? true : long ? false : shortPosMem[1] shortexitPosMem := shortexit ? true : longexit ? false : shortexitPosMem[1] longy = long and not(longPosMem[1]) longexity = longexit and not(longexitPosMem[1]) shorty = short and not(shortPosMem[1]) shortexity = shortexit and not(shortexitPosMem[1]) //Use this to customize the look of the arrows to suit your needs. plotshape(longy, location=location.abovebar, color=color.green, style=shape.arrowup, text="Buy") plotshape(longexity, location=location.top, color=color.green, style=shape.xcross, text="Buy exit") plotshape(shorty, location=location.belowbar, color=color.red, style=shape.arrowdown, text="Sell") plotshape(shortexity, location=location.bottom, color=color.red, style=shape.xcross, text="Sell exit") //plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr) // STEP 1: // Make input options that configure backtest date range startDate = input.int(title="Start Date", defval=1, minval=1, maxval=31) startMonth = input.int(title="Start Month", defval=1, minval=1, maxval=12) startYear = input.int(title="Start Year", defval=2021, minval=1800, maxval=2100) endDate = input.int(title="End Date", defval=1, minval=1, maxval=31) endMonth = input.int(title="End Month", defval=2, minval=1, maxval=12) endYear = input.int(title="End Year", defval=2021, minval=1800, maxval=2100) // STEP 2: // Look if the close time of the current bar // falls inside the date range inDateRange = true // STEP 3: // Submit entry orders, but only when bar is inside date range if (inDateRange and longy) strategy.entry("enter long",strategy.long,when= longy) strategy.close("long",when=longexity) if (inDateRange and shorty) strategy.entry("enter short",strategy.short,when = shorty) strategy.close("short", when=shortexity)