Die Ressourcen sind geladen. Beförderung...

Alternative Handelsideen - Handelsstrategie im K-Linienbereich

Schriftsteller:FMZ~Lydia, Erstellt: 2023-11-06 13:33:17, aktualisiert: 2024-11-08 09:10:08

img

In diesem Artikel werden wir das Konzept erforschen und versuchen, das Skript umzusetzen.

Hauptgedanke der Strategie für die K-Linienzone

Die K-Linien-Bereichsstrategie ist eine Handelsstrategie, die auf der Flächenbeziehung zwischen Preis-K-Linien und gleitenden Durchschnitten basiert. Ihre Hauptidee besteht darin, mögliche Trends in den Aktienkursen vorherzusagen, indem die Größe und Veränderungen der Preistrends sowie die Veränderungen der Kauf- und Verkaufsstimmung analysiert werden, um so zu bestimmen, wann Positionen geöffnet und ausgesetzt werden sollen. Diese Strategie stützt sich auf den Bereich zwischen der K-Linie und den gleitenden Durchschnitten sowie Werte aus dem KDJ-Indikator, um lange und kurze Handelssignale zu generieren.

Das Prinzip der K-Line-Bereichsstrategie

Die Fläche der K-Linie bezieht sich auf die räumliche Fläche zwischen der Preis-K-Linie und dem gleitenden Durchschnitt, die berechnet wird, indem der gleitende Durchschnittswert vom Schlusskurs jedes Balkens abgezogen und dann zusammengefasst wird. Wenn der Preis über einen langen Zeitraum stark ansteigt, wird die K-Linie größer, während während volatiler Märkte oder nach Volatilitätsumkehrungen die K-Linie kleiner wird. Gemäß dem Prinzip was steigt, muss sinken steigt, wenn ein Aufwärtstrend größer wird und länger andauert, auch die entsprechende K-Linie; somit erhöht sich die Wahrscheinlichkeit für eine Umkehrung - ähnlich wie eine Feder, die bei weiterer Dehnung mit größerer Kraft zurückprallt. Daher kann die Festlegung einer Schwelle für diese K-Linie anzeigen, wann die Preise ihren Höhepunkt erreicht haben und wahrscheinlich umkehren werden.

Um eine bevorstehende Trendwende weiter zu bestätigen, führen wir die Verwendung von KDJ-Indikatoren ein, die bei der Bestimmung von Veränderungen der Kauf- oder Verkaufsgefühle helfen.

Die Vorteile der K-Line-Bereichsstrategie

Der Vorteil der K-Linien-Bereichsstrategie liegt in der Kombination von Größe und Veränderungen der Preisentwicklung sowie der Verschiebung der Kauf- und Verkaufsstimmung, die eine relativ vollständige quantitative Handelsstrategie bietet.

  • Es bietet eine einfache und intuitive Methode, um die Möglichkeit einer Trendumkehr zu erkennen und hilft den Händlern, Markttrends besser zu verstehen.
  • Durch die Kombination der K-Linienfläche und des KDJ-Indikators wird die Zuverlässigkeit und Genauigkeit der Strategie erhöht.
  • Eine hohe Flexibilität ermöglicht die Anpassung der Parameter an die Marktbedingungen, um den unterschiedlichen Handelsbedürfnissen gerecht zu werden.

Risiko der K-Linien-Bereichsstrategie

Obwohl die K-Linien-Bereichsstrategie gewisse Vorteile hat, birgt sie auch einige Risiken, darunter:

  • Die Festlegung von Schwellenwerten kann einige Erfahrung und Anpassungen erfordern, die zu einer falschen Beurteilung der Marktentwicklung führen könnten.
  • Die Genauigkeit des KDJ-Indikators wird durch Marktschwankungen und Lärm beeinflusst, was zu falschen Signalen führen kann.
  • Die Leistung der Strategie kann unter unterschiedlichen Marktbedingungen variieren und muss ständig optimiert und angepasst werden.

Optimierungsrichtung der K-Linien-Bereichsstrategie

Um die K-Linien-Bereichsstrategie zu optimieren, sollten folgende Richtungen berücksichtigt werden:

  • Parameteroptimierung: Die Schwellenwerte und die KDJ-Indikatorenparameter werden kontinuierlich angepasst und optimiert, um sich an die unterschiedlichen Marktbedingungen und Handelsbedürfnisse anzupassen.
  • Risikomanagement: Wirksame Risikomanagementstrategien, einschließlich Stop-Loss- und Take-Profit-Regeln, um Verlustrisiken zu reduzieren.
  • Kombination mehrerer Strategien: Kombination der K-Linien-Bereichsstrategie mit anderen Strategien zur Verbesserung der Leistung umfassender Handelsstrategien.
  • Überwachung und Anpassung in Echtzeit: Regelmäßige Überwachung der Leistung der Strategien, Anpassung und Verbesserung auf der Grundlage der tatsächlichen Situation.

Implementieren Sie die Strategie mit JavaScript

  • Berechnung der K-Linienfläche

  • Signal zur Eröffnung einer langen Position:

    (1) Die K-Linienfläche des Abwärtstrends erreicht den Schwellenwert, der im Voraus ermittelt werden kann.

    (2) Der KDJ-Indikatorwert ist größer als 80.

  • Kurzschlussöffnungssignal

    (1) Die K-Linienfläche des Aufwärtstrends erreicht den Schwellenwert, der im Voraus ermittelt werden kann.

    (2) Der Wert des KDJ-Indikators liegt unter 20.

  • Ausgang für Long/Short-Positionen: ATR-nachfolgende Stop-Loss- und Take-Profit-Positionen.

Umsetzung des Codes

// Parameter
var maPeriod = 30
var threshold = 50000
var amount = 0.1

// Global variable
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(), "Insufficient number of K-line")
        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 Strategie ist sehr einfach:

  1. Zunächst werden einige globale Variablen und Parameter definiert, darunter:

Strategieparameter

  • maPeriod: Die Periode des gleitenden Durchschnitts.
  • Der Wert des Wertpapiers ist der Wert, der für den Wertpapierhandel verwendet wird.
  • Betrag: Die Menge für jede Transaktion.

Gesamtvariablen

  • c: Ein K-Liniendiagrammobjekt, das zur Zeichnung von Diagrammen verwendet wird.
  • OpenPrice: Erfasst den Eröffnungspreis.
  • tradeState: Erfasst den Handelsstatus, der NULL (leere Position), BUY oder SELL sein kann.

Berechnung der Funktion

  • CalculateKLineArea Funktion: Sie wird verwendet, um den Bereich zwischen dem Preis und der gleitenden Durchschnittslinie auf einem K-Liniendiagramm über einen bestimmten Zeitraum zu berechnen und gibt den Bereichswert, den Index der letzten aufwärts kreuzenden K-Linie und den Index der letzten nach unten kreuzenden K-Linie zurück. Diese Werte werden bei nachfolgenden Entscheidungen verwendet, um zu bestimmen, wann gekauft und verkauft werden soll.

Hauptschleife

  • onTick-Funktion: Es ist die wichtigste Strategie-Ausführungsfunktion, und hier sind die Operationen innerhalb der Funktion:

    a. Die neuesten K-Liniendaten erhalten und sicherstellen, dass die Anzahl der K-Linien nicht kleiner als maPeriod ist, ansonsten den Status und die Rückgabe aufzeichnen.

    b. Berechnung der gleitenden Durchschnittslinie ma und des ATR-Indikators atr sowie des KDJ-Indikators.

    c. Erhalten Sie Flächeninformationen von areaInfo, letzten Crossover-K-Line-Index und letzten Cross-Under-K-Line-Index.

    d. Verwenden Sie das K-Liniendiagrammobjekt c, um K-Linien und Indikatorlinien zu zeichnen und gleichzeitig verschiedene Farben zu füllen, die auf der Beziehung zwischen Preiss und der gleitenden Durchschnittslinie basieren.

    e. Zeitplan für den Kauf oder Verkauf gemäß folgenden Bedingungen festlegen:

    Wenn tradeState NULL ist, der Bereich kleiner als -Schwelle ist und der K-Wert von KDJ größer als 70 ist, wird ein Kaufvorgang ausgeführt. Wenn tradeState NULL ist, die Fläche größer als die Schwelle ist und der K-Wert von KDJ kleiner als 30 ist, wird ein Verkauf ausgeführt. Wenn diese Bedingungen erfüllt sind, werden Positionen geschlossen:

    Wenn es sich im Kaufzustand befindet, wenn der Kurs unter den Schlusskurs des letzten Handelstages minus den ATR (Average True Range) der vorherigen Tage fällt, schließt die Position. Wenn es sich um einen Verkaufszustand handelt, wenn der Kurs über den Schlusskurs des letzten Handelstages plus den ATR (Average True Range) der vorherigen Tage steigt, schließt die Position.

    main function: Dies dient als Hauptexekutionseingangspunkt. Es überprüft, ob der Austauschname _Futures enthält. Wenn ja, wird eine Ausnahme geworfen; andernfalls tritt es in eine unendliche Schleife ein, in der die OnTick-Funktion jede Sekunde ausgeführt wird.

In einem Wort, diese Strategie stützt sich hauptsächlich auf K-Liniendiagramme und technische Indikatoren, um Kauf- oder Verkaufsentscheidungen zu treffen, während sie auch Stop-Loss- und Take-Profit-Strategien zur Risikomanagement nutzt.

AufFMZ.COMDie Strategie-Design richtet sich an Kryptowährungs-Spotmärkte, indem sie die Digital Currency Spot Trading Library-Vorlage für die Platzierung von Aufträgen durch eingekapselte Funktionen innerhalb der Vorlage nutzt, was sie sehr einfach und einfach zu verstehen und zu verwenden macht.

Strategie-Backtesting

img

img

Ich wählte eine Backtesting-Periode zufällig aus. Obwohl ich kein Geld verloren habe, habe ich auch keinen Gewinn kontinuierlich angesammelt, und das Drawdown-Problem ist ziemlich bedeutend. Es sollte andere Richtungen und Raum für die Optimierung der Strategie geben. Wer interessiert ist, kann versuchen, die Strategie zu aktualisieren.

img img

Durch die Strategie haben wir nicht nur eine eher unkonventionelle Handelsidee gelernt, sondern auch gelernt, Diagramme zu zeichnen; die Fläche darzustellen, die von K-Linie und gleitender Durchschnittslinie umschlossen ist; KDJ-Indikatoren zu zeichnen usw.

Zusammenfassung

Die K-Linien-Bereichsstrategie ist eine Handelsstrategie, die auf der Größenordnung des Preistrends und dem KDJ-Indikator basiert. Sie hilft den Händlern, Markttrends vorherzusagen, indem sie den Bereich zwischen der K-Linie und den gleitenden Durchschnitten sowie die Veränderungen der Kauf- und Verkaufsstimmung analysiert. Trotz bestimmter Risiken kann diese Strategie durch kontinuierliche Optimierung und Anpassung leistungsstarke Handelswerkzeuge bieten, die den Händlern helfen, besser mit Marktschwankungen umzugehen. Darüber hinaus sollten Händler die Parameter und Regeln der Strategie flexibel entsprechend spezifischen Situationen und Marktbedingungen anpassen, um eine bessere Handelsleistung zu erzielen.


Mehr