A continuación una solicitud que ha sido enviada a ProRealtime:
Hola, como usuario intradía de PTR, deseo puedan ayudarme a completar la programación de un sistema tendencial que ya tengo programado, pero quiero añadir un filtro con una media EXPONENCIAL para tratar de mejorar.
El sistema esta optimizado para IBEX-1 Hora y es una combinación de los indicadores :MACD y RSI y a su vez con una media de éste(RSI).
Problema: cuando existen divergencias de indicadores, se adelantan demasiado las señales.
Solución: cuando se genere la señal anterior con el MACD Y RSI, a partir de entonces hacer seguimiento con una media exponencial del precio(por ejemplo a 89 periodos) y cuando cambie la tendencia de esta, que se genere la señal definitiva.
Por ahora lo estoy haciendo a “ojo”, pero quisiera automatizarlo para poder optimizar la media.
DEFPARAM CumulateOrders=False
REM Rsi con su media
rS =RSI[5](close)
U=HIGHEST[3](rs)
L=LOWEST[3](rs)
KIJUN=(U + L)/2
rem lineas del rsi
lineaA=35
lineaB=65
REM Calculamos el MACD
MMrapida =exponentialAverage[13](close)
MMlenta =exponentialAverage[21](close)
miMACD = MMrapida - MMlenta
expo =exponentialAverage[5](miMACD)
rem condiciones
CONA=Rs>KIJUN
CONB=Rs<KIJUN
CONAA=KIJUN<lineaA
CONBB=KIJUN>lineaB
conAAA=MIMACD>expo
CONBBB=MIMACD<expo
REM COMPRA
IF not longonmarket and CONA AND CONAA AND CONAAA THEN
BUY 1 contracts AT MARKET
ENDIF
REM Venta
IF longonmarket and CONB AND CONBB AND CONBBB THEN
SELL AT MARKET
ENDIF
REM apertura de cortos
IF not shortonmarket AND CONB AND CONBB AND CONBBB THEN
SELLSHORT 1 contracts AT MARKET
ENDIF
REM cierre de cortos
IF shortonmarket AND CONA AND CONAA AND CONAAA THEN
EXITSHORT AT MARKET
ENDIF
Y una proposición de respuesta:
DEFPARAM CumulateOrders=False
REM Rsi con su media
rS =RSI[5](close)
U=HIGHEST[3](rs)
L=LOWEST[3](rs)
KIJUN=(U + L)/2
rem lineas del rsi
lineaA=35
lineaB=65
REM Calculamos el MACD
MMrapida =exponentialAverage[13](close)
MMlenta =exponentialAverage[21](close)
miMACD = MMrapida - MMlenta
expo =exponentialAverage[5](miMACD)
rem condiciones
CONA=Rs>KIJUN
CONB=Rs<KIJUN
CONAA=KIJUN<lineaA
CONBB=KIJUN>lineaB
conAAA=MIMACD>expo
CONBBB=MIMACD<expo
if CONA AND CONAA AND CONAAA then
sens=1
elsif CONB AND CONBB AND CONBBB then
sens=-1
endif
//MME
MME=Exponentialaverage[81](close)
REM COMPRA
IF not longonmarket and sens=1 and MME >MME[1] THEN
BUY 1 contracts AT MARKET
sens=0
ENDIF
REM Venta
IF longonmarket and CONB AND CONBB AND CONBBB THEN
SELL AT MARKET
ENDIF
REM apertura de cortos
IF not shortonmarket AND sens=-1 and MME < MME[1] THEN
SELLSHORT 1 contracts AT MARKET
sens=0
ENDIF
REM cierre de cortos
IF shortonmarket AND CONA AND CONAA AND CONAAA THEN
EXITSHORT AT MARKET
ENDIF