
La estrategia utiliza el canal de 24 periodos de Dongguan en combinación con la línea media de 200 periodos como su principal señal de negociación. Los puntos de entrada optan por hacer un descuento en las ondas rojas y verdes a la baja, y optan por hacer más en las ondas al alza.
La estrategia se basa principalmente en los siguientes puntos:
Se construye la ruta de Dongguan utilizando los máximos y mínimos de los 24 períodos, indicando la posibilidad de grandes caídas cuando el precio se rompe en la ruta.
La línea media de 200 ciclos como condición de filtro de espacio múltiple, si se rompe el canal de Dongxian y el precio está en el otro lado de la línea media, se cree que la situación puede revertirse.
La señal de entrada es:
El precio de la parada para el vacío es el precio más alto de las 3 líneas K más recientes, y el precio de la parada para el vacío es el precio de la parada menos el valor de la diferencia entre el precio de la parada y el precio de la apertura. El método de cálculo de la parada y el precio de la parada para hacer más es lo contrario al de la baja.
La ventaja de esta estrategia es que, mediante el uso de una combinación de filtros homogéneos de la vía de Dongxian, se evita la confusión de un solo indicador técnico, lo que mejora significativamente la tasa de éxito de la estrategia.
La estrategia tiene las siguientes ventajas:
Alta probabilidad de éxito: el uso combinado de la vía de Dongxian y el indicador de la línea media evita las pérdidas innecesarias causadas por el error de un solo indicador técnico.
El riesgo es controlado: el precio más alto / más bajo de los últimos días se utiliza como punto de parada, controlando de manera efectiva la pérdida individual. La parada es 3 veces la pérdida de parada, el riesgo de ganancias es mayor.
Simple y fácil de usar: los indicadores y la lógica son muy simples y claros, fáciles de entender e implementar.
Alta adaptabilidad: menos parámetros estratégicos y buena estabilidad en diferentes variedades y ciclos.
La estrategia enfrenta los siguientes riesgos:
Riesgo de situaciones extremas: Si se encuentra con una situación unilateral de gran magnitud, es fácil que se desencadene el stop loss o que se aumente la pérdida. Se puede responder con la liberación adecuada del stop loss, la reducción de la posición, etc.
Riesgo de error en la señal de salida: la adopción de una nueva señal de retorno como señal de salida, que puede entrar y salir con frecuencia en situaciones de conmoción, con pérdida innecesaria de puntos de deslizamiento. Se puede resolver mediante la optimización de la lógica de salida.
Riesgo de optimización de parámetros: la configuración inadecuada de los parámetros del ciclo y la línea media del canal de Dongguan puede causar una señal frecuente o lenta, que se puede reducir mediante optimización de parámetros y pruebas combinadas.
La estrategia se puede optimizar en las siguientes direcciones:
Los ciclos de los canales de Dongguan y los ciclos de la línea media se pueden optimizar para encontrar la combinación óptima de parámetros.
Se pueden probar diferentes proporciones de stop loss, equilibrio de ganancias y rentabilidad.
Se puede intentar combinar con otras señales de entrada de corrección de indicadores, como MACD, KD, etc., para mejorar la estabilidad de la estrategia.
Se puede optimizar la señal de salida para evitar salidas innecesarias en situaciones de crisis. La señal de salida también puede tener en cuenta los indicadores de tendencia, etc.
Se pueden desarrollar nuevas combinaciones de estrategias basadas en este marco de estrategias, como su uso en combinación con otros indicadores tipo canal, indicadores tipo lista, etc.
La idea general de la estrategia de la línea media lenta es clara y fácil de entender, y puede mejorar la estabilidad y la tasa de victoria de la estrategia mediante el uso mixto de la vía de Tongan y la línea media como señal de la estrategia. La configuración de la parada mayor que la parada hace que la ganancia sea buena, y la configuración de los parámetros es simple y fácil de implementar.
/*backtest
start: 2023-11-06 00:00:00
end: 2023-12-06 00:00:00
period: 1h
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/
// © Mysteriown
//@version=4
strategy("Lagged Donchian Channel + EMA", overlay = true)
//tradePeriod = time(timeframe.period,"0000-0000:1234567")?true:false
// ------------------------------------------ //
// ----------------- Inputs ----------------- //
// ------------------------------------------ //
period = input(24, title="Channel's periods")
Pema = input(200, title="EMA's periods ?")
ratio = input(3, title="Ratio TP", type=input.float)
loss = input(20, title="Risk Loss ($)")
lev = input(5, title="Leverage *...")
chan = input(title="Plot channel ?", type=input.bool, defval=false)
Bpos = input(title="Plot Bull positions ?", type=input.bool, defval=false)
bpos = input(title="Plot Bear positions ?", type=input.bool, defval=false)
labels = input(title="Plot labels of bets ?", type=input.bool, defval=true)
supp = input(title="Delete last labels ?", type=input.bool, defval=true)
// ------------------------------------------ //
// ---------- Canal, EMA and arrow ---------- //
// ------------------------------------------ //
pema = ema(close,Pema)
plot(pema, title="EMA", color=color.blue)
canalhaut = highest(period)[1]
canalbas = lowest(period)[1]
bear = close[1] > canalhaut[1] and close < open and high > pema
bull = close[1] < canalbas[1] and open < close and low < pema
canalhautplot = plot(chan? canalhaut:na, color=color.yellow)
canalbasplot = plot(chan? canalbas:na, color=color.yellow)
plotshape(bear, title='Bear', style=shape.triangledown, location=location.abovebar, color=color.red, offset=0)
plotshape(bull, title='Bull', style=shape.triangleup, location=location.belowbar, color=color.green, offset=0)
// ------------------------------------------ //
// ------------- Position Short ------------- //
// ------------------------------------------ //
SlShort = highest(3)
BidShort = close[1]
TpShort = BidShort-((SlShort-BidShort)*ratio)
deltaShort = (SlShort-BidShort)/BidShort
betShort = round(loss/(lev*deltaShort)*100)/100
cryptShort = round(betShort*lev/BidShort*1000)/1000
// if bear[1] and labels //and low < low[1]
// Lbear = label.new(bar_index, na, text="SHORT\n\nSL: " + tostring(SlShort) + "\n\nBid: " + tostring(BidShort) + "\n\nTP: " + tostring(TpShort) + "\n\nMise: " + tostring(betShort) + "\n\nCryptos: " + tostring(cryptShort), color=color.red, textcolor=color.white, style=label.style_labeldown, yloc=yloc.abovebar)
// label.delete(supp ? Lbear[1] : na)
var bentry=0.0
var bsl=0.0
var btp=0.0
if bear[1] and low < low[1]
bentry:=BidShort
bsl:=SlShort
btp:=TpShort
pbentry = plot(bpos? bentry:na, color=color.orange)
plot(bpos? (bentry+btp)/2:na, color=color.gray)
pbsl = plot(bpos? bsl:na, color=color.red)
pbtp = plot(bpos? btp:na, color=color.green)
fill(pbentry,pbsl, color.red, transp=70)
fill(pbentry,pbtp, color.green, transp=70)
// ------------------------------------------ //
// ------------- Position Long -------------- //
// ------------------------------------------ //
SlLong = lowest(3)
BidLong = close[1]
TpLong = BidLong + ((BidLong - SlLong) * ratio)
deltaBull = (BidLong - SlLong)/BidLong
betLong = round(loss/(lev*deltaBull)*100)/100
cryptLong = round(betLong*lev/BidLong*1000)/1000
// if bull[1] and labels //and high > high[1]
// Lbull = label.new(bar_index, na, text="LONG\n\nSL: " + tostring(SlLong) + "\n\nBid: " + tostring(BidLong) + "\n\nTP: " + tostring(TpLong) + "\n\nMise: " + tostring(betLong) + "\n\nCryptos: " + tostring(cryptLong), color=color.green, textcolor=color.white, style=label.style_labelup, yloc=yloc.belowbar)
// label.delete(supp ? Lbull[1] : na)
var Bentry=0.0
var Bsl=0.0
var Btp=0.0
if bull[1] and high > high[1]
Bentry:=BidLong
Bsl:=SlLong
Btp:=TpLong
pBentry = plot(Bpos?Bentry:na, color=color.orange)
plot(Bpos?(Bentry+Btp)/2:na, color=color.gray)
pBsl = plot(Bpos?Bsl:na, color=color.red)
pBtp = plot(Bpos?Btp:na, color=color.green)
fill(pBentry,pBsl, color.red, transp=70)
fill(pBentry,pBtp, color.green, transp=70)
// ------------------------------------------ //
// --------------- Strategie ---------------- //
// ------------------------------------------ //
Bear = bear[1] and low < low[1]
Bull = bull[1] and high > high[1]
if (Bear and strategy.opentrades==0)
strategy.order("short", false, 1, limit=BidShort)
strategy.exit("exit", "short", limit = TpShort, stop = SlShort)
strategy.cancel("short", when = high > SlShort or low < (BidShort+TpShort)/2)
strategy.close("short", when=bull)
if (Bull and strategy.opentrades==0)
strategy.order("long", true, 1, limit=BidLong)
strategy.exit("exit", "long", limit = TpLong, stop = SlLong)
strategy.cancel("long", when = low < SlLong or high > (BidLong+TpLong)/2)
strategy.close("long", when=bear)