Estrategia de negociación de diferenciales de Williams Alligator


Fecha de creación: 2023-09-25 17:42:27 Última modificación: 2023-09-25 17:42:27
Copiar: 0 Número de Visitas: 1616
1
Seguir
1617
Seguidores

Descripción general

La estrategia se basa en el indicador de Bill Williams, pero utiliza otro tipo de entrada de precios para el Heiken Ashi. Es una estrategia de scalping de línea corta que se aplica en el marco de tiempo de 1 minuto a 5 minutos.

Principio de estrategia

Las principales reglas de operación de esta estrategia son:

  1. El uso de filtros Heiken Ashi en lugar de filtros estándar como entrada de precios. El Heiken Ashi puede filtrar el ruido del mercado y identificar tendencias.

  2. Aplica las tres líneas medias de la Indicador de Pesca de Bill Williams: la línea inferior del cuello, la línea de los dientes y la línea de los labios. Son similares a las medias móviles y pueden determinar la dirección de la tendencia.

  3. Cuando las tres líneas equidistantes están dispuestas de la siguiente manera: la línea inferior de la cadera es la más baja, la línea dental está en el medio, la línea labial es la más alta, se indica una tendencia de múltiples cabezas; cuando están dispuestas de la siguiente manera: la línea inferior de la cadera es la más alta, la línea dental está en el medio, la línea labial es la más baja, se indica una tendencia de cabezas vacías.

  4. La entrada se juzga por la dirección de la entidad y la disposición de la línea de pesca de Heiken Ashi. Si la entidad está hacia arriba y la línea de pesca mira hacia arriba, hace más; si la entidad está hacia abajo y la línea de pesca mira hacia abajo, hace más.

  5. Cuando el orden de las líneas de pesca cambia, la tendencia se invierte y debe detenerse a tiempo.

  6. La gestión de riesgos con paradas fijas, puntos de parada y pérdidas. Se puede elegir un objetivo de puntos de ganancias, puntos de parada y seguimiento de paradas para controlar cada pérdida.

La estrategia combina un doble filtro, que utiliza tanto el reconocimiento de tendencias Heiken Ashi como el juicio de reversión de la línea de pesca, para formar una estrategia de negociación de líneas cortas de alta probabilidad.

Análisis de las ventajas

La estrategia tiene las siguientes ventajas principales:

  1. El filtro de doble indicador reduce las falsas señales. La combinación de Heiken Ashi y el cable de cañón mejora la calidad de la señal.

  2. El orden de las líneas de pesca es claramente fiable y no genera ambiguidad.

  3. Captura de operaciones de corta línea eficiente. Apto para operaciones de scalping de 1 minuto a 5 minutos de ciclo.

  4. La configuración de parámetros es simple. No se requiere una optimización compleja, se pueden usar pocos parámetros.

  5. Estricta gestión de riesgos. Control de pérdidas por punto de parada.

  6. Mecanismos de entrada y salida claros.

  7. Es fácil de copiar e implementar. La estrategia es fácil de usar incluso para los operadores novatos.

Análisis de riesgos

Los principales riesgos de esta estrategia son:

  1. Riesgo de retirada: las líneas de pesca generan señales frecuentes que aumentan la frecuencia de las transacciones y el costo de los puntos de deslizamiento.

  2. Riesgo de movimientos de choque. Las líneas de pesca se cruzarán con frecuencia en los movimientos de balanceo, lo que generará señales erróneas.

  3. Riesgo de optimización excesiva. La optimización incorrecta de los parámetros puede causar una curva de sobreajuste.

  4. Riesgo de fallo del indicador. La línea de pesca puede fallar por completo en situaciones extremas del mercado.

  5. El riesgo de que se rompa el stop loss. El riesgo de que se rompa rápidamente el stop loss puede desencadenar el stop loss y causar pérdidas.

  6. El riesgo de una alta frecuencia de transacción. La alta frecuencia de las transacciones aumenta los costos de las transacciones y la pérdida innecesaria de puntos de deslizamiento.

Se pueden mitigar los riesgos mencionados a través de la administración de expectancy Expectancy, la optimización de las estrategias de stop loss y el control de la frecuencia de las operaciones.

Dirección de optimización

La estrategia puede ser optimizada en los siguientes aspectos:

  1. La integración de otros indicadores para filtrar la señal mejora la tasa de éxito. Por ejemplo, la combinación de indicadores fuertes y débiles como el RSI.

  2. Configurar el ATR para detener el riesgo de pérdidas individuales.

  3. Agrega un módulo de administración de posiciones para optimizar el tamaño de cada apertura de posiciones. Puede aumentar las posiciones cuando la tendencia es más clara.

  4. Combinado con métodos de análisis técnico, como la morfología gráfica, mejora la precisión de la admisión.

  5. Optimización de los parámetros según el tipo de mercado (acciones, divisas, etc.) para que se ajusten mejor a la variedad.

  6. Añadir módulos de aprendizaje automático para lograr la optimización de la adaptación de los parámetros.

  7. Cálculo de la ganancia de Expectancy para optimizar el Stop Loss Ratio.

La estrategia puede convertirse en un conjunto de estrategias de negociación de corto plazo estables, con mejoras continuas.

Resumir

La estrategia utiliza Heiken Ashi en colaboración con el indicador de Bill Williams, para formar una estrategia de comercio de línea corta de alta probabilidad. Tiene las ventajas de un doble filtrado de indicadores, configuración de parámetros sencillos y un mecanismo de entrada y salida claro, que puede capturar efectivamente los cambios de tendencia para realizar operaciones de scalping. Pero también requiere estar alerta a los mercados de vibrante, los errores de comercio de whipsaws que se producen en el mercado y controlar el riesgo de pérdidas.

Código Fuente de la Estrategia
/*backtest
start: 2022-09-18 00:00:00
end: 2023-09-24 00:00:00
period: 4d
basePeriod: 1d
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/
// © 03.freeman
//Scalping strategy based on Bill Williams Alligator technique but applied to heikin ashi candles
//This strategy has to be applied to standard candles and low time frames (1min to 5min)
//@version=4
strategy("Bill Williams Alligator improved", shorttitle="Scalping alligator",overlay=true)
//source = input(close)
useHA = input (true,"Use heikin ashi candle?")

// ----------MA calculation - ChartArt-------------
smoothinput = input(1, minval=1, maxval=5, title='Moving Average Calculation: (1=SMA), (2=EMA), (3=WMA), (4=Linear), (5=VWMA)')

calc_ma(src,l) => 
    smoothinput == 1 ? sma(src, l):smoothinput == 2 ? ema(src, l):smoothinput == 3 ? wma(src, l):smoothinput == 4 ? linreg(src, l,0):smoothinput == 5 ? vwma(src,l):na
//----------------------------------------------

heikinashi_close = security(heikinashi(syminfo.tickerid), timeframe.period, close)
heikinashi_open = security(heikinashi(syminfo.tickerid), timeframe.period, open)
heikinashi_hl2 = security(heikinashi(syminfo.tickerid), timeframe.period, hl2)

direzione=heikinashi_close>heikinashi_open and heikinashi_close[1]>heikinashi_open[1]? 1 : heikinashi_close<heikinashi_open and heikinashi_close[1]<heikinashi_open[1]? -1 : 0

jawLength = input(13, minval=1, title="Jaw Length")
teethLength = input(8, minval=1, title="Teeth Length")
lipsLength = input(5, minval=1, title="Lips Length")
jawOffset = input(8, title="Jaw Offset")
teethOffset = input(5, title="Teeth Offset")
lipsOffset = input(3, title="Lips Offset")
jaw = calc_ma(heikinashi_hl2, jawLength)
teeth = calc_ma(heikinashi_hl2, teethLength)
lips = calc_ma(heikinashi_hl2, lipsLength)
plot(jaw, title="jaw",offset = jawOffset, color=#3BB3E4)
plot(teeth, title="teeth",offset = teethOffset, color=#FF006E)
plot(lips, title="lips",offset = lipsOffset, color=#36C711)

longCondition = direzione[0]==1 and jaw<teeth and jaw<lips and teeth<lips 
shortCondition = direzione[0]==-1 and jaw>teeth and jaw>lips and teeth>lips


//  Strategy: (Thanks to JayRogers)
// === STRATEGY RELATED INPUTS ===
//tradeInvert     = input(defval = false, title = "Invert Trade Direction?")
// the risk management inputs
inpTakeProfit   = input(defval = 0, title = "Take Profit Points", minval = 0)
inpStopLoss     = input(defval = 0, title = "Stop Loss Points", minval = 0)
inpTrailStop    = input(defval = 0, title = "Trailing Stop Loss Points", minval = 0)
inpTrailOffset  = input(defval = 0, title = "Trailing Stop Loss Offset Points", minval = 0)

// === RISK MANAGEMENT VALUE PREP ===
// if an input is less than 1, assuming not wanted so we assign 'na' value to disable it.
useTakeProfit   = inpTakeProfit  >= 1 ? inpTakeProfit  : na
useStopLoss     = inpStopLoss    >= 1 ? inpStopLoss    : na
useTrailStop    = inpTrailStop   >= 1 ? inpTrailStop   : na
useTrailOffset  = inpTrailOffset >= 1 ? inpTrailOffset : na

// === STRATEGY - LONG POSITION EXECUTION ===
enterLong() => direzione[0]==1 and jaw<teeth and jaw<lips and teeth<lips // functions can be used to wrap up and work out complex conditions
exitLong() => jaw>teeth or jaw>lips or teeth>lips
strategy.entry(id = "Buy", long = true, when = enterLong() )    // use function or simple condition to decide when to get in
strategy.close(id = "Buy", when = exitLong() )                  // ...and when to get out

// === STRATEGY - SHORT POSITION EXECUTION ===
enterShort() => direzione[0]==-1 and jaw>teeth and jaw>lips and teeth>lips
exitShort() => jaw<teeth or jaw<lips or teeth<lips
strategy.entry(id = "Sell", long = false, when = enterShort())
strategy.close(id = "Sell", when = exitShort() )

// === STRATEGY RISK MANAGEMENT EXECUTION ===
// finally, make use of all the earlier values we got prepped
strategy.exit("Exit Buy", from_entry = "Buy", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)
strategy.exit("Exit Sell", from_entry = "Sell", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)

// === Backtesting Dates === thanks to Trost

testPeriodSwitch = input(false, "Custom Backtesting Dates")
testStartYear = input(2020, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testStartHour = input(0, "Backtest Start Hour")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,testStartHour,0)
testStopYear = input(2020, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(31, "Backtest Stop Day")
testStopHour = input(23, "Backtest Stop Hour")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,testStopHour,0)
testPeriod() =>
    time >= testPeriodStart and time <= testPeriodStop ? true : false
isPeriod = true
// === /END

if not isPeriod
    strategy.cancel_all()
    strategy.close_all()