
La estrategia determina la tendencia del mercado calculando el cruce de las líneas medias de los EMA de dos períodos diferentes y, en consecuencia, genera una señal de negociación. Cuando el EMA de corto plazo atraviesa el EMA de largo plazo, se considera que el mercado entra en una tendencia alcista, la estrategia abrirá más posiciones; Cuando el EMA de corto plazo atraviesa el EMA de largo plazo, se considera que el mercado entra en una tendencia descendente, la estrategia se retira de la posición.
La estrategia se basa en la teoría de la horquilla de la línea media doble EMA. La línea media doble EMA se divide en EMA larga y EMA corta. El parámetro de EMA corto se establece en 10 días y el parámetro de EMA largo en 21 días.
Cuando la línea corta pasa por la línea larga, se genera una señal de compra; cuando la línea corta pasa por la línea larga, se genera una señal de venta. La estrategia también establece un umbral de tasa de crecimiento, solo se abre una posición adicional cuando la tasa de crecimiento supera el umbral y se liquida cuando la caída supera el umbral.
Concretamente, las condiciones de compra son EMAs cortas más altas que EMAs largas, y el crecimiento del precio de las acciones es superior al umbral positivo establecido; las condiciones de liquidación son EMAs cortas más bajas que EMAs largas, y el crecimiento del precio de las acciones es inferior al umbral negativo establecido.
Esta estrategia es más simple y confiable en general, determina la tendencia de los precios a través de la cruz de dos EMA y establece un umbral de crecimiento para emitir una señal de negociación. En comparación con la cruz de una sola línea media, se pueden filtrar algunas señales falsas.
/*backtest
start: 2022-11-14 00:00:00
end: 2023-11-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy(title="ema(ema10-21)", overlay=true, pyramiding = 0, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, initial_capital = 15000, commission_type = strategy.commission.percent, commission_value = 0.2)
useTimeLimit = input(defval = false, title = "Use Start Time Limiter?")
startYear = input(defval = 2016, title = "Start From Year", minval = 0, step = 1)
startMonth = input(defval = 05, title = "Start From Month", minval = 0,step = 1)
startDay = input(defval = 01, title = "Start From Day", minval = 0,step = 1)
startHour = input(defval = 00, title = "Start From Hour", minval = 0,step = 1)
startMinute = input(defval = 00, title = "Start From Minute", minval = 0,step = 1)
startTimeOk() => true
lenght0 = input(10)
lenght1 = input(21)
source = close
EmaShort = ema(ema(source, lenght0), lenght0)
EmaLong = ema(ema(source, lenght1),lenght1)
plot(EmaShort, color=red)
plot(EmaLong, color=purple)
growth = ((EmaShort-EmaLong)*100)/((EmaShort+EmaLong)/2)
thresholdUp = input(defval=0.05, title="Threshold Up", type=float, step=0.01)
thresholdDown = input(defval=-0.165, title="Threshold Down", type=float, step=0.001)
if( startTimeOk() )
buy_condition = EmaShort > EmaLong and growth > thresholdUp
buy_exit_condition = EmaShort < EmaLong and growth < thresholdDown
strategy.entry("buy", strategy.long, comment="buy", when=buy_condition)
strategy.close(id='buy', when=buy_exit_condition)