
Die KDJ-Strategie ist eine auf dem KDJ-Indikator basierende Quantitative Trading-Strategie. Die Strategie nutzt hauptsächlich die J-Linie des KDJ-Indikators und die goldene Kreuzung der D-Linie, um ein Kaufsignal zu bilden, wobei bei der Durchschreitung der D-Linie auf der J-Linie mehrere Einstiege gemacht werden. Die Strategie ist relativ einfach und leicht umzusetzen und eignet sich für Anfänger im Quantitative Trading.
Die wichtigsten technischen Kennzahlen, die in dieser Strategie verwendet werden, sind die KDJ-Kennzahlen. Die KDJ-Kennzahlen umfassen die K-, D- und J-Linien.
K = (die Tagesabschlusspreise - die N-Tage-Legendpreise) × 100;
D = m-Tage-Moving Average für K;
J-Wert = 3K-2D.
Nach der Einstellung des KDJ-Indikators, wenn der Wert von J den Wert von D überschreitet, zeigt der Aktienpreis eine Aufwärtswiderung und kann mehr getan werden; wenn der Wert von J den Wert von D überschreitet, zeigt der Aktienpreis eine Rückwärtswiderung und kann leer sein.
Die Strategie besteht darin, die oben genannten Regeln zu nutzen und bei der Durchschnittslinie D auf der J-Linie, d. h. bei der Bildung einer Goldfalke, als Kaufsignal zu beurteilen und mehr Eintritt zu tätigen. Wenn das Exitsignal größer als 100 auf der J-Linie ist, treten Sie aus und tätigen mehr Positionen.
Der KDJ-Indikator, der die Aktienkurse und -verläufe berücksichtigt, ist zuverlässig.
Strategie-Signal-Richtlinien sind einfach, klar und leicht zu verstehen und geeignet für Anfänger, die mit Quantitative Trading beginnen.
Die Strategie “Stop-Stop-Loss” wurde eingeführt, um das Risiko effektiv zu kontrollieren.
Die Optimierung von Strategieparametern ist groß, die Implementierung ist flexibel.
Die KDJ-Indikatoren sind anfällig für falsche Signale, die zu Verlusten führen können.
Die Kurzstreckenkorrekturen nach dem Kauf können dazu führen, dass die Stop-Loss-Exits nicht den Trend erfassen.
Die falsche Einstellung der Parameter kann zu häufigen Transaktionen oder unsichtbaren Signalen führen.
Die Auswirkungen der Transaktionskosten auf die Gesamtergebnisse sind zu beachten.
Die wichtigsten Methoden zur Risikokontrolle sind: vernünftige Optimierung der Parameter, Erhöhung des Tracking-Index, angemessene Lockerung des Stop-Loss-Ranges usw.
Optimierung von KDJ-Parametern, um die optimale Kombination von Parametern zu finden.
Die Filterbedingungen werden erhöht, um falsche Signale zu vermeiden. Die Filter können in Kombination mit anderen Indikatoren oder Formen durchgeführt werden.
Die Parameter-Einstellungen können je nach Markttyp ausgewählt werden.
Die Stop-Loss-Marge kann entsprechend gelockert werden, um die Wahrscheinlichkeit eines Stop-Loss-Ausfalls zu verringern.
Es ist möglich, dass sich die Anzeige nicht durch die Analyse von Kennzahlen wie der Transaktionsmenge erhebt.
Die KDJ-Strategie ist insgesamt einfach, praktisch und leicht umzusetzen. Sie eignet sich besonders für Anfänger, die mit Quantifizierung handeln. Die Strategie hat bestimmte Handelsvorteile, aber auch einige Risiken, die gezielt optimiert werden müssen, um die Strategie voll auszuschöpfen.
/*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 -------------------------->