avatar of 发明者量化-小小梦 发明者量化-小小梦
Suivre Messages privés
4
Suivre
1271
Abonnés

Outil d'amélioration visuelle ! Utilisez les graphiques en briques et les chandeliers moyens pour comprendre les tendances du marché sur FMZ.

Créé le: 2025-06-06 09:27:29, Mis à jour le: 2025-06-06 17:34:58
comments   2
hits   571

[TOC]

Outil d’amélioration visuelle ! Utilisez les graphiques en briques et les chandeliers moyens pour comprendre les tendances du marché sur FMZ.

En trading quantitatif, le graphique en chandeliers traditionnel est l’une des formes de représentation des données les plus couramment utilisées, mais il présente certaines limites, comme une insensibilité aux fluctuations ou un bruit excessif. Afin d’observer plus clairement les tendances des prix, les traders utilisent souvent des graphiques améliorés, tels que :

  • Renko : tirages basés sur les variations de prix plutôt que sur le temps, filtrant efficacement le bruit du marché.
  • Heikin Ashi : Il lisse les données de prix pour montrer la direction de la tendance de manière plus intuitive.

Cet article présentera comment calculer les graphiques en briques et les données moyennes de la ligne K basées sur la ligne K ordinaire sur la plateforme de trading quantitative FMZ, et montrera l’effet de dessin pour aider les développeurs de stratégies à analyser les tendances du marché de manière plus intuitive.

Graphique en briques (Renko)

Le graphique Renko utilise des « briques » comme unités, et une nouvelle brique n’est dessinée que lorsque le prix fluctue au-delà d’une plage fixe (par exemple 100 $).

  • Avantages : Basé sur les variations de prix, il filtre les petites fluctuations du marché et met en évidence les principales tendances.
  • Scénarios applicables : Convient pour identifier les tendances à moyen et long terme et réduire les interférences sonores dans les transactions.

Interprétation des signaux de trading

  • Confirmation de tendance : des briques en hausse continue indiquent une tendance forte et vous pouvez maintenir une position ; l’apparition de briques inversées est un signal d’inversion de tendance.
  • Trading de rupture : lorsqu’une nouvelle brique apparaît, en particulier lorsqu’elle dépasse le précédent plus haut/plus bas, envisagez d’entrer sur le marché.
  • Filtrage des fausses cassures : Étant donné que le graphique en briques ignore les petites fluctuations, il permet de filtrer les petites fausses cassures pendant la période d’oscillation.

Logique de calcul de base :

  • Définir la taille de la brique brickSize
  • En fonction du prix initial, comparez constamment si le dernier prix s’écarte du prix de la brique précédente de plus de brickSize
  • Si le prix monte au-delà de la limite, une brique montante est tirée ; il en va de même pour le prix descendant.

Calculez le schéma de briques (Renko) et dessinez le code :

/*backtest
start: 2025-05-01 00:00:00
end: 2025-06-06 00:00:00
period: 1h
basePeriod: 1m
exchanges: [{"eid":"Binance","currency":"ETH_USDT","balance":1000,"stocks":0.5}]
*/

let globalbricks = []
let lastBarTime = 0

function getBricks(r, brickSize, sourceAttribute, lastPrice) {
    for (let i = 1; i < r.length; i++) {
        let bar = r[i]
        let price = bar[sourceAttribute]
        let time = bar.Time

        if (time < lastBarTime) {
            continue 
        }

        // 遍历原始K线数据
        while (Math.abs(price - lastPrice) >= brickSize) {
            if (globalbricks.length > 0 && time == globalbricks[globalbricks.length - 1].Time) {
                time = globalbricks[globalbricks.length - 1].Time + 1000
            }
            // 构造砖块
            let brick = {
                Time: time,
                Open: lastPrice,
                Close: 0,
                High: 0,
                Low: 0
            }

            if (price > lastPrice) {
                // 上涨砖块
                lastPrice += brickSize
                brick.Close = lastPrice
                brick.High = lastPrice
                brick.Low = brick.Open
            } else {
                // 下跌砖块
                lastPrice -= brickSize
                brick.Close = lastPrice
                brick.High = brick.Open
                brick.Low = lastPrice
            }

            // 放入数组
            globalbricks.push(brick)

            // time 累加1秒,防止一根BAR分成多块brick时断开
            time += 1000
        }

        lastBarTime = bar.Time
    }

    return globalbricks
}

function getRenko(r, brickSize, sourceAttribute) {
    // 原始K线数据如果不符合计算要求,直接返回
    if (!r || r.length <= 0) {
        return null
    }

    if (globalbricks.length == 0) {
        return getBricks(r, brickSize, sourceAttribute, r[0][sourceAttribute])
    } else {
        return getBricks(r, brickSize, sourceAttribute, globalbricks[globalbricks.length - 1].Close)
    }
}

function main() {
    let c = KLineChart({
        overlay: true
    })

    while (true) {
        let r = _C(exchange.GetRecords)
        let bricks = getRenko(r, 100, "Close")
        bricks.forEach(function (brick, index) {
            c.begin(brick)
            c.close()
        })

        Sleep(1000)
    }
}

Backtesting

Outil d’amélioration visuelle ! Utilisez les graphiques en briques et les chandeliers moyens pour comprendre les tendances du marché sur FMZ.

Heikin Ashi

Heikin Ashi est un processus de lissage de la ligne K traditionnelle

  • Avantages : Fournit une direction de tendance plus claire et réduit les faux signaux en lissant les données de prix.
  • Scénarios applicables : Applicable aux stratégies de suivi des tendances, aidant les traders à conserver leurs positions plus longtemps dans les tendances.

La méthode de calcul est la suivante :

HA_Close = (Open + High + Low + Close) / 4
HA_Open = (前一根 HA_Open + 前一根 HA_Close) / 2
HA_High = max(High, HA_Open, HA_Close)
HA_Low = min(Low, HA_Open, HA_Close)
Heikin Ashi 本质上是一种移动平均滤波的 K 线,具有趋势持续性更强的特点。

Jugement de tendance et reconnaissance des signaux

  • Une bougie haussière avec un grand corps et presque aucune ombre supérieure ou inférieure indique une forte tendance à la hausse
  • Une ligne négative avec un grand corps et presque aucune ombre supérieure ou inférieure indique une forte tendance à la baisse
  • Les ombres supérieures et inférieures s’allongent, et le corps réel rétrécit. La tendance s’affaiblit, alors attention aux retournements de situation.
  • Le corps est très court, l’ombre est longue. Le marché est volatil, donc n’opérez pas pour l’instant.

Code d’implémentation et dessin :

/*backtest
start: 2025-05-01 00:00:00
end: 2025-06-06 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"ETH_USDT","balance":1000,"stocks":0.5}]
*/

function toHeikinAshi(records) {
    if (!records || records.length == 0) {
        return null 
    }

    let haRecords = []

    for (let i = 0; i < records.length; i++) {
        let r = records[i]
        let ha = {}

        ha.Time = r.Time
        ha.Close = (r.Open + r.High + r.Low + r.Close) / 4

        if (i === 0) {
            // 第一根 Heikin Ashi 的开盘价用普通K线的开盘价和收盘价的均值
            ha.Open = (r.Open + r.Close) / 2
        } else {
            // 后续每根的开盘价 = 上一根Heikin Ashi开盘价和收盘价均值
            ha.Open = (haRecords[i - 1].Open + haRecords[i - 1].Close) / 2
        }

        ha.High = Math.max(r.High, ha.Open, ha.Close)
        ha.Low = Math.min(r.Low, ha.Open, ha.Close)

        haRecords.push(ha)
    }

    return haRecords
}

function main() {
    let c = KLineChart({
        overlay: true
    })

    while (true) {
        let r = _C(exchange.GetRecords)
        let heikinAshiRecords = toHeikinAshi(r)
        heikinAshiRecords.forEach(function (bar, index) {
            c.begin(bar)
            c.close()
        })
        Sleep(1000)
    }
}

Backtesting

Outil d’amélioration visuelle ! Utilisez les graphiques en briques et les chandeliers moyens pour comprendre les tendances du marché sur FMZ.

END

Le graphique Renko et le Heikin Ashi sont des outils puissants pour les traders de tendances :

  • Le graphique Renko se concentre sur le déplacement des prix et convient aux percées et à la confirmation des tendances.
  • Heikin Ashi se concentre sur le lissage des prix et convient au contrôle des positions de tendance.
  • L’utilisation complémentaire des deux peut améliorer la stabilité et la capacité antichoc des signaux de stratégie de tendance.

Il est recommandé de combiner le backtesting et la vérification en temps réel, de choisir une solution graphique adaptée à vos propres produits et cycles de trading et de créer un système de trading quantitatif personnalisé.