
Trata-se de uma estratégia de negociação de energização inteligente baseada na TRAMA (Triangular Moving Average) e na SMA (Simple Moving Average). A estratégia combina a geração de sinais de negociação de dois sistemas lineares e configura um mecanismo de stop-loss para controlar o risco. A estratégia usa um cruzamento de SMA de 4 e 28 ciclos e o indicador TRAMA para confirmar os sinais de negociação, aumentando a precisão da negociação por meio de confirmação de múltiplos sinais.
A estratégia usa dois componentes centrais para gerar sinais de negociação. O primeiro é um sistema de cruzamento baseado em 4 e 28 ciclos SMA, que gera um sinal de multiplicação quando a média curta atravessa a média longa para cima e um sinal de travagem quando atravessa a média longa para baixo. Em seguida, a estratégia introduz o indicador TRAMA como um sistema de confirmação auxiliar.
Esta é uma estratégia que combina a análise técnica tradicional e a filosofia de negociação quantitativa moderna. A estratégia mostra uma boa praticidade através da confirmação de múltiplos sinais e do controle rigoroso do risco. Embora existam algumas áreas que precisam de otimização, o design geral do quadro é razoável e tem boas perspectivas de aplicação.
/*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)