Tendência seguindo estratégia de longo prazo baseada na transformação SuperTrend e Fisher


Data de criação: 2023-11-03 15:42:16 última modificação: 2023-11-03 15:42:16
cópia: 0 Cliques: 729
1
focar em
1617
Seguidores

Tendência seguindo estratégia de longo prazo baseada na transformação SuperTrend e Fisher

Visão geral

A estratégia combina os dois indicadores SuperTrend e Fisher Conversion, permitindo uma estratégia de negociação de tendências mais estáveis seguindo a linha longa. Quando o indicador SuperTrend emite um sinal de compra, enquanto o indicador Fisher Conversion é menor que 2.5 e sobe, produz um sinal de compra. A estratégia gerencia a posição de forma razoável de stop loss e stop loss.

Princípio da estratégia

  1. O indicador de SuperTrend é usado para determinar a direção da tendência de preços. Quando o preço sobe na trajetória, é um sinal de otimização; quando o preço desce na trajetória, é um sinal de baixa. Esta estratégia emite um sinal de compra quando o SuperTrend é um otimização.

  2. O índice de conversão de Fisher reflete a influência das flutuações de preços sobre a psicologia do consumidor. O valor de Fisher na faixa [−2,5, 2,5] representa um mercado neutro, menor que 2,5 representa um mercado de pânico e maior que 2,5 representa um mercado de euforia. Esta estratégia emite um sinal de compra quando o Fisher é menor que 2,5 e sobe para capturar o ponto de viragem do pânico para o neutro.

  3. A estratégia gerencia a posição com um stop loss razoável. O ponto de parada é definido como o preço de entrada menos o ATR e o múltiplo do ATR, o ponto de parada é definido como o preço de entrada mais o ATR e o múltiplo do ATR. A amplitude de parada é maior que a amplitude de parada, refletindo o pensamento de controle de risco de seguir a tendência da estratégia.

  4. Também se considera o gerenciamento do montante de risco. O tamanho da posição é calculado com base no ATR e no montante de risco, de modo que o risco por unidade não exceda o montante de risco definido.

Análise de vantagens

  1. A combinação de vários indicadores evita que um único indicador cause a frequência de negociação. A SuperTrend determina a direção da tendência e a Fisher Transformation determina o lado psicológico do mercado, ambos combinados para formar um sinal de negociação estável.

  2. A definição de um stop-loss razoável ajuda a manter a tendência e a manter a linha longa, enquanto controla o risco.

  3. O uso de gerenciamento de quantidade de risco e unidades de negociação mínimas permite controlar o risco de cada transação e evitar grandes perdas acima da capacidade de suporte.

  4. O sinal de negociação é estável e adequado para a posse de longas linhas. A conversão de Fisher é um indicador suave, que ajuda a filtrar o ruído do mercado e evitar falsos sinais.

  5. Há muito espaço para otimizar os parâmetros do indicador. Pode-se ajustar o ciclo ATR e os parâmetros de multiplicação do SuperTrend de acordo com diferentes períodos de diferentes variedades, bem como os parâmetros de suavização da transformação de Fisher, em busca da melhor combinação de parâmetros.

Análise de Riscos

  1. Como estratégia de acompanhamento de tendências, pequenas perdas serão acumuladas durante a fase de liquidação de choques. Deve-se escolher uma variedade de tendências óbvias e uma estratégia de operação periódica.

  2. A variação de Fisher não é eficaz para situações extremas. Quando o mercado mantém um determinado estado por um longo período, o valor de Fisher continuará a se desviar do intervalo neutro, e a estratégia deve ser suspensa.

  3. A proximidade do ponto de parada pode causar uma saída excessiva. Deve-se configurar razoavelmente o ciclo ATR e os parâmetros do múltiplo ATR para garantir que a distância de parada tenha um determinado intervalo de amortecimento.

  4. Ignorar os custos de transação pode levar a pequenos lucros e perdas de transação. O nível de taxas de transação da variedade deve ser considerado e a margem de parada deve ser adequadamente ajustada.

  5. É preciso tempo para participar do mercado para demonstrar uma vantagem estratégica. Deve-se garantir que há fundos suficientes para apoiar a negociação de longo prazo e que a mente estável.

Direção de otimização

  1. Ajustar os parâmetros ATR e ATR multiplicadores para otimizar a amplitude de stop loss. Os parâmetros podem ser otimizados através do feedback de dados, mas também podem ser otimizados dinamicamente.

  2. Experimente diferentes parâmetros de conversão de Fisher, como o ciclo de suavização, em busca de sinais de negociação mais estáveis. Pode ser combinado com parâmetros de ajuste dinâmico da taxa de flutuação do mercado.

  3. Em combinação com outros indicadores como filtro, evitar erros de negociação quando a massa é incerta. A linha média, a taxa de flutuação e outros podem ser usados para determinar o movimento da massa.

  4. Teste diferentes estratégias de parada, como parada móvel, parada em batch, parada de seguimento ATR, etc., para aumentar a lucratividade.

  5. Otimizar as estratégias de gestão de fundos, como a gestão de fundos de proporção fixa, a fórmula de Kelly, etc., faz com que o lucro seja maior do que o prejuízo.

  6. Optimizar as taxas de transação para garantir que as pequenas posições sejam lucrativas após a transação.

Resumir

A estratégia integra a vantagem de indicadores como o SuperTrend e a variação de Fisher, formando uma tendência estável e seguindo a estratégia de negociação de longo prazo. A estratégia pode obter uma melhor taxa de retorno de risco por meio do controle de risco e controle de risco. A estratégia precisa ser otimizada ainda mais em termos de parâmetros, filtragem de sinais e gerenciamento de fundos para obter um desempenho de capital mais forte.

Código-fonte da estratégia
/*backtest
start: 2023-10-26 00:00:00
end: 2023-11-02 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Supertrend and Fisher_LONG", overlay=true)

//This block is for  Fisher Transformation Calculation.
len = input.int(10, minval=1, title="Length") // Length is optional. 10 is good but is up to you.
high_ = ta.highest(hl2, len)
low_ = ta.lowest(hl2, len)
round_(val) => val > .99 ? .999 : val < -.99 ? -.999 : val
value = 0.0
value := round_(.66 * ((hl2 - low_) / (high_ - low_) - .5) + .67 * nz(value[1]))
fish1 = 0.0
fish1 := .5 * math.log((1 + value) / (1 - value)) + .5 * nz(fish1[1])
fish2 = fish1[1]

// Buy condition for Fisher transformation.
buy_signal = (fish1 < -2.5) and (fish1 > fish2)
durum = 0 //just for the situation.

if (buy_signal)
    durum := 1 // now it changes from 0 to 1.

// Supertrend indicator inputs and calculations (same as in the indicator)
Periods = input(title='ATR Period', defval=10) // period is 10, but you can change it
src = input(hl2, title='Source')
Multiplier = input.float(title='ATR Multiplier', step=0.1, defval=2) //atr multiplier is important. it is 2 for this strategy but you can find another for best performance 
RiskAmount = input.float(title='Risk Amount ($)', defval=10.0, minval=0.0, step=1.0) // ıf you use risk-reward method, risk is 10$ for each position. you can also change it
changeATR = input(title='Change ATR Calculation Method ?', defval=true)

atr2 = ta.sma(ta.tr, Periods)
atr = changeATR ? ta.atr(Periods) : atr2
up = src - Multiplier * atr
up1 = nz(up[1], up)
up := close[1] > up1 ? math.max(up, up1) : up
dn = src + Multiplier * atr
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? math.min(dn, dn1) : dn
trend = 1
trend := nz(trend[1], trend)
trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend

// Calculate position size based on risk amount
riskPerContract = atr * Multiplier
contracts = RiskAmount / (riskPerContract * syminfo.mintick)

//short signal condition
buySignal = trend == 1 and trend[1] == -1 and durum == 1

plotshape(buySignal, title='Buy Signal', location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)

// variables
var float entryPrice = na
var float stopLoss = na
var float takeProfit = na
var float atr1 = na
var float takeProfit2 = na
var float takeProfit3 = na

//it calculates the stop level and reward profit levels using atr.
if (buySignal)
    entryPrice := close
    atr1 := atr
    stopLoss := entryPrice - atr1 * Multiplier
    contracts := entryPrice / (entryPrice - stopLoss) * RiskAmount / entryPrice
    takeProfit := entryPrice + atr1 * Multiplier
    takeProfit2 := entryPrice + 2 * atr1 * Multiplier
    takeProfit3 := entryPrice + 3 * atr1 * Multiplier

if (buySignal)
    strategy.entry("Buy", strategy.long, qty=contracts)

// 
if (close <= stopLoss)
    strategy.close("Buy", comment="Stop Loss Hit")
else if (close >= takeProfit)
    strategy.close("Buy", comment="Take Profit Hit")

// draw the stop, entry and profit levels
plot(stopLoss, title="Stop Loss", color=color.red, linewidth=1, style=plot.style_linebr)
plot(entryPrice, title="Entry Price", color=color.orange, linewidth=1, style=plot.style_linebr)
plot(takeProfit, title="Take Profit", color=color.green, linewidth=1, style=plot.style_linebr)
plot(takeProfit2, title="Take Profit 2", color=color.blue, linewidth=1, style=plot.style_linebr)
plot(takeProfit3, title="Take Profit 3", color=color.purple, linewidth=1, style=plot.style_linebr)