Estrategia de avance de la línea K de fuerza


Fecha de creación: 2023-10-07 15:59:26 Última modificación: 2023-10-07 15:59:26
Copiar: 0 Número de Visitas: 632
1
Seguir
1617
Seguidores

Descripción general

La estrategia de ruptura de la línea K de la línea de fuerza es una estrategia de negociación cuantitativa que utiliza la forma de la línea K y el indicador de la línea de fuerza para comprar y vender acciones. La estrategia combina varios indicadores técnicos para identificar la tendencia de los precios de las acciones y las señales de la línea de fuerza, para hacer una posición en el punto de ruptura, establecer un stop loss y una salida, para controlar eficazmente el riesgo de negociación.

Principio de estrategia

La estrategia para romper la línea K se basa principalmente en los siguientes puntos:

  1. Utiliza el índice CCI para determinar si la acción está en una zona de sobreventa. Se considera una señal de sobreventa cuando el CCI pasa por encima de 100 y se considera una señal de sobreventa cuando el CCI pasa por debajo de 100.

  2. Para determinar la forma de la línea K, identifique una señal de ruptura. La línea K roja se considera una tendencia alcista cuando el precio de cierre es superior al precio de apertura, y la línea K verde, cuando el precio de cierre es inferior al precio de apertura, se considera una tendencia bajista.

  3. La combinación de indicadores de volumen de transacciones sólo se consideran para emitir señales de compra y venta en caso de que el volumen de transacciones crezca.

  4. Cuando se identifica una tendencia al alza y el indicador CCI muestra una sobreventa, se realiza una operación de compra. Cuando se identifica una tendencia a la baja y el indicador CCI muestra una sobreventa, se realiza una operación de venta.

  5. Establezca un punto de parada de pérdidas. Establezca un punto de parada proporcional después de la compra para controlar el riesgo de caída, y también un punto de parada proporcional para bloquear las ganancias.

En concreto, la estrategia utiliza el indicador CCI para determinar sobreventa, la forma de la línea K para determinar la dirección de la tendencia, el indicador de volumen para determinar el poder de decisión. Cuando se cumplen las condiciones, se realiza una operación de longing (comprar para abrir más de la cabeza) o shorting (vender para abrir más de la cabeza).

Análisis de las ventajas

La estrategia para romper la línea K tiene las siguientes ventajas:

  1. La combinación de varios indicadores para tomar decisiones hace que las señales de negociación sean más confiables. El indicador CCI puede determinar el punto de compra y venta, la línea K determina la dirección de la tendencia, y el volumen refleja la fuerza del mercado.

  2. El uso de la forma de la línea K para ayudar a determinar la dirección de la tendencia, puede capturar con mayor precisión las oportunidades de reversión de precios. Por ejemplo, la línea K roja combinada con el CCI sobrevendida es el momento de comprar.

  3. El establecimiento de un mecanismo de detención de pérdidas puede controlar el riesgo de manera efectiva, evitar que las pérdidas se extiendan y bloquear las ganancias.

  4. Las señales de transacción se consideran solo cuando el volumen de transacciones aumenta, para filtrar las falsas señales.

  5. La estrategia es clara y fácil de entender, los parámetros son flexibles y se pueden optimizar para diferentes acciones y entornos de mercado.

  6. Las estrategias se pueden optimizar para escalar, por ejemplo, añadiendo más factores, aprendizaje automático, etc., para mejorar la estabilidad y la rentabilidad de las estrategias.

Análisis de riesgos

La estrategia de romper la línea K también tiene los siguientes riesgos:

  1. Las señales de compra y venta emitidas por el indicador CCI pueden retrasarse, lo que lleva a perder el punto de entrada óptimo. Se pueden optimizar adecuadamente los parámetros del CCI para aumentar la sensibilidad.

  2. La falsa señal de ruptura del juicio de la forma de la línea K puede causar pérdidas innecesarias. Se pueden agregar más indicadores para la confirmación o ajustar la proporción de pérdidas.

  3. El aumento de la cantidad de transacciones también puede ser un reflejo de la manipulación del mercado, por lo que es necesario prestar atención a la relación entre las cantidades de precios para evitar caer en la trampa.

  4. La configuración estática de la parada de pérdidas puede detenerse prematuramente o perder un mayor evento. Se puede considerar ajustar dinámicamente la proporción de la parada de pérdidas.

  5. Los parámetros establecidos para una acción individual no necesariamente se aplican a otras acciones, por lo que se requiere una optimización de prueba en función de las diferentes características de las acciones.

  6. Los datos de retrospectiva a largo plazo no siempre representan el rendimiento del disco, en el que se debe prestar atención al riesgo de manipulación.

Dirección de optimización

La estrategia puede considerarse para optimizar en los siguientes aspectos:

  1. Optimización de los parámetros del CCI para mejorar la sensibilidad del indicador CCI a los puntos de compra y venta.

  2. La adición de otros indicadores auxiliares, como MACD, Bollinger Band, etc., mejora la precisión de las señales de compra y venta.

  3. El objetivo de este proyecto es crear un sistema de análisis de precios basado en el aprendizaje automático, que utilice el entrenamiento de datos históricos para hacer predicciones de puntos de venta y de compra.

  4. Se utiliza un método de stop loss dinámico, que ajusta la proporción de stop loss en función de la volatilidad del mercado.

  5. Optimización de la lógica de juicio para aumentar el volumen de transacciones y evitar el desvío de los precios.

  6. Optimizar la configuración de los parámetros de acuerdo con las diferentes características de las acciones y el entorno del mercado para mejorar la estabilidad de la estrategia.

  7. Añadir un mecanismo de seguimiento de tendencias para optimizar el rendimiento de las estrategias en las diferentes etapas.

  8. Mejorar la estructura de las políticas, introducir gestión modular, mejorar la flexibilidad y la extensibilidad del código.

Resumir

La estrategia de ruptura de la línea K de fuerza es una estrategia de negociación de líneas cortas relativamente simple y clara en general. Combina las ventajas de varios indicadores técnicos comunes, la lógica de juicio clara y fácil de entender, y el control del riesgo a través del stop loss. La estrategia se puede optimizar de manera flexible según sus propias necesidades para capturar reveses en los precios de las líneas cortas y rastrear tendencias intermedias.

Código Fuente de la Estrategia
/*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 **********