Última N Candela Estrategia de lógica inversa

El autor:¿ Qué pasa?, Fecha: 2023-12-26 11:00:29
Las etiquetas:

img

Resumen general

La idea principal de esta estrategia es determinar largo o corto basado en el color de las últimas N velas. Si las últimas N velas son verdes, ir largo; si las últimas N velas son rojas, ir corto. La parte única es la adición de un parámetro lógica inversa que puede revertir la lógica original. Cuando el parámetro lógica inversa es cierto, las últimas N velas verdes serán cortas, y las últimas N velas rojas serán largas.

Principio de la estrategia

Esta estrategia se basa principalmente en los siguientes parámetros importantes:

  1. numCandlesToCheck: Se utiliza para especificar el número de velas a comprobar
  2. numCandlesToExit: Especifica el número de velas después de la posición de apertura que necesita salir
  3. InverseLogic: el parámetro de lógica inversa. Cuando es cierto, la lógica larga y corta original se invierte

La lógica clave es atravesar las últimas velas numCandlesToCheck a través de un bucle for, y contar las velas verdes y rojas consecutivas en tiempo real. Si las velas rojas consecutivas ≥numCandlesToCheck, marcar lastNCandlesRed como verdadero. Si las velas verdes consecutivas ≥numCandlesToCheck, marcar lastNCandlesGreen como verdadero.

Cuando lastNCandlesGreen es verdadero, ir largo si inverseLogic es falso, de lo contrario ir corto.

No importa si es largo o corto, el contador de baresSinceEntry se restablecerá a 0 después de la posición de apertura.

Análisis de ventajas

Esta es una estrategia interesante que utiliza el color de las velas para tomar decisiones, con un parámetro lógica inversa que puede ajustar flexiblemente la lógica larga y corta.

  1. La idea es novedosa y puede constituir una inversión inversa en contra de la lógica común del mercado
  2. El código es claro y conciso, fácil de entender y modificar
  3. Puede encontrar la combinación óptima de parámetros ajustando los parámetros
  4. No importa la condición del mercado, esta estrategia puede seguir funcionando y generar señales

Análisis de riesgos

También hay algunos riesgos a tener en cuenta para esta estrategia:

  1. El color de las velas no puede representar plenamente las condiciones del mercado, existe el riesgo de rastrear una señal incorrecta
  2. No se puede determinar el valor óptimo para numCandlesToCheck
  3. No se puede determinar el valor óptimo para numCandlesToExit
  4. El parámetro de lógica inversa incorrecto puede amplificar las pérdidas
  5. Incapacidad para controlar eficazmente la pérdida de parada única

Para hacer frente a estos riesgos, pueden adoptarse las siguientes medidas de control y optimización:

  1. Aumentar otros filtros para evitar señales incorrectas, por ejemplo, determinar la tendencia en un marco de tiempo más largo
  2. Recorrer diferentes valores de parámetros para encontrar la combinación óptima de parámetros
  3. Añadir un mecanismo de stop loss para controlar pérdidas individuales
  4. Verificar la eficacia del parámetro de lógica inversa

Direcciones de optimización

Las principales direcciones de optimización para esta estrategia son:

  1. Aumentar la condición de la carpeta de pedidos para evitar quedar atrapados
  2. Optimiza los valores de numCandlesToCheck y numCandlesToExit
  3. Añadir indicador de tendencia en un marco de tiempo más largo para filtrar la señal falsa
  4. Agregue stop loss y take profit
  5. Prueba de retroceso en diferentes productos para verificar su eficacia
  6. Comparar el retorno entre la lógica original y invertida

Conclusión

La idea general de esta estrategia es clara y fácil de entender, generando señales comerciales basadas simplemente en la determinación del color de la vela. El ajuste de parámetros puede formar ricas variaciones de combinación para la optimización dirigida a diferentes entornos y productos del mercado. También es necesario prestar atención a algunos riesgos potenciales y tomar las medidas necesarias para controlarlos. Al enriquecer continuamente el contenido de la estrategia, esta estrategia puede convertirse en una valiosa para seguir optimizando para el comercio a largo plazo.


/*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")


Más.