Stratégie d'achat de rupture de ligne positive KDJ


Date de création: 2024-02-01 10:28:12 Dernière modification: 2024-02-01 10:28:12
Copier: 5 Nombre de clics: 1200
1
Suivre
1664
Abonnés

Stratégie d’achat de rupture de ligne positive KDJ

Aperçu

La stratégie de KDJ Breakthrough Buy est une stratégie de trading quantitatif basée sur l’indicateur KDJ. La stratégie utilise principalement la ligne J de l’indicateur KDJ et la ligne D de la ligne D pour former un signal d’achat, en faisant plusieurs entrées lorsque vous traversez la ligne D sur la ligne J. La stratégie est simple, facile à mettre en œuvre et convient aux débutants en trading quantitatif.

Principe de stratégie

Les principaux indicateurs techniques utilisés dans cette stratégie sont les indicateurs KDJ. Les indicateurs KDJ comprennent les lignes K, D et J. Parmi ceux-ci:

K est la valeur suivante: (prix de clôture du jour - prix le plus bas du jour N) * (prix le plus élevé du jour N - prix le plus bas du jour N) × 100;

La valeur de D = la moyenne mobile sur M jours de la valeur de K;

J est égal à 3K-2D.

Selon la configuration de l’indicateur KDJ, lorsque J est supérieur à D, indiquant que le cours de l’action est à la hausse, il est possible de faire plus; lorsque J est inférieur à D, indiquant que le cours de l’action est à la baisse, il est possible de faire court.

La stratégie consiste à utiliser la règle ci-dessus et à prendre une position de plus d’entrée lorsque le signal d’achat est considéré comme un signal d’achat lorsque le signal de sortie est supérieur à 100 lorsque le signal de sortie est supérieur à 100.

Avantages stratégiques

  1. L’indicateur KDJ est utilisé pour déterminer le moment de l’achat, qui prend en compte l’information sur les fluctuations des cours des actions et est plus fiable.

  2. Les règles de jugement des signaux stratégiques sont simples, claires, faciles à comprendre et adaptées aux débutants en trading quantitatif.

  3. La stratégie Stop Loss est utilisée pour contrôler efficacement les risques.

  4. Les paramètres stratégiques ont beaucoup d’espace d’optimisation et la flexibilité de mise en œuvre.

Risque stratégique

  1. L’indicateur KDJ est sujet à de faux signaux qui peuvent entraîner des pertes.

  2. Les courts-circuits post-achat peuvent entraîner des sorties de stop-loss qui ne permettent pas de saisir la tendance.

  3. Une mauvaise configuration des paramètres peut entraîner des transactions fréquentes ou des signaux obscurs.

  4. Les coûts de transaction doivent être pris en compte pour les bénéfices globaux.

Les principales méthodes de contrôle des risques: optimisation raisonnable des paramètres, renforcement de l’indice de suivi, assouplissement approprié du périmètre d’arrêt, etc.

Direction d’optimisation

  1. Optimiser les paramètres du KDJ pour trouver la meilleure combinaison de paramètres.

  2. Augmentation des conditions de filtrage pour éviter les faux signaux. Le filtrage peut être combiné avec d’autres indicateurs ou formes.

  3. Différents paramètres peuvent être choisis en fonction du type de marché.

  4. La marge de stop loss peut être allégée de manière appropriée pour réduire la probabilité d’un retrait de stop loss.

  5. Le nombre de transactions peut être combiné avec l’analyse d’indicateurs tels que le volume des transactions, pour éviter d’être piégé.

Résumer

La stratégie d’achat de KDJ est généralement simple, pratique et facile à mettre en œuvre. Elle convient particulièrement aux débutants qui souhaitent quantifier leurs transactions. La stratégie présente certains avantages commerciaux, mais elle comporte également des risques qui nécessitent une optimisation ciblée pour tirer pleinement parti de la valeur de la stratégie.

Code source de la stratégie
/*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 -------------------------->