Estratégia de compra de ruptura de linha positiva KDJ


Data de criação: 2024-02-01 10:28:12 última modificação: 2024-02-01 10:28:12
cópia: 0 Cliques: 1098
1
focar em
1617
Seguidores

Estratégia de compra de ruptura de linha positiva KDJ

Visão geral

A estratégia de compra de ruptura do KDJ é uma estratégia de negociação quantitativa baseada no indicador KDJ. A estratégia utiliza principalmente o cruzamento do indicador KDJ com a linha J e a linha D para formar um sinal de compra, fazendo uma entrada múltipla ao atravessar a linha D na linha J. A estratégia é simples, fácil de implementar e adequada para iniciantes em negociação quantitativa.

Princípio da estratégia

O principal indicador técnico usado pela estratégia é o indicador KDJ. O indicador KDJ inclui linhas K, D e J. Entre eles:

K = (preço de fechamento do dia - menor preço em N dias) * (preço de fechamento do dia - menor preço em N dias) * (preço de fechamento do dia - menor preço em N dias) * 100;

D = MDA de K;

J = 3K-2D.

De acordo com a configuração do indicador KDJ, quando o valor de J atravessa o valor de D, indicando que o preço da ação se reverte para cima, pode ser feito mais; quando o valor de J atravessa o valor de D, indicando que o preço da ação se reverte para baixo, pode ser fechado.

A estratégia é usar a regra acima, quando a linha J atravessa a linha D, ou seja, quando a forca de ouro é formada, julgar como um sinal de compra, fazer mais entrada. Quando o sinal de saída é maior do que a linha J 100, sair para fazer mais posição.

Vantagens estratégicas

  1. O KDJ é um indicador que leva em consideração as informações sobre os preços das ações e é mais confiável.

  2. A estratégia é simples, clara e fácil de entender, adequada para iniciantes em negociação quantitativa.

  3. A estratégia de Stop Loss é usada para controlar os riscos.

  4. Otimizar os parâmetros da estratégia é muito fácil e a implementação é flexível.

Risco estratégico

  1. O KDJ é propenso a falsos sinais que podem levar a perdas.

  2. A correção de curto prazo no mercado pós-compra pode fazer com que o stop loss saia e não consiga capturar a tendência.

  3. A configuração inadequada dos parâmetros pode causar transações frequentes ou sinais pouco visíveis.

  4. O impacto dos custos de transação sobre o lucro global deve ser considerado.

Os principais métodos de controle de risco: razoavelmente otimizar os parâmetros, aumentar o índice de rastreamento, amenizar adequadamente o limiar de suspensão, etc.

Direção de otimização

  1. Optimizar os parâmetros do KDJ para encontrar a melhor combinação de parâmetros.

  2. Aumentar as condições de filtragem para evitar falsos sinais. A filtragem pode ser feita em combinação com outros indicadores ou formas.

  3. Pode-se escolher uma configuração de parâmetros diferente de acordo com o tipo de mercado.

  4. A largura de suspensão pode ser relaxada de forma apropriada para reduzir a probabilidade de suspensão.

  5. A análise de indicadores, como volume de transações, pode ser combinada para evitar a fraude.

Resumir

A estratégia de compra de KDJ é simples, prática e fácil de implementar, especialmente para iniciantes em negociação quantitativa. A estratégia tem certas vantagens de negociação, mas também possui alguns riscos, que precisam ser otimizados de forma direcionada para aproveitar plenamente o valor da estratégia.

Código-fonte da estratégia
/*backtest
start: 2023-01-25 00:00:00
end: 2024-01-31 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//  ## !<------------------ Script --------------------------> 
//@version=5
strategy('KDJ NVDA', shorttitle='KDJ')

ilong = input(9, title='period')
isig = input(3, title='signal')

bcwsma(s, l, m) =>
    _bcwsma = float(na)
    _s = s
    _l = l
    _m = m
    _bcwsma := (_m * _s + (_l - _m) * nz(_bcwsma[1])) / _l
    _bcwsma

// profit strategy add
profit_m = input.float(1.20,"Profit Margin",minval=1.0,maxval=1.99,step=0.05)
stop_m = input.float(0.98,"Stop Loss Margin",minval=0.0,maxval=1,step=0.05)

// 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=2023,minval=2018,maxval=2024)
endDate = input.int(title="End Date", defval=1, minval=1,maxval=31)
endMonth = input.int(title="End Month", defval=1,minval=1,maxval=12)
endYear = input.int(title="End Year", defval=2024,minval=2018,maxval=2099)

// intialization of variables
// Look if the close time of the current bar
// falls inside the date range
inDateRange = (time >= timestamp(syminfo.timezone, startYear,startMonth, startDate, 0, 0)) and (time < timestamp(syminfo.timezone, endYear, endMonth, endDate, 0, 0))

c = close
h = ta.highest(high, ilong)
l = ta.lowest(low, ilong)
RSV = 100 * ((c - l) / (h - l))
pK = bcwsma(RSV, isig, 1)
pD = bcwsma(pK, isig, 1)
pJ = 3 * pK - 2 * pD
KDJ = math.avg(pD, pJ, pK)

go_long= ta.crossunder(pD,pJ)


if (inDateRange and go_long)
    strategy.entry("S",strategy.long,comment="C")
	// strategy.exit("S", limit=c*profit_m, stop=c*stop_m, comment="SL/SP")
	
if (inDateRange and pJ > 100)
	strategy.close("S", comment="TP")
	
// Plot options
// plot(pK, color= #1E88E5)
// plot(pD, color=#FF6F00)
// plot(ma, color=color.yellow)
// bgcolor(pJ>pD? color.green : color.red)

plot(pK, title='% K', color=color.new(color.orange, 0))
plot(pD, title='% D', color=color.new(color.lime, 0))
plot(pJ, title='% J', color=color.new(color.fuchsia, 0))
plot(KDJ, title='KDJ', color=color.new(color.white, 0))
// </PINE> </SCRIPT>
// ## This source code is subject to the terms of the ozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// ## !<------------------ End Script -------------------------->