
Il s’agit d’une stratégie de trading intelligemment dynamisée basée sur le TRAMA (Triangular Moving Average) et le SMA (Simple Moving Average). La stratégie combine la génération de signaux de trading avec deux systèmes linéaires et un mécanisme de stop-loss pour contrôler les risques. La stratégie utilise un croisement SMA de 4 cycles et 28 cycles ainsi que l’indicateur TRAMA pour confirmer les signaux de trading, ce qui améliore la précision des transactions grâce à la confirmation de plusieurs signaux.
La stratégie utilise deux composants principaux pour générer des signaux de négociation. Le premier est un système croisé basé sur les SMA à 4 cycles et 28 cycles, qui génère des signaux de multiplication lorsque la moyenne à court terme traverse la moyenne à long terme vers le haut et des signaux de rupture lorsqu’elle traverse vers le bas. Ensuite, la stratégie introduit l’indicateur TRAMA comme système de confirmation auxiliaire.
Il s’agit d’une stratégie qui combine l’analyse technique traditionnelle et la philosophie de la négociation quantitative moderne. Grâce à la reconnaissance de signaux multiples et à un contrôle strict des risques, la stratégie présente une bonne utilité. Bien qu’il existe des endroits qui nécessitent une optimisation, la conception globale du cadre est raisonnable et offre 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)