A estratégia de tendência alfa com trailing stop loss é uma versão melhorada da estratégia de tendência alfa, incorporando um mecanismo de trailing stop loss, que pode controlar os riscos de forma mais eficaz e melhorar os retornos globais.
A estratégia usa primeiro o indicador Alpha para determinar as tendências de preços. Quando o indicador Alpha sobe, é um sinal de alta. Quando o indicador Alpha desce, é um sinal de baixa. A estratégia gera sinais de compra e venda com base na cruz de ouro e cruz morta do indicador Alpha.
Enquanto isso, um mecanismo de stop loss está habilitado. O nível de stop loss por defeito é de 10% do preço de fechamento do dia. Ao manter posições longas, se o preço cair abaixo do nível de stop loss, a estratégia sairá da posição para parar a perda. Da mesma forma para posições curtas. Isso ajuda a melhor bloquear lucros e reduzir riscos.
A tendência alfa tem capacidades mais fortes de determinar as tendências dos preços do que as médias móveis simples e outros indicadores.
Ao permitir o trailing stop loss, a perda de uma única transação pode ser eficazmente controlada, reduzindo os riscos.
Esta estratégia tem fortes capacidades de controlo de riscos. Mesmo em condições desfavoráveis de mercado, as perdas ainda podem ser minimizadas.
Com menos entradas de referência, esta estratégia é eficiente de calcular, adequada para negociação de alta frequência.
Em mercados de intervalo lateral, a estratégia pode gerar muitos sinais de negociação desnecessários, aumentando os custos de negociação e as perdas de deslizamento.
Quando se permite a suspensão de perdas, a percentagem de perdas de suspensão deve ser definida adequadamente.
No caso de preços em forte flutuação, a probabilidade de ação de stop loss aumentará significativamente, aumentando o risco de ficar preso em posições.
Ao otimizar os parâmetros de stop loss, vários fatores, incluindo as características do subjacente e a frequência de negociação, devem ser considerados, não apenas a busca de retornos máximos.
Os riscos acima mencionados poderiam ser atenuados ajustando os parâmetros do indicador alfa, definindo stop loss dinâmico, encurtação dos ciclos de negociação, etc.
Podem ser testados diferentes parâmetros de indicador para encontrar combinações de parâmetros de indicador alfa mais adequadas.
Tentar definir as percentagens de stop loss de forma dinâmica com base no ATR para se adaptar melhor às flutuações do mercado.
Combine com outros indicadores como MACD, KD para filtrar alguns sinais falsos.
Os parâmetros podem ser otimizados automaticamente com base em resultados de negociação ao vivo e backtesting, usando técnicas de aprendizado de máquina para melhorar a inteligência da seleção de parâmetros.
A Estratégia de Tendência Alfa com Trailing Stop Loss combina determinação de tendência e controle de risco. Ela pode identificar efetivamente as tendências de preço e bloquear lucros para reduzir riscos. Em comparação com estratégias simples de rastreamento de tendência, esta estratégia pode obter retornos mais altos e constantes. Com vários aspectos de otimização, tem o potencial de alcançar um desempenho ainda melhor.
/*backtest start: 2023-10-27 00:00:00 end: 2023-11-26 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // author © KivancOzbilgic // developer © KivancOzbilgic //@version=5 strategy("AlphaTrend Strategy", shorttitle='ATst', overlay=true, format=format.price, precision=2, margin_long=100, margin_short=100) coeff = input.float(1, 'Multiplier', step=0.1) AP = input(14, 'Common Period') ATR = ta.sma(ta.tr, AP) src = input(close) showsignalsk = input(title='Show Signals?', defval=false) novolumedata = input(title='Change calculation (no volume data)?', defval=false) upT = low - ATR * coeff downT = high + ATR * coeff AlphaTrend = 0.0 AlphaTrend := (novolumedata ? ta.rsi(src, AP) >= 50 : ta.mfi(hlc3, AP) >= 50) ? upT < nz(AlphaTrend[1]) ? nz(AlphaTrend[1]) : upT : downT > nz(AlphaTrend[1]) ? nz(AlphaTrend[1]) : downT color1 = AlphaTrend > AlphaTrend[1] ? #00E60F : AlphaTrend < AlphaTrend[1] ? #80000B : AlphaTrend[1] > AlphaTrend[3] ? #00E60F : #80000B k1 = plot(AlphaTrend, color=color.new(#0022FC, 0), linewidth=3) k2 = plot(AlphaTrend[2], color=color.new(#FC0400, 0), linewidth=3) fill(k1, k2, color=color1) buySignalk = ta.crossover(AlphaTrend, AlphaTrend[2]) sellSignalk = ta.crossunder(AlphaTrend, AlphaTrend[2]) K1 = ta.barssince(buySignalk) K2 = ta.barssince(sellSignalk) O1 = ta.barssince(buySignalk[1]) O2 = ta.barssince(sellSignalk[1]) plotshape(buySignalk and showsignalsk and O1 > K2 ? AlphaTrend[2] * 0.9999 : na, title='BUY', text='BUY', location=location.absolute, style=shape.labelup, size=size.tiny, color=color.new(#0022FC, 0), textcolor=color.new(color.white, 0)) plotshape(sellSignalk and showsignalsk and O2 > K1 ? AlphaTrend[2] * 1.0001 : na, title='SELL', text='SELL', location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.new(color.maroon, 0), textcolor=color.new(color.white, 0)) // //ENTER SOME SETUP TRADES FOR TSL EXAMPLE // longCondition = ta.crossover(ta.sma(close, 10), ta.sma(close, 20)) // if longCondition // strategy.entry('My Long Entry Id', strategy.long) // shortCondition = ta.crossunder(ta.sma(close, 10), ta.sma(close, 20)) // if shortCondition // strategy.entry('My Short Entry Id', strategy.short) longCondition = buySignalk if (longCondition) strategy.entry("Long", strategy.long) shortCondition = sellSignalk if (shortCondition) strategy.entry("Short", strategy.short) enableTrailing = input.bool(title='Enable Trailing Stop (%)',defval = true) //TRAILING STOP CODE trailStop = input.float(title='Trailing (%)', minval=0.0, step=0.1, defval=10) * 0.01 longStopPrice = 0.0 shortStopPrice = 0.0 longStopPrice := if strategy.position_size > 0 stopValue = close * (1 - trailStop) math.max(stopValue, longStopPrice[1]) else 0 shortStopPrice := if strategy.position_size < 0 stopValue = close * (1 + trailStop) math.min(stopValue, shortStopPrice[1]) else 999999 //PLOT TSL LINES plot(series=strategy.position_size > 0 ? longStopPrice : na, color=color.new(color.red, 0), style=plot.style_linebr, linewidth=1, title='Long Trail Stop', offset=1, title='Long Trail Stop') plot(series=strategy.position_size < 0 ? shortStopPrice : na, color=color.new(color.red, 0), style=plot.style_linebr, linewidth=1, title='Short Trail Stop', offset=1, title='Short Trail Stop') if enableTrailing //EXIT TRADE @ TSL if strategy.position_size > 0 strategy.exit(id='Close Long', stop=longStopPrice) if strategy.position_size < 0 strategy.exit(id='Close Short', stop=shortStopPrice)