Les ressources ont été chargées... Je charge...

Idées de négociation alternatives - Stratégie de négociation dans la zone de la ligne K

Auteur:FMZ~Lydia, Créé à: 2023-11-06 13:33:17, Mis à jour à: 2024-11-08 09:10:08

img

En examinant une idée de trading pas si fiable la stratégie de trading de la zone de la ligne K, dans cet article, nous allons explorer le concept et essayer de mettre en œuvre le script.

L'idée principale de la stratégie de la zone K-Line

La stratégie de zone de la ligne K est une stratégie de trading basée sur la relation de zone entre les lignes de prix K et les moyennes mobiles. Son idée principale est de prédire les tendances possibles des prix des actions en analysant l'ampleur et les changements des tendances des prix, ainsi que les changements dans le sentiment d'achat et de vente, déterminant ainsi le moment d'ouvrir des positions et de sortir. Cette stratégie repose sur la zone entre la ligne K et les moyennes mobiles, ainsi que sur les valeurs de l'indicateur KDJ, pour générer des signaux de trading longs et courts.

Le principe de la stratégie de la zone K-Line

L'aire de la ligne K fait référence à l'aire spatiale entre la ligne K du prix et la moyenne mobile, calculée en soustrayant la valeur moyenne mobile du prix de clôture de chaque barre et en la sommant. Lorsqu'il y a une forte augmentation du prix sur une longue période, l'aire de la ligne K devient plus grande, tandis que pendant les marchés volatils ou après des inversions de volatilité, l'aire de la ligne K est plus petite. Selon le principe de ce qui monte doit descendre, à mesure qu'une tendance haussière devient plus grande et dure plus longtemps, son aire de la ligne K correspondante augmente également; ainsi, sa probabilité d'inversion augmente - un peu comme un ressort qui rebondit avec plus de force lorsqu'il est étiré davantage. Par conséquent, la fixation d'un seuil pour cette zone de la ligne K peut indiquer quand les prix peuvent avoir atteint leur pic et sont susceptibles de s'inverser.

Pour confirmer davantage un renversement de tendance imminent, nous introduisons l'utilisation d'indicateurs KDJ qui aident à déterminer les changements de sentiment d'achat ou de vente.

Les avantages de la stratégie de la zone K-Line

L'avantage de la stratégie de la zone K-line réside dans sa combinaison de l'ampleur et des changements des tendances des prix, ainsi que de l'évolution du sentiment d'achat et de vente, fournissant une stratégie commerciale quantitative relativement complète.

  • Il fournit une méthode simple et intuitive pour identifier la possibilité d'un renversement de tendance, aidant les traders à mieux comprendre les tendances du marché.
  • En combinant l'aire de la ligne K et l'indicateur KDJ, il augmente la fiabilité et la précision de la stratégie.
  • Une grande flexibilité permet d'ajuster les paramètres en fonction des conditions du marché pour répondre aux différents besoins commerciaux.

Risque lié à la stratégie de la zone de la ligne K

Bien que la stratégie de la zone K-line présente certains avantages, elle comporte également certains risques, notamment:

  • La fixation des seuils peut nécessiter une certaine expérience et des ajustements.
  • L'exactitude de l'indicateur KDJ est affectée par les fluctuations du marché et le bruit, ce qui peut entraîner de faux signaux.
  • Le rendement de la stratégie peut varier selon les différentes conditions du marché et nécessite une optimisation et un ajustement constants.

Direction de l'optimisation de la stratégie de la zone de la ligne K

Pour optimiser la stratégie de la zone de la ligne K, considérez les directions suivantes:

  • Optimisation des paramètres: ajuster et optimiser en permanence les valeurs seuil et les paramètres de l'indicateur KDJ afin de les adapter aux différentes conditions du marché et aux besoins de négociation.
  • Gestion des risques: mettre en œuvre des stratégies efficaces de gestion des risques, y compris des règles de stop-loss et de prise de profit, afin de réduire les risques de perte.
  • Combinaison de plusieurs stratégies: combiner la stratégie de la zone de la ligne K avec d'autres stratégies pour améliorer les performances des stratégies commerciales complètes.
  • Surveillance et ajustement en temps réel: surveiller régulièrement le rendement des stratégies, en les ajustant et en les améliorant en fonction des situations réelles.

Mettre en œuvre la stratégie à l'aide de JavaScript

  • Calculer la surface de la ligne K

  • Signal d'ouverture de position longue:

    (1) La zone de la ligne K de la tendance à la baisse atteint le seuil, elle peut être établie à l'avance.

    (2) La valeur de l'indicateur KDJ est supérieure à 80.

  • Signal d'ouverture de position courte:

    (1) La zone de la ligne K de la tendance à la hausse atteint le seuil, elle peut être établie à l'avance.

    (2) La valeur de l'indicateur KDJ est inférieure à 20.

  • Exit pour les positions longues/courtes: ATR, arrêt des pertes et prise de bénéfices.

Mise en œuvre du code

// 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)
    }
}

La logique de la stratégie est simple:

  1. Tout d'abord, certaines variables et paramètres globaux sont définis, notamment:

Paramètres stratégiques

  • MaPériode: la période de la moyenne mobile.
  • "Proportion d'épargne" désigne le montant de l'impôt sur les sociétés et de l'impôt sur le revenu.
  • quantité: la quantité pour chaque opération.

Variables globales

  • c: Un objet de graphique en ligne K, utilisé pour dessiner des graphiques.
  • OpenPrice: Enregistre le prix d'ouverture.
  • tradeState: Enregistre le statut de la transaction, qui peut être NULL (position vide), BUY ou SELL.

Calculer la fonction

  • CalculateKLineArea fonction: Elle est utilisée pour calculer l'espace entre le prix et la ligne moyenne mobile sur un graphique K-line sur une certaine période de temps, et renvoie la valeur de l'espace, l'indice de la dernière ligne K-line ascendante et l'indice de la dernière ligne K-line descendante. Ces valeurs sont utilisées dans les décisions ultérieures pour déterminer quand acheter et vendre.

Fonction de boucle principale

  • fonction onTick: Il s'agit de la principale fonction d'exécution de stratégie, et voici les opérations au sein de la fonction:

    a. Obtenir les données les plus récentes sur les lignes K et s'assurer que le nombre de lignes K n'est pas inférieur à maPeriod, sinon enregistrer l'état et le retour.

    b. Calculer l'indicateur de moyenne mobile ma et l'indicateur ATR atr, ainsi que l'indicateur KDJ.

    c. Obtenir les informations sur la zone à partir de l'information sur la zone, le dernier indice de ligne K croisé et le dernier indice de ligne K croisé.

    d. Utilisez l'objet c du graphique K-line pour dessiner des K-lines et des lignes d'indicateurs tout en remplissant différentes couleurs basées sur la relation entre le prix et la ligne de moyenne mobile.

    e. Déterminer le calendrier d'achat ou de vente selon les conditions suivantes:

    Si tradeState est NULL et que la zone est inférieure au seuil - et que la valeur K de KDJ est supérieure à 70, exécuter une opération d'achat. Si tradeState est NULL, si la zone est supérieure au seuil et si la valeur K de KDJ est inférieure à 30, exécuter une opération de vente. f. Définir les conditions de stop loss et de prise de profit. Si ces conditions sont remplies, fermer les positions:

    S'il est en état d'achat, lorsque le prix tombe en dessous du prix de clôture du dernier jour de négociation moins l'ATR (Average True Range) des jours précédents, position close. S'il est en état de vente, lorsque le prix dépasse le prix de clôture du dernier jour de négociation plus l'ATR (Average True Range) des jours précédents, position close.

    main function: Il sert de point d'entrée d'exécution principal. Il vérifie si le nom d'échange contient _Futures. Si oui, une exception sera lancée; sinon, il entre dans une boucle infinie où la fonction onTick est exécutée chaque seconde.

En un mot, cette stratégie repose principalement sur des graphiques K-line et des indicateurs techniques pour prendre des décisions d'achat ou de vente tout en utilisant des stratégies de stop-loss et de take-profit pour gérer le risque.

ÀFMZ.COM, en utilisant le langage JavaScript n'a pas nécessité de nombreuses lignes de code, au lieu de cela, il a mis en œuvre ce modèle facilement. Et avec l'aide de la fonction KLineChart, la représentation graphique de la zone du graphique en ligne K a également été facilement réalisée.

Retour sur la stratégie

img

img

J'ai sélectionné une période de backtesting au hasard. Bien que je n'ai pas perdu d'argent, je n'ai pas accumulé de bénéfices en continu, ni, et le problème de retrait est assez important. Il devrait y avoir d'autres directions et de la place pour l'optimisation de la stratégie. Ceux qui sont intéressés peuvent essayer de mettre à niveau la stratégie.

img img

Grâce à la stratégie, nous avons non seulement appris une idée de trading plutôt non conventionnelle, mais aussi appris à tracer des diagrammes; représentant la zone entourée par la ligne K et la ligne moyenne mobile; tracer des indicateurs KDJ, etc.

Résumé

La stratégie de zone de la ligne K est une stratégie de trading basée sur la magnitude de la tendance des prix et l'indicateur KDJ. Elle aide les traders à prédire les tendances du marché en analysant la zone entre la ligne K et les moyennes mobiles, ainsi que les changements de sentiment d'achat et de vente.


Plus de