avatar of 发明者量化-小小梦 发明者量化-小小梦
konzentrieren Sie sich auf Private Nachricht
4
konzentrieren Sie sich auf
1271
Anhänger

Visuelles Verbesserungstool! Verwenden Sie Ziegeldiagramme und durchschnittliche Kerzendiagramme, um Markttrends auf FMZ zu verstehen

Erstellt in: 2025-06-06 09:27:29, aktualisiert am: 2025-06-06 17:34:58
comments   2
hits   568

[TOC]

Visuelles Verbesserungstool! Verwenden Sie Ziegeldiagramme und durchschnittliche Kerzendiagramme, um Markttrends auf FMZ zu verstehen

Im quantitativen Handel ist das traditionelle Kerzendiagramm eine der am häufigsten verwendeten Formen der Datendarstellung, weist aber auch gewisse Einschränkungen auf, wie z. B. die Unempfindlichkeit gegenüber Schwankungen oder übermäßigem Rauschen. Um Preistrends besser beobachten zu können, verwenden Händler oft verbesserte Diagramme, wie zum Beispiel:

  • Renko: Ziehungen basieren auf Preisänderungen statt auf Zeit, wodurch Marktrauschen effektiv herausgefiltert wird.
  • Heikin Ashi: Es glättet Preisdaten, um die Trendrichtung intuitiver darzustellen.

In diesem Artikel wird erläutert, wie Sie Brick-Charts und durchschnittliche K-Line-Daten auf der Grundlage der gewöhnlichen K-Line auf der quantitativen Handelsplattform FMZ berechnen und den Zeicheneffekt zeigen, um Strategieentwicklern dabei zu helfen, Markttrends intuitiver zu analysieren.

Ziegeldiagramm (Renko)

Das Renko-Diagramm verwendet „Ziegel“ als Einheiten und ein neuer Ziegel wird nur gezeichnet, wenn der Preis über einen festen Bereich hinaus schwankt (z. B. 100 $).

  • Vorteile: Basierend auf Preisänderungen filtert es kleine Schwankungen im Markt heraus und hebt die wichtigsten Trends hervor.
  • Anwendbare Szenarien: Geeignet zum Erkennen mittel- und langfristiger Trends und zur Reduzierung von Störgeräuschen bei Transaktionen.

Interpretation von Handelssignalen

  • Trendbestätigung: Kontinuierlich steigende Ziegel weisen auf einen starken Trend hin und Sie können eine Position halten; das Auftreten umgekehrter Ziegel ist ein Trendumkehrsignal.
  • Breakout-Trading: Wenn ein neuer Block erscheint, insbesondere wenn er das vorherige Hoch/Tief durchbricht, sollten Sie einen Markteinstieg in Erwägung ziehen.
  • Filterung falscher Ausbrüche: Da das Ziegeldiagramm kleine Schwankungen ignoriert, hilft es, kleine falsche Ausbrüche während der Schwingungsperiode herauszufiltern.

Kernberechnungslogik:

  • Legen Sie die Ziegelgröße fest brickSize
  • Vergleichen Sie anhand des Anfangspreises ständig, ob der aktuelle Preis vom vorherigen Ziegelpreis um mehr als Ziegelgröße abweicht
  • Steigt der Kurs über das Limit hinaus, wird ein steigender Ziegel gezogen, das gleiche gilt für den fallenden Kurs.

Berechnen Sie das Ziegeldiagramm (Renko) und zeichnen Sie den 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

Visuelles Verbesserungstool! Verwenden Sie Ziegeldiagramme und durchschnittliche Kerzendiagramme, um Markttrends auf FMZ zu verstehen

Heikin Ashi

Heikin Ashi ist ein Glättungsprozess der traditionellen K-Linie

  • Vorteile: Bietet eine klarere Trendrichtung und reduziert falsche Signale durch Glättung der Preisdaten.
  • Anwendbare Szenarien: Anwendbar auf Trendfolgestrategien, die Händlern helfen, Positionen in Trends länger zu halten.

Die Berechnungsmethode ist wie folgt:

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 线,具有趋势持续性更强的特点。

Trendbeurteilung und Signalerkennung

  • Eine bullische Kerze mit großem Körper und fast keinem oberen oder unteren Schatten deutet auf einen starken Aufwärtstrend hin
  • Eine negative Linie mit einem großen Körper und fast keinen oberen oder unteren Schatten weist auf einen starken Abwärtstrend hin
  • Die oberen und unteren Schatten werden länger und der reale Körper schrumpft. Der Trend schwächt sich ab, also hüten Sie sich vor Umkehrungen.
  • Der Körper ist sehr kurz, der Schatten ist lang. Der Markt ist volatil, handeln Sie daher vorerst nicht.

Implementierungscode und Zeichnung:

/*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

Visuelles Verbesserungstool! Verwenden Sie Ziegeldiagramme und durchschnittliche Kerzendiagramme, um Markttrends auf FMZ zu verstehen

END

Renko-Chart und Heikin Ashi sind leistungsstarke Tools für Trendhändler:

  • Das Renko-Chart konzentriert sich auf Preisverschiebungen und eignet sich für Durchbrüche und Trendbestätigungen.
  • Heikin Ashi konzentriert sich auf die Preisglättung und eignet sich zur Trendpositionskontrolle.
  • Die komplementäre Verwendung der beiden kann die Stabilität und Schockfestigkeit von Trendstrategiesignalen verbessern.

Es wird empfohlen, Backtesting und Echtzeitüberprüfung zu kombinieren, eine Diagrammlösung auszuwählen, die zu Ihren eigenen Handelsprodukten und -zyklen passt, und ein personalisiertes quantitatives Handelssystem zu erstellen.