
El sistema binario de EMA es un sistema de seguimiento de tendencias basado en promedios móviles de dos índices. Utiliza dos medias EMA de diferentes períodos para determinar la dirección de la tendencia actual y tomar decisiones comerciales en función de la relación entre el precio y la media EMA. El sistema es lógico, fácil de operar y capta muy bien las tendencias del mercado.
La estrategia se basa principalmente en dos EMA, una EMA de ciclo rápido y otra EMA de ciclo lento. Cuando el EMA rápido está por encima del EMA lento, se considera bullish; cuando el EMA rápido está por debajo del EMA lento, se considera bearish.
De acuerdo con la relación entre el precio y las dos líneas medias EMA, la línea K puede dividirse en diferentes zonas de negociación:
Cuando la EMB está por encima de la EMB lenta y el precio está por encima de la EMB rápida (G1), se puede comprar una zona de compra fuerte.
Cuando la EMA está por debajo de la EMA lenta y el precio está por debajo de la EMA rápida (R1), se puede vender la zona por fuerte.
Cuando un EMA se cruza rápido o lento, se pueden dividir las zonas amarillas (alerta) y naranjas (espera) según la relación del precio con los dos EMA. Estas dos zonas representan la posibilidad de un cambio de tendencia que se necesita en combinación con otras zonas y otros indicadores para decidir sobre el comercio.
La estrategia emite señales de compra y venta en función de la variación de los precios en las diferentes zonas de negociación. En las zonas fuertes G1 y R1, la estrategia genera señales directamente; en las zonas de alerta y observación, se requieren otros indicadores de confirmación.
Además, la estrategia también introduce el StochRSI para ayudar a determinar cuándo comprar o vender. El StochRSI en el caso de una sobrecompra o sobreventa puede servir como una señal adicional de compra o venta.
La lógica de la estrategia es simple y clara, fácil de entender y de implementar.
El funcionamiento basado en tendencias, capaz de capturar las tendencias medianas y largas con eficacia;
Distinguir las zonas fuertes de las zonas de advertencia/observación contrarias a la tendencia, donde las señales de negociación son más fiables;
En combinación con el StochRSI, se puede determinar con mayor precisión cuándo comprar o vender.
Sistemas puramente tendenciales, que pueden ser ineficaces en mercados donde no hay una clara tendencia;
La configuración incorrecta del ciclo EMA puede dar lugar a señales falsas;
Las zonas de alerta y observación tienen un alto riesgo de transacción y deben ser tratadas con prudencia.
El riesgo de que el paro de pérdidas lleve a una expansión de las pérdidas no se considera.
Los siguientes métodos pueden ayudar a reducir el riesgo:
Se puede elegir una variedad con una clara tendencia y suspender la negociación cuando la tendencia es débil.
Optimización de los parámetros del ciclo EMA para reducir la probabilidad de señales falsas.
La introducción de otros indicadores en las zonas de alerta anticipada y de observación para la confirmación y reducción del riesgo de negociación;
Establezca un punto de parada para controlar las pérdidas individuales.
La estrategia puede ser optimizada en los siguientes aspectos:
La introducción de más indicadores de confirmación, como MACD, KDJ, etc., para mejorar la calidad de la señal;
La introducción de condiciones de filtración en las zonas de negociación, como el aumento del volumen de transacciones y la mejora de la tasa de éxito de las operaciones;
Ajustar los parámetros de EMA de acuerdo con la situación dinámica del mercado y establecer los parámetros de optimización;
Aumentar las estrategias de stop loss, que se detienen cuando las pérdidas alcanzan una cierta proporción;
Optimizar la gestión de fondos y establecer una gestión razonable de las posiciones;
Prueba de optimización en diferentes variedades para encontrar la combinación óptima de parámetros.
La introducción de más indicadores auxiliares de juicio, optimización de parámetros dinámicos, estrategias de parada de pérdidas, etc., mejora la estabilidad del sistema y reduce el riesgo desde el punto de vista de la administración de fondos, etc. Esta estrategia puede obtener mejores resultados comerciales.
El sistema de comercio de doble EMA es un sistema de comercio de seguimiento de tendencias basado en la comparación de la media de doble EMA. Distingue entre diferentes zonas de comercio, determina la dirección de la tendencia según la relación entre el precio y la media de doble EMA y genera una señal de comercio. Es un sistema de seguimiento de tendencias que es lógicamente claro y fácil de implementar.
/*backtest
start: 2023-01-01 00:00:00
end: 2023-10-25 00:00:00
period: 1d
basePeriod: 1h
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/
// © Vvaz_
//base-on CDC ActionZone By Piriya a simple 2EMA and is most suitable for use with medium volatility market
//@version=4
strategy(title="Vin's Playzone" ,shorttitle="VPz", overlay=true, margin_long=4, margin_short=2)
//variable
srcf = input(title="Source",type=input.source,defval=close)
tffix = input(title="Fixed Timeframe",type=input.bool,defval=true)
tfn = input(title="Timeframe in",type=input.resolution,defval="D")
ema1 = input(title="Fast EMA",type=input.integer,defval=12)
ema2 = input(title="Slow EMA",type=input.integer,defval=26)
ema3 = input(title="EMA 100",type=input.bool,defval=true)
smooter =input(title="Smoothing period (1 = no smoothing)",type=input.integer,defval=2)
fillbar =input(title="Fill Bar Color",type=input.bool,defval=true)
emasw = input(title="Show EMA",type=input.bool,defval=true)
bssw = input(title="Show Buy-Sell signal",type=input.bool,defval=true)
plotmm = input(title="Show Buy-Sell Momentum",type=input.bool,defval=true)
plotmmsm = input(title="RSI Smoothing",type=input.integer,defval=0,minval=0,maxval=2)
//math
xcross =ema(srcf,smooter)
efast = tffix ? ema(security(syminfo.tickerid,tfn,ema(srcf,ema1), gaps = barmerge.gaps_off,lookahead = barmerge.lookahead_on),smooter) :ema(xcross,ema1)
eslow = tffix ? ema(security(syminfo.tickerid,tfn,ema(srcf,ema2), gaps = barmerge.gaps_off,lookahead = barmerge.lookahead_on),smooter) :ema(xcross,ema2)
ema3x = ema(xcross,100)
//Zone
Bull = efast > eslow
Bear = efast < eslow
G1 = Bull and xcross > efast //buy
G2 = Bear and xcross > efast and xcross > eslow //pre-buy1
G3 = Bear and xcross > efast and xcross < eslow //pre-buy2
R1 = Bear and xcross < efast //sell
R2 = Bull and xcross < efast and xcross < eslow //pre-sell1
R3 = Bull and xcross < efast and xcross > eslow //pre-sell2
//color
bcl = G1 ? color.green : G2 ? color.yellow : G3 ? color.orange :R1 ? color.red :R2 ? color.orange : R3 ? color.yellow : color.black
barcolor(color=fillbar ? bcl : na )
//plots
line1 = plot(ema3 ? ema3x : na ,"EMA100",color=color.white)
line2 = plot(emasw ? efast : na ,"Fast EMA",color=color.green)
line3 = plot(emasw ? eslow : na ,"Slow EMA",color=color.red)
fillcl = Bull ? color.green : Bear ? color.red : color.black
fill(line2,line3,fillcl)
//actions
buywhen = G1 and G1[1]==0
sellwhen = R1 and R1[1]==0
bullish = barssince(buywhen) < barssince(sellwhen)
bearish = barssince(sellwhen) < barssince(buywhen)
buy = bearish[1] and buywhen
sell = bullish[1] and sellwhen
bullbearcl = bullish ? color.green : bearish ? color.red : color.black
//plot trend
plotshape(bssw ? buy : na ,style=shape.arrowup,title="BUY",location=location.belowbar,color=color.green)
plotshape( bssw ? sell : na ,style=shape.arrowdown ,title="Sell",location=location.abovebar,color=color.red)
// Momentum Signal using StochRSI
smoothK = input(5,"StochRSI smooth K",type=input.integer,minval=1)
smoothD = input(4,"StochRSI smooth D",type=input.integer,minval=1)
RSIlen = input(14,"RSI length",type=input.integer,minval=1)
STOlen = input(14,"Stochastic length",type=input.integer,minval=1)
SRsrc = input(close,"Source for StochasticRSI",type=input.source)
OSlel = input(20,"Oversold Threshold",type=input.float,minval=0.00)
OBlel = input(80,"Oversold Threshold",type=input.float,minval=0.00)
rsil = rsi(SRsrc,RSIlen)
K = sma(stoch(rsil,rsil,rsil,STOlen),smoothK)
D = sma(K,smoothD)
buymore = iff( bullish ,iff(D < OSlel and crossover(K,D), 2, iff(D > OSlel and crossover(K,D), 1,0)),0)
sellmore = iff( bearish,iff(D > OBlel and crossunder(K,D), 2, iff(D < OBlel and crossunder(K,D), 1,0)),0)
//plot momentum
plotshape(plotmm ? buymore > plotmmsm ? buymore : na : na ,"Buy More!" ,style=shape.triangleup,location=location.belowbar,color=color.green)
plotshape(plotmm ? sellmore > plotmmsm ? sellmore : na : na ,"Sell More!" ,style=shape.triangledown,location=location.abovebar,color=color.red)
// === INPUT BACKTEST RANGE ===
FromYear = input(defval = 2009, title = "From Year", minval = 2009)
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
ToYear = input(defval = 9999, title = "To Year", minval = 2009)
ToMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
ToDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31)
// === FUNCTION EXAMPLE ===
start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window
finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window
window() => time >= start and time <= finish ? true : false // create function "within window of time"
//stratgy excuter
strategy.entry("Long",true,when=window() and buy or buymore)
strategy.close("Long",when=window() and sell or sellmore,comment="TP Long")
strategy.entry("Short",false,when=window() and sell or sellmore)
strategy.close("Short",when=window() and buy or buymore,comment="TP Short")