Il s'agit d'une stratégie de trading quantitative intelligente basée sur TRAMA (Triangular Moving Average) et Simple Moving Average (SMA). La stratégie combine deux systèmes de moyenne mobile pour générer des signaux de trading et implémente un mécanisme stop-loss/take-profit pour le contrôle des risques.
La stratégie utilise deux composants principaux pour générer des signaux de trading. Premièrement, le système de croisement basé sur les SMA à 4 périodes et à 28 périodes, génère des signaux longs lorsque l'EM à court terme dépasse l'EM à long terme et des signaux courts lorsqu'il dépasse celui-ci. Deuxièmement, la stratégie intègre l'indicateur TRAMA comme système de confirmation auxiliaire.
Il s'agit d'une stratégie qui combine l'analyse technique traditionnelle avec des concepts de trading quantitatifs modernes. Grâce à la confirmation de signaux multiples et un contrôle strict des risques, la stratégie démontre une bonne praticité. Bien qu'il existe des domaines d'optimisation, la conception globale du cadre est raisonnable avec de bonnes perspectives d'application.
/*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)