Đây là một chiến lược theo xu hướng dựa trên các quy tắc giao dịch rùa. Chiến lược sử dụng ATR (Mức trung bình thực sự) để xác định hướng xu hướng và kích thước vị trí giao dịch. Khi giá vượt qua mức giá cao nhất hoặc thấp nhất trong một khoảng thời gian nhất định, chiến lược sẽ mở một vị trí dài hoặc ngắn. Vị trí sẽ được giữ cho đến khi giá vượt qua mức giá thấp nhất hoặc cao nhất trong một khoảng thời gian nhất định, tại thời điểm đó chiến lược sẽ đóng vị trí. Mục tiêu của chiến lược này là nắm bắt thị trường xu hướng mạnh trong khi kiểm soát rủi ro nghiêm ngặt.
Cốt lõi của chiến lược này là sử dụng chỉ số ATR để xác định hướng xu hướng và kích thước vị trí giao dịch. Chỉ số ATR có thể đo biến động thị trường, giúp chúng ta xác định mức dừng lỗ thích hợp và kích thước vị trí.
Bằng cách theo cách tiếp cận này, chiến lược có thể nắm bắt thị trường xu hướng mạnh mẽ trong khi kiểm soát rủi ro nghiêm ngặt.
Để giải quyết những rủi ro này, các giải pháp sau đây có thể được xem xét:
Thông qua các tối ưu hóa trên, sự ổn định và lợi nhuận của chiến lược có thể được cải thiện hơn nữa.
Chiến lược TURTLE-ATR Bollinger Bands Breakout là một chiến lược theo xu hướng dựa trên các quy tắc giao dịch Rùa. Chiến lược sử dụng chỉ số ATR để xác định hướng xu hướng và kích thước vị trí giao dịch, mở các vị trí khi giá vượt qua mức giá cao nhất hoặc thấp nhất trong một khoảng thời gian nhất định và giữ các vị trí cho đến khi xu hướng đảo ngược.
/*backtest start: 2023-05-28 00:00:00 end: 2024-06-02 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © luisfeijoo22 //@version=5 strategy("Estrategia de las tortugas_ES", overlay=true, pyramiding=3) // Parámetros atrLength = input.int(20, "Longitud del ATR") atrFactor = input.float(2, "Factor del ATR") entryBreakout = input.int(20, "Breakout de entrada") exitBreakout = input.int(10, "Breakout de salida") longOnly = input.bool(false, "Solo largos") shortOnly = input.bool(false, "Solo cortos") // Cálculo del ATR atr = ta.atr(atrLength) // Cálculo de los niveles de breakout longEntry = ta.highest(high, exitBreakout)[1] longExit = ta.lowest(low, exitBreakout)[1] shortEntry = ta.lowest(low, exitBreakout)[1] shortExit = ta.highest(high, exitBreakout)[1] // Cálculo del tamaño de la posición nContracts = math.floor((strategy.equity * 0.01) / (atrFactor * atr)) // Filtra las fechas según el rango deseado // in_range = time >= timestamp(year(start_date), month(start_date), dayofmonth(start_date)) // Condiciones de entrada y salida longCondition = not longOnly and close > longEntry and time >= timestamp("2023-03-15") if longCondition strategy.entry("Long", strategy.long, qty = nContracts) shortCondition = not shortOnly and close < shortEntry and time >= timestamp("2023-03-15") if shortCondition strategy.entry("Short", strategy.short, qty = nContracts) strategy.exit("Exit Long", "Long", stop = longExit) strategy.exit("Exit Short", "Short", stop = shortExit) // Visualización de los niveles de breakout plot(longEntry, "Entrada larga", color.green, style = plot.style_line) plot(longExit, "Salida larga", color.red, style = plot.style_line) plot(shortEntry, "Entrada corta", color.green, style = plot.style_line) plot(shortExit, "Salida corta", color.red, style = plot.style_line)