Pescador Yurik estratégia de parada de rastreamento

Autora:ChaoZhang, Data: 2024-02-02 14:57:33
Tags:

img

Resumo

A estratégia de trailing stop de Fisher Yurik é uma estratégia quantitativa de negociação que integra o indicador de Fisher Yurik e mecanismos de trailing stop.

Estratégia lógica

  1. Intervalos de datas de entrada para definir o prazo de backtest/transação ao vivo
  2. Parâmetros de entrada para o indicador Fisher Yurik, por defeito para 2 períodos
  3. Relatórios de tomada de lucro e de stop loss de entrada, incumprimento de 5% de lucro e 2% de perda
  4. Calcular as linhas principais e de sinal do indicador Fisher Yurik
  5. Gerar sinal de compra quando a linha principal cruza acima da linha de sinal
  6. Estabelecer parada de trail, sair da posição longa quando o preço cair 2% após a entrada
  7. Obter lucro quando o preço subir acima de 5%

Análise das vantagens

  1. O indicador Fisher Yurik identifica facilmente tendências, sinais de compra precisos
  2. O trailing stop bloqueia a maioria dos lucros, evitando paradas além do limiar
  3. Parâmetros personalizáveis adequados a diferentes ambientes de mercado
  4. Implementação simples e fácil de compreender

Análise de riscos

  1. Ajuste de parâmetros inadequado pode causar negociação excessivamente agressiva, exigem testes cuidadosos
  2. O stop loss demasiado alargado pode conduzir a perdas superiores às expectativas.
  3. Tomar lucro muito apertado pode cortar ganhos curtos, limitando a lucratividade
  4. Devem ser determinados parâmetros adequados para diferentes produtos

Os riscos podem ser abordados ajustando os rácios stop/profit, os parâmetros de teste, usando filtros de sinal, regras de dimensionamento de posição.

Oportunidades de melhoria

  1. Otimizar os parâmetros de Fisher Yurik para o impacto na estratégia
  2. Adicionar filtros de sinal como MACD, KD para melhorar a qualidade do sinal
  3. Adicionar condições de entrada como breakouts de Bollinger Bands
  4. Incorporar regras de dimensionamento das posições ao controlo por risco de negociação
  5. Melhorar os métodos de suspensão traseira, por exemplo, saída suavizada, candelabro

Conclusão

A estratégia de stop de trail de Fisher Yurik combina a identificação de tendências e a gestão de riscos. Com ajuste de parâmetros, combinações de indicadores e melhorias de stop loss, pode se adequar à maioria dos instrumentos para bons lucros dentro de tolerâncias de risco aceitáveis.


/*backtest
start: 2023-01-26 00:00:00
end: 2024-02-01 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Fisher_Yurik Strategy with Trailing Stop", shorttitle="FY Strategy", overlay=true)

// Date Ranges 
from_month = input(defval = 1, title = "From Month")
from_day   = input(defval = 1, title = "From Day")
from_year  = input(defval = 2021, title = "From Year")
to_month   = input(defval = 1, title = "To Month")
to_day     = input(defval = 1, title = "To Day")
to_year    = input(defval = 9999, title = "To Year")
start  = timestamp(from_year, from_month, from_day, 00, 00)  // backtest start window
finish = timestamp(to_year, to_month, to_day, 23, 59)        // backtest finish window
window = true
period = input(2, title='Period')
cost = input.float(1.05, title='profit level ', step=0.01)
dusus = input.float(1.02, title='after the signal', step=0.01)

var float Value = na
var float Fish = na
var float ExtBuffer1 = na
var float ExtBuffer2 = na

price = (high + low) / 2
MaxH = ta.highest(high, period)
MinL = ta.lowest(low, period)

Value := 0.33 * 2 * ((price - MinL) / (MaxH - MinL) - 0.5) + 0.67 * nz(Value[1])
Value := math.max(math.min(Value, 0.999), -0.999)
Fish := 0.5 * math.log((1 + Value) / (1 - Value)) + 0.5 * nz(Fish[1])

up = Fish >= 0

ExtBuffer1 := up ? Fish : na
ExtBuffer2 := up ? na : Fish

var float entryPrice = na
var float stopPrice = na
 
if (ExtBuffer1 > ExtBuffer1[1])
    entryPrice := close*dusus
    stopPrice := close * cost 
 
if (ExtBuffer2 < ExtBuffer2[1])
    entryPrice := close
    stopPrice := close * cost

// Sadece seçilen test döneminde işlem yapma koşulu eklenmiştir
strategy.entry("Buy", strategy.long, when=ExtBuffer1 > ExtBuffer1[1] and window)
strategy.exit("Take Profit/Trailing Stop", from_entry="Buy", when=(close >= entryPrice * cost) or (close < stopPrice), trail_offset=0.08, trail_price=entryPrice * cost)


Mais.