Estrategia del canal Donchian y del índice Big Trade de Larry Williams


Fecha de creación: 2024-04-12 17:27:25 Última modificación: 2024-04-12 17:27:25
Copiar: 7 Número de Visitas: 2820
1
Seguir
1617
Seguidores

Estrategia del canal Donchian y del índice Big Trade de Larry Williams

Descripción general

La estrategia combina los tres indicadores del canal de Tongan, el índice de gran comercio de Larry Williams (LWTI) y el promedio móvil de transacciones para operar. Hacer más cuando el precio rompe la vía ascendente del canal de Tongan, el LWTI es verde y el volumen de transacciones es mayor que el promedio móvil; hacer vacío cuando el precio rompe la vía descendente del canal de Tongan, el LWTI es rojo y el volumen de transacciones es mayor que el promedio móvil.

Principio de estrategia

  1. El canal de Dongxian: genera señales de acoplamiento cuando el precio rompe el canal y genera señales de acoplamiento cuando rompe el canal.
  2. El índice de Larry Williams: LWTI solo permite hacer más cuando el color es verde y solo permite hacer menos cuando el color es rojo.
  3. El volumen de transacción: se permite abrir una posición cuando el volumen de transacción actual es mayor que el promedio móvil del volumen de transacción.
  4. Contador de transacciones: Previene la repetición de la apertura de posiciones en la misma dirección de tendencia y solo se permite la apertura de nuevas posiciones cuando el precio rompa la vía media del canal de Dongxian.
  5. Stop Loss: la distancia de stop-loss calculada según el ATR al abrir una posición, la distancia de stop-loss es la distancia de stop-loss multiplicada por el riesgo por la ganancia.

Ventajas estratégicas

  1. La combinación de varios indicadores para confirmar la señal de transacción puede filtrar eficazmente las señales falsas y mejorar la calidad de la señal.
  2. Paradas y pérdidas dinámicas - Las distancias de paradas y pérdidas se ajustan dinámicamente según la volatilidad para adaptarse mejor a los cambios en el mercado.
  3. Controlar la frecuencia de las operaciones mediante el contador de operaciones para evitar la repetición de la apertura de posiciones en la misma tendencia.
  4. Freno de ganancias por riesgo - Establece una posición de freno de ganancias por riesgo, de modo que el margen de ganancias sea mayor que el riesgo.

Riesgo estratégico

  1. Riesgo de parámetros - La configuración de diferentes parámetros tiene un gran impacto en el rendimiento de la estrategia, que necesita ser optimizada en función de las diferentes características y ciclos del mercado.
  2. Riesgo de mercado en turbulencia - En un entorno de mercado en turbulencia, la volatilidad frecuente puede llevar a que las estrategias abran posiciones con frecuencia y se desempeñen mal.
  3. Riesgo de tendencia - Si la tendencia no es sostenida, puede haber una tendencia a la baja frecuente, lo que aumenta las pérdidas.
  4. Riesgo de los cisnes negros: los indicadores pueden fallar en situaciones extremas y las estrategias no funcionan bien.

Dirección de optimización de la estrategia

  1. Optimización de parámetros para diferentes variedades y ciclos para encontrar la combinación óptima de parámetros.
  2. Aumentar las condiciones de filtración de tendencias, como el uso de líneas medias o indicadores de movimiento, y abrir posiciones solo cuando la tendencia es clara, reduciendo el número de operaciones en un entorno de crisis.
  3. Las estrategias de ruptura de alcance pueden ser consideradas para un entorno de ciudad convulsionada.
  4. Optimización de la lógica de stop-loss, introduciendo métodos como el stop móvil o el stop-loss de cola.
  5. En caso de situaciones extremas, se pueden considerar medidas como la introducción de la gestión de fondos fijos y la limitación máxima de retiros.

Resumir

La estrategia del índice de transacciones de la cadena de Tongan y Larry Williams es una estrategia de comercio de seguimiento de tendencias clásica. Capturar la dirección de la tendencia a través de la cadena de Tongan, usar indicadores como LWTI, volumen de transacciones, filtro de señales, detener el deterioro dinámico, control riguroso del riesgo, en general, es un marco estratégico con un rendimiento estable. Sin embargo, hay que tener en cuenta que la estrategia es más sensible a los parámetros, no funciona bien en un entorno de mercado inestable y se recomienda su uso en mercados de tendencia.

Código Fuente de la Estrategia
/*backtest
start: 2024-04-04 00:00:00
end: 2024-04-11 00:00:00
period: 1m
basePeriod: 1m
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/
// © DillonGrech
//
//This is a Donchian Channel Trading Strategy which was found through the 
//YouTube channel TradingLab. 
//
//This Strategy uses the Donchian Channel, Larry Williams Large Trade Index,
//and Volume with Moving Average indicators for long and short trades.
//
//Strategy will enter based off indicator entry conditions and will not
//re-enter a trade until the price crosses through the Donchian Channel
//basis line (to prevent re-entering trades in same trend). Strategy will
//exit at stop loss or take profit, or when price crosses donchian basis.
//
//The strategy has been coded by Dillon Grech as part of his YouTube channel
//and a detailed video can be found on his channel at:
//https://www.youtube.com/c/DillonGrech
//https://www.youtube.com/watch?v=5IFe2Vjf61Y
//Source code and template files can be found on his GitHub at:
//https://github.com/Dillon-Grech
//==============================================================================
//@version=5
strategy("Donchian Channel Strategy [DillonGrech]", overlay=true, margin_long=100, margin_short=100)

//==============================================================================
//DONCHIAN CHANNEL
//==============================================================================
//Allow user to select whether they would like to use indicator
Don_Input = input(true, title='Use Donchian Channel?', group = "Donchian Settings")

//Indicator
don_length = input.int(96, minval = 1, group = "Donchian Settings")
don_lower  = ta.lowest(don_length)
don_upper  = ta.highest(don_length)
don_basis  = math.avg(don_upper, don_lower)
plot(don_basis,     "Don Basis", color = #FF6D00)
u = plot(don_upper, "Don Upper", color = #2962FF)
l = plot(don_lower, "Don Lower", color = #2962FF)
fill(u, l, color = color.rgb(33, 150, 243, 95), title = "Background")

//Conditions - Enter trades when there is a cross of price and previous donchian channel value
Ind_1_L = Don_Input == false ? false : ta.crossover(close,don_upper[1])
Ind_1_S = Don_Input == false ? false : ta.crossunder(close,don_lower[1])

//==============================================================================
//LARRY WILLIAMS LARGE TRADE INDEX (LWTI) - LOXX
//==============================================================================
//Allow user to select whether they would like to use indicator
LWTI_Input = input(true, title='Use LWTI?', group = "LWTI Settings")

//Indicator
greencolor = #2DD204
redcolor = #D2042D 

variant(type, src, len) =>
    sig = 0.0
    if type == "SMA"
        sig := ta.sma(src, len) 
    else if type == "EMA"
        sig := ta.ema(src, len) 
    else if type == "WMA"
        sig := ta.wma(src, len)   
    else if type == "RMA"
        sig := ta.rma(src, len)  
    sig
    
LWTI_per = input.int(25, "Period", group = "LWTI Settings")
LWTI_smthit = input.bool(false, "Smooth LWPI?", group = "LWTI Settings")
LWTI_type = input.string("SMA", "Smoothing Type", options = ["EMA", "WMA", "RMA", "SMA"], group = "LWTI Settings")
LWTI_smthper = input.int(20, "Smoothing Period", group = "LWTI Settings")

LWTI_ma = ta.sma(close - nz(close[LWTI_per]), LWTI_per)
LWTI_atr = ta.atr(LWTI_per)
LWTI_out = LWTI_ma/LWTI_atr * 50 + 50
LWTI_out := LWTI_smthit ? variant(LWTI_type, LWTI_out, LWTI_smthper) : LWTI_out

LWTI_colorout = LWTI_out > 50 ? greencolor : redcolor

//Conditions - Enter on color of indicator
Ind_2_L = LWTI_Input == false ? true : LWTI_colorout == greencolor
Ind_2_S = LWTI_Input == false ? true : LWTI_colorout == redcolor

//==============================================================================
//VOLUME INDICATOR
//==============================================================================
//Allow user to select whether they would like to use indicator
Vol_Input = input(true, title='Use Volume?', group = "Volume Settings")

//Indicator
Vol_Ma_Period = input.int(30,"Volume MA Period", group = "Volume Settings")
Vol_Ma = ta.sma(volume,Vol_Ma_Period)

//Conditions - Enter when volume is greater than moving average
Ind_3_L = Vol_Input == false ? true : volume > Vol_Ma
Ind_3_S = Vol_Input == false ? true : volume > Vol_Ma

//==============================================================================
//DONCHIAN CHANNEL TRADE COUNTER
//==============================================================================
//Stores whether a trade has been taken, and resets when there is a cross of price and donchain basis
Trade_Counter = float(0)
Don_Basis_Cross = ta.cross(don_basis[1], close)
if strategy.position_size!=0
    Trade_Counter := 1
else if Don_Basis_Cross
    Trade_Counter := 0
else 
    Trade_Counter := Trade_Counter[1]

Plot_Trade_Counter = input.bool(false, "Plot Trade Position Counter?", group = "Plot Settings")
plotchar(Plot_Trade_Counter and Trade_Counter == 0 ? true : false, color = na, text = '0')
plotchar(Plot_Trade_Counter and Trade_Counter == 1 ? true : false, color = na, text = '1')

//==============================================================================
//ENTRY CONDITIONS
//==============================================================================
entry_long  = strategy.position_size<=0 and Ind_1_L and Ind_2_L and Ind_3_L and Trade_Counter[1] == 0
entry_short = strategy.position_size>=0 and Ind_1_S and Ind_2_S and Ind_3_S and Trade_Counter[1] == 0

if(entry_long)
    strategy.entry("Long Entry", strategy.long)
if(entry_short)
    strategy.entry("Short Entry", strategy.short)

//==============================================================================
// TAKE PROFIT AND STOP LOSS CONDITIONS
//==============================================================================
Stop_Input   = input(true, title='Use Stop Loss?', group = "Risk Settings")
Profit_Input = input(true, title='Use Take Profit?', group = "Risk Settings")
Profit_RR = input.float(2.0,"Risk Reward Profit Target", group = "Risk Settings")

//Store Price on new entry signal
Entry_Price = strategy.opentrades.entry_price(strategy.opentrades - 1)

//Store Donchain Channel Basis value on new entry signal
Entry_Don_Basis = float(0.0)
if strategy.position_size == 0 or entry_long or entry_short
    Entry_Don_Basis := don_basis
else
    Entry_Don_Basis := Entry_Don_Basis[1]

//Get stop loss distance
Stop_Distance = math.abs(Entry_Price - Entry_Don_Basis)*1.02

//For Long Trades, find the stop loss level
Stop_L = float(0.0)
if Stop_Input == true
    Stop_L := Entry_Price - Stop_Distance
else
    na

//For Long Trades, find the profit level
Profit_L = float(0.0)
if Profit_Input == true
    Profit_L := Entry_Price + Stop_Distance*Profit_RR
else
    na

//For Short Trades, find the stop loss level
Stop_S = float(0.0)
if Stop_Input == true
    Stop_S   := Entry_Price + Stop_Distance
else
    na

//For Short Trades, find the profit level
Profit_S = float(0.0)
if Profit_Input == true
    Profit_S := Entry_Price - Stop_Distance*Profit_RR
else
    na

//Plot profit and stop loss levels for long and short trades
plot(strategy.position_size > 0 ? Profit_L : na, color=color.lime, style=plot.style_linebr, linewidth=2)
plot(strategy.position_size > 0 ? Stop_L : na,   color=color.red,  style=plot.style_linebr, linewidth=2)
plot(strategy.position_size < 0 ? Profit_S : na, color=color.lime, style=plot.style_linebr, linewidth=2)
plot(strategy.position_size < 0 ? Stop_S : na,   color=color.red,  style=plot.style_linebr, linewidth=2)

//==============================================================================
//EXIT ORDERS
//==============================================================================
//Exit long trades
if Stop_Input
    strategy.exit(id = 'Exit Long', from_entry ='Long Entry', comment='Long Stop',  stop = Stop_L)

if Profit_Input
    strategy.exit(id = 'Exit Long', from_entry ='Long Entry', comment='Long Profit', limit = Profit_L)

//Exit short trades
if Stop_Input
    strategy.exit(id = 'Exit Short', from_entry ='Short Entry', comment='Short Stop', stop = Stop_S)

if Profit_Input
    strategy.exit(id = 'Exit Short', from_entry ='Short Entry', comment='Short Profit', limit = Profit_S)

//==============================================================================
//CLOSE ORDERS
//==============================================================================
exit_long  = close < don_basis
exit_short = close > don_basis

if(exit_long)
    strategy.close("Long Entry", comment='Long Close', qty_percent=100)
if(exit_short)
    strategy.close("Short Entry", comment='Short Close', qty_percent=100)