
A estratégia de parada de rastreamento de tendências é uma estratégia de negociação de parada de rastreamento baseada no indicador de tendências TrendAlert. Ela determina a direção da tendência através do indicador TrendAlert, permitindo a entrada de rastreamento de tendências.
A estratégia é composta principalmente por:
O indicador de TrendAlert determina a direção da tendência. Quando o TrendAlert é maior que 0, é um sinal de otimismo, quando é menor que 0, é um sinal de baixa.
O indicador ATR calcula o alcance das flutuações de preços recentes. ATR multiplicado pelo ATR StopMultiplier atStopMultiplier como um ponto de parada fixo.
LowestLow e HighestHigh em combinação com o ATR Stop Loss Construction Tracking Stop Loss. Usar o controle de parâmetros estruturais ativado ou não.
De acordo com a direção do sinal de tendência, entre em posições de compra e venda. Depois de entrar, configure o Take Profit e o Stop Loss.
Posições de liquidação quando o preço desencadeia um stop loss ou um stop loss.
A estratégia analisa tendências, filtra os falsos sinais, rastreia os riscos de controle de perda, visa garantir a lucratividade e melhorar a estabilidade do sistema de negociação.
A estratégia tem as seguintes vantagens:
Filtragem de tendências e rastreamento de stop loss dupla garantia para evitar o ruído do mercado e garantir o controle do risco de negociação.
O ATR é configurado para evitar a otimização excessiva e é adequado para vários cenários de mercado.
O objetivo é garantir a rentabilidade e evitar que os lucros sejam consumidos.
A lógica da estratégia é clara e concisa, é fácil de entender as modificações e é adequada para o desenvolvimento secundário de comerciantes de quantidade.
A linguagem de scripting Pine é escrita para ser usada diretamente na plataforma TradingView, sem necessidade de programação básica.
A estratégia também apresenta alguns riscos:
Erros de julgamento de tendências podem levar a entradas e paradas desnecessárias. Pode-se relaxar adequadamente o ponto de parada ou filtrar os sinais de entrada.
Em situações de forte volatilidade, o ATR pode subestimar a amplitude real.
A parada de meta pode limitar a margem de lucro da estratégia. Pode ser ajustada de acordo com o limite de multiplicador do mercado.
A lógica de existência do código baseia-se apenas no preço, e deve ser combinada com a gestão do tempo.
A estratégia pode ser melhorada em:
Otimizar os parâmetros ATR lengthatrLength e stop loss multiplieratrStopMultiplier, ajustando a sensibilidade do algoritmo de stop loss.
Tente diferentes indicadores de tendências para encontrar melhores oportunidades de entrada.
Selecionar ou ajustar os parâmetros de suspensão do alvo de acordo com as características da variedade de transação específica.
Aumentar o mecanismo de parada de tempo para evitar o risco de ficar sozinho durante a noite.
A estabilidade da estratégia é melhorada com o uso de filtros de volume de transação.
Esta estratégia é, em geral, uma estratégia muito prática para acompanhar a tendência. Ela usa indicadores para determinar a direção da tendência para realizar o acompanhamento da tendência, ao mesmo tempo em que se adapta para garantir o controle do risco. A estratégia é lógica clara, simples de usar e muito adequada para os iniciantes.
/*backtest
start: 2023-01-29 00:00:00
end: 2024-02-04 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/
// © jaque_verdatre
//@version=5
strategy("TrendAlert Based", overlay = true)
// Get inputs
TrendAlert = input.source(close, "TrendAlert")
atrLength = input.int(title="ATR Length", defval=15, minval=1)
useStructure = input.bool(title="Use Structure?", defval=true)
lookback = input.int(title="How Far To Look Back For High/Lows", defval=8, minval=1)
atrStopMultiplier = input.float(title="ATR Multiplier", defval=0.2, minval=0.1)
LimitMultiplier = input.float(title = "Limit Multiplier", defval = 0.5, minval = 0.1)
PineConnectorID = input.int(title = "Pine Connector ID",defval = 0)
CurrencyToSend = input.string(title = "personilized currency", defval = "ETHUSD")
Risk = input.int(title = "risk in % to send", defval = 10, minval = 1)
// Calculate data
atr = ta.atr(atrLength)
lowestLow = ta.lowest(low, lookback)
highestHigh = ta.highest(high, lookback)
longStop = (useStructure ? lowestLow : close) - atr * atrStopMultiplier
shortStop = (useStructure ? highestHigh : close) + atr * atrStopMultiplier
// Draw data to chart
plot(atr, color=color.rgb(33, 149, 243), title="ATR", display = display.none)
plot(longStop, color=color.green, title="Long Trailing Stop")
plot(shortStop, color=color.red, title="Short Trailing Stop")
var float LimitL = na
var float LimitS = na
var float LPosPrice = na
var float SPosPrice = na
var float LPosLongStop = na
var float SPosShortStop = na
KnowLimit (PosPrice, PosStop) =>
(PosPrice-PosStop)*LimitMultiplier+PosPrice
NotInTrade = strategy.position_size == 0
InLongTrade = strategy.position_size > 0
InShortTrade = strategy.position_size < 0
longCondition = TrendAlert > 0 and NotInTrade
if (longCondition)
LPosPrice := close
LPosLongStop := longStop
LimitL := KnowLimit(LPosPrice, LPosLongStop)
strategy.entry("long", strategy.long)
LTPPip = LimitL-LPosPrice
LSLPip = LPosPrice-longStop
alert(str.tostring(PineConnectorID)+',buy,'+str.tostring(CurrencyToSend)+',risk='+str.tostring(Risk)+',sl='+str.tostring(LSLPip)+'tp='+str.tostring(LTPPip), alert.freq_once_per_bar_close)
strategy.exit("exit", "long", stop = longStop, limit = LimitL)
shortCondition = TrendAlert < 0 and NotInTrade
if (shortCondition)
SPosPrice := close
SPosShortStop := shortStop
LimitS := KnowLimit(SPosPrice, SPosShortStop)
strategy.entry("short", strategy.short)
STPPip = SPosPrice-LimitS
SSLPip = shortStop - SPosPrice
alert(str.tostring(PineConnectorID)+',sell,ETHUSD,risk=10,sl='+str.tostring(SSLPip)+'tp='+str.tostring(STPPip), alert.freq_once_per_bar_close)
strategy.exit("exit", "short", stop = shortStop, limit = LimitS)
plotshape(longCondition, color = color.green, style = shape.labelup, location = location.belowbar, size = size.normal, title = "Long Condition")
plotshape(shortCondition, color = color.red, style = shape.labeldown, location = location.abovebar, size = size.normal, title = "Short Condition")
if (InShortTrade)
LimitL := close
LPosLongStop := close
LPosPrice := close
PlotLongTakeProfit = plot(LimitL, color = InLongTrade ? color.rgb(0, 255, 64) : color.rgb(120, 123, 134, 100), title = "Long Take Profit")
PlotLongStopLoss = plot(LPosLongStop, color = InLongTrade ? color.rgb(255, 0, 0) : color.rgb(120, 123, 134, 100), title = "Long Stop Loss")
PlotLongPosPrice = plot(LPosPrice, color = InLongTrade ? color.gray : color.rgb(120, 123, 134, 100), title = "Long Position Price")
if (InLongTrade)
LimitS := close
SPosShortStop := close
SPosPrice := close
PlotShortTakeProfit = plot(LimitS, color = InShortTrade ? color.rgb(0, 255, 64) : color.rgb(120, 123, 134, 100), title = "Short Take Profit")
PlotShortStopLoss = plot(SPosShortStop, color = InShortTrade ? color.rgb(255, 0, 0) : color.rgb(120, 123, 134, 100), title = "Short Stop Loss")
PlotShortPosPrice = plot(SPosPrice, color = InShortTrade ? color.gray : color.rgb(120, 123, 134, 100), title = "Short Position Price")
fill(PlotLongPosPrice, PlotLongTakeProfit, color = InLongTrade ? color.rgb(0, 255, 0, 95) : color.rgb(0, 255, 0, 100))
fill(PlotShortPosPrice, PlotShortTakeProfit, color = InShortTrade ? color.rgb(0, 255, 0, 95) : color.rgb(0, 255, 0, 100))
fill(PlotLongPosPrice, PlotLongStopLoss, color = InLongTrade ? color.rgb(255, 0, 0, 95) : color.rgb(255, 0, 0, 100))
fill(PlotShortPosPrice, PlotShortStopLoss, color = InShortTrade ? color.rgb(255, 0, 0, 95) : color.rgb(255, 0, 0, 100))