En la carga de los recursos... Cargando...

Ideas alternativas de negociación - estrategias de negociación de área de línea K

El autor:Los inventores cuantifican - sueños pequeños, Creado: 2023-11-03 17:12:42, Actualizado: 2024-11-08 09:08:54

img

En este artículo, exploramos esta idea y tratamos de implementar este script.

Principales ideas de la estrategia de área de la línea K

La estrategia de área de la línea K es una estrategia de negociación basada en la relación de área entre la línea K y la línea media. Su idea principal es predecir el posible movimiento del precio de las acciones mediante el análisis de la amplitud y el cambio de la tendencia de los precios, así como la conversión del sentimiento de compra, lo que determina el momento de apertura y salida. La estrategia depende de la área entre la línea K y la línea media, así como el valor del indicador KDJ, para generar señales de negociación multi-cabezas y blancas.

Principios de la estrategia de la superficie de la línea K

El área de la línea K es el área del espacio entre la línea K y la línea uniforme del precio, que se calcula reduciendo el precio de cierre de cada barra a la línea media, y luego se suma. Cuando la tendencia al alza del precio es grande, la superficie de la línea K aumenta con el tiempo, mientras que la superficie de la línea K es pequeña cuando el mercado está en agitación o se invierte después de la agitación. Según el principio de la reacción inevitable de los animales domésticos, cuanto mayor es la tendencia al alza, cuanto más tiempo, mayor es la superficie de la línea K correspondiente, mayor es la probabilidad de reversión.

Para confirmar aún más que la tendencia está a punto de invertirse, se introduce el indicador KDJ, que se utiliza para determinar la conversión del sentimiento de compra y venta. El umbral de esta estrategia y la configuración del valor del indicador KDJ se pueden ajustar en función de las circunstancias y las necesidades específicas para aumentar la precisión de la estrategia.

Las ventajas de la estrategia de área de línea K

La ventaja de la estrategia de área de la línea K es que combina la amplitud y el cambio de la tendencia de los precios, así como la conversión del sentimiento de compra y venta, para proporcionar una estrategia de negociación cuantitativa relativamente completa. Sus ventajas incluyen:

  • Proporciona un método simple e intuitivo para identificar la posibilidad de un cambio de tendencia y ayuda a los operadores a comprender mejor el movimiento del mercado.
  • Utilizando la combinación del área de la línea K y el indicador KDJ, se aumenta la confiabilidad y precisión de la estrategia.
  • La flexibilidad es alta y los parámetros se pueden ajustar según las condiciones del mercado para satisfacer diferentes necesidades de transacción.

Los riesgos de la estrategia de la línea K

A pesar de que la estrategia de la línea K tiene algunas ventajas, también tiene algunos riesgos, incluyendo:

  • La configuración de los umbrales puede requerir algo de experiencia y ajustes, y si se establece incorrectamente, puede llevar a un mal juicio de la tendencia del mercado.
  • La precisión del indicador KDJ se ve afectada por las fluctuaciones del mercado y el ruido, lo que puede generar falsas señales.
  • El rendimiento de las estrategias puede variar según las condiciones del mercado y requiere una optimización y un ajuste continuos.

Dirección de optimización de la estrategia de área de línea K

Para optimizar las estrategias de área de línea K, se pueden considerar las siguientes direcciones:

  • Optimización de parámetros: ajustar y optimizar constantemente los parámetros del umbral y del indicador KDJ para adaptarse a las diferentes situaciones del mercado y las necesidades de negociación.
  • Gestión de riesgos: Implementar estrategias efectivas de gestión de riesgos, incluidas las reglas de contención y prevención de pérdidas, para reducir el riesgo de pérdida.
  • Combinación de múltiples estrategias: Combina la estrategia de área de línea K con otras estrategias para mejorar el rendimiento de la estrategia de negociación integral.
  • Monitoreo y ajuste en tiempo real: el desempeño de las estrategias de monitoreo periódico se ajusta y mejora en función de las situaciones reales.

Utiliza el lenguaje JavaScript para implementar esta política

  • Calcula el área de la línea K

  • La mayoría de las posiciones están abiertas.

    (1) La línea de área de K de la tendencia decreciente alcanza el umbral y se establece antes.

    (2) El valor del indicador KDJ es mayor a 80

  • La señal de apertura de la posición vacía:

    (1) La línea de área de K de la línea de K de la tendencia ascendente alcanza el umbral, y antes de que se forme

    (2) El valor del indicador KDJ es inferior a 20

  • Participación de múltiples/vacíos: ATR sigue el parón de pérdidas y paradas

Implementación de código

// 参数
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 lógica estratégica es muy simple:

Primero, se definen algunas variables y parámetros globales, incluyendo:

Parámetros de la estrategia

  • maPeriod: el período de la media móvil.
  • Threshold: se utiliza para determinar el umbral de compra o venta.
  • cantidad: el número de transacciones por transacción.

Variables globales

  • c: Objetos de gráficos de línea K, para dibujar gráficos.
  • OpenPrice: registra el precio de apertura de una operación.
  • tradeState: registra el estado de la transacción, que puede ser "NULL" (estocante vacío), "BUY" (comprado) o "SELL" (vendido).

Función de cálculo

  • Calculate LineArea: Esta función se utiliza para calcular el área entre el precio y la media móvil en el gráfico de K líneas durante un período de tiempo y devuelve el valor del área, el índice de K líneas que se cruzó por última vez y el índice de K líneas que se cruzó por última vez. Estos valores se utilizan en las decisiones posteriores para determinar el momento de comprar y vender.

Función de ciclo principal

  • Función onTick: Esta es la función principal de ejecución de la política, y las siguientes son las operaciones dentro de la función:

    a. Obtener los datos más recientes de las líneas K y asegurarse de que el número de líneas K no sea menor que maPeriod, de lo contrario, registrar el estado y regresar.

    b. Calcular las medias móviles ma y ATR atr, así como KDJ.

    c. Obtener información de área de areaInfo, el último índice de K-string cruzado y el último índice de K-string cruzado.

    d. Trazar la línea K y la línea de indicadores con el objeto c del gráfico de K-línea, mientras se rellena de diferentes colores según la relación entre el precio y la media móvil.

    e. Tiempo de compra y venta en función de las condiciones:

    Si el tradeState es el cuadro NULL, y el área es menor que el -threshold y el valor de la línea K de KDJ es mayor que 70, se realiza la operación de compra. Si el tradeState es el cuadro NULL, y el área es mayor que el umbral y el valor de la línea K de KDJ es menor que 30, ejecute la operación de venta. f. Establecer condiciones de suspensión de pérdidas y de suspensión de pérdidas, si se cumplen las condiciones, el equilibrio:

    Si está en estado de compra, se estabiliza cuando el precio está por debajo del precio de cierre del último día de negociación menos el ATR del día anterior. Si se vende, se estabiliza cuando el precio es superior al precio de cierre del día anterior más el ATR del día anterior. Función principal: es la principal entrada de ejecución, que verifica si el nombre de la bolsa contiene el tick_Futures, si lo contiene, lanza una anomalía, si no, entra en un ciclo infinito, ejecuta la función onTick en cada ciclo y duerme 1 segundo.

En general, la estrategia se basa principalmente en los gráficos de la línea K y los indicadores técnicos para tomar decisiones de compra y venta, mientras que las estrategias de stop loss y stop loss se usan para gestionar el riesgo. Tenga en cuenta que esta es solo una estrategia de ejemplo y que en el uso real se debe ajustar y optimizar según las condiciones del mercado y las necesidades específicas.

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

Retrospectiva estratégica

img

img

Si se selecciona un período de retrospección aleatorio, aunque no haya pérdidas, pero tampoco haya acumulado ganancias continuas, el problema de retroceder es relativamente grande.

img

A través de esta estrategia, además de aprender una idea de negociación más alternativa, aprendimos a dibujar gráficos; representar el área de las líneas K y las líneas horizontales; dibujar indicadores KDJ, etc.

Resumen

La estrategia de área de la línea K es una estrategia de negociación basada en la amplitud de la tendencia de los precios y el indicador KDJ, que ayuda a los operadores a predecir la tendencia del mercado mediante el análisis de la superficie y la conversión del sentimiento de compra y venta entre la línea K y la línea media. A pesar de que existen ciertos riesgos, la estrategia puede ofrecer una herramienta de negociación poderosa para ayudar a los operadores a responder mejor a las fluctuaciones del mercado.


Más.