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: 2024-11-08 09:08:54

另类交易思路–K线面积交易策略

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. - amount: o número de transações por transação.

Variações globais - c:Objetos de gráficos de linha K, usados para desenhar gráficos. - openPrice: Registre os preços de abertura. - tradeState: Regista o estado da transação, pode ser um botão NULL (vazio) Buy (comprado) SELL (vendido)

Função de cálculo - calculateKLineArea Função: Esta função é usada para calcular a área entre o preço e a média móvel em um gráfico de linhas K em um determinado período de tempo e retorna o valor da área, o índice de linhas K que foi cruzado pela última vez e o índice de linhas K 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: é a entrada de execução principal, que verifica se o nome da bolsa contém o ângulo _Futures, se contém, lança uma anomalia, caso contrário, entra em um ciclo infinito, executa a função onTick e dorme 1 segundo em cada ciclo.

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

另类交易思路–K线面积交易策略

另类交易思路–K线面积交易策略

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.

另类交易思路–K线面积交易策略

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 informações