Estrategia de lógica inversa para las últimas N velas


Fecha de creación: 2023-12-26 11:00:29 Última modificación: 2023-12-26 11:00:29
Copiar: 1 Número de Visitas: 696
1
Seguir
1623
Seguidores

Estrategia de lógica inversa para las últimas N velas

Descripción general

La idea principal de esta estrategia es decidir si hacer más o vacío en función del color de la última N de las líneas K. Si las últimas N de las líneas K son verdes, hacer más; si las últimas N de las líneas K son rojas, vacío. Su peculiaridad consiste en agregar un parámetro de la columna inversa de la lógica inversa, que se puede contrarrestar a la lógica original. Cuando el parámetro de la columna inversa de la lógica inversa es verdadero, la última N de las líneas K verdes quedará vacía, mientras que la última N de las líneas K rojas hará más.

Principio de estrategia

Esta estrategia depende principalmente de los siguientes parámetros importantes:

  1. numCandlesToCheck: Se usa para especificar el número de líneas K que se deben revisar
  2. numCandlesToExit: Especifica el número de líneas K que se necesitan para salir de la posición después de mantener la posición
  3. inverseLogic: Parámetros de lógica inversa, para invertir en tiempo real la lógica multivariable original

La lógica clave es recorrer las líneas K más recientes de numCandlesToCheck en un ciclo de for, y calcular en tiempo real el número de líneas K verdes y líneas K rojas que aparecen consecutivamente. Marque lastNCandlesRed como verdadero si la línea K roja es ≥numCandlesToCheck. Marque lastNCandlesGreen como verdadero si la línea K verde es ≥numCandlesToCheck.

Cuando lastNCandlesGreen es verdadero, si el argumento inversoLogic es falso, se hace más; si es verdadero, se hace vacío. Por el contrario, cuando lastNCandlesRed es verdadero, si el argumento inversoLogic es falso, se hace vacío; si es verdadero, se hace más.

Independientemente de la cantidad de candelada, el contador barsSinceEntry se restablecerá a 0 después de abrir la posición. Cuando barsSinceEntry sea mayor que igual a numCandlesToExit, se eliminará la posición actual.

Análisis de las ventajas

Esta es una estrategia interesante que utiliza la decisión de color de la línea K, con la adición de los parámetros de la columna de lógica inversa de la columna, con la flexibilidad de ajustar la lógica de hacer más tomas de vuelo. Las principales ventajas son:

  1. La idea es novedosa y puede ser invertida en contra de la lógica general del mercado.
  2. El código es claro, conciso, fácil de entender y modificar.
  3. Se puede encontrar la combinación óptima de parámetros ajustando
  4. La estrategia puede seguir funcionando y generar señales sin importar las circunstancias.

Análisis de riesgos

La estrategia también tiene algunos riesgos a tener en cuenta:

  1. Los colores de la línea K no representan completamente la probabilidad de que haya una señal falsa.
  2. No se puede determinar el valor óptimo para numCandlesToCheck
  3. No se puede determinar el valor óptimo para el parámetro numCandlesToExit
  4. La configuración incorrecta de los parámetros de lógica inversa puede aumentar las pérdidas
  5. Incapacidad para controlar de manera efectiva los pérdidas individuales

Los riesgos mencionados pueden ser controlados y optimizados con las siguientes medidas:

  1. Añadir otros filtros para evitar señales erróneas, como el aumento de los niveles de juicio de tendencias
  2. Recorre los diferentes parámetros para encontrar la combinación óptima de parámetros
  3. Adhesión a un mecanismo de control de pérdidas individuales
  4. Verificación de la validez de los parámetros de lógica inversa

Dirección de optimización

La estrategia se puede optimizar principalmente en las siguientes direcciones:

  1. Aumentar la determinación de los parámetros de la oferta para evitar la estafa
  2. Valores de los parámetros de optimización numCandlesToCheck y numCandlesToExit
  3. Indicador de tendencia de ciclo grande combinado con señal de filtro de error
  4. Incorporación de estrategias de stop loss y stop loss
  5. Evaluación de la eficacia de las diferentes estrategias de verificación de variedades
  6. Comparación de la rentabilidad de la lógica original y la lógica inversa

Resumir

La idea general de la estrategia es clara y fácil de entender, y se determina la formación de señales de negociación mediante el uso de un simple color de la línea K. La adaptación de los parámetros de la estrategia puede generar una rica combinación de cambios, lo que permite un ajuste óptimo para diferentes entornos y variedades de mercado. Al mismo tiempo, se debe tener en cuenta algunos riesgos potenciales y adoptar las medidas necesarias para controlar los riesgos.

Código Fuente de la Estrategia
/*backtest
start: 2022-12-25 00:00:00
end: 2023-12-25 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Last Number of  Candles", overlay=true)

// Define the condition for a green candle
isGreenCandle(candle) =>
    close[candle] > open[candle]

// Define the condition for a red candle
isRedCandle(candle) =>
    close[candle] < open[candle]

// Input to specify the number of candles to check
numCandlesToCheck = input(5, title="Number of Candles to Check")
numCandlesToExit = input(2, title="Number of Candles To Exit")  // Corrected the input title

// Initialize variables to count consecutive green and red candles
var int consecutiveGreenCandles = 0
var int consecutiveRedCandles = 0

// Initialize barsSinceEntry outside the loop
var int barsSinceEntry = 0

// Loop through the last "numCandlesToCheck" candles
for i = 0 to numCandlesToCheck - 1
    if isGreenCandle(i)
        consecutiveGreenCandles := consecutiveGreenCandles + 1
        consecutiveRedCandles := 0 // Reset the count for consecutive red candles
    else if isRedCandle(i)
        consecutiveRedCandles := consecutiveRedCandles + 1
        consecutiveGreenCandles := 0 // Reset the count for consecutive green candles

// Check if the last "numCandlesToCheck" candles are green or red
lastNCandlesGreen = consecutiveGreenCandles >= numCandlesToCheck
lastNCandlesRed = consecutiveRedCandles >= numCandlesToCheck

// Calculate the quantity based on the investment value and current asset price
investmentValue = input(10000, title="Investment Value")
var assetPrice = close
var quantity = investmentValue / assetPrice


inverseLogic = input(false, title="inverseLogic")

// Entry condition: Open a buy order if the last "numCandlesToCheck" candles are green
if lastNCandlesGreen
    if inverseLogic
        strategy.entry("Short", strategy.long, qty = quantity)
    else 
        strategy.entry("Buy", strategy.long, qty = quantity)// Reset barsSinceEntry when entering a trade
    barsSinceEntry := 0

// Entry condition: Open a short order if the last "numCandlesToCheck" candles are red
if lastNCandlesRed
    if inverseLogic
        strategy.entry("Buy", strategy.long, qty = quantity)

    else 
        strategy.entry("Short", strategy.short, qty = quantity)
    // Reset barsSinceEntry when entering a trade
    barsSinceEntry := 0

// Increment barsSinceEntry
barsSinceEntry := barsSinceEntry + 1

// Exit condition: Close the position after 2 bars
if barsSinceEntry >= numCandlesToExit
    strategy.close("Buy")
    strategy.close("Short")