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

L'idée de négociation alternative - stratégie de négociation de l'espace K-Line

Auteur:L'inventeur de la quantification - un petit rêve, Créé: 2023-11-03 17:12:42, Mis à jour: 2024-11-08 09:08:54

img

Dans cet article, nous allons explorer cette idée et essayer de mettre en œuvre ce script.

Principales idées de la stratégie de l'aire K

La stratégie de l'aire de la ligne K est une stratégie de trading basée sur la relation de l'aire entre la ligne K du prix et la ligne moyenne. Son idée principale est de prédire l'évolution possible des prix des actions en analysant l'ampleur et la variation des tendances des prix et les changements de sentiment d'achat, ce qui détermine le moment d'ouverture et de sortie.

Les principes de la stratégie de l'aire de ligne K

L'aire de la ligne K est l'espace entre la ligne K et la ligne de l'équilibre des prix, calculé en soustrayant la valeur de la ligne moyenne de clôture de chaque Bar, puis en demandant une somme. Lorsque la tendance à la hausse des prix est importante, l'aire de la ligne K devient plus grande au fil du temps, tandis que l'aire de la ligne K est plus petite lors d'un marché turbulent ou d'un retournement après un retournement. Selon le principe de la rétroaction obligatoire, plus la tendance à la hausse est grande, plus le temps est long, plus la zone de la ligne K correspondante est grande, plus la probabilité d'un retournement est grande, comme pour une soupape de rebond, plus elle est longue, plus elle est résiliente.

Pour confirmer davantage l'imminence d'un renversement de tendance, l'indicateur KDJ est introduit pour déterminer la conversion de l'attitude d'achat. Le seuil de cette stratégie et le paramètre de l'indicateur KDJ peuvent être ajustés en fonction des circonstances et des besoins spécifiques afin d'améliorer l'exactitude de la stratégie.

Les avantages de la stratégie de l'aire de ligne K

L'avantage de la stratégie de l'espace K est qu'elle combine l'ampleur et la variation de la tendance des prix, ainsi que la conversion de l'humeur d'achat et de vente, pour fournir une stratégie de trading quantitative relativement complète.

  • Il fournit un moyen simple et intuitif d'identifier les possibilités d'inversion de tendance, aidant les traders à mieux comprendre les mouvements du marché.
  • L'utilisation de la combinaison de l'aire de la ligne K et de l'indicateur KDJ augmente la fiabilité et la précision de la stratégie.
  • La flexibilité est élevée et les paramètres peuvent être ajustés en fonction des conditions du marché pour répondre aux différents besoins des transactions.

Risques liés à la stratégie K-Line

Bien que la stratégie de la ligne K ait certains avantages, elle comporte également des risques, notamment:

  • La mise en place d'un seuil peut nécessiter de l'expérience et des ajustements, ce qui peut entraîner une mauvaise interprétation des tendances du marché.
  • L'exactitude de l'indicateur KDJ est influencée par les fluctuations du marché et le bruit, ce qui peut entraîner de faux signaux.
  • Les performances des stratégies peuvent varier selon les conditions du marché et doivent être constamment optimisées et ajustées.

Optimisation de la stratégie de l'aire de ligne K

Pour optimiser les stratégies de la K-Line, on peut considérer les points suivants:

  • Optimisation des paramètres: ajuster et optimiser en permanence les paramètres des seuils et des indicateurs KDJ pour s'adapter aux différentes situations du marché et aux besoins des transactions.
  • Gestion des risques: mettre en œuvre des stratégies de gestion des risques efficaces, y compris des règles de prévention et de prévention des pertes, afin de réduire le risque de perte.
  • Combinaison multi-stratégies: combiner la stratégie de l'aire de la ligne K avec d'autres stratégies pour améliorer les performances de la stratégie de transaction globale.
  • Surveillance et ajustement en temps réel: la performance des stratégies de surveillance régulière est ajustée et améliorée en fonction des situations réelles.

Cette stratégie est mise en œuvre avec JavaScript.

  • Calculer la surface de la ligne K

  • Le signe de l'ouverture de plusieurs positions:

    (1) La couche de surface de la ligne K de la tendance à la baisse atteint le seuil, avant même d'être établie

    (2) Le KDJ est supérieur à 80

  • Le signal d'ouverture de l'opération:

    (1) L'axe de surface de la ligne K de la tendance haussière atteint le seuil, avant même de se former.

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

  • Multi-tête / entrées vides: ATR suit le stop-loss stop-stop

Mise en œuvre du code

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

La logique stratégique est simple:

Tout d'abord, nous définissons quelques variables et paramètres globaux, notamment:

Paramètres stratégiques

  • maPeriod: période de la moyenne mobile.
  • Threshold: Le seuil utilisé pour déterminer le moment où acheter ou vendre.
  • quantité: le nombre de transactions effectuées par transaction.

Variables mondiales

  • c:Objet de diagramme en ligne K, utilisé pour tracer des diagrammes.
  • OpenPrice: enregistrer le prix d'ouverture.
  • tradeState: enregistrement de l'état de la transaction, qui peut être "NULL" (en stock vide), "BUY" (en achat) ou "SELL" (en vente).

Fonction de calcul

  • Calculate KlineArea: Cette fonction est utilisée pour calculer l'espace entre le prix et la moyenne mobile sur un graphique K-Line sur une période donnée, et retourne les valeurs de l'espace, l'index K-Line le plus récemment croisé et l'index K-Line le plus récemment croisé. Ces valeurs sont utilisées pour déterminer le moment de l'achat et de la vente dans les décisions ultérieures.

Fonction de cycle principal

  • Fonction onTick: Il s'agit d'une fonction d'exécution de stratégie principale, avec les opérations suivantes:

    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 retourner;

    b. Calcul des moyennes mobiles ma et ATR pour l'indicateur atr, ainsi que pour l'indicateur KDJ.

    c. Obtenir de l'information sur l'espace, l'index de la K-string la dernière fois traversée et l'index de la K-string la dernière fois traversée à partir de l'information de l'aire.

    d. Utiliser l'objet c du graphique K pour tracer la ligne K et la ligne indicateur, en remplissant les différentes couleurs en fonction de la relation entre le prix et la moyenne mobile.

    e. Pour déterminer le moment de l'achat et de la vente selon les conditions:

    Si le tradeState est en mode NULL, et que l'aire est inférieure au -threshold et que la valeur de la ligne K de KDJ est supérieure à 70, exécutez l'opération d'achat. Si le tradeState est en mode NULL, et que l'aire est supérieure au seuil et que la valeur de la ligne K de KDJ est inférieure à 30, exécutez l'opération de vente. f. Définir les conditions de cessation des pertes et de cessation des pertes, et, si les conditions sont remplies, le solde:

    Si c'est l'état d'achat, le solde est établi lorsque le prix est inférieur au prix de clôture de la dernière journée de négociation moins l'ATR de la journée précédente. S'il s'agit d'un état de vente, le prix est fixé lorsque celui-ci est supérieur au prix de clôture de la dernière journée de négociation plus l'ATR de la journée précédente. main: c'est la principale entrée d'exécution, qui vérifie si le nom de l'échange contient une balise on_Futures, si elle le contient, lance une anomalie, sinon entre dans une boucle infinie, exécute la fonction onTick dans chaque boucle et repose 1 seconde.

Dans l'ensemble, cette stratégie repose principalement sur les graphiques K et les indicateurs techniques pour prendre des décisions d'achat et de vente, tout en utilisant des stratégies de stop-loss et de stop-loss pour gérer les risques. Veuillez noter que ce n'est qu'un exemple de stratégie qui, lorsqu'elle est utilisée dans la pratique, doit être ajustée et optimisée en fonction des conditions du marché et des besoins spécifiques.

在FMZ.COM上使用JavaScript语言没有用多少行代码,很简单的就实现了这个模型。并且使用KLineChart函数很容易实现了K线面积的图形表示。策略设计用于加密货币现货市场,使用了「数字货币现货交易类库」模板,使用模板封装的函数下单,也是非常简单易用、易懂。

Retour sur la stratégie

img

img

Choisissez un laps de temps de réévaluation aléatoire, sans perdre de l'argent, mais sans continuer à accumuler des bénéfices, et le problème de rétractation est relativement grand. Il devrait y avoir d'autres directions et espaces pour optimiser cette stratégie.

img

Grâce à cette stratégie, en plus d'apprendre une approche de négociation plus alternative, nous avons appris à dessiner des graphiques; à représenter la surface entourée par les lignes K et les lignes de l'équateur; à dessiner des indicateurs KDJ, etc.

Résumé

La stratégie de l'aire de la ligne K est une stratégie de trading basée sur l'amplitude de la tendance des prix et l'indicateur KDJ, qui aide les traders à prédire la tendance du marché en analysant l'aire et la conversion de l'humeur d'achat entre la ligne K et la ligne moyenne. Malgré certains risques, l'optimisation et l'ajustement constants de cette stratégie peuvent fournir un outil de trading puissant pour aider les traders à mieux faire face aux fluctuations du marché.


Plus de