Estratégia de avanço da linha K de força


Data de criação: 2023-10-07 15:59:26 última modificação: 2023-10-07 15:59:26
cópia: 0 Cliques: 632
1
focar em
1617
Seguidores

Visão geral

A estratégia de ruptura da linha K da linha de força é uma estratégia de negociação quantitativa que utiliza a forma da linha K e o indicador de força para comprar e vender ações. A estratégia combina vários indicadores técnicos para identificar tendências de preços de ações e sinais de força, fazer uma posição no ponto de ruptura, configurar um stop loss e sair, para controlar efetivamente o risco de negociação.

Princípio da estratégia

A estratégia de ruptura da Linha K baseia-se principalmente nos seguintes pontos:

  1. Use o CCI para determinar se a ação está na zona de sobrevenda. Quando o CCI passa acima de 100, é considerado um sinal de sobrevenda. Quando o CCI passa abaixo de 100, é considerado um sinal de sobrevenda.

  2. Julgar a forma da linha K, identificar sinais de ruptura. Quando o preço de fechamento é superior ao preço de abertura, a linha K vermelha é julgada como uma tendência ascendente. Quando o preço de fechamento é inferior ao preço de abertura, a linha K verde é julgada como uma tendência descendente.

  3. A combinação de indicadores de volume de transação só é considerada para emitir sinais de compra e venda se o volume de transação for maior.

  4. Quando uma tendência ascendente é identificada e o indicador CCI mostra um excesso de venda, uma operação de compra é realizada. Quando uma tendência descendente é identificada e o indicador CCI mostra um excesso de compra, uma operação de venda é realizada.

  5. Estabelecer um ponto de parada de perda. Depois de comprar, configure um ponto de parada proporcional para controlar o risco de queda, além de configurar um ponto de parada proporcional para bloquear o lucro.

Especificamente, a estratégia usa o indicador CCI para determinar o sobrevenda, a linha K para determinar a direção da tendência, o indicador de volume para determinar a força de julgamento. Quando estiver qualificado, execute a operação de longing (comprar mais de uma posição aberta) ou shorting (vender mais de uma posição aberta).

Análise de vantagens

A estratégia de ruptura da linha K tem as seguintes vantagens:

  1. A combinação de vários indicadores para tomar decisões torna os sinais de negociação mais confiáveis. O indicador CCI determina o ponto de compra e venda, a linha K determina a direção da tendência e o volume reflete a força do mercado.

  2. Usando a forma da linha K para auxiliar na determinação da direção da tendência, é possível capturar com mais precisão as oportunidades de reversão de preços. Por exemplo, a linha K vermelha combinada com o CCI superavendida é a hora de comprar.

  3. A configuração de um mecanismo de suspensão de perda pode controlar o risco de forma eficaz, evitar a expansão dos perdas e pode bloquear os lucros.

  4. Os sinais de transação são considerados somente quando o volume de transações aumenta, para filtrar os sinais falsos.

  5. A estratégia é clara e fácil de entender, os parâmetros são flexíveis e podem ser otimizados para diferentes ações e ambientes de mercado.

  6. A estratégia pode ser ampliada e otimizada, por exemplo, adicionando mais fatores, aprendizado de máquina, etc., para melhorar a estabilidade e a taxa de retorno da estratégia.

Análise de Riscos

A estratégia de ruptura da linha K também apresenta os seguintes riscos:

  1. Os sinais de compra e venda emitidos pelo indicador CCI podem ser atrasados, resultando na perda dos melhores pontos de entrada. Os parâmetros do CCI podem ser apropriadamente otimizados para aumentar a sensibilidade.

  2. O falso sinal de ruptura do julgamento de forma K-linear pode causar perdas desnecessárias. Pode-se adicionar mais indicadores para confirmação ou ajustar a proporção de perda de parada.

  3. O aumento do volume de transações também pode ser um reflexo de manipulação de mercado, e é necessário prestar atenção à relação entre os volumes de preços para evitar cair em armadilhas.

  4. A configuração estática de stop loss pode parar prematuramente ou perder uma situação maior. Pode-se considerar o ajuste dinâmico da proporção de stop loss.

  5. Os parâmetros definidos para ações individuais não necessariamente se aplicam a outras ações e precisam ser testados e otimizados de acordo com as diferentes características das ações.

  6. Os dados de retrospectiva de longo prazo não são necessariamente representativos do desempenho do disco, no qual é necessário prestar atenção ao risco de manipulação.

Direção de otimização

A estratégia pode ser melhorada nos seguintes aspectos:

  1. Otimizar os parâmetros do CCI para aumentar a sensibilidade do indicador CCI para o julgamento de pontos de compra e venda.

  2. A adição de outros indicadores auxiliares, como MACD, Bollinger Band e outros, aumenta a precisão dos sinais de compra e venda.

  3. Adicionar algoritmos de aprendizagem de máquina, usando treinamento de dados históricos, para fazer previsões de pontos de compra e venda.

  4. O método de stop loss é dinâmico e o stop loss é ajustado de acordo com a volatilidade do mercado.

  5. Otimizar a lógica de julgamento para aumentar o volume de transações e evitar desvios de preço.

  6. Otimizar a configuração de parâmetros de acordo com as diferentes características das ações e o ambiente de mercado, aumentando a estabilidade da estratégia.

  7. Adicionar mecanismos de acompanhamento de tendências e otimizar o desempenho da estratégia em diferentes fases.

  8. Melhorar a estrutura da estratégia, introduzir o gerenciamento modular e aumentar a flexibilidade e a expansibilidade do código.

Resumir

A estratégia de ruptura da linha K da Linha de Força é, em geral, uma estratégia de negociação de linha curta relativamente simples e clara. Combina os benefícios de vários indicadores técnicos comuns, a lógica de julgamento é clara e fácil de entender, e o risco é controlado através de um stop loss. A estratégia pode ser otimizada de forma flexível de acordo com suas necessidades para capturar os pontos de reversão de preços da linha curta e rastrear a tendência intermédia.

Código-fonte da estratégia
/*backtest
start: 2023-09-06 00:00:00
end: 2023-10-06 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © vikris

//@version=4
strategy("[VJ]War Machine PAT Intra", overlay=true, calc_on_every_tick = false)

// ********** Strategy inputs - Start **********

// Used for intraday handling
// Session value should be from market start to the time you want to square-off 
// your intraday strategy
// Important: The end time should be at least 2 minutes before the intraday
// square-off time set by your broker
var i_marketSession = input(title="Market session", type=input.session, 
     defval="0915-1455", confirm=true)

// Make inputs that set the take profit % (optional)
longProfitPerc = input(title="Long Take Profit (%)",
     type=input.float, minval=0.0, step=0.1, defval=5.0) * 0.01

shortProfitPerc = input(title="Short Take Profit (%)",
     type=input.float, minval=0.0, step=0.1, defval=5.0) * 0.01
     
// Set stop loss level with input options (optional)
longLossPerc = input(title="Long Stop Loss (%)",
     type=input.float, minval=0.0, step=0.1, defval=5.0) * 0.01

shortLossPerc = input(title="Short Stop Loss (%)",
     type=input.float, minval=0.0, step=0.1, defval=5.0) * 0.01    

trendFactor = input(title="Trend Factor(Lower means trending)", type=input.integer, minval=1, step=1, defval=50)

oversold = input(title="Oversold", type=input.integer, minval=1, step=1, defval=25)

overbought = input(title="Overbought", type=input.integer, minval=1, step=1, defval=75)

// ********** Strategy inputs - End **********


// ********** Supporting functions - Start **********

// A function to check whether the bar or period is in intraday session
barInSession(sess) => time(timeframe.period, sess) != 0
// Figure out take profit price
longExitPrice  = strategy.position_avg_price * (1 + longProfitPerc)
shortExitPrice = strategy.position_avg_price * (1 - shortProfitPerc)

// Determine stop loss price
longStopPrice  = strategy.position_avg_price * (1 - longLossPerc)
shortStopPrice = strategy.position_avg_price * (1 + shortLossPerc)


// ********** Supporting functions - End **********


// ********** Strategy - Start **********
// See if intraday session is active
bool intradaySession = barInSession(i_marketSession)

// Trade only if intraday session is active

//=================Strategy logic goes in here===========================
//Vol Confirmation
vol = volume > volume[1]

//Engulfing candle confirm
bullishEC = close > open[1] and close[1] < open[1]
bearishEC = close < open[1] and close[1] > open[1]

//Candles colors
greenCandle = (close > open)
redCandle = (close < open)

length = input(title="Length", type=input.integer, defval=14, minval=1, maxval=2000)
src = hlc3
upper = sum(volume * (change(src) <= 0 ? 0 : src), length)
lower = sum(volume * (change(src) >= 0 ? 0 : src), length)
_rsi(upper, lower) =>
    100.0 - (100.0 / (1.0 + upper / lower))
mf = _rsi(upper, lower)
ci = 100 * log10(sum(atr(1), length) / (highest(length) - lowest(length))) / log10(length)

//tradeSignal = ((rsiOS or rsiOS[1]) and bullishEC) or ((rsiOB or rsiOB[1]) and bearishEC)




//Final Long/Short Condition
longCondition =  redCandle and mf < oversold and ci <trendFactor and vol
shortCondition = greenCandle and mf >overbought and ci <trendFactor and vol
 
//Long Strategy - buy condition and exits with Take profit and SL
if (longCondition and intradaySession)
    stop_level = longStopPrice
    profit_level = longExitPrice
    strategy.entry("My Long Entry Id", strategy.long)
    strategy.exit("TP/SL", "My Long Entry Id", stop=stop_level, limit=profit_level)


//Short Strategy - sell condition and exits with Take profit and SL
if (shortCondition and intradaySession)
    stop_level = shortStopPrice
    profit_level = shortExitPrice
    strategy.entry("My Short Entry Id", strategy.short)
    strategy.exit("TP/SL", "My Short Entry Id", stop=stop_level, limit=profit_level)
 
 
// Square-off position (when session is over and position is open)
squareOff = (not intradaySession) and (strategy.position_size != 0)
strategy.close_all(when = squareOff, comment = "Square-off")

// ********** Strategy - End **********