O recurso está a ser carregado... Carregamento...

Ideias de negociação alternativas - estratégias de negociação da área da linha K

Autora:Inventor quantificado - sonho pequeno, Criado: 2023-11-03 17:12:42, Atualizado: 2023-11-03 17:35:03

img

Olhando para uma idéia de negociação pouco confiável para a estratégia de negociação de área de linha K, neste artigo, vamos explorar essa idéia e tentar implementar esse script.

As principais ideias da estratégia da área da linha K

A estratégia de área da linha K é uma estratégia de negociação baseada na relação de área entre a linha K e a linha média do preço. Sua ideia principal é prever o possível movimento do preço do estoque, analisando a amplitude e as mudanças da tendência do preço, bem como a transformação do sentimento de compra, para determinar o momento de abrir e sair. A estratégia depende da área entre a linha K e a linha média, bem como do valor do indicador KDJ, para gerar sinais de negociação multi-head e em branco.

Princípios da estratégia de área de linha K

A área da linha K é a área do espaço entre a linha K do preço e a linha uniforme, calculada subtraindo o preço de fechamento de cada Bar do valor da linha média e somando-a. Quando a tendência ascendente do preço é grande, a área da linha K aumenta com o tempo, enquanto a área da linha K é menor quando o mercado está turbulento ou se reverte após a turbulência. De acordo com o princípio da reflexão imperativa dos animais, quanto maior a tendência ascendente, quanto mais tempo, maior a área da linha K correspondente, maior a probabilidade de reversão.

Para confirmar ainda mais a iminência de uma reversão da tendência, o indicador KDJ é introduzido, para determinar a mudança de sentimento de compra e venda. O limiar desta estratégia e a configuração do valor do indicador KDJ podem ser ajustados de acordo com as circunstâncias e as necessidades específicas para aumentar a precisão da estratégia.

Vantagens da estratégia de área de linha K

A vantagem da estratégia de área da linha K é que combina a amplitude e a variação da tendência de preços, bem como a conversão do sentimento de compra e venda, para fornecer uma estratégia de negociação quantitativa relativamente completa. Suas vantagens incluem:

  • A plataforma oferece uma maneira simples e intuitiva de identificar as possibilidades de reversão de tendências, ajudando os traders a entender melhor os movimentos do mercado.
  • Utilizando a combinação da área da linha K e do indicador KDJ, aumenta a confiabilidade e precisão da estratégia.
  • A alta flexibilidade permite ajustar os parâmetros de acordo com a situação do mercado para atender às diferentes necessidades de negociação.

Os riscos da estratégia da área da linha K

Embora a estratégia de área da linha K tenha algumas vantagens, ela também apresenta alguns riscos, incluindo:

  • A configuração do limiar pode exigir alguma experiência e ajustes, o que pode levar a um erro de julgamento da tendência do mercado se for configurado incorretamente.
  • A precisão do indicador KDJ é influenciada pela volatilidade do mercado e pelo ruído, podendo ocorrer falsos sinais.
  • O desempenho da estratégia pode variar de acordo com as diferentes condições do mercado e precisa ser constantemente otimizado e ajustado.

Direção de otimização da estratégia de área de linha K

Para otimizar a estratégia de área da linha K, podemos considerar as seguintes direções:

  • Optimização de parâmetros: ajustar e otimizar continuamente os parâmetros do limiar e do indicador KDJ para adaptar-se a diferentes situações de mercado e necessidades de negociação.
  • Gestão de riscos: implementar estratégias eficazes de gestão de riscos, incluindo regras de contenção de prejuízos e prejuízos, para reduzir o risco de perda.
  • Combinação de múltiplas estratégias: combinação da estratégia de área da linha K com outras estratégias para melhorar o desempenho da estratégia de negociação integral.
  • Monitorização e ajuste em tempo real: o desempenho da estratégia de monitoramento regular é ajustado e melhorado de acordo com a situação real.

Esta política é implementada usando o JavaScript.

  • Calcule a área da linha K

  • O sinal de abertura é:

    (1) A linha de área da linha K da tendência descendente atinge o limiar, antes mesmo de ser estabelecida

    (2) valor do indicador KDJ superior a 80

  • O sinal de abertura de uma posição vazia:

    (1) A linha de área da linha K da tendência ascendente atinge o limiar, antes mesmo de ser estabelecida.

    (2) valor do indicador KDJ inferior a 20

  • Múltiplas/vazia: ATR acompanha o stop loss

Implementação 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)
    }
}

A lógica estratégica é muito simples:

Primeiro, definimos algumas variáveis globais e parâmetros, incluindo:

Parâmetros de estratégia

  • maPeriod: período da média móvel.
  • Threshold: Usado para determinar o limite de tempo para comprar ou vender.
  • quantity: o número de transações por transação.

Variações globais

  • c: Objeto de gráfico de linha K, usado para desenhar gráficos.
  • OpenPrice: Regista os preços de abertura.
  • tradeState: Regista o estado da transação, que pode ser "NULL" (não disponível), "BUY" (comprado) ou "SELL" (vendido).

Função de cálculo

  • Calculate KlineArea: Esta função é usada para calcular a área entre o preço e a média móvel em um gráfico de K-linhas durante um período de tempo e retorna o valor da área, o índice de K-linhas que foi cruzado pela última vez e o índice de K-linhas que foi cruzado pela última vez. Estes valores são usados para determinar a hora de compra e venda em decisões subsequentes.

Função de ciclo principal

  • Função onTick: Esta é a principal função de execução de políticas, e as seguintes são as operações dentro da função:

    a. Obtenha os dados mais recentes dos K-strings e certifique-se de que o número de K-strings não seja menor do que o maPeriod, caso contrário, registe o estado e retorne;

    b. Calcular a média móvel ma e o indicador ATR atr, bem como o indicador KDJ.

    c. Obter informações de área do areaInfo, o último índice de K-string cruzado e o último índice de K-string cruzado.

    d. Use o objeto c do gráfico de linhas K para desenhar linhas K e linhas de indicadores, enquanto preenche diferentes cores de acordo com a relação do preço com a média móvel.

    e. No momento da compra e venda, de acordo com as condições:

    Se o tradeState for um quadrado NULL, e a área for menor que o -threshold e o valor da linha K do KDJ for maior que 70, execute a operação de compra. Se o tradeState for um quadrado NULL, e a área for maior que o threshold e o valor da linha K do KDJ for menor que 30, execute a operação de venda. f. Configurar condições de stop loss e stop loss, e, se as condições forem atingidas, o equilíbrio:

    Se for um estado de compra, quando o preço estiver abaixo do preço de fechamento do último dia de negociação menos o ATR do dia anterior, o equilíbrio ocorre. Se for um estado de venda, quando o preço é superior ao preço de fechamento do último dia de negociação, mais o ATR do dia anterior, o equilíbrio ocorre. Função principal: Esta é a entrada de execução principal, que verifica se o nome da bolsa contém o ângulo ângulo ângulo ângulo ângulo ângulo ângulo ângulo ângulo ângulo ângulo ângulo ângulo ângulo ângulo ângulo ângulo ângulo ângulo ângulo ângulo ângulo ângulo ângulo ângulo ângulo ângulo ângulo ângulo ângulo ângulo ângulo ângulo ângulo ângulo ângulo ângulo ângulo ângulo ângulo ângulo ângulo ângulo ângulo ângulo ângulo ângulo ângulo ângulo ângulo ângulo ângulo ângulo ângulo ângulo ângulo ângulo ângulo ângulo ângulo ângulo ângulo ângulo ângulo ângulo ângulo ângulo ângulo ângulo ângulo ângulo ângulo ângulo ângulo ângulo ângulo ângulo âng

Em geral, a estratégia depende principalmente de gráficos K-line e indicadores técnicos para tomar decisões de compra e venda, mas também usa estratégias de stop loss e stop loss para gerenciar o risco. Note que esta é apenas uma estratégia de exemplo, que, quando usada na prática, precisa ser ajustada e otimizada de acordo com as condições do mercado e as necessidades específicas.

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

Revisão estratégica

img

img

A escolha de um período de retrospecção aleatório, embora não tenha perdido dinheiro, mas também não tenha continuado a acumular lucros, o problema de retorno é relativamente grande. Deve haver outras direções e espaço para a otimização desta estratégia.

img

Com esta estratégia, além de aprendermos uma ideia de negociação mais alternativa, também aprendemos a desenhar gráficos; a representar a área de uma linha K e uma linha uniforme; desenhar indicadores KDJ, etc.

Resumo

A estratégia de área da linha K é uma estratégia de negociação baseada na amplitude da tendência de preços e no indicador KDJ, que ajuda os traders a prever o movimento do mercado analisando a área e a conversão do sentimento de compra entre a linha K e a linha média. Apesar de existirem certos riscos, a estratégia pode oferecer ferramentas de negociação poderosas para ajudar os traders a lidar melhor com as flutuações do mercado.


Mais.