Estrategia del sistema de medias móviles sólidas

El autor:¿ Qué pasa?, Fecha: 2023-11-24 15:11:18
Las etiquetas:

img

Resumen general

Esta estrategia es un sistema de promedio móvil basado en 4 SMMA (Smoothed Moving Average) con diferentes períodos y 1 indicador EMA. Combina múltiples herramientas de análisis técnico para formar una estrategia de negociación a través del juicio de tendencia. Esta estrategia es principalmente adecuada para el comercio intradiario de bonos de 15 minutos EURUSD de alto apalancamiento.

Principio de la estrategia

La estrategia utiliza 4 SMMA con diferentes parámetros (3, 6, 9, 50) y 1 EMA (200) para construir un sistema de promedios móviles de varios niveles. El indicador SMMA puede filtrar eficazmente el ruido del mercado y determinar la dirección de la tendencia. El indicador EMA detecta tendencias a largo plazo.

Cuando el promedio móvil a corto plazo (como SMMA de 3 períodos) cruza por encima del promedio móvil a largo plazo (como EMA de 200 períodos), se genera una señal de compra. Cuando el promedio móvil a corto plazo cruza por debajo del promedio móvil a largo plazo, se genera una señal de venta. Al juzgar la disposición de múltiples promedios móviles, se determina la dirección de la tendencia.

Además, la estrategia también establece puntos de stop-profit y stop-loss para controlar los riesgos.

Análisis de ventajas

La estrategia tiene las siguientes ventajas:

  1. La estructura de la media móvil de varios niveles puede determinar eficazmente la dirección de la tendencia y reducir las señales falsas.

  2. El indicador SMMA filtra eficazmente el ruido del mercado y el indicador EMA detecta tendencias a largo plazo.

  3. Es adecuado para cuentas de alto apalancamiento para amplificar las ganancias comerciales.

  4. Los puntos de detención de ganancias y de detención de pérdidas se establecen para controlar eficazmente los riesgos.

  5. Optimiza las variedades de negociación (EURUSD) y los ciclos (15 minutos) para que sea más ventajoso.

Análisis de riesgos

La estrategia también presenta los siguientes riesgos:

  1. La gran cantidad de medias móviles puede perder oportunidades de inversión a corto plazo.

  2. El alto apalancamiento amplifica las pérdidas mientras amplifica las ganancias.

  3. Cuando el promedio móvil genera una señal, la tendencia a corto plazo puede haberse invertido ya.

  4. El tipo de cambio EURUSD puede experimentar violentas fluctuaciones, lo que conlleva mayores riesgos.

En respuesta a estos riesgos, podemos ajustar adecuadamente la relación de apalancamiento, optimizar los parámetros de la media móvil, introducir otros indicadores para juzgar la inversión de tendencia, etc. para la optimización.

Direcciones de optimización

Las principales direcciones de optimización de esta estrategia incluyen:

  1. Evaluar el rendimiento de las diferentes variedades y ciclos y seleccionar los parámetros óptimos.

  2. Prueba diferentes combinaciones y cantidades de medias móviles.

  3. Aumentar los indicadores de volumen o volatilidad para determinar los puntos de inversión a corto plazo.

  4. Aumentar el ajuste dinámico del intervalo de stop profit y stop loss.

  5. Añadir el indicador ENU para determinar el punto de inversión.

A través de pruebas y optimización multifacéticas, la estabilidad y rentabilidad de la estrategia pueden mejorarse en gran medida.

Resumen de las actividades

Esta estrategia de promedio móvil integra las ventajas de los indicadores de promedio móvil para formar un sistema de juicio de tendencia robusto. Optimiza las variedades y ciclos de negociación y es muy adecuado para el comercio intradiario de alto apalancamiento. A través del ajuste de parámetros y las pruebas de optimización, esta estrategia puede convertirse en una estrategia de negociación de algoritmos eficiente y confiable.


/*backtest
start: 2023-10-24 00:00:00
end: 2023-11-23 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/
// © SoftKill21

//@version=4
strategy("Money maker EURUSD 15min" )
fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2000, title = "From Year", minval = 1970)
 
// To Date Inputs
toDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 8, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2021, title = "To Year", minval = 1970)
 


startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)




len = input(3, minval=1, title="Length")
src = input(hl2, title="Source")
smma = 0.0
sma1 = sma(src, len)
smma := na(smma[1]) ? sma1 : (smma[1] * (len - 1) + src) / len

len2 = input(6, minval=1, title="Length")
src2 = input(hl2, title="Source")
smma2 = 0.0
sma2 = sma(src2, len2)
smma2 := na(smma2[1]) ? sma2 : (smma2[1] * (len2 - 1) + src2) / len2

len3 = input(9, minval=1, title="Length")
src3 = input(hl2, title="Source")
smma3 = 0.0
sma3 = sma(src3, len3)
smma3 := na(smma3[1]) ? sma3 : (smma3[1] * (len3 - 1) + src3) / len3

len4 = input(50, minval=1, title="Length")
src4 = input(close, title="Source")
smma4 = 0.0
sma4 = sma(src4, len4)
smma4 := na(smma4[1]) ? sma4  : (smma4[1] * (len4 - 1) + src4) / len4

len5 = input(200, minval=1, title="Length")
src5 = input(close, title="Source")
out5 = ema(src5, len5)

timeinrange(res, sess) => time(res, sess) != 0
london=timeinrange(timeframe.period, "0300-1045")
londonEntry=timeinrange(timeframe.period, "0300-0845")

extraEntry =timeinrange(timeframe.period, "0745-1030")

time_cond = true
//time_cond2 = time >= startDate and time <= finishDate and extraEntry

//

longCond = close > out5 and close > smma4 and close > smma3 and close > smma2 and close > smma  and smma > smma2 and smma2>smma3 and smma3>smma4 and smma4>out5 and time_cond
shortCond = close < out5 and close < smma4 and close < smma3 and close < smma2 and close < smma  and smma < smma2 and smma2<smma3 and smma3<smma4 and smma4<out5 and time_cond


//longCond = close > out5 and close > smma4 and close > smma3 and close > smma2 and close > smma  and smma > smma2 and smma2>smma3 and smma3>smma4 and smma4>out5 and time_cond2
//shortCond = close < out5 and close < smma4 and close < smma3 and close < smma2 and close < smma  and smma < smma2 and smma2<smma3 and smma3<smma4 and smma4<out5 and time_cond2

//longCond2 = crossover(close,out5) and crossover(close,smma4) and crossover(close,smma3) and crossover(close,smma2) and crossover(close,smma) and time_cond
//shortCond2 = crossunder(close,out5) and crossunder(close,smma4) and crossunder(close,smma3) and crossunder(close,smma2) and crossunder(close,smma) and time_cond



tp=input(300,title="tp")
sl=input(300,title="sl")

strategy.initial_capital  = 50000

//MONEY MANAGEMENT--------------------------------------------------------------
balance = strategy.netprofit + strategy.initial_capital //current balance
floating = strategy.openprofit          //floating profit/loss
risk = input(1,type=input.float,title="Risk %")/100           //risk % per trade


    //Calculate the size of the next trade
temp01 = balance * risk     //Risk in USD
temp02 = temp01/sl        //Risk in lots
temp03 = temp02*100000      //Convert to contracts
size = temp03 - temp03%1000 //Normalize to 1000s (Trade size)
if(size < 1000)
    size := 1000           //Set min. lot size

dataL = (close-out5)*100000
dataS = (out5-close)*100000

minDistanceL = (smma4 - out5)*100000
minDistanceS= (out5 - smma4)*100000


strategy.entry("long",1,1,when=longCond )
strategy.exit("closelong","long", profit=tp,loss=sl)
    
strategy.entry("short",0,1,when=shortCond )
strategy.exit("closeshort","short", profit=tp,loss=sl)



strategy.close_all(when = not london, comment="london finish")
//strategy.close_all(when = not extraEntry, comment="london finish")



// maxEntry=input(2,title="max entries")
// strategy.risk.max_intraday_filled_orders(maxEntry)



Más.