KDJ Golden Cross Estratégia de entrada longa

Autora:ChaoZhang, Data: 2024-02-01 10:28:12
Tags:

img

Resumo

A estratégia de entrada longa da Golden Cross é uma estratégia quantitativa de negociação baseada no indicador KDJ. Esta estratégia usa principalmente a cruz dourada da linha J e da linha D do indicador KDJ para gerar sinais de compra e fica longa quando a linha J cruza acima da linha D. A estratégia é relativamente simples e fácil de implementar, adequada para iniciantes em negociação quantitativa.

Estratégia lógica

O principal indicador técnico utilizado nesta estratégia é o indicador KDJ, que consiste na linha K, na linha D e na linha J, onde:

K = (Fecho atual - Baixo mais baixo nos últimos N dias) ÷ (Melhor nível mais alto nos últimos N dias - Baixo mais baixo nos últimos N dias) x 100;

D = média móvel de M dias de K;

J = 3K - 2D.

De acordo com as regras do indicador KDJ, quando a linha J cruza acima da linha D, indica que os preços estão a reverter para cima e que podem ser tomadas posições longas; quando a linha J cai abaixo da linha D, indica que os preços estão a reverter para baixo e que podem ser iniciadas posições curtas.

Esta estratégia utiliza as regras acima e gera sinais de compra quando a linha J cruza acima da linha D, ou seja, uma cruz de ouro se forma, para ir longo.

Vantagens

  1. Usando o indicador KDJ para determinar o calendário de entrada que incorpora movimentos de preços para cima e para baixo, sendo assim mais confiável.

  2. A estratégia tem regras de sinalização claras e simples, fáceis de compreender e implementar, adequadas para iniciantes.

  3. Adotado stop profit e stop loss para controlar eficazmente os riscos.

  4. Grande espaço para a otimização de parâmetros e implementação flexível.

Riscos

  1. O indicador KDJ tende a gerar sinais falsos que levam a perdas.

  2. Os ajustamentos de curto prazo do mercado após a compra podem desencadear uma saída de stop loss e perder tendências importantes.

  3. A configuração inadequada dos parâmetros pode levar a excesso de negociação ou a sinais pouco claros.

  4. Precisa considerar os custos de transacção impacto na rendibilidade global.

Métodos principais de gestão de riscos: Otimizar adequadamente os parâmetros, rastrear índices para melhorar, expandir adequadamente o intervalo de stop loss, etc.

Orientações de otimização

  1. Otimizar os parâmetros do KDJ para encontrar as melhores combinações de parâmetros.

  2. Pode combinar outros indicadores ou formações para filtragem.

  3. Pode escolher diferentes definições de parâmetros com base nos tipos de mercado (mercados de alta ou baixa).

  4. Pode expandir adequadamente a gama de stop loss para reduzir a probabilidade de saídas de stop loss.

  5. Pode combinar o volume de negociação e outros indicadores para análise para evitar ficar preso.

Resumo

A estratégia de entrada longa da KDJ Golden Cross é relativamente simples e prática em geral, fácil para iniciantes começarem e implementarem. A estratégia tem certas vantagens comerciais, mas também tem alguns riscos. Precisa de otimização direcionada para realizar totalmente o valor 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 --------------------------> 


Mais.