Type/to search
8
Follow
1364
Followers
Ideias alternativas de negociação - Estratégia de negociação da área K-line
Discussions
Created 2023-11-03 17:12:42  Updated 2024-11-08 09:08:54
 0
 2039

img

Analisando uma ideia de negociação não muito confiável - estratégia de negociação de área de linha K, neste artigo discutiremos essa ideia e tentaremos implementar esse script.

A ideia principal 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 do preço e a média móvel. Sua ideia principal é prever a possível tendência dos preços das ações analisando a amplitude e as mudanças nas tendências de preços, bem como a conversão dos sentimentos de compra e venda, para determinar o momento de abertura e saída de posições. Essa estratégia se baseia na área entre o candle e a média móvel, bem como no valor do indicador KDJ, para gerar sinais de negociação longos e curtos.

O princípio da estratégia da área da linha K

A área do candlestick se refere ao espaço entre o candlestick de preço e a média móvel, que é calculada subtraindo o valor da média móvel do preço de fechamento de cada barra e depois somando-os. Quando o preço sobe por muito tempo e em grande amplitude, a área da linha K se tornará maior, enquanto em um mercado volátil ou uma reversão após a volatilidade, a área da linha K será menor . De acordo com o princípio de "tudo vai para o extremo oposto", quanto maior a tendência de alta e quanto maior o tempo, maior a área da linha K correspondente e maior a probabilidade de reversão, assim como uma mola, quanto maior for o tempo for esticado, maior será a força de rebote. Portanto, um limite para a área da linha K é definido. Quando esse limite é atingido, a tendência de preço pode ser concluída e a possibilidade de uma reversão é maior.

Para confirmar ainda mais que a tendência está prestes a se reverter, o indicador KDJ é introduzido para avaliar a conversão do sentimento de compra e venda. As configurações de limite e valor do indicador KDJ desta estratégia podem ser ajustadas de acordo com circunstâncias e necessidades específicas para aumentar a precisão da estratégia.

Vantagens da estratégia de área da linha K

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

  • Ele fornece uma maneira simples e intuitiva de identificar a possibilidade de reversão de tendência, ajudando os traders a entender melhor as tendências do mercado.
  • A combinação dos indicadores de área K-line e KDJ aumenta a confiabilidade e a precisão da estratégia.
  • É altamente flexível e pode ajustar parâmetros de acordo com as condições de mercado para atender a diferentes necessidades de negociação.

Riscos da estratégia da área da linha K

Embora a estratégia de área de velas tenha certas vantagens, ela também apresenta alguns riscos, incluindo:

  • Definir o limite pode exigir alguma experiência e ajuste e, se não for definido corretamente, pode levar a erros de julgamento das tendências de mercado.
  • A precisão do indicador KDJ é afetada pelas flutuações e ruídos do mercado, e sinais falsos podem ocorrer.
  • O desempenho de uma estratégia pode variar sob diferentes condições de mercado e requer otimização e ajuste constantes.

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

Para otimizar a estratégia da área da linha K, as seguintes direções podem ser consideradas:

  • Otimização de parâmetros: ajuste e otimize continuamente os parâmetros do limite e do indicador KDJ para se adaptar a diferentes condições de mercado e necessidades de negociação.
  • Gestão de Riscos: Implemente estratégias eficazes de gestão de riscos, incluindo regras de stop-loss e take-profit, para reduzir o risco de perdas.
  • Combinação multiestratégia: combine a estratégia de área da linha K com outras estratégias para melhorar o desempenho da estratégia de negociação abrangente.
  • Monitoramento e ajustes em tempo real: monitore regularmente o desempenho da estratégia e faça ajustes e melhorias com base nas condições reais.

Implemente esta estratégia usando JavaScript

  • Calcular a área do castiçal

  • Sinal para abrir uma posição longa:

    (1) A "área da linha K" da tendência descendente atinge o limite, que pode ser estabelecido antes

    (2) O valor do indicador KDJ é maior que 80

  • Sinal para abrir uma posição curta:

    (1) A "área da linha K" da tendência ascendente atinge o limite, que pode ser estabelecido antes

    (2) O valor do indicador KDJ é menor que 20

  • Saída longa/curta: ATR rastreando stop loss e take profit

Implementação de código

javascript
// 参数 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 da estratégia é muito simples:

  1. Primeiro, algumas variáveis ​​e parâmetros globais são definidos, incluindo:

Parâmetros de estratégia

  • maPeriod: O período da média móvel.
  • limite: O limite usado para determinar quando comprar ou vender.
  • montante: O valor de cada transação.

Variáveis ​​globais

  • c: Objeto de gráfico K-line, usado para desenhar gráficos.
  • openPrice: registra o preço de abertura.
  • tradeState: registra o status da transação, que pode ser "NULL" (posição vazia), "BUY" (comprar) ou "SELL" (vender).

Função de Cálculo

  • Função calculateKLineArea: Esta função é usada para calcular a área entre o preço e a média móvel ao longo de um período de tempo no gráfico de velas e retorna o valor da área, o índice de velas do último cruzamento ascendente e o índice de velas de a última travessia para baixo. Esses valores são usados ​​em decisões subsequentes para determinar quando comprar e vender.

Função do loop principal

  • Função onTick: Esta é a principal função de execução da estratégia. A seguir estão as operações dentro da função:

    a. Obtenha os dados mais recentes da linha K e certifique-se de que o número de linhas K não seja menor que maPeriod, caso contrário, registre o status e retorne.

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

    c. Obtenha as informações da área, o último índice de K-line cruzado para cima e o último índice de K-line cruzado para baixo de areaInfo.

    d. Use o objeto c do gráfico de velas para desenhar as linhas de velas e indicadores e preenchê-las com cores diferentes de acordo com a relação entre o preço e a média móvel.

    e. Determine o momento de compra e venda com base nas condições:

    Se tradeState for "NULL", a área for menor que -threshold e o valor do candlestick KDJ for maior que 70, uma operação de compra será realizada.
    Se tradeState for "NULL", a área for maior que o limite e o valor do candle KDJ for menor que 30, execute uma operação de venda.
    f. Defina as condições de stop loss e take profit e feche a posição se as condições forem atendidas:

    Se estiver em estado de compra, a posição será fechada quando o preço for menor que o preço de fechamento do dia de negociação anterior menos o ATR do dia anterior.
    Se estiver em estado de venda, a posição será fechada quando o preço for maior que o preço de fechamento do dia de negociação anterior mais o ATR do dia anterior.
    função principal: Este é o principal ponto de entrada de execução, verificando se o nome da troca contém "_"Futures", se incluído, lança uma exceção, caso contrário, entra em um loop infinito, executa a função onTick em cada loop e dorme por 1 segundo.

Em geral, essa estratégia se baseia principalmente em gráficos K-line e indicadores técnicos para tomar decisões de compra e venda, enquanto usa estratégias de stop-loss e take-profit para gerenciar riscos. Observe que esta é apenas uma estratégia de exemplo e o uso real precisa ser ajustado e otimizado com base nas condições de mercado e necessidades específicas.

Este modelo foi facilmente implementado usando JavaScript no FMZ.COM sem usar muitas linhas de código. E a representação gráfica da área da linha K é facilmente obtida usando a função KLineChart. A estratégia é projetada para o mercado spot de criptomoedas e usa o modelo "Digital Currency Spot Trading Library". Colocar ordens usando funções encapsuladas no modelo também é muito simples, fácil de usar e entender.

Backtesting de estratégia

img

img

Selecionei aleatoriamente um período de backtesting. Embora eu não tenha perdido dinheiro, não acumulei lucros continuamente, então o problema de drawdown ainda era bem grande. Deve haver outras direções de otimização e espaço para essa estratégia. Os interessados ​​podem tentar melhorar essa estratégia.

img

Por meio dessa estratégia, além de aprender uma ideia de negociação mais alternativa, também aprendemos a desenhar gráficos; representar a área delimitada pela linha K e pela média móvel; desenhar o indicador KDJ, etc.

Resumir

A estratégia de área K-line é uma estratégia de negociação baseada na amplitude da tendência de preço e no indicador KDJ. Ela ajuda os traders a prever tendências de mercado analisando a área entre a K-line e a média móvel e a conversão do sentimento de compra e venda. Embora existam certos riscos, por meio de otimização e ajuste contínuos, essa estratégia pode fornecer uma ferramenta de negociação poderosa para ajudar os traders a lidar melhor com as flutuações do mercado. É importante que os traders ajustem com flexibilidade os parâmetros e regras de suas estratégias de acordo com a situação específica e as condições de mercado para obter melhor desempenho de negociação.

Related Recommendations
Comment
All comments (0)
No data
No data
  • 1
iPhone Download
Forums
PINE Language
© 2015 - ∞ INVENTOR PTE LTD (SG)