Estratégia bidireccional de stop-loss-take-profit baseada no crossover estocástico

Autora:ChaoZhang, Data: 2024-03-08 15:12:42
Tags:

img

Resumo

Esta estratégia utiliza os sinais de cruzamento do Oscilador Estocástico para desencadear operações de compra e venda. Quando a linha %K cruza acima da linha %D e o valor %K está abaixo de 20, abre uma posição longa; quando a linha %K cruza abaixo da linha %D e o valor %K está acima de 80, abre uma posição curta. Além disso, os conjuntos de estratégia tomam distâncias de lucro e stop loss para gerenciar posições e evitar a expansão de perdas. Além disso, a estratégia também define condições lógicas para fechar posições. Quando o Oscilador Estocástico mostra um sinal de cruzamento oposto ao sinal de abertura, ele fechará a posição longa ou curta correspondente, mesmo que o preço de take profit ou stop loss não tenha sido atingido.

Princípio da estratégia

  1. Calcular os valores %K e %D do oscilador estocástico de 14 períodos e suavizá-los utilizando médias móveis simples.
  2. Determine se a linha % K e a linha % D cruzaram:
    • Quando a linha %K cruza acima da linha %D e o valor %K está abaixo de 20, ele desencadeia um sinal de compra e abre uma posição longa.
    • Quando a linha %K cruza abaixo da linha %D e o valor %K é superior a 80, ele desencadeia um sinal de venda e abre uma posição curta.
  3. Configurar as distâncias de take profit e stop loss (em Ticks) para gerir posições abertas:
    • Para as posições longas, fixar o preço do TP acima do preço de entrada e o preço do SL abaixo do preço de entrada.
    • Para as posições curtas, fixar o preço do take profit TP abaixo do preço de entrada e o preço do stop loss SL acima do preço de entrada.
    • Quando o preço atingir o preço de take profit ou stop loss, feche a posição correspondente.
  4. Definir condições lógicas para o encerramento de posições:
    • Quando a linha %K cruzar abaixo da linha %D e o valor %K for igual ou inferior a 80, fechar todas as posições longas.
    • Quando a linha %K cruzar acima da linha %D e o valor %K for igual ou superior a 20, fechar todas as posições curtas.

Análise das vantagens

  1. Esta estratégia utiliza o Oscilador Estocástico como principal indicador de sinal de negociação, que é amplamente utilizado na negociação quantitativa e pode capturar efetivamente as condições de mercado de sobrecompra e sobrevenda.
  2. A estratégia estabelece condições lógicas para o encerramento de posições, que podem controlar os riscos até certo ponto e evitar a expansão das perdas.
  3. A lógica da estratégia é clara, fácil de entender e implementar, adequada para iniciantes a aprender e a utilizar.

Análise de riscos

  1. O oscilador estocástico pode gerar muitos sinais falsos em um mercado instável, levando a uma alta frequência de negociação e a um aumento dos custos de transação.
  2. Esta estratégia não ajusta dinamicamente as posições e as distâncias fixas de tomada de lucro e de stop loss podem não controlar eficazmente os riscos durante as fortes flutuações do mercado.
  3. Os parâmetros da estratégia (como o período do oscilador estocástico, as distâncias de take profit e stop loss, etc.) são fixos e não otimizados para diferentes condições de mercado, o que pode afetar a adaptabilidade da estratégia.

Direcção de otimização

  1. Considerar a introdução de outros indicadores técnicos ou de sentimentos de mercado a utilizar em conjunto com o Oscilador Estocástico para melhorar a fiabilidade dos sinais de negociação e reduzir os falsos sinais.
  2. Otimizar a gestão de posições ajustando dinamicamente as distâncias de tomada de lucro e de stop loss com base nas condições de volatilidade do mercado, ou adotar métodos mais avançados de gestão de fundos, como o critério Kelly.
  3. Usar métodos de otimização, como algoritmos genéticos e pesquisa em rede, para otimizar os parâmetros da estratégia e encontrar a combinação ideal de parâmetros que se adapte às diferentes condições do mercado.
  4. Considerar a adição de condições de filtragem, tais como períodos de negociação e volatilidade dos instrumentos de negociação, para reduzir a negociação em condições desfavoráveis de mercado.

Resumo

A estratégia bidirecional de stop-loss take-profit baseada no crossover estocástico é uma estratégia quantitativa de negociação simples e fácil de entender. Ela desencadeia operações de compra e venda através dos sinais de crossover do oscilador estocástico e define condições lógicas para fechar posições para gerenciar riscos. A vantagem desta estratégia é que a lógica é clara e adequada para iniciantes aprenderem e usarem; no entanto, também tem alguns riscos, como o oscilador estocástico pode gerar muitos sinais falsos em um mercado agitado, e os métodos de gerenciamento de posição fixa podem não se adaptar a diferentes condições do mercado. Para melhorar ainda mais o desempenho da estratégia, podemos introduzir outros indicadores, considerar a otimização do gerenciamento de posição, a otimização de parâmetros e adicionar modelos de filtragem.


/*backtest
start: 2024-02-29 00:00:00
end: 2024-03-07 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("How to force strategies fire exit alerts not reversals", initial_capital = 1000, slippage=1, commission_type = strategy.commission.cash_per_contract, commission_value = 0.0001, overlay=true) 
// disclaimer: this content is purely educational, especially please don't pay attention to backtest results on any timeframe/ticker

// Entries logic: based on Stochastic crossover
k = ta.sma(ta.stoch(close, high, low, 14), 3)
d = ta.sma(k, 3)
crossover = ta.crossover(k,d)
crossunder = ta.crossunder(k,d)

if (crossover and k < 20)
	strategy.entry("Buy", strategy.long, alert_message="buy")
if (crossunder and k > 80)
	strategy.entry("Sell", strategy.short, alert_message="sell")

// StopLoss / TakeProfit exits:
SL = input.int(600, title="StopLoss Distance from entry price (in Ticks)")
TP = input.int(1200, title="TakeProfit Distance from entry price (in Ticks)")
strategy.exit("xl", from_entry="Buy", loss=SL, profit=TP, alert_message="closebuy")
strategy.exit("xs", from_entry="Sell", loss=SL, profit=TP, alert_message="closesell")

// logical conditions exits:
if (crossunder and k <= 80)
	strategy.close("Buy", alert_message="closebuy")
if (crossover and k >= 20)
	strategy.close("Sell", alert_message="closesell")

Mais.