In diesem Artikel untersuchen wir die Idee und versuchen, das Skript umzusetzen.
Die K-Linien-Flächenstrategie ist eine Handelsstrategie, die auf der Flächenbeziehung zwischen der K-Line und der Mittellinie basiert. Ihre Hauptidee ist es, die möglichen Kursbewegungen zu prognostizieren, indem sie die Größe und Veränderungen der Preistrends und die Umstellung der Verkaufsstimmung analysiert und somit den Zeitpunkt der Eröffnung und des Ausstiegs bestimmt. Die Strategie setzt auf die Flächen zwischen der K-Line und der Mittellinie sowie auf die Anzahl der Werte des KDJ-Indikators, um Multi-Head- und Blind-Trading-Signale zu erzeugen.
Die K-Linienfläche ist die Fläche des Raumes zwischen der K-Line und der Ebenen, die durch Abzug des Durchschnittswerts des Verkaufspreises pro Bar berechnet wird. Die K-Linienfläche wird größer, wenn der Kurs einen hohen Trend hat, und kleiner, wenn der Kurs in einem schwankenden Markt oder nach einem Umschwung umschlägt. Nach dem Prinzip der äußerst notwendigen Rückkopplung ist der Aufwärtstrend größer, je länger die Zeit dauert, desto größer ist die entsprechende K-Linefläche, desto wahrscheinlicher ist ein Umschwung, so wie bei einem Boom, der länger gezogen wird und desto widerstandsfähiger.
Um die bevorstehende Trendwende weiter zu bestätigen, wird der KDJ-Indikator eingeführt, der verwendet wird, um die Umstellung der Kaufstimmung zu bestimmen. Die Einstellung des Thresholds dieser Strategie und des KDJ-Indikatorwerts kann entsprechend den spezifischen Gegebenheiten und Bedürfnissen angepasst werden, um die Genauigkeit der Strategie zu verbessern.
Der Vorteil der K-Line-Flächenstrategie besteht darin, dass sie die Größe und Veränderungen der Preistrends sowie die Umwandlung der Kauf- und Verkaufsstimmung kombiniert und eine relativ vollständige quantitative Handelsstrategie bietet.
Obwohl die K-Line-Area-Strategie einige Vorteile bietet, birgt sie auch einige Risiken, einschließlich:
Um die K-Flächen-Strategie zu optimieren, können die folgenden Richtungen berücksichtigt werden:
Berechnung der K-Fläche
Ein weiteres Beispiel:
(1) Die Abwärtstrend-K-Linien-Flächen-Plätze erreichen den Schwellenwert, bevor sie entstehen.
(2) Die Kennzahl KDJ ist größer als 80
Das ist ein großes Problem.
(1) Vor dem Erreichen des Schwellenwerts kann die Flächenklammer der aufsteigenden K-Linien errichtet werden.
(2) KDJ-Wert kleiner als 20
Mehrfach-/Leerlauf: ATR verfolgt Stopp-Loss-Stopp
Code-Implementierung
// 参数
var maPeriod = 30
var threshold = 50000
var amount = 0.1
// 全局变量
let c = KLineChart({})
let openPrice = 0
let tradeState = "NULL" // NULL BUY SELL
function calculateKLineArea(r, ma) {
var lastCrossUpIndex = null
var lastCrossDownIndex = null
for (var i = r.length - 1 ; i >= 0 ; i--) {
if (ma[i] !== null && r[i].Open < ma[i] && r[i].Close > ma[i]) {
lastCrossUpIndex = i
break
} else if (ma[i] !== null && r[i].Open > ma[i] && r[i].Close < ma[i]) {
lastCrossDownIndex = i
break
}
if (i >= 1 && ma[i] !== null && ma[i - 1] !== null && r[i - 1].Close < ma[i - 1] && r[i].Close > ma[i]) {
lastCrossUpIndex = i
break
} else if (i >= 1 && ma[i] !== null && ma[i - 1] !== null && r[i - 1].Close > ma[i - 1] && r[i].Close < ma[i]) {
lastCrossDownIndex = i
break
}
}
var area = 0
if (lastCrossDownIndex !== null) {
for (var i = r.length - 1 ; i >= lastCrossDownIndex ; i--) {
area -= Math.abs(r[i].Close - ma[i])
}
} else if (lastCrossUpIndex !== null) {
for (var i = r.length - 1 ; i >= lastCrossUpIndex ; i--) {
area += Math.abs(r[i].Close - ma[i])
}
}
return [area, lastCrossUpIndex, lastCrossDownIndex]
}
function onTick() {
var r = _C(exchange.GetRecords)
if (r.length < maPeriod) {
LogStatus(_D(), "K线数量不足")
return
}
var ma = TA.MA(r, maPeriod)
var atr = TA.ATR(r)
var kdj = TA.KDJ(r)
var lineK = kdj[0]
var lineD = kdj[1]
var lineJ = kdj[2]
var areaInfo = calculateKLineArea(r, ma)
var area = _N(areaInfo[0], 0)
var lastCrossUpIndex = areaInfo[1]
var lastCrossDownIndex = areaInfo[2]
r.forEach(function(bar, index) {
c.begin(bar)
c.plotcandle(bar.Open, bar.High, bar.Low, bar.Close, {overlay: true})
let maLine = c.plot(ma[index], "ma", {overlay: true})
let close = c.plot(bar.Close, 'close', {overlay: true})
c.fill(maLine, close, {color: bar.Close > ma[index] ? 'rgba(255, 0, 0, 0.1)' : 'rgba(0, 255, 0, 0.1)'})
if (lastCrossUpIndex !== null) {
c.plotchar(bar.Time, {char: '$:' + area, overlay: true})
} else if (lastCrossDownIndex !== null) {
c.plotchar(bar.Time, {char: '$:' + area, overlay: true})
}
c.plot(lineK[index], "K")
c.plot(lineD[index], "D")
c.plot(lineJ[index], "J")
c.close()
})
if (tradeState == "NULL" && area < -threshold && lineK[lineK.length - 1] > 70) {
// long
let tradeInfo = $.Buy(amount)
if (tradeInfo) {
openPrice = tradeInfo.price
tradeState = "BUY"
}
} else if (tradeState == "NULL" && area > threshold && lineK[lineK.length - 1] < 30) {
// short
let tradeInfo = $.Sell(amount)
if (tradeInfo) {
openPrice = tradeInfo.price
tradeState = "SELL"
}
}
let stopBase = tradeState == "BUY" ? Math.max(openPrice, r[r.length - 2].Close) : Math.min(openPrice, r[r.length - 2].Close)
if (tradeState == "BUY" && r[r.length - 1].Close < stopBase - atr[atr.length - 2]) {
// cover long
let tradeInfo = $.Sell(amount)
if (tradeInfo) {
tradeState = "NULL"
openPrice = 0
}
} else if (tradeState == "SELL" && r[r.length - 1].Close > stopBase + atr[atr.length - 2]) {
// cover short
let tradeInfo = $.Buy(amount)
if (tradeInfo) {
tradeState = "NULL"
openPrice = 0
}
}
LogStatus(_D(), "area:", area, ", lineK[lineK.length - 2]:", lineK[lineK.length - 2])
}
function main() {
if (exchange.GetName().includes("_Futures")) {
throw "not support Futures"
}
while (true) {
onTick()
Sleep(1000)
}
}
Die strategische Logik ist einfach:
1. Zunächst werden einige globale Variablen und Parameter definiert, darunter:
Strategieparameter
Globale Variablen
Berechnungsfunktion
Hauptkreislauffunktion
Die onTick-Funktion: Dies ist die wichtigste Strategie-Exekutionsfunktion, die folgende Operationen innerhalb der Funktion beinhaltet:
a. Erhalten Sie die neuesten K-Linien-Daten und stellen Sie sicher, dass die Anzahl der K-Linien nicht kleiner als maPeriod ist, sonst werden die Zustände aufgezeichnet und zurückgegeben.
b. Berechnung des gleitenden Durchschnitts ma und des ATR-Indikators atr sowie des KDJ-Indikators.
c. Erhalten Sie Flächeninformationen aus areaInfo, die K-String-Index, die zuletzt gekreuzt wurde, und die K-String-Index, die zuletzt gekreuzt wurde.
d. Zeichne K-Linien und Indikatorlinien mit dem Objekt c des K-Liniendiagramms und füll sie gleichzeitig in verschiedenen Farben anhand der Beziehung zwischen Preis und gleitendem Durchschnitt.
e. Zeitpunkt des Kaufs und Verkaufs nach Maßgabe der Bedingungen:
Wenn tradeState für die NULL-Kette verwendet wird und die Fläche kleiner als -threshold ist und der K-Linienwert von KDJ größer als 70 ist, wird die Kaufoperation ausgeführt. Wenn tradeState für die NULL-Lösung verwendet wird und die Fläche größer als die Threshold ist und der K-Linienwert von KDJ kleiner als 30 ist, wird die Verkaufsoperation ausgeführt. f. Einstellen von Stop-Loss- und Stop-Pump-Bedingungen, bei denen das Gleichgewicht erreicht wird:
Wenn es sich um einen Kauf-Status handelt, wird ein Ausgleich erzielt, wenn der Preis unter dem Schlusskurs des letzten Handelstages minus dem ATR des vorherigen Tages liegt.
Wenn es sich um einen Verkauf handelt, wird ein Ausgleich eingelegt, wenn der Preis höher ist als der Schlusskurs des letzten Handelstages plus der ATR des vorherigen Tages.
main-Funktion: Dies ist die Hauptexekutiv-Eingabe, die prüft, ob der Name der Börse die
Im Allgemeinen setzt die Strategie hauptsächlich auf K-Line-Charts und technische Indikatoren, um Kauf- und Verkaufsentscheidungen zu treffen, während die Risiken mit Stop-Loss- und Stop-Pump-Strategien verwaltet werden. Bitte beachten Sie, dass dies nur eine Beispielstrategie ist, die in der Praxis angepasst und optimiert werden muss, um die Marktbedingungen und die spezifischen Bedürfnisse zu berücksichtigen.
在FMZ.COM上使用JavaScript语言没有用多少行代码,很简单的就实现了这个模型。并且使用KLineChart函数很容易实现了K线面积的图形表示。策略设计用于加密货币现货市场,使用了「数字货币现货交易类库」模板,使用模板封装的函数下单,也是非常简单易用、易懂。
Es gibt eine beliebige Zeit, in der man nicht verliert, aber auch nicht weiterhin einen Gewinn erwirtschaftet, und es gibt ein großes Problem mit dem Rückzug. Es sollte auch andere Optimierungsrichtungen und Raum für diese Strategie geben.
Mit dieser Strategie lernten wir, wie man ein anderes Handelsverständnis lernt, aber auch, wie man ein Diagramm zeichnet; wie man die Fläche darstellt, die von einer K-Linie und einer Ebenlinie umgeben ist; wie man einen KDJ-Indikator zeichnet.
Die K-Linien-Flächenstrategie ist eine Handelsstrategie, die auf der Basis von Preis-Trendbreiten und KDJ-Indikatoren entwickelt wurde, um den Händlern zu helfen, Marktbewegungen vorherzusagen, indem sie die Flächen und die Umstellung der Kaufstimmung zwischen der K-Line und der Durchschnittslinie analysiert. Obwohl es gewisse Risiken gibt, bietet die Strategie durch ständige Optimierung und Anpassung ein leistungsfähiges Handelsinstrument, das den Händlern hilft, besser mit Marktfluktuationen umzugehen.