Estratégia de longo percurso baseada na construção da linha K

Autora:ChaoZhang, Data: 2024-01-05 12:37:46
Tags:

img

Resumo

Esta estratégia realiza negociação de breakout de posição longa na linha de 4 horas da Tesla estabelecendo regras simples de julgamento de padrão de linha K. A estratégia tem as vantagens de implementação simples, lógica clara, fácil de entender, etc.

Princípio da estratégia

A lógica de julgamento fundamental da estratégia baseia-se nas seguintes regras de padrão de 4 linhas K:

  1. O preço mais baixo da linha K atual é inferior ao preço de abertura
  2. O preço mais baixo da linha K atual é inferior ao preço mais baixo da linha K anterior
  3. O preço de fechamento da linha K atual é superior ao preço de abertura
  4. O preço de encerramento da linha K atual é superior ao preço de abertura e ao preço de encerramento da linha K anterior

Quando todas as quatro regras são cumpridas ao mesmo tempo, é realizada uma operação de abertura de posição longa.

Além disso, a estratégia também define condições de stop loss e take profit para fechar posições quando o preço desencadeia condições de stop loss ou take profit.

Análise das vantagens

A estratégia apresenta as seguintes vantagens:

  1. As regras de julgamento da linha K utilizadas são muito simples e diretas, fáceis de entender e fáceis de praticar.
  2. Baseia-se inteiramente no julgamento das entidades de preços, sem utilizar indicadores técnicos excessivamente complexos, e os resultados dos backtests são simples.
  3. A implementação do código é de tamanho pequeno, funciona de forma eficiente e é fácil de otimizar e melhorar.
  4. O stop loss e o take profit podem ser definidos de forma flexível ajustando os parâmetros para controlar os riscos.

Análise de riscos

Os principais riscos a ter em conta são:

  1. A quantidade fixa é utilizada para a abertura de posições sem ter em conta o tamanho da posição, o que pode representar riscos de excesso de negociação.
  2. Não são definidos filtros que possam gerar demasiadas transacções inválidas em mercados de intervalo.
  3. Os dados insuficientes de backtest podem prejudicar o julgamento do desempenho da estratégia.

Os seguintes métodos podem ser adotados para mitigar os riscos:

  1. Incorporar um modelo de dimensionamento das posições para ajustar dinamicamente o tamanho das transacções com base no tamanho do capital.
  2. Adicionar filtros comerciais para evitar a abertura desordenada de negócios em condições de mercado agitadas.
  3. Recolher mais dados históricos para ampliar a duração do backtest e melhorar a confiabilidade dos resultados.

Orientações de otimização

As potenciais direcções de otimização da estratégia incluem:

  1. Incorporar um módulo de dimensionamento de posições para determinar o tamanho das transacções com base no rácio de utilização do capital.
  2. Projetar mecanismos de stop loss e take profit para saídas flexíveis.
  3. Adicionar filtros de negociação para evitar negociações inválidas.
  4. Optimização automática de parâmetros usando métodos de aprendizagem de máquina.
  5. Apoiar o comércio de distribuição entre vários produtos.

Conclusão

Esta estratégia realiza a negociação de longo avanço usando regras simples de padrão de linha K. Embora haja algum espaço para melhoria, da perspectiva da simplicidade e direcionalidade, é uma estratégia de posição longa muito adequada para iniciantes entenderem e usarem.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
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/
// © TheQuantScience

//@version=5
strategy("SimpleBarPattern_LongOnly", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, currency = currency.EUR, initial_capital = 1000, commission_type = strategy.commission.percent, commission_value = 0.03)

// Make input options that configure backtest date range
startDate = input.int(title="Start Date",
     defval=1, minval=1, maxval=31)
startMonth = input.int(title="Start Month",
     defval=1, minval=1, maxval=12)
startYear = input.int(title="Start Year",
     defval=2017, minval=1800, maxval=2100)

endDate = input.int(title="End Date",
     defval=8, minval=1, maxval=31)
endMonth = input.int(title="End Month",
     defval=3, minval=1, maxval=12)
endYear = input.int(title="End Year",
     defval=2022, minval=1800, maxval=2100)
     
// Look if the close time of the current bar
// Falls inside the date range
inDateRange = true

// Setting Conditions 
ConditionA = low < open 
ConditionB = low < low[1]
ConditionC = close > open
ConditionD = close > open[1] and close > close[1]

FirstCondition = ConditionA and ConditionB 
SecondCondition = ConditionC and ConditionD
IsLong = FirstCondition and SecondCondition

TakeProfit_long = input(4.00)
StopLoss_long = input(4.00)
Profit = TakeProfit_long*close/100/syminfo.mintick
Loss = StopLoss_long*close/100/syminfo.mintick

EntryCondition = IsLong and inDateRange

// Trade Entry&Exit Condition 
if EntryCondition and strategy.opentrades == 0
    strategy.entry(id = 'Open_Long', direction = strategy.long)
    strategy.exit(id = "Close_Long", from_entry = 'Open_Long', profit = Profit, loss = Loss)







Mais.