Tendência na sequência da estratégia de negociação de indicadores de energia

Autora:ChaoZhang, Data: 2023-11-15 17:36:46
Tags:

img

Resumo

Esta estratégia é uma estratégia de seguimento de tendência que negocia com base no indicador de canal de variabilidade esfregado (VCI esfregado) por vitelot. Combina o julgamento da tendência das médias móveis e o julgamento de sobrecompra / sobrevenda de VCI para capturar a principal direção da tendência dos preços. Quando os preços entram em estado de sobrecompra ou sobrevenda, as operações reversas são tomadas para lucro.

Estratégia lógica

A estratégia usa o indicador VCI esmaltado de vitelots para determinar a direção da tendência. O indicador VCI esmaltado é um VCI suavizado (Índice de Canal de Variabilidade). Ele consiste em três parâmetros: EMA rápida, EMA lenta e período de suavização. Quando a EMA rápida está acima da EMA lenta, é alta, caso contrário é baixa.

A estratégia estabelece duas condições:

  1. O cruzamento de VCI esfregado acima da linha do gatilho é um sinal longo, e o cruzamento abaixo é um sinal curto.

  2. Negociar apenas dentro da janela de tempo do backtest.

Quando ambas as condições estiverem preenchidas, a posição longa ou curta será tomada.

Análise das vantagens

As vantagens desta estratégia são as seguintes:

  1. Usando um indicador de tendência, pode efetivamente acompanhar tendências.

  2. O processo de suavização reduz os falsos sinais.

  3. O backtesting dentro de uma janela de tempo concentra-se num período específico.

  4. O conjunto de stop loss controla o risco.

  5. A utilização de parâmetros indicadores para a decisão longa/curta torna as regras simples e claras.

Análise de riscos

Esta estratégia apresenta também alguns riscos:

  1. O julgamento da tendência pode ser errado, levando a perdas.

  2. A definição inadequada dos parâmetros dos indicadores pode conduzir a uma baixa rendibilidade.

  3. A configuração de stop loss demasiado pequena pode resultar em uma parada rápida.

  4. Uma janela de tempo de backtest inadequada pode levar a resultados de teste tendenciosos.

  5. A troca muito frequente de comprimento/curto pode provocar pressão de comissionamento.

Orientações de otimização

A estratégia pode ser otimizada nos seguintes aspectos:

  1. Teste diferentes combinações de parâmetros para encontrar os parâmetros ideais.

  2. Para melhorar a precisão, utilizar outros indicadores de confirmação.

  3. Otimizar o algoritmo de stop loss para obter stop loss dinâmico.

  4. Otimizar as condições de entrada para evitar excesso de negociação.

  5. Teste janelas de tempo maiores para verificar a estabilidade.

  6. Incorporar outros fatores como o volume para melhorar a precisão da decisão.

Resumo

Em resumo, esta é uma estratégia de tendência relativamente simples. Ele usa o indicador Smeared VCI para determinar a direção da tendência e posições abertas quando os sinais de negociação são gerados. O risco é controlado por stop loss. A estratégia tem capacidade de tendência, mas também tem alguns riscos.


/*backtest
start: 2023-10-15 00:00:00
end: 2023-11-14 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("Smeared VCI Backtest", overlay=false, shorttitle="SVCI Backtest", default_qty_type = strategy.percent_of_equity, default_qty_value = 100, initial_capital = 10000, slippage = 5)
// Smeared Variability Channel Index
//    a variation of the VCI indicator of the same author.
// The orange line over the lime line is bullish;
// The lime line over the orange one is bearish.
//
// vitelot/yanez/Vts
// Feb 2019
//
src = close

ep1 = input(5, minval=1, title="Fast EMA period")
ep2 = input(13, minval=2, title="Slow EMA period")

sm = input(34, minval=1, title="Smearing period")
tp = input(13, minval=1, title="Trigger line period")

fixedSL = input(title="SL Activation", defval=300)
trailSL = input(title="SL Trigger", defval=1)
fixedTP = input(title="TP Activation", defval=150)
trailTP = input(title="TP Trigger", defval=1)

FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2019, title = "From Year", minval = 2017)
ToMonth   = input(defval = 6, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 19, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 2030, title = "To Year", minval = 2017)
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
startTimeOk()  => time >= start and time <= finish ? true : false // create function "within window of time" if statement true

atrP = 96

e1 = ema(src,ep1)
e2 = ema(src,ep2)

vci = (e1-e2)/atr(atrP)

svci = sma(vci,sm)
t = sma(svci,tp)

plot(svci, color=lime, linewidth=3, transp=0, title="Smeared VCI")
plot(t, color=orange, linewidth=3, transp=0, title="Trigger line")

hline(0, title="Reference line")

long = crossover(svci,t)
short = crossover(t,svci)

// === STRATEGY - LONG POSITION EXECUTION ===
strategy.entry("Long", strategy.long, when= long and startTimeOk())
strategy.exit("Exit", qty_percent = 100, loss=fixedSL, trail_offset=trailTP, trail_points=fixedTP) 
strategy.exit("Exit", when= short)
// === STRATEGY - SHORT POSITION EXECUTION ===
strategy.entry("Short", strategy.short, when= short and startTimeOk())
strategy.exit("Exit", qty_percent = 100, loss=fixedSL, trail_offset=trailTP, trail_points=fixedTP)
strategy.exit("Exit", when= long)

Mais.