Este artigo descreve em detalhes uma estratégia de negociação quantitativa baseada em uma proporção de retorno de preço para rastrear a tendência. A estratégia identifica altos locais para marcar entrada em uma proporção de retorno.
Princípios estratégicos
A lógica central da estratégia é identificar os preços mais altos em um determinado período e, em seguida, rastrear as negociações em uma posição de retração proporcional. Os passos específicos são os seguintes:
Em primeiro lugar, calcule o valor máximo das últimas 90 linhas K como um ponto alto local.
Quando o preço retrocede de um determinado percentual (por exemplo, 3%) a partir do ponto mais alto, traçar a compra;
A parada é definida como um aumento de uma certa proporção do preço de entrada (por exemplo, 6%), que é eliminada quando o preço atinge o ponto de parada;
Não defina um stop loss, mas sim um seguimento de tendências.
Desta forma, o tempo de entrada pode ser avaliado pela proporção de retorno do pico local, filtrando efetivamente a oscilação e entrando somente após a confirmação da tendência. A configuração de parada também permite que cada ganho tenha uma certa administração de expectativas.
A vantagem estratégica
A principal vantagem dessa estratégia é que ela usa a proporção de retorno para avaliar a tendência e filtrar o ruído. Em comparação com a entrada direta no ponto de viragem, ela pode reduzir a probabilidade de ser inserida.
Outra vantagem é a configuração de uma lógica de parada. Isso permite que os ganhos e perdas de cada transação sejam controlados, de acordo com os princípios de gerenciamento de dinheiro positivo.
Por fim, o rastreamento de um stop-loss maior que a taxa de retorno também permite que a estratégia tenha um mecanismo de retorno de risco.
C. Riscos potenciais
Apesar das vantagens da estratégia, há riscos que devem ser levados em conta na prática:
Em primeiro lugar, a taxa de retração precisa ser cuidadosamente definida.
Em segundo lugar, a ausência de um stop loss expõe a estratégia a um maior risco individual. Uma forte reversão de tendência pode levar a maiores perdas.
Finalmente, a otimização inadequada dos parâmetros também pode gerar problemas de sobre-configuração, resultando em uma diminuição da qualidade do sinal.
Quatro conteúdos, resumo
Este artigo descreve detalhadamente uma estratégia quantitativa para rastreamento de tendências com base na proporção de reversão de preços. Ela pode identificar efetivamente a direção da tendência e usar a reversão para entrar. Ao mesmo tempo, a configuração de gerenciamento de stop loss também permite que a estratégia tenha um mecanismo de controle de risco.
/*backtest
start: 2022-09-07 00:00:00
end: 2023-09-13 00:00:00
period: 1d
basePeriod: 1h
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/
// © luboremenar
//@version=4
strategy("test_%_down_up", overlay = false, initial_capital = 1000, pyramiding = 0, default_qty_value = 1000,
default_qty_type = strategy.cash, precision = 8, commission_type = strategy.commission.percent, commission_value = 0.1)
// inputs
range_of_tops = input(title="Range of candles to find highest value from.", defval=90, type=input.integer, minval=1 )
basis_points = input(title="Basis points, if asset has two decimals use 100, three decimals 1000, etc.", defval=100, type=input.integer, minval=1)
retrace_percent = input(title="Percent value retrace from the top.", type=input.integer, defval=3, minval = 1, maxval=99)
take_profit_percent = input(title="Percent value of take profit from entry price.", type=input.integer, defval=6, minval=1)
// strategy definition
three_months_top = highest(range_of_tops)
longCondition1 = (close <= float((three_months_top*(1-(take_profit_percent/100)))) and strategy.position_size == 0)
if (longCondition1)
strategy.entry("Long1", strategy.long, qty = strategy.equity/close)
strategy.exit(id="TP1", from_entry="Long1", profit=((close*(1 + take_profit_percent/100)-close)*basis_points),
when= crossover(strategy.position_size, 0))
// plot
plot(strategy.equity)
// for testing, debugging
//test=0.0
//if(crossover(strategy.position_size, 0))
// test := (close*1.06-close)*basis_points
//plot(test)