Đây là một chiến lược giao dịch định lượng thông minh dựa trên TRAMA (Triangular Moving Average) và Simple Moving Average (SMA). Chiến lược kết hợp hai hệ thống trung bình động để tạo ra các tín hiệu giao dịch và thực hiện cơ chế dừng lỗ / lấy lợi nhuận để kiểm soát rủi ro. Nó sử dụng chéo SMA 4 giai đoạn và 28 giai đoạn cùng với chỉ số TRAMA để xác nhận tín hiệu giao dịch, cải thiện độ chính xác thông qua xác nhận nhiều tín hiệu.
Chiến lược sử dụng hai thành phần cốt lõi để tạo ra tín hiệu giao dịch. Thứ nhất là hệ thống chéo dựa trên SMA 4 giai đoạn và 28 giai đoạn, tạo ra tín hiệu dài khi MA ngắn hạn vượt qua trên MA dài hạn và tín hiệu ngắn khi vượt qua dưới. Thứ hai, chiến lược kết hợp chỉ số TRAMA như một hệ thống xác nhận phụ trợ. TRAMA là một đường trung bình động được cải thiện với thời gian phản hồi nhanh hơn và chậm hơn. Các tín hiệu giao dịch bổ sung được tạo ra khi giá vượt qua TRAMA. Chiến lược cũng bao gồm các cơ chế lấy lợi nhuận và dừng lỗ dựa trên tỷ lệ phần trăm được đặt lần lượt là 2% và 1%.
Đây là một chiến lược kết hợp phân tích kỹ thuật truyền thống với các khái niệm giao dịch định lượng hiện đại. Thông qua việc xác nhận nhiều tín hiệu và kiểm soát rủi ro nghiêm ngặt, chiến lược chứng minh tính thực tế tốt. Mặc dù có những lĩnh vực tối ưu hóa, thiết kế khuôn khổ tổng thể là hợp lý với triển vọng ứng dụng tốt. Các nhà giao dịch được khuyên nên tiến hành kiểm tra lại dữ liệu lịch sử kỹ lưỡng và tối ưu hóa tham số trước khi giao dịch trực tiếp.
/*backtest start: 2019-12-23 08:00:00 end: 2024-11-27 08:00:00 period: 1d basePeriod: 1d 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/ // © ivanvallejoc //@version=5 strategy("MANCOS2.0", overlay=true, margin_long=80, margin_short=80) longCondition = ta.crossover(ta.sma(close, 4), ta.sma(close, 28)) if (longCondition) strategy.entry("My Long Entry Id", strategy.long) shortCondition = ta.crossunder(ta.sma(close, 4), ta.sma(close, 28)) if (shortCondition) strategy.entry("My Short Entry Id", strategy.short) // Parámetros de la TRAMA length = input(1.5, title="TRAMA Length") src = close filt = 2 / (length + 1) trama = 0.0 var tramaPrev = na(trama[1]) ? close : trama[1] trama := (src - tramaPrev) * filt + tramaPrev // Plot de la TRAMA plot(trama, color=color.blue, linewidth=2, title="TRAMA") // Señales de compra y venta basadas en TRAMA buySignal = ta.crossover(close, trama) sellSignal = ta.crossunder(close, trama) // Configuración de Take Profit y Stop Loss takeProfitPerc = input(2, title="Take Profit (%)") / 100 stopLossPerc = input(1, title="Stop Loss (%)") / 100 // Precios de TP y SL takeProfitPrice = strategy.position_avg_price * (1 + takeProfitPerc) stopLossPrice = strategy.position_avg_price * (1 - stopLossPerc) // Condiciones de entrada en largo if (buySignal) strategy.entry("Long", strategy.long) // Condiciones de salida para posición larga (TP/SL) if (strategy.position_size > 0) strategy.exit("TP/SL", "Long", limit=takeProfitPrice, stop=stopLossPrice) // Entrada en corto basada en TRAMA if (sellSignal) strategy.entry("Short", strategy.short) // Precios de TP y SL para posiciones cortas takeProfitPriceShort = strategy.position_avg_price * (1 - takeProfitPerc) stopLossPriceShort = strategy.position_avg_price * (1 + stopLossPerc) if (strategy.position_size < 0) strategy.exit("TP/SL", "Short", limit=takeProfitPriceShort, stop=stopLossPriceShort)