Die Ressourcen sind geladen. Beförderung...

Alternative Handelsideen - Handelsstrategien für die K-Fläche

Schriftsteller:Die Erfinder quantifizieren - Kleine Träume, Erstellt: 2023-11-03 17:12:42, aktualisiert: 2023-11-03 17:35:03

img

In diesem Artikel untersuchen wir die Idee und versuchen, das Skript umzusetzen.

Hauptgedanken der K-Linien-Flächenstrategie

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 Grundsätze der K-Linien-Flächenstrategie

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.

Die Vorteile der K-Flächenstrategie

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.

  • Es bietet eine einfache und intuitive Methode, um die Möglichkeit einer Trendwende zu erkennen und hilft den Tradern, die Marktbewegung besser zu verstehen.
  • Die Kombination von K-Linienfläche und KDJ-Indikatoren erhöht die Zuverlässigkeit und Präzision der Strategie.
  • Sie sind flexibel und können die Parameter anhand der Marktbedingungen anpassen, um unterschiedliche Handelsbedürfnisse zu erfüllen.

Die Risiken der K-Line-Strategien

Obwohl die K-Line-Area-Strategie einige Vorteile bietet, birgt sie auch einige Risiken, einschließlich:

  • Die Einstellung der Schwellen kann einige Erfahrung und Anpassungen erfordern, die, wenn sie nicht richtig eingestellt werden, zu einer falschen Beurteilung der Marktentwicklung führen können.
  • Die Genauigkeit des KDJ-Indikators wird durch Marktschwankungen und Lärm beeinflusst und kann zu falschen Signalen führen.
  • Die Strategie kann sich in verschiedenen Marktbedingungen ändern und muss ständig optimiert und angepasst werden.

Optimierung der K-Flächenstrategie

Um die K-Flächen-Strategie zu optimieren, können die folgenden Richtungen berücksichtigt werden:

  • Optimierung der Parameter: Die Parameter der Schwellenwerte und der KDJ-Indikatoren werden kontinuierlich angepasst und optimiert, um sich an unterschiedliche Marktbedingungen und Handelsbedürfnisse anzupassen.
  • Risikomanagement: Implementieren Sie eine effektive Risikomanagementstrategie, einschließlich Stop-Loss- und Stop-Fall-Regeln, um das Risiko von Verlusten zu reduzieren.
  • Multi-Strategie-Kombination: Kombination der K-Line-Flächen-Strategie mit anderen Strategien, um die Performance der integrierten Handelsstrategie zu verbessern.
  • Echtzeit-Monitoring und Anpassung: Die Performance der regelmäßigen Überwachungsstrategien wird anhand der tatsächlichen Situation angepasst und verbessert.

Diese Strategie wird mit der JavaScript-Sprache implementiert

  • 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

  • maPeriod: Periode des gleitenden Durchschnitts.
  • Threshold: Der Threshold, der verwendet wird, um zu bestimmen, wann man kaufen oder verkaufen soll.
  • amount: Die Anzahl der Transaktionen.

Globale Variablen

  • c: K-Liniendiagramm-Objekte, die für das Zeichnen von Diagrammen verwendet werden.
  • OpenPrice: Aufzeichnen der Eröffnungspreise.
  • tradeState: Zeichnet den Status der Transaktion auf, kann "NULL" (leerer Lager) sein, "BUY" (Kauf) oder "SELL" (Verkauf).

Berechnungsfunktion

  • Calculate KLineArea: Diese Funktion wird verwendet, um die Fläche zwischen dem Preis und dem gleitenden Durchschnitt zu berechnen und die Flächenwerte, die zuletzt überschrittenen K-Streichindizes und die zuletzt überschrittenen K-Streichindizes zurückzugeben. Diese Werte werden in den nachfolgenden Entscheidungen verwendet, um zu bestimmen, wann man kaufen und verkaufen soll.

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 _Futures-Funktion enthält, wenn sie enthalten ist, werfen Sie eine Abweichung aus, sonst gehen Sie in einen unendlichen Kreislauf, führen Sie die onTick-Funktion in jedem Kreislauf aus und ruhen Sie 1 Sekunde.

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线面积的图形表示。策略设计用于加密货币现货市场,使用了「数字货币现货交易类库」模板,使用模板封装的函数下单,也是非常简单易用、易懂。

Strategie-Rückprüfung

img

img

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.

img

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.

Zusammenfassung

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.


Mehr