You are on page 1of 95

ProRealTime le permite crear sistemas de trading que puede probar con el mdulo

ProBacktest o utilizar en trading automtico.

Siga nuestra pgina Google+ dedicada a la programacin para estar informado de las novedades y las actualizaciones.

V 4.1.1 20170303
INDICE
Introduccin_____________________________________________________6
Acceder a la programacin de sistemas de trading......................................................6
La ventana de creacin de sistemas de trading...........................................................7
Atajos de teclado...........................................................................................................................8

La programacin de sistemas de trading______________________________9


La programacin en lenguaje ProBuilder......................................................................9
Entradas y salidas del mercado....................................................................................................9
Los stops y objetivos...................................................................................................12
Stops de proteccin.....................................................................................................................12
Set Target Profit (objetivo de beneficios).....................................................................................12
Trailing stops (stops dinmicos)..................................................................................................13
Uso de los comandos "Set Target" y "Set Stop" con bucles condicionales IF............................13
Mltiples niveles de stop y de objetivos......................................................................................14
Detener un sistema de trading con QUIT...................................................................17
Seguimiento de posiciones.........................................................................................17
Variables de verificacin del estado de las posiciones...............................................................17
Variables sobre el tamao de la posicin....................................................................................18
TradeIndex...................................................................................................................................18
TradePrice...................................................................................................................................18
PositionPerf.................................................................................................................................19
PositionPrice................................................................................................................................19
StrategyProfit...............................................................................................................................19
Definicin de los parmetros de ejecucin de los sistemas de trading......................20
Acumulacin de rdenes.............................................................................................................20
PreLoadBars................................................................................................................................21
FlatBefore y FlatAfter...................................................................................................................22
No actualizacin en efectivo NoCashUpdate (slo ProBacktest)............................................22
MinOrder and MaxOrder (slo Probacktest)...............................................................................22
Llamadas a indicadores..............................................................................................23
Indicadores ProRealTime............................................................................................................23
Indicadores personalizados.........................................................................................................23
Consejos de programacin.........................................................................................23
Reducir el nmero de llamadas a indicadores ProRealTime......................................................23
Llamadas a indicadores personalizados.....................................................................................24

ProBacktest: La simulacin de sus sistemas de trading________________27


Gestin de Capital o Money Management..................................................................28
Capital inicial...............................................................................................................................28
Comisiones de operativa y gestin de riesgos............................................................................28
Optimizacin de variables...........................................................................................29
Definicin del periodo de ejecucin del backtest........................................................32
Personalizacin de las horas de trading en backtests................................................32
Razones por las que puede detenerse un ProBacktest.............................................33
Visualizar los valores de las variables backtest (a partir de ProRealTime v10.2)......34

El mtodo Walk Forward__________________________________________35


Ejemplo prctico..........................................................................................................35

ProOrder: La ejecucin de sistemas de trading automtico_____________39


Prepare un sistema de trading para la ejecucin automtica.....................................40
Cmo ejecutar sistemas de trading en ProOrder y comprobar sus resultados..........42
Configuracin de las preferencias de trading y condiciones de ejecucin.................46
Configuracin de los sistemas de trading...................................................................................46
Detencin automtica de sus sistemas de trading......................................................................47
Coexistencia del trading manual y del trading automtico en la plataforma..............48
Ejecutar mltiples sistemas de trading en el mismo valor..........................................49
Restriccin de indicadores..........................................................................................50

Anexo A: Muestre los resultados de sus sistemas de trading____________51


Grfico de liquidez.......................................................................................................51
Posiciones...................................................................................................................52
Informe detallado.........................................................................................................53

Anexo B: Aplicaciones prcticas___________________________________57


Sistema de trading basado en Heikin Ashi..................................................................................57
Sistema de trading basado en el ZigZag.....................................................................................58
Sistema de trading Breakout Range con Stop Dinmico............................................................59
Sistema de trading basado en el Estocstico Alisado.................................................................60
Swing Trading, ADX y Medias mviles........................................................................................61
Sistema de trading basado en contador de posiciones..............................................................62
Sistema de trading basado en el TRADEINDEX Find inside bar.............................................63
Estrategias de money management (gestin de capital)............................................64
Stop de proteccin (stop loss) & objectivos................................................................................64
Stops de inactividad....................................................................................................................64
Acumulacin de rdenes Aadir rdenes a una posicin existente mediante un contador de
posicin...........................................................................................................................................65
La martingala clsica...................................................................................................................66
La gran martingala.......................................................................................................................67
La Piquemouche..........................................................................................................................68
La pirmide de Alembert..............................................................................................................69
La contra de Alembert.................................................................................................................70
Anexo C: Ejemplo detallado de un sistema de trading__________________71
Introduccin al sistema de trading automtico "ProOrder Breakout".........................72
Resultados del sistema de trading (del 2008 al 2015)................................................73
Descripcin de las ideas del sistema de trading.........................................................74
Idea inicial: Breakout 30 minutos................................................................................................74
2n idea: Se abrirn dos posiciones al da como mximo............................................................75
3a idea: Limitar el riesgo definiendo una distancia mxima y mnima entre los dos niveles......76
4a idea: Aumentar las posibilidades de una ejecucin favorable................................................77
5a idea: Solo operar en breakouts claros para evitar falsas seales.........................................78
6a idea: No abrir ninguna posicin si no hay tiempo suficiente en el da de trading..................79
Cdigo del sistema de trading "ProOrder Breakout"..................................................80
Cmo probar un sistema de trading / cdigo..............................................................82
Con una cartera virtual (modo PaperTrading).............................................................................82
Modo de Trading real...................................................................................................................82

Glosario________________________________________________________83

Aviso: ProRealTime no proporciona servicios de asesoramiento financiero. Este documento no


ofrece ningn consejo de inversin ni constituye incitacin alguna a la compra o venta de ningn
instrumento financiero. Los ejemplos presentados en este manual tienen una finalidad pedaggica.
Para su propia operativa, Ud. es completamente libre para la eleccin de sus criterios. Los
resultados pasados no presagian el futuro. Todo sistema de trading puede exponerle a un riesgo
de prdida superior a su inversin inicial.
Introduccin a la programacin de sistemas de trading con ProRealTime v10

Esta versin del manual de programacin se aplicar a las versiones 10 y superiores de ProRealTime.
La herramienta de programacin de sistemas de trading de ProRealTime le permite crear estrategias de
inversin personalizadas, mediante la programacin o a travs de un asistente incorporado
Los sistemas de trading podrn ejecutarse:
Como ProBacktests para probar su eficacia a lo largo de cualquier periodo histrico de un valor.
Como trading automtico gracias al mdulo ProOrder: se lanzarn rdenes en tiempo real desde su
cuenta de trading o de PaperTrading.
La programacin de sistemas de trading se basa en el lenguaje de programacin ProBuilder, con
extensiones aplicables exclusivamente al desarrollo de sistemas de trading (le aconsejamos la lectura previa
del manual ProBuilder).

En este mdulo puede simular aperturas de posiciones, stops y la gestin de riesgos de cada sistema de
trading que desee ejecutar, en funcin de condiciones personalizadas tales que:
Los indicadores incluidos por defecto en la plataforma o los programados por Ud.
Los resultados pasados de su sistema de trading.
Sus ltimas rdenes.

Los resultados de la ejecucin de un sistema de trading se presentan a travs de los siguientes elementos:
Grfico de liquidez (o 'Equity Curve'), que indica las ganancias o prdidas de un sistema en un
instrumento en particular.
Histograma de posiciones (verde si la posicin es compradora, rojo para las posiciones de venta a
descubierto) y de zonas sin transacciones en curso (sin velas).
Informe detallado, que le proporciona estadsticas generales de su sistemas de trading para el valor y
periodo elegidos.
El mdulo ProBacktest le permite adems la optimizacin de las variables de su sistemas de trading para
seleccionar las que le proporcionen los mejores resultados en los periodos e instrumentos analizados.
En trading automtico, las rdenes lanzadas por sus sistemas de trading aparecen en su cuenta
PaperTrading y la cartera se actualiza con las plusvalas realizadas.

Este manual est organizado de la siguiente manera: comenzamos explicando el acceso a las funciones de
edicin de sistemas de trading en la primera seccin, mientras que la segunda parte presenta las
instrucciones ProBuilder necesarias para su programacin. La ltima seccin detalla la simulacin de
sistemas de trading en ProBacktest y los anexos finales del manual describen la presentacin de resultados,
algunos ejemplos de cdigos, as como un glosario del lenguaje ProBuilder.

Para aquellos usuarios poco acostumbrados a programar, aconsejamos visualizar el vdeo titulado
"Programe estrategias sin escribir una sola lnea de cdigo"

El contenido del presente manual tiene como objetivo ensearle a desarrollar y a probar sus propias ideas;
en ningn caso debe interpretarse como un asesoramiento en la inversin.

Le deseamos una agradable lectura y los mejores resultados en sus inversiones.

V 4.1.1 20170303 www.prorealtime.com 5 / 95


Introduccin

Introduccin
Acceder a la programacin de sistemas de trading
La ventana de creacin de sistemas de trading es accesible a partir del botn 'Indicador/Sistemas de trading'
que se encuentra en la parte superior derecha de cada grfico de su plataforma ProRealTime.

Tras pulsar ese botn, se abrir por defecto la ventana de gestin en la pestaa 'Indicadores'. Active la
pestaa 'Sistemas de Trading' pulsando sobre la misma con el ratn. Con ello, podr:
Acceder a la lista de sistemas de trading existentes (predefinidos o personalizados)
Crear un nuevo sistema de trading y ejecutarlo en cualquier valor
Modificar, suprimir o duplicar un sistema de trading existente
Importar o exportar sistemas de trading

V 4.1.1 20170303 www.prorealtime.com 6 / 95


Introduccin

La ventana de creacin de sistemas de trading


La ventana de creacin de sistemas de trading se compone de 2 zonas principales:
La zona de creacin (asistida o programando) en el rea izquierda de la ventana.
La zona de aplicacin en la parte derecha, que comprende la pestaa ProBacktest para probar la
eficacia del sistema de trading y la pestaa ProOrder para su ejecucin en trading automtico. Encontrar
la configuracin detallada del mdulo ProBacktest en la seccin 3 de este manual.

La zona de creacin le permite:


Programar directamente un sistema de trading en la zona de texto.
Utilizar la funcin de ayuda 'Insertar funcin' y acceder a la biblioteca de las funciones disponibles.
Cada una de estas funciones se acompaa igualmente de un texto de ayuda.

V 4.1.1 20170303 www.prorealtime.com 7 / 95


Introduccin

Ejemplo:
En nuestro caso utilizaremos la biblioteca pulsando "Insertar funcin".
Dirjase a la categora "Comandos ProBacktest" y seleccione "BUY". A continuacin, pulse el botn 'Aadir':
el comando se aadir en la zona de programacin.

Para ello, realizaremos la operacin descrita anteriormente, con el objetivo de recuperar las instrucciones
"SHARES", "AT" y "MARKET" (recuerde separar cada palabra por un espacio).
Se obtiene entonces la instruccin "BUY 10 SHARES AT MARKET" que ordena la compra de 10 ttulos a
precio de mercado. La seccin siguiente presenta todas las instrucciones disponibles para la programacin
de sistemas de trading.
Para ver ms ejemplos, consulte el Anexo B del presente manual.

Atajos de teclado
La ventana de creacin de sistemas de trading tiene varias funciones a las que se puede acceder mediante
atajos de teclado en la versin 10 de ProRealTime:
Seleccionarlo todo (Ctrl + A): Selecciona la integralidad del texto en la ventana de programacin
Copiar (Ctrl + C): Copia el texto seleccionado
Pegar (Ctrl +X): Pega el texto copiado
Deshacer (Ctrl + Z): Deshace la ltima accin realizada en la ventana de programacin
Rehacer (Ctrl + Y): Rehace la ltima accin realizada en la ventana de programacin
Buscar / Remplazar (Ctrl + F): Busca un texto preciso en la ventana de programacin / remplaza un
texto contenido en la ventana de programacin (esta funcin es sensible a la diferencia entre minsculas
y maysculas)
Comentar / Descomentar (Ctrl + R): Comenta el cdigo seleccionado / Descomenta el cdigo
seleccionado (el cdigo comentado ser introducido por "//" o "REM" y se colorear en gris. Esto
comentario no ser tomado en cuenta en la ejecucin del cdigo).

En Mac es posible utilizar estos mismos atajos de teclado utilizando la tecla "Manzana" en lugar de "Ctrl".
Casi todas estas funciones son accesibles pulsando en el botn derecho de su ratn en la zona de
programacin de la ventana de creacin del sistema de trading.

V 4.1.1 20170303 www.prorealtime.com 8 / 95


La programacin de sistemas de trading

La programacin de sistemas de trading

ADVERTENCIA: los ejemplos presentados en este manual tienen un objetivo pedaggico. Usted
es totalmente libre en la eleccin de sus criterios para su propia operativa. Toda la informacin
presentada es de carcter "general" y no representa informacin alguna, o consejo personalizado o
incitacin alguna a la compra o la venta de instrumentos financieros. Los resultados pasados no
presagian el futuro. Todo sistema de trading puede exponerle a un riesgo de prdida superior a sus
depsitos iniciales.

La programacin en lenguaje ProBuilder


Le aconsejamos la lectura previa del manual ProBuilder dedicado a la programacin de indicadores: este
documento representa una extensin de dicho manual.
ProBuilder es el lenguaje de programacin de ProRealTime. Este lenguaje es muy sencillo y exhaustivo en
sus posibles usos. Se basa en los siguientes principios:
Una vela representa la unidad de base y la unidad de tiempo es la misma que la del grfico subyacente.
Su funcionamiento es iterativo: un programa ProBuilder y todas sus subfunciones se evalan al cierre
de cada vela, desde la ms antigua hasta la ms reciente.
Se lanzan todas las seales de compra/venta una vez finalizados los clculos en la vela actual, es
decir, a la apertura de la vela siguiente.

Entradas y salidas del mercado


Es necesario diferenciar las instrucciones en funcin del sentido de su posicin:
Posiciones de compra (largas):
BUY: instruccin de compra de valores (compra de instrumentos)
SELL: instruccin de venta de valores adquiridos (venta de instrumentos)
La instruccin BUY permite abrir (o reforzar) una posicin compradora en el mercado. Se asocia a la funcin
SELL, utilizada para cerrar (o reducir) una posicin de compra. La instruccin SELL no tiene efecto si no
existe en ese momento ninguna posicin compradora abierta.
Posiciones de venta (cortas):
SELLSHORT: instruccin de venta a descubierto de valores (entrada a corto)
EXITSHORT: instruccin de compra de valores vendidos a descubierto (salida de corto)
El funcionamiento de estas instrucciones es similar al de BUY y SELL. La instruccin EXITSHORT no tiene
efecto si no existe en ese momento ninguna posicin de venta a descubierto abierta.

Actualmente no existe la posibilidad de abrir una posicin de compra y otra de venta simultneamente en un
mismo valor. En la prctica, resulta posible cerrar una posicin larga con una instruccin SELLSHORT o,
recprocamente, cerrar una posicin corta con un comando BUY.

Consejo: compruebe la cantidad mxima de la posicin definida en su gestin de riesgos, ya que la orden de
inversin ser rechazada si la cantidad final de la posicin supera este valor, mantenindose la posicin original.

Todos estos comandos pueden acompaarse de los elementos que describimos a continuacin:
<Orden> <Cantidad> AT <Modo>
Ejemplo:
BUY 1000 CASH AT MARKET o SELL 1 SHARE AT 1,56 LIMIT

V 4.1.1 20170303 www.prorealtime.com 9 / 95


La programacin de sistemas de trading

Cantidad
Existen dos maneras de definir la cantidad que deseemos invertir:
SHARES, que representa una unidad del instrumento: "1 share" representa 1 accin, 1 warrant, 1
contrato para futuros o 1 lote en Forex. Observe que "SHARES" puede utilizarse indistintamente para
referirse a acciones, contrato, contratos, lote o lotes. En el caso del Forex, la cantidad adquirida se
multiplicar por el tamao de un lote. Si la cantidad no est indicada, los valores que se toman por defecto
son:
1 unidad por una entrada en posicin (Ej: BUY AT MARKET, lanza una orden de "1" a precio de
mercado)
La cantidad total de la posicin para una salida (Ej: SELL AT MARKET venta completa de la
posicin)
CASH, transaccin en unidades monetarias (como o $), nicamente para acciones. La cantidad de la
orden se calcular al cierre de la vela y se redondear por defecto a la unidad inferior. Las comisiones de
operativa no se toman en cuenta en el clculo de la cantidad establecida para comprar o vender en
efectivo.
Ejemplo: BUY 1000 CASH AT MARKET
Es posible utilizar la instruccin ROUNDEDUP para redondear la cantidad a la unidad superior.
Ejemplo: BUY 1000 CASH ROUNDEDUP AT MARKET

Modo
Dispone de tres tipos de ejecucin de rdenes:
AT MARKET: la orden se enviar a precio de mercado a la apertura de la vela siguiente
Ejemplo: BUY 1 SHARE AT MARKET

AT <precio> LIMIT: se enviar una orden lmite al precio indicado


AT <precio> STOP: se enviar una orden stop al precio indicado
Ejemplo: BUY 1 SHARE AT 10.5 LIMIT

Las rdenes lmites y stops son vlidas durante una nica vela, a partir de la apertura de la vela
siguiente. Quedan anuladas si no se ejecutan.

Son rdenes con umbral de ejecucin. Se oponen a los stops de proteccin y lmites de beneficios ("SET
STOP", "SET TARGET": ver seccin siguiente) asociados a una posicin abierta y vlidos hasta el cierre de
dicha posicin.

Algunas rdenes se comportarn como rdenes a mercado, en funcin de las siguientes


condiciones:
Una orden LMITE de compra BUY fijada por encima del precio del mercado se gestionar como una
orden a precio de mercado.
Una orden STOP de compra BUY fijada por debajo del precio del mercado se gestionar como una
orden a precio de mercado.
Una orden LMITE de venta a descubierto SELLSHORT fijada por debajo del precio del mercado se
gestionar como una orden a precio de mercado.
Una orden STOP de venta a descubierto SELLSHORT fijada por encima del precio del mercado, se
gestionar como una orden a precio de mercado.

V 4.1.1 20170303 www.prorealtime.com 10 / 95


La programacin de sistemas de trading

Ejemplo:
Cuando el RSI se halle en zona de sobreventa (RSI < 30) y el precio est por debajo de la banda de
Bollinger inferior, se generar una orden de compra a precio de mercado.
Cuando el RSI se halle en zona de sobrecompra (RSI > 70) y el precio est por debajo de la banda de
Bollinger inferior, se generar una orden de venta.

MyRSI = RSI[14](Close)
MyBollingerDown = BollingerDown[25](Close)
MyBollingerUp = BollingerUp[25](Close)

IF MyRSI < 30 AND Close < MyBollingerDown THEN


BUY 1 SHARE AT MARKET
ENDIF
IF MyRSI > 70 AND Close > MyBollingerUp THEN
SELL AT MARKET
ENDIF

Puede definir la duracin de la validez de las rdenes lmite y stop.

El siguiente ejemplo le muestra cmo crear una orden lmite con un nmero especfico de velas de validez
mediante el uso de variables. El cdigo sita una orden lmite de compra al precio de cierre de la vela en la
que ha concurrido el cruce de medias mviles. Este lmite es vlido durante 10 velas, tras la vela en la que
se produjo el cruce. Si no es ejecutado en algn momento durante la formacin de esas 10 velas, se anula.

Ejemplo:
// Definicin de la duracin de validez de la orden
ONCE NbBarLimit = 10

MM20 = Average[20](close)
MM50 = Average[50](close)
// Si la MM20 cruza al alza la MM50, establecemos 2 variables, "MyLimitBuy" y "MyIndex",
que contienen el precio de cierre en ese momento y el ndice de la vela en la que se
produce el cruce.
IF MM20 CROSSES OVER MM50 THEN
MyLimitBuy = close
MyIndex = Barindex
ENDIF

IF BarIndex >= MyIndex + NbBarLimit THEN


MyLimitBuy = 0
ENDIF
// Lanzar una orden al precio de MyLimitBuy vlido mientras la variable sea superior a 0
y la posicin no sea compradora.
// Recordar: MyLimitBuy ser superior a 0 durante el transcurso de las 10 velas tras la
vela en la que se produjo el cruce.
IF MyLimitBuy > 0 AND NOT LongOnMarket THEN
BUY 1 SHARES AT MyLimitBuy LIMIT
ENDIF

En el caso de que la orden no fuera ejecutada, ser posible remplazar la orden lmite de compra expirada por una
orden de compra a precio de mercado. Esto podra llevarse a cabo aadiendo el siguiente cdigo al cdigo anterior:
IF MyIndex + NbBarLimit AND MyLimitBuy > 0 AND NOT LongOnMarket THEN
BUY 1 SHARES AT MARKET
ENDIF

V 4.1.1 20170303 www.prorealtime.com 11 / 95


La programacin de sistemas de trading

Los stops y objetivos


ProBuilder le permite igualmente definir objetivos y stops de proteccin. La sintaxis que debemos utilizar es
la siguiente:
SET STOP <tipo> <valor> o SET TARGET <tipo> <valor>
Ejemplo:
SET STOP %LOSS 2 // Definir un stop loss al 2%
Describimos cada instruccin en los parmetros siguientes.

Observe la diferencia entre las rdenes STOP:

AT <precio> STOP se utiliza para ABRIR una posicin. Esta orden es vlida durante una vela
por defecto.
SET STOP LOSS <precio> sirve para establecer un stop de proteccin cuyo objetivo es
CERRAR la posicin existente. Esta orden es vlida hasta el cierre definitivo de la posicin.

Stops de proteccin
Los stops de proteccin (stops loss) permiten limitar las prdidas de una posicin. Pueden definirse de
forma relativa o absoluta:
SET STOP LOSS x: establece un stop loss para cerrar la posicin a x unidades del precio de entrada.
SET STOP pLOSS x: establece un stop loss para cerrar la posicin a x puntos del precio de entrada.
SET STOP %LOSS x: establece un stop loss para cerrar la posicin si la prdida alcanza x%.
SET STOP $LOSS x: establece un stop loss para cerrar la posicin si la prdida alcanza x ,$ (en la divisa
del instrumento), sin incluir las comisiones de operativa.
En ambos casos, la direccin y la cantidad de la orden stop se adaptan automticamente a la posicin en
curso. El stop loss se asocia siempre a una posicin: si no hay posiciones abiertas, el stop loss se
mantendr inactivo.
Para desactivar un stop loss, es necesario utilizar esta instruccin
SET STOP LOSS 0, SET STOP pLOSS 0, SET STOP %LOSS 0, SET STOP $LOSS 0

Set Target Profit (objetivo de beneficios)


Este tipo de instruccin permite liquidar una posicin cuando las ganancias alcanzan una cantidad
determinada.
SET TARGET PROFIT x: establece un objetivo de beneficios para cerrar la posicin a x unidades desde el
precio medio de la misma.
SET TARGET pPROFIT x: establece un objetivo de beneficios para cerrar la posicin a x puntos desde el
precio medio de la misma.
SET TARGET %PROFIT x: establece un objetivo para cerrar la posicin cuando el beneficio alcance x%.
SET TARGET $PROFIT x: establece un objetivo cuando la ganancia alcance x, $ (en la divisa del
instrumento), sin incluir las comisiones de operativa.
Igualmente, la direccin y la cantidad de la orden stop se adaptan automticamente a la posicin en curso.
Un stop loss se desactiva al cierre de la posicin y no se reactiva a la apertura de la posicin siguiente.
Para desactivar un objetivo de beneficios (profit target) en el cdigo, podemos utilizar las siguientes
instrucciones:
SET TARGET PROFIT 0, SET TARGET pPROFIT 0, SET TARGET %PROFIT 0, SET TARGET $PROFIT 0

V 4.1.1 20170303 www.prorealtime.com 12 / 95


La programacin de sistemas de trading

Trailing stops (stops dinmicos)


Un stop dinmico (trailing stop) es una orden stop cuyo precio de ejecucin vara en funcin de la variacin
del precio. Para las posiciones compradoras, cuando el precio gana valor, el nivel del stop aumenta, pero si
el precio baja, el nivel del stop dinmico se mantiene sin cambios. Para las posiciones vendedoras, se
produce el comportamiento inverso: cuando el precio baja, el nivel del stop dinmico tambin baja, pero si el
precio sube, el precio del stop dinmimo se mantiene sin cambios.
Siguiendo el mismo principio que los stops de proteccin, los stops dinmicos pueden definirse de forma
relativa o absoluta:

SET STOP TRAILING y: establece un stop dinmico a y unidades del precio medio de la posicin.
SET STOP pTRAILING y: establece un stop dinmico a y puntos del precio medio de la posicin.
SET STOP %TRAILING y: establece un stop dinmico a y% del precio medio, sin incluir las comisiones de
operativa.
SET STOP $TRAILING y: establece un stop dinmico a y ,$ del precio medio (en la divisa del
instrumento), sin incluir las comisiones de operativa.

La direccin y la cantidad de la orden se adaptan automticamente a la posicin en curso. El stop dinmico


se desactiva al cierre de la posicin y no se reactiva a la apertura de la posicin siguiente. Si la cantidad de
la posicin cambia (reforzamos la posicin, por ejemplo) el nivel del stop se reinicia.
Para desactivar un stop dinmico en el cdigo (trainlling stop), podemos utilizar las siguientes instrucciones:
SET STOP TRAILING 0, SET STOP pTRAILING 0, SET STOP %TRAILING 0, SET STOP $TRAILING 0

Ejemplo:
Abrimos una posicin en el DAX a 6000 puntos y establecemos un stop dinmico a 50 puntos:
SET STOP pTRAILING 50

El stop se sita inicialmente en 5950 puntos. Si el precio sube hasta 6010 y a continuacin baja hasta 5980,
el stop subir 10 puntos, hasta 5960 y se mantendr estable hasta que el nivel de precio sobrepase los
6010 puntos. Finalmente, se ejecutar si la cotizacin alcanza los 5960 puntos.

Uso de los comandos "Set Target" y "Set Stop" con bucles condicionales IF
Es posible modificar el tipo de objetivo o de stop de su cdigo mediante bucles condicionales.

Ejemplo:
REM Establecer un stop loss a 10% si las ganancias de la transaccin anterior alcanzan al
menos el 10%. En caso contrario, establecer un stop loss a 5%
IF PositionPerf(1) > 0.1 THEN
SET STOP %LOSS 10
ELSE
SET STOP %LOSS 5
ENDIF

V 4.1.1 20170303 www.prorealtime.com 13 / 95


La programacin de sistemas de trading

Mltiples niveles de stop y de objetivos


Slo pueden estar activos al mismo tiempo un solo comando "Set Stop" y un "Set Target". Si hubiera varios
comandos "Set Stop" o "Set Target" sucesivamente, el ltimo comando reemplazara al anterior.

Ejemplo:
SET STOP %LOSS 10 // Fijar un stop loss a 10%
SET TARGET PROFIT 50 // Fijar un objetivo de beneficios de 50 unidades
SET TARGET %PROFIT 5 // Eliminar el objetivo anterior de 50 unidades y reemplazarlo por
un objetivo de beneficios del 5%
SET STOP %TRAILING 2 // Eliminar el stop loss a 10% anterior y establecer un stop
dinmico a 2% en su lugar

Es posible combinar stops fijos, dinmicos o stops loss y dinmicos en una misma instruccin, tal y como
describimos a continuacin:

SET STOP <Modo> <valor> <TrailingType> <valor>


fijo dinmico

Modo: LOSS, pLOSS, %LOSS, $LOSS


TrailingType: TRAILING, pTRAILING, %TRAILING, $TRAILING

Esta instruccin se presentar de la siguiente manera:


SET STOP [LOSS/pLOSS/$LOSS/%LOSS] <valor> [TRAILING/pTRAILING/$TRAILING/%TRAILING] <valor>

Ejemplos de uso:

SET STOP LOSS x TRAILING y: establece un stop loss a x unidades del precio medio de la posicin, que
se convierte en un stop dinmico a y unidades si el precio vara favorablemente de al menos (y-x).

SET STOP LOSS x pTRAILING y: establece un stop loss a x unidades del precio medio de la posicin, que
se convierte en un stop dinmico a y puntos si el precio vara favorablemente de al menos (y-x).

SET STOP LOSS x $TRAILING y: establece un stop loss a x unidades del precio medio de la posicin, que
se convierte en un stop dinmico a y $ o (divisa del instrumento) en cuanto la distancia precio <--> stop
dinmico se vuelve inferior a la distancia precio <--> stop loss inicial .

SET STOP LOSS x %TRAILING y: establece un stop loss a x unidades del precio medio de la posicin, que
se convierte en un stop dinmico a y% en cuanto la distancia precio <--> stop dinmico se vuelve inferior
a la distancia precio <--> stop loss inicial .

V 4.1.1 20170303 www.prorealtime.com 14 / 95


La programacin de sistemas de trading

SET STOP pLOSS x TRAILING y: establece un stop loss a x puntos del precio medio de la posicin, que se
convierte en un stop dinmico a y unidades si el precio vara favorablemente de al menos (y-x).
SET STOP pLOSS x pTRAILING y: establece un stop loss a x puntos del precio medio de la posicin, que
se convierte en un stop dinmico a y puntos si si el precio vara favorablemente de al menos (y-x).
SET STOP pLOSS x $TRAILING y: establece un stop loss a x puntos del precio medio de la posicin, que
se convierte en un stop dinmico a y $ o (divisa del instrumento) en cuanto la distancia precio <--> stop
dinmico se vuelve inferior a la distancia precio <--> stop loss inicial .
SET STOP pLOSS x %TRAILING y: establece un stop loss a x puntos del precio medio de la posicin, que se
convierte en un stop dinmico a y% en cuanto la distancia precio <--> stop dinmico se vuelve inferior a
la distancia precio <--> stop loss inicial .

SET STOP $LOSS x TRAILING y: establece un stop loss a x $ o (divisa del instrumento) del precio medio
de la posicin, que se convierte en un stop dinmico a y unidades en cuanto la distancia precio <--> stop
dinmico se vuelve inferior a la distancia precio <--> stop loss inicial .
SET STOP $LOSS x pTRAILING y: establece un stop loss a x $ o (divisa del instrumento) del precio medio
de la posicin, que se convierte en un stop dinmico a y puntos en cuanto la distancia precio <--> stop
dinmico se vuelve inferior a la distancia precio <--> stop loss inicial .
SET STOP $LOSS x $TRAILING y: establece un stop loss a x $ o (divisa del instrumento) del precio medio
de la posicin, que se convierte en un stop dinmico a y $ o (divisa del instrumento) si el precio vara
favorablemente de al menos (y-x).
SET STOP $LOSS x %TRAILING y: establece un stop loss a x $ o (divisa del instrumento) del precio medio
de la posicin, que se convierte en un stop dinmico a y% en cuanto la distancia precio <--> stop dinmico
se vuelve inferior a la distancia precio <--> stop loss inicial .

SET STOP %LOSS x TRAILING y: establece un stop loss a x%, que se convierte en un stop dinmico a y
unidades si el nivel del stop dinmico se acerca ms al precio actual que al nivel del stop loss.
SET STOP %LOSS x pTRAILING y: establece un stop loss a x%, que se convierte en un stop dinmico a y
puntos si el nivel del stop dinmico se acerca ms al precio actual que al nivel del stop loss.
SET STOP %LOSS x $TRAILING y: establece un stop loss a x%, que se convierte en un stop dinmico a y $
o (divisa del instrumento) si el nivel del stop dinmico se acerca ms al precio actual que al nivel del stop
loss.
SET STOP %LOSS x %TRAILING y: establece un stop loss a x%, que se convierte en un stop dinmico a x% si
el nivel del stop dinmico se acerca ms al precio actual que al nivel del stop loss.

V 4.1.1 20170303 www.prorealtime.com 15 / 95


La programacin de sistemas de trading

Ejemplo:
SET STOP LOSS x TRAILING y:
Se establece un stop a x unidades del precio medio de la posicin que se convierte en un stop dinmico de y
unidades si el nivel del stop dinmico se acerca ms al precio actual que al nivel del stop loss.
Por ejemplo, si abrimos una posicin en el futuro del DAX a 6500 puntos, el siguiente cdigo establecer un
stop dinmico a 20 puntos del precio medio de la posicin, que se convertir en un stop dinmico de 50 puntos
de diferencia si el precio supera los 6530 puntos.
SET STOP LOSS 20 TRAILING 50
Las siguientes figuras ilustran el ejemplo 2. El stop inicial se sita a 20 unidades por debajo del precio de
entrada de la posicin (6480).

Slo si el nivel del precio alcanzara 6530 (= 6500 + (50 - 20)), el stop se convertir en un stop dinmico a 50
puntos de diferencia.

Si el nivel de precio aumenta (aqu hasta 6535), el stop dinmico aumenta igualmente (en este caso alcanza
los 6485 puntos).

V 4.1.1 20170303 www.prorealtime.com 16 / 95


La programacin de sistemas de trading

Detener un sistema de trading con QUIT


La instruccin "QUIT" le permite detener un sistema de trading. En este caso, el sistema se detendr
despus de la vela actual, provocando la anulacin de las rdenes pendientes y el cierre de las posiciones
abiertas. Esto le permite detener un sistema de trading en caso de que haya grandes prdidas o a partir de
una fecha precisa.

Ejemplo:
IF Date > 20140101 THEN // Detener la estrategia despus del 1 de Enero de 2014
QUIT
ENDIF

Seguimiento de posiciones

Variables de verificacin del estado de las posiciones


Puede utilizar 3 variables para comprobar el estado de las posiciones de sus sistemas de trading:
ONMARKET, que es igual a 1 si hay posiciones abiertas, 0 en el caso contrario.
LONGONMARKET, que es igual a 1 si hay posiciones largas abiertas, 0 en el caso contrario.
SHORTONMARKET, que es igual a 1 si hay posiciones cortas abiertas, 0 en el caso contrario.

Estas variables pueden utilizarse con corchetes. Por ejemplo, ONMARKET[1] tendra un valor de 1 si
hubiera posiciones abiertas al cierre de la vela anterior, 0 en el caso contrario.

Estas variables suelen incluirse en las secuencias condicionales IF previas a la apertura de una posicin:

Ejemplo:
REM Definimos el MACD
Indicator1 = MACD[12,26,9](Close)
REM Observamos los cambios de signo del Histograma del MACD
c1 = (Indicator1 CROSSES OVER 0)
REM Comprar: si no tenemos posiciones de compra abiertas y si MACD >0, compramos 3 lotes
IF NOT LONGONMARKET AND c1 THEN
BUY 3 SHARES AT MARKET
ENDIF

V 4.1.1 20170303 www.prorealtime.com 17 / 95


La programacin de sistemas de trading

Variables sobre el tamao de la posicin


Estas 3 variables permiten conocer la cantidad de una posicin abierta:
COUNTOFPOSITION: tamao de la posicin (en lotes, ttulos, o contratos). Positiva si la posicin es
compradora (larga), negativa si la posicin es vendedora (corta).
COUNTOFLONGSHARES: tamao de la posicin larga (en lotes, ttulos, o contratos) si existe una posicin
compradora, 0 en el caso contrario.
COUNTOFSHORTSHARES: tamao de la posicin vendedora (en lotes, ttulos, o contratos). Tendr un
valor positivo si existe una posicin vendedora abierta. En caso contrario, el valor ser 0.
Como en todas las variables que comprueban el estado de las posiciones, estos comandos se incluyen
generalmente en secuencias condicionales IF, previamente a la apertura de la posicin.

Atencin: compruebe la correcta utilizacin de las variables de estado. El cdigo es evaluado


al final de cada vela y las rdenes se lanzan en la apertura de vela siguiente.
Por ejemplo, en el cdigo siguiente, la variable 'long' no ser igual a 1 al cierre de la primera vela,
sino al cierre de la segunda vela, ya que la primera orden de compra se lanza en la apertura de la
segunda vela.
BUY 1 SHARE AT MARKET
IF LONGONMARKET THEN
long = 1
ENDIF

TradeIndex
El comando TRADEINDEX(n) permite acceder a la vela de la ensima transaccin anterior:
TRADEINDEX(ensima orden anterior)
Nota es posible utilizar TradeIndex sin asociarlo a un nmero de vela definido entre parntesis. En este
caso, el programa considerar la barra de la ltima orden lanzada: TRADEINDEX = TRADEINDEX(1).
Aconsejamos utilizar TradeIndex conjuntamente con Barindex.
Ejemplo:
REM: Cerrar si hay una posicin abierta desde al menos 3 velas:
IF LONGONMARKET AND (BarIndex - TRADEINDEX) >= 3 THEN
SELL AT MARKET
ENDIF

TradePrice
El comando TRADEPRICE(n) permite encontrar el precio de ejecucin de la transaccin anterior.
Su sntesis es la siguiente:
TRADEPRICE(ensima orden anterior)
Podemos especificar entre parntesis la orden a la que hacemos referencia. Si no precisamos este dato tras
"TRADEPRICE", se tomar como referencia el precio de compra de la ltima orden: TRADEPRICE =
TRADEPRICE(1)
Ejemplo:
REM: Cerrar posicin larga si el cierre es superior al precio de ejecucin de la ltima
transaccin, aumentado de un 2%
IF LONGONMARKET AND CLOSE > 1.02 * TRADEPRICE THEN
SELL AT MARKET
ENDIF

V 4.1.1 20170303 www.prorealtime.com 18 / 95


La programacin de sistemas de trading

PositionPerf
Este comando nos facilita:
El rendimiento en % de la ensima ltima posicin cerrada, si n > 0 (comisiones de operativa no
incluidas)
El rendimiento en % de la posicin en curso si n = 0 (comisiones de operativa no incluidas)
Su sntesis es la siguiente:
POSITIONPERF(ensima orden precedente)
Si n no est definida, suponemos que n = 0: POSITIONPERF = POSITIONPERF(0)
Ejemplo:
REM Comprar si la transaccin precedente registr al menos un 20% de ganancias
IF NOT ONMARKET AND POSITIONPERF(1) > 0.2 THEN
BUY 1000 CASH AT MARKET
ENDIF

PositionPrice
El comando POSITIONPRICE permite conocer el precio medio de compra de la posicin actual.
POSITIONPRICE
El precio medio (o precio de coste) de una posicin se define como la suma de los precios de entrada
ponderados por la cantidad de cada orden. nicamente los refuerzos influyen en el precio de coste de la
posicin.
Esta instruccin puede utilizarse con corchetes: POSITIONPRICE[1] devuelve el valor de PositionPrice al
cierre de la vela precedente.
Ejemplo:
Compramos una accin a 5, y a continuacin reforzamos la posicin comprando una accin a 10, y
despus otra a 15.
El precio de coste de la posicin es de (5 + 10 + 15) / 3 = 10
Si decidimos entonces reducir nuestra posicin vendiendo una accin a 20, el precio de coste de la
posicin se mantendr sin cambios.

StrategyProfit
Esta instruccin devuelve las ganancias o prdidas (absolutas, en la divisa del instrumento y sin incluir las
comisiones de operativa) realizadas desde el inicio del sistema. Puede asociarse a la instruccin QUIT para
limitar las prdidas de un sistema de trading.
STRATEGYPROFIT
Esta instruccin puede utilizarse con corchetes: STRATEGYPROFIT[1] proporciona el beneficio al cierre de
la vela anterior.
Ejemplo:
IF STRATEGYPROFIT < -500 THEN
QUIT
ENDIF

Nota: recuerde que los sistemas de trading funcionan al cierre de las velas, es decir, son evaluados al cierre
de cada una. En este ejemplo las prdidas pueden ser superiores a 500 si se produjera un gap en el
transcurso de una vela. Le recomendamos utilizar un STOP LOSS para protegerse de las prdidas de la
posicin y este bloque de cdigo para detener el sistema de trading.

V 4.1.1 20170303 www.prorealtime.com 19 / 95


La programacin de sistemas de trading

ADVERTENCIA: los ejemplos presentados en este manual tienen un objetivo pedaggico. Usted
es totalmente libre en la eleccin de sus criterios para su propia operativa. Toda la informacin
presentada es de carcter "general" y no representa informacin alguna, o consejo personalizado o
incitacin alguna a la compra o la venta de instrumentos financieros. Los resultados pasados no
presagian el futuro. Todo sistema de trading puede exponerle a un riesgo de prdida superior a sus
depsitos iniciales.

Definicin de los parmetros de ejecucin de los sistemas de trading


Puede definir parmetros adicionales con ayuda de la instruccin DEFPARAM.
Acumulacin de rdenes
La variable "CumulateOrders" le permite autorizar o impedir la acumulacin de rdenes para entrar en el
mercado o para aadir a una posicin. Este parmetro est configurado como "True" (verdadero) por
defecto en cdigos creados programando, lo que significa que un sistema de trading puede aadir rdenes
a una posicin existente en cada vela en la que se cumplen las condiciones de la entrada de la posicin. En
este caso, tambin es posible tener activas varias rdenes lmite o stop listas para lanzarse al mercado al
mismo tiempo.
Para evitar que un sistema incremente el tamao de una posicin ya abierta, es necesario establecer la
siguiente instruccin al principio del cdigo
DEFPARAM CumulateOrders = False
La instrucciones DEFPARAM mantienen su validez a lo largo de todo el sistema de trading. No ser posible
modificar la configuracin del sistema de trading para la acumulacin o no de rdenes durante su ejecucin.
Ejemplos:
// Este cdigo comprar una accin en cada vela, hasta un mximo de 3
DEFPARAM CumulateOrders = True
IF COUNTOFPOSITION < 3 THEN
BUY 1 SHARES AT MARKET
ENDIF
// Este cdigo comprar una accin a un precio de 2 y una accin ms a un precio de 3
DEFPARAM CumulateOrders = True
IF COUNTOFPOSITION < 2 THEN
BUY 1 SHARES AT 2 LIMIT
BUY 1 SHARES AT 3 LIMIT
ENDIF
// Este cdigo comprar 5 acciones de una sola vez
DEFPARAM CumulateOrders = False
BUY 5 SHARES AT MARKET
Es posible programar varias rdenes en la misma direccin incluso cuando el parmetro "CumulateOrders"
est configurado como falso.
Ejemplo:
// Este cdigo comprar 5 acciones. Se vendern hasta 3 acciones si el precio cruza la media
mvil de 40 a la baja. Se liquidarn todas las acciones si la prdida alcanza un 10%.
DEFPARAM CumulateOrders = False
BUY 5 SHARES AT MARKET
IF Close CROSSES UNDER Average[40] THEN
SELL 3 SHARES AT MARKET
SET STOP %TRAILING 10
ENDIF

V 4.1.1 20170303 www.prorealtime.com 20 / 95


La programacin de sistemas de trading

Nota sobre los niveles de stop o de objetivos mientras CumulateOrders est activo: si utiliza las
instrucciones para establecer un stop loss, un stop dinmico o una orden de objetivos con la acumulacin de
rdenes activada, el nivel se calcula en base al precio medio de entrada de sus posiciones y se vuelve a
calcular cada vez que se modifique la cantidad de la posicin.

Ejemplo:
Si compra 1 accin a 10$ y establece un stop loss a 10% y un objetivo a 150%, los niveles iniciales seran:
stop a 9$ y objetivo a 25$. Si compra una segunda accin a 20$, el precio medio de entrada sera de 15$ y
como resultado los nuevos niveles seran: stop a 13.50$ y objetivo a 37.50$ (para la posicin entera).

Nota sobre los cdigos creados mediante el asistente de programacin: CumulateOrders est
configurado como falso (false) por defecto en los sistemas de trading creados mediante el asistente de
programacin (la instruccin "DEFPARAM CumulateOrders = False" estar presente al principio de estos
cdigos).

PreLoadBars
La instruccin "DEFPARAM PRELOADBARS" le permite configurar la mxima cantidad de velas que
puedan cargarse con antelacin al inicio del sistema de trading, para el clculo de los indicadores utilizados
en dicho sistema antes de que comience a ejecutarse (indicadores personales o predefinidos). Este
parmetro es igual a 200 por defecto. No puede ser inferior a 0 o superior a 5000. Si quiere desactivar esta
descarga de datos, introduzca PRELOADBARS = 0.
Seleccionamos el mximo valor porque la cantidad de velas que pueden cargarse con antelacin depende
de la cantidad de datos disponibles para un instrumento o vista temporal determinados.

Ejemplo:
DEFPARAM PRELOADBARS = 300
a = (Close + Open) / 2
IF price CROSSES OVER Average[250](a) THEN
BUY 1 SHARE AT MARKET
ENDIF

Si parametramos PRELOADBARS en 300, significar que una media mvil de 250 periodos empezar a
dibujarse desde la barra siguiente al inicio del sistema de trading. No sera el caso si slo se hubieran
cargado de antemano 200 velas.
Tenga en cuenta que 300 ser el valor mximo: si existen menos de 300 disponibles con antelacin al inicio
del sistema, slo se cargarn las velas disponibles.
En el caso de el que se cargaran 300 velas, el BarIndex de la primera vela tras el comienzo del sistema de
trading ser igual a 300. Por otro lado, si se cargaran 0 velas, el BarIndex de la primera vela tras el inicio del
sistema ser 0.

V 4.1.1 20170303 www.prorealtime.com 21 / 95


La programacin de sistemas de trading

FlatBefore y FlatAfter
DEFPARAM FLATBEFORE = HHMMSS
DEFPARAM FLATAFTER = HHMMSS
HHMMSS es una frmula en la que HH indica la hora, MM indica los minutos y SS indica los segundos.
Estas instrucciones le permiten anular las rdenes pendientes, cerrar todas las posiciones y evitar el
lanzamiento de nuevas rdenes con anterioridad a un momento preciso del da en el caso de FLATBEFORE
o despus de un momento preciso del da en el caso de FLATAFTER.
El parmetro FLATBEFORE debe expresar siempre un momento posterior a la apertura del mercado
(personalizada o no) y FLATAFTER debe indicar siempre un momento anterior al cierre del mercado
(peronalizado o no); de otro modo estas instrucciones no tendrn ningn efecto. Si el momento parametrado
no es un mltiplo de de la vista temporal en la que se ejecuta el sistema, (esto ocurre en la mitad de una
vela) la instruccin DEFPARAM FlatAfter surtir efecto al final de dicha vela y la instruccin DEFPARAM
FLATBEFORE ser vlida hasta el cierre de la vela anterior.
La rdenes se restringirn durante este periodo, lo que significa que no se lanzar ninguna orden y que
tales rdenes tampoco sern lanzadas en la apertura del periodo siguiente, cuando el sistema de trading
est autorizado a lanzarla. Esto implica que las variables de tipo "ONMARKET" se mantendrn siempre
inactivas ("false") durante esos momentos.

Ejemplo:
DEFPARAM FLATBEFORE = 093000 // Anular cualquier orden pendiente, cerrar todas las
posiciones y evitar que el sistema de trading pueda lanzar nuevas rdenes antes de las
9:30 del huso horario del mercado.
DEFPARAM FLATAFTER = 160000 // Anular cualquier orden pendiente, cerrar todas las
posiciones y evitar que el sistema de trading pueda lanzar nuevas rdenes despus de las
16:00:00 del huso horario del mercado.

No actualizacin en efectivo NoCashUpdate (slo ProBacktest)


DEFPARAM NOCASHUPDATE = False
Si esta opcin est activada, las unidades en efectivo disponibles no se actualizarn con las ganancias, las
prdidas y las comisiones de operativa.
Por defecto, NOCASHUPDATE = False.

Ejemplo:
Capital inicial 10000, con NOCASHUPDATE = True. La inversin mxima quedar limitada a 10000 sin
tomar en cuenta las ganancias realizadas a lo largo de la ejecucin del ProBacktest.
Nota:
Los parmetros definidos con ayuda de la instruccin DEFPARAM deben definirse al inicio del cdigo (tras
los comentarios).

MinOrder and MaxOrder (slo Probacktest)


DEFPARAM MinOrder = n
DEFPARAM MaxOrder = p
Esta opcin le permite bloquear todas las rdenes cuya cantidad (en lotes, contratos o acciones) est por
debajo de n o por encima de p.

Ejemplo:
DEFPARAM MinOrder = 100
BUY 1000 CASH AT MARKET
Si el precio actual est por encima de 10, la cantidad de la orden estar por debajo de 100 y la orden ser
rechazada.

V 4.1.1 20170303 www.prorealtime.com 22 / 95


La programacin de sistemas de trading

Llamadas a indicadores

Indicadores ProRealTime
Todas las funciones disponibles para la programacin de indicadores son accesibles tambin para la
programacin de sistemas de trading (cf. ver glosario del presente manual para acceder a la lista completa).
Le remitimos al manual ProBuilder para conocer estas funciones al detalle.
La cantidad de datos histricos necesarios para el clculo de un indicador depende de la naturaleza de
dicho indicador. Por ejemplo, para la funcin media exponencial sobre N periodos (ExponentialAverage[N]),
consideramos generalmente que son necesarias 10*N para obtener un resultado preciso. Podr realizarse
una aproximacin en funcin de la cantidad de histrico disponible para el valor.
Si la fecha de inicio del ProBacktest es prxima a la primera fecha del grfico, el servidor provee una cantidad
adicional de histrico para que los indicadores puedan proporcionar resultados desde la primera vela.
Indicadores personalizados
Al igual que en la programacin de indicadores, es posible llamar a funciones personalizadas con la ayuda
de la instruccin CALL en un sistema de trading.
Ejemplo:
a,b = CALL "HistoMACD[5,6]" // a y b son los parmetros de salida de la funcin. 5 y 6
son los parmetros de entrada
Le recomendamos leer atentamente el prrafo 7 para asegurarse de que utiliza correctamente la instruccin
CALL.

Consejos de programacin

ADVERTENCIA: los ejemplos presentados en este manual tienen un objetivo pedaggico. Usted
es totalmente libre en la eleccin de sus criterios para su propia operativa. Toda la informacin
presentada es de carcter "general" y no representa informacin alguna, o consejo personalizado o
incitacin alguna a la compra o la venta de instrumentos financieros. Los resultados pasados no
presagian el futuro. Todo sistema de trading puede exponerle a un riesgo de prdida superior a sus
depsitos iniciales.

El tiempo de clculo de un sistema de trading depende de la complejidad de los indicadores utilizados y de


la manera utilizada para llamarlos. El siguiente prrafo le ofrece algunos sencillos consejos para optimizar el
funcionamiento de sus cdigos.
Reducir el nmero de llamadas a indicadores ProRealTime
Si desea utilizar el mismo indicador varias veces en clculos distintos, no haga uso de la funcin CALL y
procure en su lugar almacenarlo en una variable intermedia.

CDIGO NO PTIMO CDIGO PTIMO

IF NOT LONGONMARKET AND Close > Average[40] avg40 = Average[40]


THEN IF NOT LONGONMARKET AND Close > avg40 THEN
BUY 1 SHARE AT MARKET BUY 1 SHARE AT MARKET
ENDIF ENDIF

IF NOT SHORTONMARKET AND Close < Average[40] IF NOT SHORTONMARKET AND Close < avg40 THEN
THEN
SELLSHORT 1 SHARE AT MARKET
SELLSHORT 1 SHARE AT MARKET
ENDIF
ENDIF

V 4.1.1 20170303 www.prorealtime.com 23 / 95


La programacin de sistemas de trading

Esto es vlido igualmente si quiere utilizar el mismo indicador varias veces, pero con diferente
compensacin.

CDIGO NO PTIMO CDIGO PTIMO

a = ExponentialAverage[40](Close) a = ExponentialAverage[40](Close)
b = ExponentialAverage[40](Close[1])
c = ExponentialAverage[40](Close) IF a > a[1] THEN
BUY 1 SHARE AT MARKET
IF a > b THEN ENDIF
BUY 1 SHARE AT MARKET
ENDIF IF a < a[1] THEN
SELLSHORT 1 SHARE AT MARKET
IF a < c[1] THEN ENDIF
SELLSHORT 1 SHARE AT MARKET
ENDIF

Llamadas a indicadores personalizados


La llamada a indicadores personalizados a travs de la instruccin CALL consume ms tiempo de clculo
que la llamada a indicadores ProRealTime. En el caso de los indicadores ProRealTime, conocemos de
antemano los clculos necesarios y dominamos la implementacin. Esto nos permite efectuar
optimizaciones en los clculos no permitidas por los indicadores personalizados, cuya programacin es
discrecional.
Para mejorar el rendimiento de un sistema de trading, es esencial otorgar la mxima eficacia a la instruccin
CALL en el programa.

Limitar las llamadas idnticas:


Aplicamos la misma regla de limitacin de las llamadas a un mismo indicador para los indicadores
ProRealTime.

CDIGO NO PTIMO CDIGO PTIMO

myindic1 = CALL "MiFuncion" myindic = CALL "MiFuncion"

IF NOT LONGONMARKET AND Close > myindic1 IF NOT LONGONMARKET AND Close > myindic
THEN THEN
BUY 1 SHARE AT MARKET BUY 1 SHARE AT MARKET
ENDIF ENDIF

myindic2 = CALL "MiFuncion" IF NOT SHORTONMARKET AND Close < myindic


IF NOT SHORTONMARKET AND Close < myindic2 THEN
THEN SELLSHORT 1 SHARE AT MARKET
SELLSHORT 1 SHARE AT MARKET ENDIF
ENDIF

V 4.1.1 20170303 www.prorealtime.com 24 / 95


La programacin de sistemas de trading

Limitar las llamadas imbricadas:


Si desea utilizar un indicador personalizado en el cdigo de su ProBacktest, compruebe que no contiene la
instruccin CALL.
Las llamadas a indicadores personales imbricados consumen mucho tiempo y recursos de clculo. Le
recomendamos escribir (o duplicar) sus indicadores personalizados utilizados en ProBacktest, de manera
que slo llamen a indicadores de ProRealTime.
Si los cdigos de sus indicadores personales no son muy complejos, podr incluso integrarlos directamente
en el cdigo de sus ProBacktests.

CDIGO NO PTIMO CDIGO PTIMO

Cdigo del sistema de trading: Cdigo del sistema de trading:


myindic = CALL "MyDCLOSEMix LinearReg" dayclosemix = (DClose(0) + 3.5 * DClose(1)
+ 4.5 * DClose(2) + 3 * DClose(3) + 0.5 *
DClose(4) 0.5 * DClose(5) 1.5 *
IF NOT LONGONMARKET AND Close > myindic THEN
DClose(6)) / 10.5
BUY 1 SHARE AT MARKET
myindic = LinearRegression[5](dayclosemix)
ENDIF

IF NOT LONGONMARKET AND Close > myindic THEN


IF NOT SHORTONMARKET AND Close < myindic THEN
BUY 1 SHARE AT MARKET
SELLSHORT 1 SHARE AT MARKET
ENDIF
ENDIF

IF NOT SHORTONMARKET AND Close < myindic THEN


Cdigo de "MyDCLOSEMix LinearReg": SELLSHORT 1 SHARE AT MARKET
dayclosemix = CALL "MyDCLOSEMix" ENDIF

RETURN LinearRegression[5](dayclosemix)

Cdigo de "MyDCLOSEMix":
mix = (DClose(0) + 3.5 * DClose(1) + 4.5 *
DClose(2) + 3 * DClose(3) + 0.5 * DClose(4)
0.5 * DClose(5) 1.5 * DClose(6)) / 10.5

RETURN mix

V 4.1.1 20170303 www.prorealtime.com 25 / 95


La programacin de sistemas de trading

Limitar el nmero de condiciones imbricadas:


En el caso de la utilizacin de cualquier instruccin condicional (IF...THEN...ENDIF), le aconsejamos trabajar
con una instruccin que verifique n condiciones en lugar de con n instrucciones:

CDIGO NO PTIMO CDIGO PTIMO

IF Close >= 0.0014 THEN IF Close >= 0.0014 AND Close <= 0.0047 AND
IF Close <= 0.0047 THEN IntradayBarindex >= 5 AND IntradayBarindex
<= 20 THEN
IF IntradayBarindex >= 5 THEN
IF NOT SHORTONMARKET THEN
IF IntradayBarindex <= 20 THEN
BUY 1 SHARES AT MARKET
IF NOT SHORTONMARKET THEN
ENDIF
BUY 1 SHARES AT MARKET
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF

Utilizacin de bucles FOR:


El uso de bucles FOR es a menudo indispensable, pero conviene limitar su utilizacin cuando esto le sea
posible ya que ralentiza el clculo.

Le mostramos a continuacin algunos ejemplos comunes en los que no es necesario el uso del bucle:

// Determina si la condicin c1 se ha cumplido al menos una vez en el transcurso de las n


ltimas velas:
IF highest[n](c1) = 1 THEN
...
// Determina si la condicin c1 se ha cumplido siempre en el transcurso de las n ltimas
velas:
IF lowest[n](c1) = 1 THEN
...
// Determina el nmero de veces en los que se ha comprobado la condicin c1 en el
transcurso de las n ltimas velas:
num = summation[n](c1)

// Determina el nmero de vistas temporales desde que se se cumpli c1:


IF c1 THEN
lastoccurence = BarIndex
ENDIF
timesince = BarIndex - lastoccurence

// Encontrar el max de las variables (a,b,c,d,e,f,g):


top = MAX(a , MAX(b , MAX(c , MAX(d , MAX(e , MAX(f , g) ) ) ) ) )

V 4.1.1 20170303 www.prorealtime.com 26 / 95


ProBacktest: La simulacin de sus sistemas de trading

ProBacktest: La simulacin de sus sistemas de trading


La pestaa "ProBacktest" de la ventana de creacin de sistemas de trading (cf. prrafo 2), permite
configurar los parmetros de su sistema:

Capital inicail
Configuracin de las comisiones & Gestin de riesgos
Periodo de ejecucin
Optimizacin de variables

V 4.1.1 20170303 www.prorealtime.com 27 / 95


ProBacktest: La simulacin de sus sistemas de trading

Gestin de Capital o Money Management

Capital inicial
Esta seccin le permite definir el capital del que se dispondr en su sistema de trading. De ello depender la
inversin mxima autorizada en la ejecucin del sistema.
Durante la ejecucin de un ProBacktest, las comisiones de operativa as como las ganancias o las prdidas
lo aumentarn o reducirn (a menos que el parmetro NOCASHUPDATE est activado, cf prrafo
Reinvertir las ganancias).
En sistemas de trading automtico, el capital disponible es el capital de su cartera.

Si su ProBacktest no realiza ninguna compra, le recomendamos aumentar su capital inicial.

Comisiones de operativa y gestin de riesgos


En funcin del tipo de instrumento en el que se base el sistema, se aplicarn diferentes configuraciones de
operativa.
Podr parametrar su operativa a travs de las 3 pestaas disponibles: "Futuros", "Acciones" y "Forex".

Futuros:

Las comisiones de operativa se definen en comisin por lote y por transaccin.


El "Depsito por contrato" es la cantidad de efectivo necesaria para la compra de un contrato. El valor de un
punto se calcula automticamente en funcin del futuro en el que se aplique el ProBacktets.

V 4.1.1 20170303 www.prorealtime.com 28 / 95


ProBacktest: La simulacin de sus sistemas de trading

Encontrar a continuacin el valor de cada punto en los futuros ms negociados:


NOMBRE DEL FUTURO VALOR 1 PUNTO

FCE CAC 40 10
DAX 25
DJ Eurostoxx 50 10
BUND 10
Euro FX 12,5$
Mini S&P 500 50$
Mini Nasdaq 100 20$
Mini Dow 5$
Forex:
Se definen el spread, el tamao del lote y la cobertura que se van a aplicar a cada orden.
Ejemplo de configuracin para el EURUSD:
Tamao de un lote: 100 000
Spread: 2 pips
Cobertura o margen: 5%
La instruccin BUY 1 LOT AT MARKET en el EURUSD tiene como objetivo la compra de un lote de 100000$,
con un spread de 2 pips (es decir 0,0002). Al ser 20:1 el apalancamiento (margen de 5%), es necesario
disponer de 5000$.
La gestin de riesgos funciona de la misma manera que para los futuros, salvo que las cantidades se
definen en lotes.
Acciones:
Las comisiones de operativa se definen por orden en o en % de la transaccin. Tambin es posible definir
una comisin de operativa mnima por transaccin.
Ejemplo de configuracin para acciones:
Comisin por orden: 10$
Cobertura o margen: 20%
A travs de esta configuracin, cada orden enviada tendr un apalancamiento de 5:1.

Optimizacin de variables
Esta seccin le permite definir la optimizacin de variables. A travs de esta funcin, podr probar mltiples
combinaciones de variables para encontrar las que le ofrezcan los mejores resultados en un instrumento
determinado y en una vista temporal dada en los datos histricos analizados.
Para ms informacin al respecto y un ejemplo concreto, le sugerimos visualizar el video "Defina la gestin
de capital (money management), los stops y la optimizacin de variables para mejorar sus estrategias".
El resultado de la optimizacin se presenta en un "Informe de optimizacin". En l se indican las estadsticas de
cada valor para determinar as la combinacin de variables a utilizar en la optimizacin de su sistema de trading.
He aqu un ejemplo de sistema con optimizacin de los periodos de medias mviles n y m:
AVGm = ExponentialAverage[m](Close)
AVGn = ExponentialAverage[n](Close)
IF AVGm CROSSES OVER AVGn THEN
BUY 100 SHARES AT MARKET
ENDIF
IF AVGm CROSSES UNDER AVGn THEN
SELL 100 SHARES AT MARKET
ENDIF

V 4.1.1 20170303 www.prorealtime.com 29 / 95


ProBacktest: La simulacin de sus sistemas de trading

Definimos las variables n y m pulsando en el botn "Aadir" de la ventana de optimizacin:

Aparece entonces la ventana para la definicin de variables:

Nombre usado en programa representa el nombre que toma la variable en nuestro cdigo (n en este
caso). Es importante distinguir entre maysculas y minsculas.
Etiqueta en ventana propiedades representa el nombre que se le atribuye a la variable para
identificarla con mayor facilidad (por ejemplo "short" o "nmero de perodos" para n).
Valor mnimo y Valor mximo representan los extremos entre los que la variable puede oscilar
durante las pruebas de optimizacin.
Paso representa el intervalo de valores que la optimizacin respetar durante el anlisis de los
resultados.
La siguiente imagen muestra un ejemplo de informe de optimizacin:

V 4.1.1 20170303 www.prorealtime.com 30 / 95


ProBacktest: La simulacin de sus sistemas de trading

El informe del ejemplo ofrece 5 estadsticas para cada una de las combinaciones de variables estudiadas
(en este caso: n y m). Veamos las estadsticas con ms detalle:

Ganancias designa la ganancia o prdida obtenida con el sistema de trading. Matemticamente, se


traduce en esta frmula:

Ganancias = Capital final Capital inicial

Esta estadstica permite evaluar de manera absoluta el potencial de ganancias del sistema de trading
durante el periodo histrico probado y para cada combinacin de variables.

Nota las comisiones de operativa definidas en la seccin 'Gestin de capital' se toman en cuenta en este
clculo.

El %Ganancias es el beneficio expresado en %. Matemticamente, se traduce por la frmula:

%Ganancias = (100 x Ganancias) / Capital inicial

Indica el resultado relativo de este ProBacktest, configurado con las correspondientes variables.

El Num de posiciones indica el nmero de posiciones abiertas en el transcurso del ProBacktest.

El % de posiciones ganadoras designa el porcentaje de posiciones ganadoras del ProBacktest


empleado. Matemticamente se define as:

% Operaciones ganadoras = (100 x Nm.de posiciones ganadoras) / Nm.total de posiciones

La Ganancia media por posicin puede ayudar a determinar la eficacia de las rdenes enviadas. Se
define as:

Ganancia media por posicin = Ganancias/ Nmero de posiciones

Nota: los valores ptimos de las variables de un mismo ProBacktest pueden cambiar segn el instrumento,
las unidades de tiempo o la cantidad de histrico utilizados.

V 4.1.1 20170303 www.prorealtime.com 31 / 95


ProBacktest: La simulacin de sus sistemas de trading

Definicin del periodo de ejecucin del backtest

Estos campos sirven para definir el intervalo de tiempo sobre el que se desee aplicar el ProBacktest (con la
condicin de que existan suficientes datos histricos para el valor en cuestin). Puede aumentar la cantidad
de histrico de su grfico utilizando el men desplegable situado en la parte superior izquierda de cada uno.
Tenga en cuenta que si establece "primera fecha disponible" como fecha de inicio, ser necesario cargar en
su grfico la cantidad de histrico deseada antes de lanzar el ProBacktest.
Si se trata de un ProBacktest en 'tiempo real', las rdenes se fijan en su grfico cuando se producen las
seales. Tambin es posible asociar estas rdenes a ventanas emergentes o a sonidos desde el men
"Opciones/configuracin de alertas y sonidos".
Si se define una fecha final, las posiciones todava abiertas en esta fecha se cerrarn automticamente.

Nota: si su ProBacktest tarda en calcularse, le sugerimos reducir su periodo de ejecucin, pues el tiempo de
clculo es proporcional a la cantidad de histrico en el que se desee aplicar.
Tras la ejecucin de un ProBacktest se muestra la siguiente informacin (ver Anexo A):
Grfico de liquidez
Evolucin de las posiciones
Informe detallado
Para ms informacin, consulte el Anexo A al final de este documento.

Personalizacin de las horas de trading en backtests


El men "Opciones / Huso horario en grficos intrada" le permite personalizar los horarios de negociacin
de los mercados.

Horarios de negociacin personalizados: si reduce las horas de negociacin de un mercado, nicamente


aparecern en el grfico las horas establecidas (aunque en la ejecucin de su ProBacktest se tomarn en
cuenta todos los datos negociados en la sesin, no slo aqullos que aparecen en su grfico).
Observe que slo se pueden reducir las horas de negociacin en un mismo da. Por ejemplo, en un mercado
que se mantenga abierto las 24 horas, Ud. podr mostrar los datos negociados entre 10:00 y 14:00, pero no
sra posible seleccionar los datos negociados entre las 21:00 de un da y las 9:00 del da siguiente. Si se
configura el lanzamiento de una orden al cierre de la ltima vela de la sesin y el horario de este mercado se
hubiera personalizado, esta orden se lanzar a la apertura personalizada del siguiente da de trading.

Notas relativas a la personalizacin de los horarios de negociacin y los datos del fin de semana:
Los horarios de negociacin personalizados slo son visibles en los grficos: los sistemas ProBacktest se
ejecutarn tomando en cuenta los horarios de negociacin oficiales del mercado.
Algunos mercados que negocian durante las 24 horas permiten utilizar los datos intradiarios para la
construccin de las velas diarias. Tal y como ocurre en la personalizacion de los horarios, esta opcin no se
toma en cuenta para la ejecucin de sus ProBacktets, que siempre utilizarn las velas diarias oficiales
basadas en el uso horario local del mercado. Algunos mercados (como el Forex) incluyen datos del fin de
semana. Existe una casilla especial para dichos mercados en "Opciones / Huso horario de grficos intrada"
que le permite ocultar los datos negociados durante el fin de semana en los grficos, aunque dichos datos
siempre se tomaran en cuenta en la ejecucin de sus ProBacktets. Los datos del domingo se incluyen en la
vela diaria del lunes al aplicar un ProBacktest (el sbado no hay negociacin).

V 4.1.1 20170303 www.prorealtime.com 32 / 95


ProBacktest: La simulacin de sus sistemas de trading

Razones por las que puede detenerse un ProBacktest


Un ProBacktest puede detenerse en los siguientes casos:
El backtest alcanza el momento final que se precis en la ventana de programacin. En este caso, el
final del backtest se representa en el grfico como una lnea negra vertical.
Presencia de la instruccin "QUIT" en el cdigo que haya sido ejecutada. En este caso, el final del
backtest se representa en el grfico a travs del icono
El capital disponible es insuficiente para cubrir las prdidas (el capital "estimado" es negativo). En este
caso, el final del backtest se representa en el grfico mediante el icono
Se rechaza una orden por efectivo insuficiente. La orden aparecer en la lista de rdenes del informe
detallado. En este caso, el final de backtest se representar mediante el icono:

Aqu le mostramos un ejemplo de ProBacktest interrupido por capital insuficiente:

V 4.1.1 20170303 www.prorealtime.com 33 / 95


ProBacktest: La simulacin de sus sistemas de trading

Visualizar los valores de las variables backtest (a partir de ProRealTime v10.2)


La funcin GRAPH permite visualizar los valores de las variables que utiliza en su programa backtest.
Esta instruccin se utiliza de la siguiente manera:
GRAPH myvariable AS "my variable name"
myvariable es el nombre de la variable en el cdigo
"my variable name" es la etiqueta de la variable que se mostrar en el grfico

Es posible igualmente definir un color de salida gracias al parmetro opcional COLOURED:


GRAPH myvariable COLOURED (r,g,b) AS "my variable name"
r,g,b son enteros entre 0 y 255 (Formato RGB)
ej: (255,0,0) para una lnea roja

as como la transparencia de la curva:


GRAPH myvariable COLOURED (r,g,b,a) AS "my variable name"
a es un entero entre 0 y 255 e indica la transparecia (0 para una curva totalemente transparente,
255 para una curva plena)

Aparecer un nuevo subgrfico bajo la curva Ganancias/Prdidas de su backtest. Este subgrfico contiene
los valores de myvariable en cada barra, como se aprecia en el siguiente ejemplo:

Nota:
La instruccin GRAPH no puede utilizarse en Trading Automtico.
Puede mostrarse un mximo de 5 variables simultneamente en un mismo grfico. Se ignorar toda variable
suplementaria.

V 4.1.1 20170303 www.prorealtime.com 34 / 95


E l m t o d o Wa l k F o r w a r d

El mtodo Walk Forward


El anlisis Walk Forward le permite optimizar un sistema de trading y validar su pertinencia y estabilidad a
lo largo del tiempo.
En primer lugar, el anlisis Walk Forward optimiza una serie de variables en un periodo inicial llamado
"datos dentro de muestra", a continuacin prueba los mejores parmetros del periodo siguiente llamado
"datos fuera de muestra" y repite el proceso desplazando el anlisis hacia adelante en el tiempo. Los
periodos de optimizacin (dentro de muestra) pueden tener un solo punto de inicio (modo anclado) o puntos
de partida distintos (modo desanclado).

MODO DESANCLADO MODO ANCLADO

Comparando los resultados de estos dos periodos, el mtodo le permite:


Comprobar que el rendimiento de la estrategia en los periodos de optimizacin (los datos dentro de la
muestra, en azul ) son coherentes con los periodos probados (datos fuera de la muestra, en naranja).
Esto evita el riesgo de sobre ajuste.
Comprobar el comportamiento de la estrategia en condiciones de mercado variables
Comprobar la potencia de la estrategia en datos pasados

Ejemplo prctico
Esta seccin muestra cmo optimizar un sistema de trading existente a travs del mtodo Walk Forward.
En primer lugar, pulse en el botn de la parte superior de la ventana de edicin del cdigo mostrada a
continuacin.

V 4.1.1 20170303 www.prorealtime.com 35 / 95


E l m t o d o Wa l k F o r w a r d

Aparecer la siguiente ventana. Una vez definidas las variables, podr activar el metodo Walk Forward pulsando
en el botn Activar y elegir los parmetros del Walk Forward. Seleccione el mtodo Desanclado para establecer
distintos puntos de partida o el mtodo Anclado para un nico punto de inicio para todas las repeticiones.
Podr tambin seleccionar el nmero de repeticiones del Walk Forward (una repeticin consiste en
optimizar los parmetros en el periodo de optimizacin para comprobar la mejor configuracin en el periodo
probado) y el coeficiente entre el periodo de optimizacin y el periodo probado.

Una vez definidos los parmetros, cierre la ventana anterior y lance el analisis Walk Forward pulsando en el
botn "Validar programa".

V 4.1.1 20170303 www.prorealtime.com 36 / 95


E l m t o d o Wa l k F o r w a r d

Durante el anlisis Walk Forward, la plataforma comienza optimizando la estrategia en una muestra para
determiner la configuracin de variables que genera el mayor rendimiento. En ese momento, el rendimiento
de esa configuracin se evala en una muestra adicional no incluida en la muestra inicial. Se repite el
proceso 5 veces con el objetivo de determinar si la configuracin ptima de variables ha generado un
rendimiento coherente o superior en condiciones de mercado distintas.

En funcin del nmero de variables y de repeticiones, los clculos sern ms o menos complejos. Esto
influir en el tiempo de ejecucin del backtest.

Tras el clculo, aparecer un grfico de liquidez junto con el informe detallado del rendimiento del sistema.
Adems de las pestaas del informe detallado, se mostrar una pestaa adicional con las estadsticas del
Walk Forward comparando los resultados de cada repeticin.

V 4.1.1 20170303 www.prorealtime.com 37 / 95


E l m t o d o Wa l k F o r w a r d

Para determinar la potencia de la estrategia, le coeficiente Walk Forward comparar la hipottica ganancia
anualizada del periodo probado (fuera de muestra) con la ganancia anualizada del periodo probado (dentro
de muestra). Es necesario un coeficiente superior al 50 o 60% para considerar que la estrategia no est
demasiado optimizada.

El grfico de liquidez agrega y muestra el periodo dentro de muestra (u optimizacin) y los 5 periodos fuera
de muestra (o tests) en el grafico.

Al mover su ratn sobre las bandas inferiores, se destaca el periodo correspondiente con los parmetros
utilizados, mostrando los resultados obtenidos a lo largo de este periodo de tiempo. En la imagen anterior, el
ratn se sita en el cuarto periodo de prueba. Observamos que los valores mostrados para las variables
PROTECTION, ORDERS, y NUMBER dieron los mejores resultados durante el 4 periodo de optimizacin
(en la muestra n4) y se aplicaron entonces al periodo de prueba (fuera de muestra n4) dando como
resultado una ganancia de 2.250 durante el periodo de prueba n4 (destacado en la imagen anterior).

V 4.1.1 20170303 www.prorealtime.com 38 / 95


ProOrder: La ejecucin de sistemas de trading
automtico

ProOrder: La ejecucin de sistemas de trading automtico


En esta seccin del manual encontrar toda la informacin necesaria para la ejecucin como sistema de
trading automtico de cualquier sistema al que haya aplicado un ProBacktest:
Cmo enviar un sistema de trading a ProOrder con el fin de prepararlo para su ejecucin como sistema
de trading automtico.
Cmo ejecutar un sistema de trading automtico y comprobar sus resultados.
La configuracin de sistemas de trading automtico y sus condiciones de ejecucin.
La coexistencia del trading automtico y del trading manual en la plataforma.
Las condiciones para ejecutar mltiples sistemas de trading automtico en un mismo instrumento.
Una lista de indicadores que no pueden utilizarse en estos sistemas automticos debido a su mtodo
de clculo.

Antes de ejecutar cualquier sistema de trading automtico, le recomendamos la lectura completa de este
manual.

V 4.1.1 20170303 www.prorealtime.com 39 / 95


ProOrder: La ejecucin de sistemas de trading
automtico

Prepare un sistema de trading para la ejecucin automtica


Comience por abrir la ventana ProOrder a partir del menu "Trading":

Aparecer la siguiente ventana, con las instrucciones de preparacin de los sistemas de trading para el
trading automatico.

V 4.1.1 20170303 www.prorealtime.com 40 / 95


ProOrder: La ejecucin de sistemas de trading
automtico

En primer lugar, seleccione el grfico y la vista temporal en la que desee ejecutar su sistema de trading

automatico y pulse en el boton . Se abrir a continuacin la ventana "Indicadores & Sistemas de

trading". Pulse en el botn "Backtest y trading automtico" para acceder a la lista de sus sistemas de
trading:

Seleccione el sistema de trading que desee ejecutar automticamente y pulse en el botn "Preparar para
trading automtico". El sistema de trading aparecer en ProOrder.

V 4.1.1 20170303 www.prorealtime.com 41 / 95


ProOrder: La ejecucin de sistemas de trading
automtico

Cmo ejecutar sistemas de trading en ProOrder y comprobar sus resultados


Una vez aadido el sistema de trading a ProOrder, podr definir el tamao mximo de su posicin y
empezar a operar con l pulsando en el botn "Start":

Una ventana emergente le pedir confirmar la ejecucin del sistema, por lo que le recomendamos leer con
atencin el contenido de la misma.
Observe que el "Tamao mximo de la posicin" introducido en ProOrder prevalece sobre las instrucciones
de sus cdigos. El tamao mximo de la posicin para futuros y forex se define en nmero de lotes o
contratos. Por ejemplo, si su cdigo contiene una instruccin para la compra de 3 lotes pero Ud. establece el
lmite mximo de la posicin en 1, se ignorar la instruccin para la compra de 3 lotes. Del mismo modo, si
su cdigo contiene una instruccin de compra de 1 lote y de venta a descubierto de 3 lotes, la orden de
venta a descubierto no se ejecutar y Ud. mantendr slo la posicin compradora. Por lo tanto, deber
verificar siempre el tamao mximo de su posicin antes de la ejecucin de cualquier cdigo.
Para el caso de las acciones, el tamao mximo de la posicin se define en efectivo (sin incluir las
comisiones de operativa).
Tras su confirmacin, el sistema se mostrar en la seccin "En curso", tal y como aparece a continuacin.

V 4.1.1 20170303 www.prorealtime.com 42 / 95


ProOrder: La ejecucin de sistemas de trading
automtico

Mientras el sistema de trading est operativo, sus posiciones, ganancias latentes y ganancias totales
aparecern en la ventana ProOrder. Ser entonces posible pulsar en el enlace "Versin" para acceder a una
copia del cdigo de este sistema.

Podr igualmente pulsar en el botn destacado a continuacin para visualizar el grfico de liquidez del
sistema y el informe detallado de sus resultados.

V 4.1.1 20170303 www.prorealtime.com 43 / 95


ProOrder: La ejecucin de sistemas de trading
automtico

Le mostramos un ejemplo de grfico de liquidez de un sistema en curso y su informe detallado:

V 4.1.1 20170303 www.prorealtime.com 44 / 95


ProOrder: La ejecucin de sistemas de trading
automtico

Nota: la ganancia mostrada en la seccin "Estadsticas de posiciones cerradas" puede ser diferente del
valor del grfico de liquidez, ya que ste toma en cuenta las posiciones que estn an abiertas y el sistema
sigue en curso.

V 4.1.1 20170303 www.prorealtime.com 45 / 95


ProOrder: La ejecucin de sistemas de trading
automtico

Configuracin de las preferencias de trading y condiciones de ejecucin

Configuracin de los sistemas de trading


Antes de ejecutar cualquier sistema de trading, deber pulsar en el botn destacado en amarillo para
configurar los parmetros y preferencias de su trading:

Incluimos un enlace hacia las condiciones de ejecucin de sus sistemas de trading en la parte inferior de
esta ventana ("Pulse aqu"). Le aconsejamos leer estas condiciones con atencin.

V 4.1.1 20170303 www.prorealtime.com 46 / 95


ProOrder: La ejecucin de sistemas de trading
automtico

Detencin automtica de sus sistemas de trading


Fecha de validez: todos los sistemas de trading en curso tienen una fecha de validez comn. Si no pulsa
en el botn de prolongacin antes de esa fecha, ProOrder los detendr automticamente. Puede visualizar
la fecha de validez (expresada en el huso horario de su ordenador) y prolongar la validez de sus sistemas
de trading a travs del botn de prolongacin situado en la parte inferior de la ventana ProOrder mientras se
encuentre operativo algn sistema de trading:

Puede asignar una cantidad de tiempo para cada prolongacin desde la ventana "Preferencias de trading".
Es posible aumentar este parmetro mientras su sistema de trading est operativo. La modificacin se
aplicar en la siguiente prolongacin que se efecte.

Lmite mximo de rdenes por da: ProOrder podr interrumpir cualquier sistema de trading tanto si la
totalidad de rdenes pendientes como si el nmero de rdenes ejecutadas por dicho sistema desde la
apertura del mercado (0h00 GMT para el Forex) es superior o igual a la cantidad establecida en la pestaa
"Trading automtico" de la ventana "Preferencias de trading". Una orden pendiente es una orden que ha
sido enviada al broker y que no se ha ejecutado, o que ha sido rechazada o anulada.

Por ejemplo, cada instruccin "Set stop", "Set Trailing stop" o "Set target", en tanto que la orden
correspondiente no haya sido anulada, rechazada o ejecutada.

Adems, 3 rdenes lmites o 3 rdenes stop diferentes que no hayan sido anuladas, rechazadas o
ejecutadas contarn como 3 rdenes pendientes. Esta condicin se cumple tanto si las rdenes se sitan en
el mismo nivel de precio como en niveles de precio distintos.

V 4.1.1 20170303 www.prorealtime.com 47 / 95


ProOrder: La ejecucin de sistemas de trading
automtico

Por ejemplo, Ud. establece un lmite de 8 rdenes para la detencin de sus sistemas. Desde la apertura del
mercado, un sistema de trading determinado ya ha ejecutado 5 ordenes y tiene, adems, una posicin
abierta y dos rdenes pendientes (una "set target" y una "set stop"). Si el sistema necesitara enviar una
nueva orden al mercado, esta octava orden no se lanzara ya que 5+2+1 representa el nivel de interrupcin
establecido. El sistema de trading se detendr y se anularn en primer lugar las rdenes pendientes y a
continuacin se cerrar su posicin.

Rechazo de rdenes: ProOrder podr detener cualquier sistema de trading si se rechaza un nmero
determinado de sus rdenes. Puede establecer la interrupcin de un sistema de trading al cabo de una sola
orden rechazada o fijar un nmero de intentos. No es posible modificar los parmetros de rechazo de
rdenes mientras un sistema de trading se encuentre operativo.

Coexistencia del trading manual y del trading automtico en la plataforma


Si hay sistemas de trading ejecutndose en un valor, no ser posible lanzar rdenes manualmente desde la
plataforma en dicho valor, aunque podr seguir invirtiendo manualmente en otros instrumentos. En aquellos
instrumentos en los que haya sistemas de trading ejecutndose, las herramientas para el trading manual
sern reemplazadas por un botn que indica que el trading automtico se encuentra activo en ese
instrumento:

Puede abrir la ventana ProOrder pulsando en ese botn y acceder a los sistemas de trading actualmente en
curso.

V 4.1.1 20170303 www.prorealtime.com 48 / 95


ProOrder: La ejecucin de sistemas de trading
automtico

Ejecutar mltiples sistemas de trading en el mismo valor


Si est ejecutando varios sistemas de trading en el mismo valor, su posicin neta se determinar tomando
en cuenta todos ellos. Por ejemplo, si hay 2 sistemas de trading y uno compra 1 lote mientras que el otro
vende 1 lote, su posicin neta ser de 0. nicamente la posicin neta le proporcionar los resultados del
conjunto de sus sistemas de trading abiertos en el mercado en un momento dado.
Cuando muestre el grfico de liquidez de un sistema de trading, acceder a la ventana "Posiciones". Esta
ventana le indica las posiciones de un sistema concreto de trading en ese valor, y puede ser diferente de su
posicin neta en dicho instrumento (determinada por el conjunto de sistemas de trading en ejecucin en
dicho instrumento). La posicin neta est representada por la lnea de posicin.

Ejemplo:
Supongamos que estamos ejecutando 2 sistemas de trading en el mismo instrumento: uno compra 6 lotes
de un tamao de 100000 unidades cada uno y el otro est comprando 2 lotes de un tamao de 100000
unidades cada uno. La posicin neta = +800000
En este ejemplo, la posicin del sistema de trading mostrado en el grfico es de +600000. La posicin neta
mostrada por la lnea de posicin es de +800000.

V 4.1.1 20170303 www.prorealtime.com 49 / 95


ProOrder: La ejecucin de sistemas de trading
automtico

La posicin neta de +800000 unidades se muestra igualmente pulsando en el men "Trading" y abriendo la
ventana "Carteras":

Cuando ejecuta mltiples sistemas de trading en el mismo instrumento, cada valor informativo del sistema
que est ejecutndose se correponde con su posicin actual, rdenes, transacciones y ganancias de forma
independiente. Como consecuencia de esto, las instrucciones "LongOnmarket", "ShortOnMarket" pueden
indicarle si el sistema de trading en curso es comprador o vendedor.
La posicin neta en un instrumento debe ser diferente de la posicin de un determinado sistema. Del mismo
modo, otras variables de estado como "CountOfLongShares", "CountOfShortShares", "CountOfPosition",
"PositionPrice", "StrategyProfit", "TradIndex", "TradePrice" y "PositionPerf" hacen referencia slo a su
sistema actual.

Restriccin de indicadores
La utilizacin de los siguientes indicadores est limitada actualmente en trading automtico porque su
sistema de clculo no permite un uso en tiempo real:
ZigZag: las seales basadas en este indicador se recalculan despus de un hecho y como
consecuencia de esto, las seales dadas en tiempo real pueden diferir de las seales proporcionadas en
sus backtests.

V 4.1.1 20170303 www.prorealtime.com 50 / 95


An exo A: Muestre los resultados de su s sistemas de
trading

Anexo A: Muestre los resultados de sus sistemas de trading


Los resultados de un sistema de trading se presentan a travs de tres formatos complementarios:

Grfico de liquidez
Tambin llamado "Equity Curve", representa la evolucin del capital invertido en la ejecucin del sistema o
ProBacktest:
La lnea azul horizontal representa el capital inicial de su sistema. Si est ejecutando sistemas de
trading automtico, esta lnea se sita siempre en 0. Si ejecutara un ProBacktest con un capital inicial de
10000 y una prdida de 2705, el grfico de liquidez tendra un valor de 7295, tal y como puede apreciar
en el siguiente ejemplo. Si se tratara de un sistema de trading automtico con idntica prdida, el punto
de salida del grfico ser 0 y el valor final ser de -2705.

El relleno del grfico de liquidez ser de color verde si el resultado global es positivo (el valor actual
del capital es superior al inicial) y de color rojo si el resultado global es negativo.
La lnea de la grfico de liquidez ser de color verde en caso de una variacin positiva respecto al
nivel precedente, y de color rojo para indicar una variacin a la baja.

V 4.1.1 20170303 www.prorealtime.com 51 / 95


An exo A: Muestre los resultados de su s sistemas de
trading

Posiciones
Esta informacin se muestra mediante un histograma con la evolucin de las posiciones abiertas por un
sistema de trading.
Una barra verde indica la apertura de una posicin a largo (compra).
Una barra roja indica la apertura de una posicin a corto (venta a descubierto o short selling).
Si no hay ninguna barra visible, no hay ninguna posicin abierta en el mercado.

La aparicin de varias barras sucesivas de un mismo color indica que se mantienen la(s) posicin(es).
A lo largo del eje vertical visible en la zona derecha del grfico se indica la cantidad de posiciones abiertas y
acumuladas. En la ilustracin siguiente constataremos que nos encontramos en una posicin de venta de un
lote de 100000 unidades en el EUR/USD.

V 4.1.1 20170303 www.prorealtime.com 52 / 95


An exo A: Muestre los resultados de su s sistemas de
trading

Informe detallado
El informe detallado le permite visualizar las estadsticas de su sistema, as como el detalle de cada posicin
y orden:

V 4.1.1 20170303 www.prorealtime.com 53 / 95


An exo A: Muestre los resultados de su s sistemas de
trading

El informe detallado se presenta como una ventana independiente y se compone de 3 pestaas.


En la pestaa "Estadsticas" hallar un presentacin exhaustiva de los resultados del sistema de trading
(prdidas y ganancias, nmero de operaciones ganadoras,).as como indicadores de la evolucin del
riesgo. Observe que estas estadsticas no incluyen las posiciones abiertas en el momento en el que se
genera el informe (slo se toman en cuenta las posiciones cerradas).

Ganancias designa la plusvala obtenida con la operativa realizada. Matemticamente, se traduce con
esta frmula:
Ganancias = Capital final Capital inicial
Esta estadstica permite evaluar de manera absoluta el potencial de ganancias del sistema de trading
definido.
Nota: las comisiones de operativa configuradas en la seccin "Gestin de capital" se toman en cuenta en
este clculo.

El %Ganancias es el beneficio expresado en %. Matemticamente, se traduce por la frmula:


%Ganancias = (100 x Ganancias) / Capital inicial

El Beneficio bruto representa la suma de todas las ganancias y Prdidas brutas la suma de todas las
prdidas. Ratio ganancias/ prdidas es la relacin entre estos dos valores.

El Num de posiciones indica el nmero de posiciones abiertas en el transcurso del sistema de trading.

El % de posiciones ganadoras designa el porcentaje de posiciones ganadoras del sistema de trading


empleado. Matemticamente se define as:
% Operaciones ganadoras = (100 x Nm.de operac. ganadoras) / Nm.total de operaciones

La Ganancia media por posicin es la esperanza de ganancias por transaccin y puede ayudar a
determinar la eficacia media de las rdenes enviadas. La esperanza es especialmente importante cuando
no deseamos enviar un gran nmero de rdenes; en tal caso, la estadstica mencionada se convierte en
un criterio determinante para decidir si utilizamos o no el sistema.
Matemticamente, se define as:
Ganancia media por posicin = Ganancias / Nmero de posiciones

El Beneficio mximo es el mximo de ganancias de una posicin determinada, la Prdida mxima es


la prdida mxima de una posicin dada desde que se inici el sistema de trading. La Desviacin tpica
prdidas y ganancias es la desviacin tpica de los resultados de cada posicin.

El Max Drawdown es el mximo potencial de prdidas del sistema de trading. Definimos en primer
lugar el "drawdown", que es la distancia entre un punto determinado y el punto ms alto que le precede en
el grfico de liquidez:
DD(n)= Max t[0;n] P(t) - P(n)
El Max drawdown representa el valor mximo de este parmetro desde el inicio del sistema de trading.
MaxDD(N) = Max n[0:N] ( Maxt[0;n] P(t) - P(n) )

El Max Run-up es el potencial mximo de ganancias del sistema. El "runup" se define como la diferencia
entre un punto determinado y el punto ms alto que le precede en el grfico de liquidez:
RU(n)= P(n) Min t[0;n] P(t)

El Max Run-up representa el valor mximo de este parmetro desde el inicio del sistema de trading.
MaxRU(N) = Maxn[0:N] ( P(n) - Mint[0 ;n]P(t) )

V 4.1.1 20170303 www.prorealtime.com 54 / 95


An exo A: Muestre los resultados de su s sistemas de
trading

Ejemplo:

BARINDEX PNL DRAWDOWN RUNUP

1 0,00 0,00 0,00


2 15,00 0,00 -15,00
3 10,00 5,00 -10,00
4 0,00 15,00 0,00
5 15,00 0,00 -15,00
6 -10,00 25,00 0,00
7 -20,00 35,00 0,00
8 -5,00 20,00 -15,00
9 -6,00 21,00 -14,00
10 20,00 0,00 -40,00
11 5,00 15,00 -25,00

Max: -35,00 40,00

V 4.1.1 20170303 www.prorealtime.com 55 / 95


An exo A: Muestre los resultados de su s sistemas de
trading

El % Mximo de exposicin al riesgo: la exposicin al riesgo es la relacin entre la prdida mxima


posible de la posicin y el capital actual. El % mximo es, por tanto, el mximo de este valor expresado en
porcentaje. Podemos distinguir 3 casos:

Acciones:
%exposicin max = Max posiciones (Cantidad * precio medio / capital) * 100

Futuros:
%exposicin max = Max posiciones (Cantidad * depsito / capital) * 100

Forex:
%exposicin max = Max posiciones (Cantidad * precio medio * apalancamiento / capital) * 100
o "leverage" est l'effet de levier, "deposit" est la marge

Igualmente, el % exposicin media al riesgo es la media del porcentaje de exposicin al riesgo.

Las Comisiones de operativa contabilizan el conjunto de comisiones de operativa de cada orden desde el
inicio del sistema de trading. Las comisiones de operativa se definen en la gestin de capital en el caso de
los ProBacktest.

El % de tiempo en el mercado es la relacin entre el nmero de periodos durante los que hay posiciones
abiertas dividido por el nmero de periodos del sistema de trading.

Las dos pestaas siguientes le facilitan informacin sobre todas las rdenes lanzadas y las posiciones
abiertas y cerradas en el transcurso del sistema de trading automtico o del ProBacktest.
La pestaa Lista de rdenes le indica la hora, el sentido, la cantidad y el precio de las rdenes
enviadas. Estas rdenes aparecen en el huso horario del mercado (es decir, expresadas en hora local).
Por ltimo, la pestaa Lista de posiciones cerradas le proporciona informacin sobre las posiciones
abiertas y liquidadas por el sistema (a largo o a corto, duracin indicada en cantidad de velas, resultados
absolutos y relativos de cada posicin, fecha de entrada y de salida). Si hubiera alguna posicin todava
abierta en el momento de la creacin del informe, no se incluir en la lista. Si ejecuta un ProBacktets y
desea cerrar todas las posiciones al final del mismo, le recomendamos fijar una fecha final en lugar de
una fecha en tiempo real.

V 4.1.1 20170303 www.prorealtime.com 56 / 95


An exo B: Apl icaciones prcticas

Anexo B: Aplicaciones prcticas

ADVERTENCIA: los ejemplos presentados en este manual tienen un objetivo pedaggico. Usted
es totalmente libre en la eleccin de sus criterios para su propia operativa. Toda la informacin
presentada es de carcter "general" y no representa informacin alguna, o consejo personalizado o
incitacin alguna a la compra o la venta de instrumentos financieros. Los resultados pasados no
presagian el futuro. Todo sistema de trading puede exponerle a un riesgo de prdida superior a sus
depsitos iniciales.

Sistema de trading basado en Heikin Ashi


Este sistema de trading genera una seal de compra cuando aparece una vela roja seguida de una vela
verde en estilo Heikin-Ashi.
Inversamente, se genera una seal de venta a descubierto si aparece una vela verde seguida de una roja.
El inters de este ProBacktest es que reconstruye la vista Heikin-Ashi a partir de velas japonesas clsicas.
Por ello, deber aplicarse imperativamente en un grfico con el precio en estilo de velas japonesas.

ONCE PreviousStatus = 0
IF BarIndex = 0 THEN
XClose = TotalPrice
XOpen = (Open + Close) / 2
ELSE
XClose = TotalPrice
XOpen = (XOpen[1] + Xclose[1]) / 2
ENDIF
IF XClose >= XOpen THEN
IF PreviousStatus <> 1 THEN
BUY 1 SHARES AT MARKET
PreviousStatus = 1
ENDIF
ELSE
IF PreviousStatus <> -1 THEN
SELLSHORT 1 SHARES AT MARKET
PreviousStatus = -1
ENDIF
ENDIF

V 4.1.1 20170303 www.prorealtime.com 57 / 95


An exo B: Apl icaciones prcticas

ADVERTENCIA: los ejemplos presentados en este manual tienen un objetivo pedaggico. Usted
es totalmente libre en la eleccin de sus criterios para su propia operativa. Toda la informacin
presentada es de carcter "general" y no representa informacin alguna, o consejo personalizado o
incitacin alguna a la compra o la venta de instrumentos financieros. Los resultados pasados no
presagian el futuro. Todo sistema de trading puede exponerle a un riesgo de prdida superior a sus
depsitos iniciales.

Sistema de trading basado en el ZigZag


Este ProBacktest utiliza el indicador ZigZag para identificar cules habran sido las mejores oportunidades
de compra y venta. Los excelentes resultados (en mercados de acciones y futuros) se deben al carcter no
predictivo del Zig Zag, que se recalcula a posteriori y no proporciona seales vlidas en tiempo real.
A pesar de ello, este sistema es interesante en tanto que permite comparar sus resultados con los de otros
sistemas.

// En variable optimizada: periodos = 1 (de 5 a 10)


myZigZag = ZigZag[10]
c11 = (myZigZag > myZigZag[1])
c12 = (myZigZag < myZigZag[1])
IF c11 AND NOT LONGONMARKET THEN
BUY 1 SHARES AT MARKET
ENDIF
IF c12 AND NOT SHORTONMARKET THEN
SELLSHORT 1 SHARES AT MARKET
ENDIF

V 4.1.1 20170303 www.prorealtime.com 58 / 95


An exo B: Apl icaciones prcticas

ADVERTENCIA: los ejemplos presentados en este manual tienen un objetivo pedaggico. Usted
es totalmente libre en la eleccin de sus criterios para su propia operativa. Toda la informacin
presentada es de carcter "general" y no representa informacin alguna, o consejo personalizado o
incitacin alguna a la compra o la venta de instrumentos financieros. Los resultados pasados no
presagian el futuro. Todo sistema de trading puede exponerle a un riesgo de prdida superior a sus
depsitos iniciales.

Sistema de trading Breakout Range con Stop Dinmico


Se trata de un sistema de tipo BreakOut que slo abre posiciones largas, en el que los soportes y
resistencias son determinados por los mximos y mnimos de las dos primeras velas del da.
Si el precio cruza al alza una lnea de resistencia y la media mvil de 10 periodos aumenta, abrimos una
posicin larga.
Establecemos un objetivo al 1% as como un stop de proteccin en el precio del soporte.
La posicin se cierra a las 17h (hora local del mercado) para evitar mantenerla abierta durante la noche. Es
necesario acceder a datos en tiempo real para probar este sistema de trading.

DEFPARAM CumulateOrders = False


MM = Average[10](Close)
MyTarget = 1
EndTime = 170000
IF INTRADAYBARINDEX = 2 THEN
MyResistance = highest[2](High)
MySupport = lowest[2](Low)
ENDIF
REM Comprar
IF MM > MM[1] AND Close CROSSES OVER MyResistance THEN
BUY 1 SHARES AT MARKET
ENDIF
REM Salida compra
IF Time > EndTime THEN
SELL AT MARKET
ENDIF
SELL AT MySupport STOP
SET TARGET %PROFIT MyTarget

V 4.1.1 20170303 www.prorealtime.com 59 / 95


An exo B: Apl icaciones prcticas

ADVERTENCIA: los ejemplos presentados en este manual tienen un objetivo pedaggico. Usted
es totalmente libre en la eleccin de sus criterios para su propia operativa. Toda la informacin
presentada es de carcter "general" y no representa informacin alguna, o consejo personalizado o
incitacin alguna a la compra o la venta de instrumentos financieros. Los resultados pasados no
presagian el futuro. Todo sistema de trading puede exponerle a un riesgo de prdida superior a sus
depsitos iniciales.

Sistema de trading basado en el Estocstico Alisado


Este sistema reposa sobre el indicador "Estocstico alisado" aplicado al precio medio y su media mvil.
Cuando el indicador es superior a su media mvil exponencial, compramos; en caso contrario, realizamos
una venta a descubierto. Establecemos igualmente un objetivo al 1% de las ganancias.

DEFPARAM CumulateOrders = False


REM Compra
Indicator1 = SmoothedStochastic[9,9](MedianPrice)
Indicator2 = ExponentialAverage[9](Indicator1)
// Inicio variable
StopLimit = 1
c1 = (Indicator1 >= Indicator2)
REM Condiciones para largos
IF c1 THEN
BUY 1 SHARES AT MARKET
ENDIF
REM Condiciones para cortos
IF NOT c1 THEN
SELLSHORT 1 SHARES AT MARKET
ENDIF
SET TARGET %PROFIT StopLimit

V 4.1.1 20170303 www.prorealtime.com 60 / 95


An exo B: Apl icaciones prcticas

ADVERTENCIA: los ejemplos presentados en este manual tienen un objetivo pedaggico. Usted
es totalmente libre en la eleccin de sus criterios para su propia operativa. Toda la informacin
presentada es de carcter "general" y no representa informacin alguna, o consejo personalizado o
incitacin alguna a la compra o la venta de instrumentos financieros. Los resultados pasados no
presagian el futuro. Todo sistema de trading puede exponerle a un riesgo de prdida superior a sus
depsitos iniciales.

Swing Trading, ADX y Medias mviles


Este backtest se basa en el indicador ADX y en su posicionamiento respecto al valor 30, con el objetivo de
reducir las seales falsas y minimizar los riesgos.
Se trata de un sistema de trading que presenta un gran nmero de condiciones, lo que restringe el nmero
de oportunidades.
DEFPARAM CumulateOrders = False
MyADX12 = ADX[12]
ADXperiods = 5
MyMM20 = Average[20](Close)

// Compra
// ADX 12 est por encima de 30 desde al menos un intervalo comprendido entre 5 y 10
sesiones
Condition1 = LOWEST[ADXperiods + 1](MyADX12) > 30
// Si la media mvil de 20 periodos del periodo actual se encuentra entre el mximo y el
mnimo del periodo actual y la media mvil del periodo anterior est entre el mximo y el
mnimo del periodo anterior
Condition2 = High > MyMM20 AND Low < MyMM20 AND High[1] < MyMM20[1] AND Low[1] <
MyMM20[1]
// Si el mximo del da sobrepasa el mximo de la vspera.
Condition3 = Dhigh(0) > Dhigh(1)
IF Condition1 AND Condition2 AND Condition3 THEN
BUY 1 SHARES AT MARKET
ENDIF
// Venta a corto
// ADX 12 est por encima de 30 desde al menos un intervalo comprendido entre 5 y 10
sesiones
Condition4 = Condition1
// Si la media mvil de 20 periodos del periodo actual se encuentra entre el mximo y el
mnimo del periodo actual y la media mvil del periodo anterior est entre el mximo y el
mnimo del periodo anterior
Condition5 = High > MyMM20 AND Low < MyMM20 AND High[1] > MyMM20[1] AND Low[1] >
MyMM20[1]
// Si el mnimo del da sobrepasa el mnimo de la vspera
Condition6 = Dlow(0) < Dlow(1)
IF Condition4 AND Condition5 AND Condition6 THEN
SELLSHORT 1 SHARES AT MARKET
ENDIF

V 4.1.1 20170303 www.prorealtime.com 61 / 95


An exo B: Apl icaciones prcticas

ADVERTENCIA: los ejemplos presentados en este manual tienen un objetivo pedaggico. Usted
es totalmente libre en la eleccin de sus criterios para su propia operativa. Toda la informacin
presentada es de carcter "general" y no representa informacin alguna, o consejo personalizado o
incitacin alguna a la compra o la venta de instrumentos financieros. Los resultados pasados no
presagian el futuro. Todo sistema de trading puede exponerle a un riesgo de prdida superior a sus
depsitos iniciales.

Sistema de trading basado en contador de posiciones


Inverse Fisher Transform aplicado al RSI.
Este sistema de trading est basado en el indicador "Inverse Fisher Transform RSI" para lanzar rdenes de
compra o de venta.
El sistema genera una orden de compra cuando el "Inverse Fisher Transform RSI" cruza al alza el nivel de
50 y vende si el indicador cruza el nivel de 80 a la baja.
Inversamente, se genera una orden de venta a descubierto cuando el "Inverse Fisher Transform RSI" cruza
a la baja le nivel de 50 y se cierra (compra) cuando el "Inverse Fisher Transform RSI" cruza el nivel de 20 al
alza.
Puede aplicar un ProBacktest a este sistema de trading con velas de 1h en el caso de futuros. En cambio,
es aconsejable utilizarlo con velas diarias en el caso de acciones.

REM Inverse Fisher Transform aplicado al RSI


REM Parmetros: n = cantidad de velas para el clculo del RSI
n = 10
Ind = RSI[n](Close)
x = 0.1 * (Ind - 50)
y = (EXP (2 * x) - 1) / (EXP (2 * x) + 1)
z = 50 * (y + 1)
myInverseFisherTransformsRSI = z

IF (myInverseFisherTransformsRSI CROSSES OVER 50) THEN


BUY 1 SHARES AT MARKET
ENDIF

IF (myInverseFisherTransformsRSI CROSSES UNDER 80) THEN


SELL AT MARKET
ENDIF

IF (myInverseFisherTransformsRSI CROSSES UNDER 50) THEN


SELLSHORT 1 SHARES AT MARKET
ENDIF

IF (myInverseFisherTransformsRSI CROSSES OVER 20) THEN


EXITSHORT AT MARKET
ENDIF

V 4.1.1 20170303 www.prorealtime.com 62 / 95


An exo B: Apl icaciones prcticas

ADVERTENCIA: los ejemplos presentados en este manual tienen un objetivo pedaggico. Usted
es totalmente libre en la eleccin de sus criterios para su propia operativa. Toda la informacin
presentada es de carcter "general" y no representa informacin alguna, o consejo personalizado o
incitacin alguna a la compra o la venta de instrumentos financieros. Los resultados pasados no
presagian el futuro. Todo sistema de trading puede exponerle a un riesgo de prdida superior a sus
depsitos iniciales.

Sistema de trading basado en el TRADEINDEX Find inside bar


El ejemplo siguiente es un sistema basado en un patrn de precios utilizado con frecuencia y conocido
como "Inside Bar". Se aplica a 2 patrones de velas concretos:
El primer patrn se produce si el rango de la segunda vela anterior a la vela actual es superior al rango
de la vela anterior a la vela actual. La vela que precede a la vela actual debe ser verde (cierre > apertura).
En este caso, se abre una posicin larga.
El segundo patrn se produce si el rango de la segunda vela anterior a la vela actual es inferior al
rango de la vela que precede a la vela actual. La vela que precede a la actual debe ser roja (cierre <
apertura). En este caso, abrimos una posicin corta.
La posicin se cierra sistemticamente 3 velas despus de haberse abierto.

DEFPARAM CumulateOrders = False


Condicion1 = (High[2] >= High[1] AND Low[2] <= Low[1])
Condicion2 = (High[2] <= High[1] AND Low[2] <= Low[1])
Condicion3 = (Close[1] > Open[1])
Condicion4 = (Close[1] < Open[1])

IF (Condicion1 AND Condicion3) THEN


BUY 1 SHARE AT MARKET
ENDIF

IF LONGONMARKET AND (BarIndex - TRADEINDEX) = 3 THEN


SELL 1 SHARE AT MARKET
ENDIF

IF (Condicion2 AND Condicion4) THEN


SELLSHORT 1 SHARE AT MARKET
ENDIF

IF SHORTONMARKET AND (BarIndex - TRADEINDEX) = 3 THEN


EXITSHORT AT MARKET
ENDIF

V 4.1.1 20170303 www.prorealtime.com 63 / 95


An exo B: Apl icaciones prcticas

ADVERTENCIA: los ejemplos presentados en este manual tienen un objetivo pedaggico. Usted
es totalmente libre en la eleccin de sus criterios para su propia operativa. Toda la informacin
presentada es de carcter "general" y no representa informacin alguna, o consejo personalizado o
incitacin alguna a la compra o la venta de instrumentos financieros. Los resultados pasados no
presagian el futuro. Todo sistema de trading puede exponerle a un riesgo de prdida superior a sus
depsitos iniciales.

Estrategias de money management (gestin de capital)


Los resultados de un backtest pueden mejorarse sustancialmente adoptando reglas sofisticadas de gestin
de capital (money management).
Estas estrategias de gestin de capital suelen formalizarse en las martingalas, destinadas a optimizar la
esperanza matemtica de un sistema de trading (ganancia o prdida media por operacin). Esto implica
poder estimar previamente la probabilidad de que una operacin resulte en ganancia, y el importe del
beneficio.
Con la finalidad de implementar una martingala, puede resultar til codificar directamente en su sistema de
trading las rdenes stop de proteccin, de objetivos y de inactividad, as como algunas subestrategias que
permitan la gestin dinmica del tamao de posiciones.

Stop de proteccin (stop loss) & objectivos


Para ms informacin sobre los stops de proteccin, stops dinmicos y stops de objetivos, le emplazamos a
consultar las secciones dedicadas a ellos en el presente manual.

Stops de inactividad
Este cdigo permite integrar un stop de inactividad en su sistema de trading. Recuerde definir las
condiciones de su stop, en este caso denominados "InactivityStopLong" e "InactivityStopShort". En el
ejemplo descrito, el stop se activa tras 10 velas.

ONCE Count = 10
REM Seleccin del nmero de velas tras el cual la posicin se cerrar automticamente
IF ONMARKET AND (BARINDEX - TRADEINDEX + 1) > Count THEN
IF LONGONMARKET THEN
SELL AT MARKET
ENDIF

IF SHORTONMARKET THEN
EXITSHORT AT MARKET
ENDIF
ENDIF

V 4.1.1 20170303 www.prorealtime.com 64 / 95


An exo B: Apl icaciones prcticas

ADVERTENCIA: los ejemplos presentados en este manual tienen un objetivo pedaggico. Usted
es totalmente libre en la eleccin de sus criterios para su propia operativa. Toda la informacin
presentada es de carcter "general" y no representa informacin alguna, o consejo personalizado o
incitacin alguna a la compra o la venta de instrumentos financieros. Los resultados pasados no
presagian el futuro. Todo sistema de trading puede exponerle a un riesgo de prdida superior a sus
depsitos iniciales.

Acumulacin de rdenes Aadir rdenes a una posicin existente mediante un contador


de posicin
Aqu encontrar un ejemplo de acumulacin de rdenes para aumentar el tamao de su posicin.
Para acumular rdenes, introduzca el comando "DEFPARAM CumulateOrders = True" al principio del
programa.
Este sistema de trading utiliza la primera condicin basada en el RSI para abrir la posicin inicial. Se aaden
acciones adicionales en cada vela en las que la apertura es superior al cierre previo, hasta un mximo de 3.
Utilizamos "Countofposition" para limitar la posicin mxima de la estrategia a 3.

DEFPARAM CumulateOrders = True

REM Comprar 1 cuando el RSI < 30 y no haya posiciones abiertas


IF RSI[14](Close) AND NOTONMARKET < 30 THEN
BUY 1 SHARES AT MARKET
ENDIF

REM Si se ha abierto una posicin larga y la apertura > al cierre de la vela anterior,
compramos una cantidad adicional hasta un mximo de 3
IF LONGONMARKET AND COUNTOFPOSITION < 3 AND Open > Close[1] THEN
BUY 1 SHARES AT MARKET
ENDIF

REM Cuando el precio cruce a la baja una media mvil simple, se cierra la totalidad de la
posicin
IF Close CROSSES UNDER Average[14](Close) THEN
SELL AT MARKET
ENDIF

Con estas herramientas podemos abordar las martingalas. Les mostramos a continuacin algunas de las
ms conocidas. Estas tcnicas pueden aadirse a cualquier sistema de trading.

V 4.1.1 20170303 www.prorealtime.com 65 / 95


An exo B: Apl icaciones prcticas

ADVERTENCIA: los ejemplos presentados en este manual tienen un objetivo pedaggico. Usted
es totalmente libre en la eleccin de sus criterios para su propia operativa. Toda la informacin
presentada es de carcter "general" y no representa informacin alguna, o consejo personalizado o
incitacin alguna a la compra o la venta de instrumentos financieros. Los resultados pasados no
presagian el futuro. Todo sistema de trading puede exponerle a un riesgo de prdida superior a sus
depsitos iniciales.

La martingala clsica
La martingala clsica consiste en duplicar la posicin cuando se afronta una prdida, con la idea de
recuperarla en la siguiente transaccin. El mayor inconveniente de este sistema de trading es que si se
producen varias prdidas consecutivas, la posibilidad de duplicar la posicin se hace cada vez menos
factible. As, partiendo de un capital de p.ej. 1000, cinco prdidas sucesivas requeriran 1000 x 32 =
32000 para continuar con el sistema de trading.

Los sistemas de trading derivados de esta martingala pueden ser ms adecuadas para la operativa con
acciones que con futuros o Forex, ya que la inversin inicial y el apalancamiento suele ser ms importante
en estos ltimos mercados. Para aplicarla, se integrar este cdigo en las condiciones de entrada y de
salida:

//*********Cdigo a insertar al principio del sistema de trading*********//


ONCE OrderSize = 1
ONCE ExitIndex = -2
REM Inicio con una posicin de 1
//*********************//
//*********Cdigo a insertar tras las instrucciones que cierran una posicin*********//
ExitIndex = BarIndex

//*********Cdigo a insertar al final del sistema de trading*********//


IF Barindex = ExitIndex + 1 THEN
ExitIndex = 0
IF POSITIONPERF(1) < 0 THEN
OrderSize = OrderSize * 2
REM Si la ltima transaccin resulta en prdidas, duplicamos el tamao de la posicin
ELSIF POSITIONPERF(1) > 0 THEN
OrderSize = 1
REM Si la ltima transaccin resulta en ganancias, volvemos a una posicin de tamao 1
ENDIF
ENDIF
//*********************//
REM El tamao de la posicin queda definido por la variable OrderSize para el cdigo
entero

V 4.1.1 20170303 www.prorealtime.com 66 / 95


An exo B: Apl icaciones prcticas

ADVERTENCIA: los ejemplos presentados en este manual tienen un objetivo pedaggico. Usted
es totalmente libre en la eleccin de sus criterios para su propia operativa. Toda la informacin
presentada es de carcter "general" y no representa informacin alguna, o consejo personalizado o
incitacin alguna a la compra o la venta de instrumentos financieros. Los resultados pasados no
presagian el futuro. Todo sistema de trading puede exponerle a un riesgo de prdida superior a sus
depsitos iniciales.

La gran martingala
La gran martingala es similar a la clsica, con la diferencia de que adems de duplicar la posicin en cada
prdida, se aade una unidad suplementaria.

Esta martingala es ms arriesgada que la clsica en caso de prdidas sucesivas, pero permite aumentar
significativamente las ganancias en caso contrario. Para aplicarla, se integrar este cdigo en las
condiciones de entrada y de salida:

//*********Cdigo a insertar al principio del sistema de trading*********//


ONCE OrderSize = 1
ONCE ExitIndex = -2
REM Inicio con una posicin de 1
//*********************//
//*********Cdigo a insertar tras las instrucciones que cierran una posicin*********//
ExitIndex = BarIndex

//*********Cdigo a insertar al final del sistema de trading*********//


IF Barindex = ExitIndex + 1 THEN
ExitIndex = 0
IF POSITIONPERF(1) < 0 THEN
OrderSize = OrderSize * 2 + 1 // Si la ltima transaccin resulta perdedora, se
duplica el tamao de la posicin y aadimos 1
ELSIF POSITIONPERF(1) >= 0 THEN
OrderSize = 1 // Si la ltima transaccin resulta ganadora, volvemos a una posicin de 1
ENDIF
ENDIF
//*********************//
REM El tamao de la posicin queda definido por la variable OrderSize en el cdigo entero

V 4.1.1 20170303 www.prorealtime.com 67 / 95


An exo B: Apl icaciones prcticas

ADVERTENCIA: los ejemplos presentados en este manual tienen un objetivo pedaggico. Usted
es totalmente libre en la eleccin de sus criterios para su propia operativa. Toda la informacin
presentada es de carcter "general" y no representa informacin alguna, o consejo personalizado o
incitacin alguna a la compra o la venta de instrumentos financieros. Los resultados pasados no
presagian el futuro. Todo sistema de trading puede exponerle a un riesgo de prdida superior a sus
depsitos iniciales.

La Piquemouche
La Piquemouche es otra variante de la martingala clsica. En caso de prdida, se aumenta una unidad el
tamao de la posicin mientras se hayan producido menos de 3 prdidas consecutivas. Cuando se
acumulan ms de 3 prdidas seguidas, se duplica el tamao de la posicin. La primera ganancia reinicia el
tamao de la posicin, fijndolo nuevamente en 1.
Este sistema de trading es menos arriesgado que los dos anteriores, ya que retrasa el aumento del tamao
de la posicin hasta pasadas las 3 prdidas sucesivas. Para aplicarlo, se integrar este cdigo en las
condiciones de entrada y de salida:

//*********Cdigo a insertar al principio del sistema de trading*********//


ONCE OrderSize = 1
ONCE BadTrades = 0
ONCE ExitIndex = -2
REM Inicio con una posicin de 1
//*********************//
//*********Cdigo a insertar justo despus de cerrar una posicin*********//
ExitIndex = BarIndex
//*********Cdigo a insertar al final del sistema de trading*********//
IF Barindex = ExitIndex + 1 THEN
ExitIndex = 0
IF PositionPerf(1) < 0 THEN
BadTrades = BadTrades + 1
IF BadTrades < 3 THEN
// Si la ltima operacin resulta en prdidas y no se superan las 3 perdidas
// consecutivas, se aumenta en 1 unidad el tamao de la posicin
OrderSize = OrderSize + 1
ELSIF BadTrades MOD 3 = 0 THEN
// Si la ltima operacin resulta en prdidas y se acumulan ms de 3 prdidas
// consecutivas, se duplica el tamao de la prxima posicin
OrderSize = OrderSize * 2
ENDIF
ELSIF PositionPerf(1) >= 0 THEN
// Si la ltima operacin resulta ganadora, retomar posicin a tamao 1
OrderSize = 1
BadTrades = 0
ENDIF
ENDIF
//*********************//
REM El tamao de la posicin queda definido por la variable OrderSize en el cdigo entero

V 4.1.1 20170303 www.prorealtime.com 68 / 95


An exo B: Apl icaciones prcticas

ADVERTENCIA: los ejemplos presentados en este manual tienen un objetivo pedaggico. Usted
es totalmente libre en la eleccin de sus criterios para su propia operativa. Toda la informacin
presentada es de carcter "general" y no representa informacin alguna, o consejo personalizado o
incitacin alguna a la compra o la venta de instrumentos financieros. Los resultados pasados no
presagian el futuro. Todo sistema de trading puede exponerle a un riesgo de prdida superior a sus
depsitos iniciales.

La pirmide de Alembert
Concebida por Alembert (matemtico francs del siglo XVIII), esta martingala aumenta 1 unidad la posicin
en caso de prdida; en caso de ganancia, la disminuye de 1. Esta tcnica slo es pertinente cuando se
considere que las ganancias sucesivas disminuyen la probabilidad de que la siguiente operacin resulte
ganadora (y recprocamente, que una prdida aumente la posibilidad de que la siguiente operacin resulte
en ganancia). Para aplicarla, se integrar este cdigo en las condiciones de entrada y de salida:

//*********Cdigo a insertar al principio del sistema de trading*********//


ONCE OrderSize = 1
ONCE ExitIndex = -2
// Inicio con una posicion de 1
//*********************//
//*********Cdigo a insertar justo al cerrar una posicin*********//
ExitIndex = BarIndex

//*********Cdigo a insertar al final del sistema de trading*********//


IF Barindex = ExitIndex + 1 THEN
ExitIndex = 0
IF POSITIONPERF(1) < 0 THEN
OrderSize = OrderSize + 1
ELSIF POSITIONPERF(1) >= 0 THEN
OrderSize = MAX(OrderSize -1, 1)
ENDIF
ENDIF
//*********************//
REM El tamao de la posicin queda definido por la variable OrderSize en el cdigo entero

V 4.1.1 20170303 www.prorealtime.com 69 / 95


An exo B: Apl icaciones prcticas

ADVERTENCIA: los ejemplos presentados en este manual tienen un objetivo pedaggico. Usted
es totalmente libre en la eleccin de sus criterios para su propia operativa. Toda la informacin
presentada es de carcter "general" y no representa informacin alguna, o consejo personalizado o
incitacin alguna a la compra o la venta de instrumentos financieros. Los resultados pasados no
presagian el futuro. Todo sistema de trading puede exponerle a un riesgo de prdida superior a sus
depsitos iniciales.

La contra de Alembert
Este es un sistema de trading recproco de la pirmide homnima, ya que se disminuye el tamao de la
posicin en caso de prdida y se aumenta en caso de ganancia.
La tcnica implica la consideracin de que los resultados histricos son representativos de los resultados
futuros.
Para aplicarla, se integrar este cdigo en las condiciones de entrada y de salida:

//*********Cdigo a insertar al principio del sistema de trading*********//


ONCE OrderSize = 1
ONCE ExitIndex = -2
// Inicio con una posicin de 1
//*********************//

//*********Cdigo a insertar justo al cerrar una posicin*********//


ExitIndex = BarIndex

//*********Cdigo a insertar al final del sistema de trading*********//


IF Barindex = ExitIndex + 1 THEN
ExitIndex = 0
IF POSITIONPERF(1) < 0 THEN
OrderSize = MAX(OrderSize -1, 1)
ELSIF POSITIONPERF(1) >= 0 THEN
OrderSize = OrderSize + 1
ENDIF
ENDIF
//*********************//
REM El tamao de la posicin debe definirse en funcin de la variable OrderSize en el
cdigo entero

V 4.1.1 20170303 www.prorealtime.com 70 / 95


An exo C: Ejemplo detal lado de un si stem a de trading

Anexo C: Ejemplo detallado de un sistema de trading

ADVERTENCIA: El ejemplo de sistema de trading descrito en esta seccin es a ttulo informativo.


El objetivo es presentar las funcionalidades del servicio de ProOrder. El objetivo de esta
presentacin es puramente formativo y no es, en ningn caso, una recomendacin ni sugerencia
de ProRealTime para utilizar la estrategia descrita. El lector debe tener en cuenta que las cifras
mencionadas en este ejemplo corresponden a datos pasados y a una actividad pasada (como
referido en este documento) y no es un indicador fiable para resultados futuros.

Este anexo presenta un ejemplo detallado del sistema de trading "Breakout" basado en una temporalidad de
15 minutos y aplicado a contratos CFD's de Mini France 40 (2 por punto). El ejemplo analiza su rendimiento a
lo largo de aos1 pasados a travs del sistema de simulacin ProBacktest.

Resultados brutos1 del sistema de trading automtico "Breakout ProOrder" simulado durante 7,5
aos con el mdulo ProBacktest.

Resultados Brutos Capital Inicial: 2.000,00 (1 julio, 2008)


29,15%
anuales1 Capital Final: 13.622,60 (31 diciembre, 2015)

+11.622
Ganancia bruta en 7,5 aos:
(+ 581,1%)
2008 2009 2010 2011 2012 2013 2014 2015
ProOrder Breakout +124%2 19,70% 41,90% 23,00% 0,70% 7,60% 18,10% 12,90%
Sistema de trading automtico

CAC 40 Index1,3 -27,4%2 +22.3% -3.3% -17% +15.2% +18% -0,50% 8,50%
1
El rendimiento obtenido en el pasado no es un indicador fiable para los resultados 2 2008: ao parcial.
futuros y no es constante en el tiempo. Los resultados y las ganancias brutas han 3 CAC40 datos facilitados
sido calculadas sin aplicar los costes de operativa (comisiones, cambio de divisas y por Euronext Paris.
otros costes). Estos costes reducen el rendimiento del sistema.

V 4.1.1 20170303 www.prorealtime.com 71 / 95


An exo C: Ejemplo detal lado de un si stem a de trading

Introduccin al sistema de trading automtico "ProOrder Breakout"


El sistema clsico "Breakout" verifica el nivel de precio ms alto y el ms bajo al final de un periodo definido
(en nuestro ejemplo, durante los primeros 30 minutos de trading despus de las 9:00). A continuacin, lanza
una orden de compra en el nivel superior y una orden de venta en el nivel inferior.

El "ProOrder Breakout" presentado a continuacin es una versin modificada de la estrategia clsica del
breakout.

Este ejemplo de sistema "ProOrder Breakout" abre como mximo 2 posiciones al da (a veces una sola
posicin y a veces ninguna) entre las 9:30 y las 21:45. En ningn caso, el sistema estar en posicin
despus de las 21:45 y es posible conocer la ganancia o la prdida del da en cualquier momento.

Para ms informacin:
Resultados del sistema de trading (del 2008 al 2015)
Descripcin de las ideas del sistema de trading

Cdigo del sistema de trading


Cmo probar el cdigo/sistema de trading

V 4.1.1 20170303 www.prorealtime.com 72 / 95


An exo C: Ejemplo detal lado de un si stem a de trading

Resultados del sistema de trading (del 2008 al 2015)


Advertencia en relacin a los resultados: las cifras presentadas corresponden a datos pasados. La actividad
pasada no es un indicador fiable para resultados futuros y no es constante en el tiempo.
La siguiente imagen muestra los resultados del sistema de trading aplicado al mini contrato CFD France 40
en datos pasados, desde el 1 de Julio del 2008 hasta el 31 de Diciembre del 2015, es decir, 1650 das de
trading simulado con el mdulo ProBacktest.

Como se indica en la imagen anterior, de las 1574 posiciones abiertas, la ganancia media de posiciones
ganadoras es de 80,33 durante el perodo (ganancia mxima por una sola posicin: 577), mientras que la
prdida media en una posicin perdedora en el mismo perodo es de 36,82 (prdida mxima en una sola
posicin: 99,6). En nuestro ejemplo, el nmero de posiciones ganadoras (593) fue inferior al nmero de
posiciones perdedoras (978) y el total de ganancias fue superior al total de prdidas.
Si estimamos que el coste medio del spread en el contrato mini del CFD France 40 es de 1,25 por orden,
obtenemos un resultado de 3.935 de gastos de operativa durante el perodo, que correspondera a:
un resultado neto anual de 23,4% con un capital inicial de 2.000
un resultado neto anual de 35,3% con un capital inicial de 1.000.

V 4.1.1 20170303 www.prorealtime.com 73 / 95


An exo C: Ejemplo detal lado de un si stem a de trading

Notas:
1) En este ejemplo, hemos elegido un capital inicial de 2.000, que es casi el doble de la prdida mxima
consecutiva durante el perodo entero desde el principio de la simulacin, en el caso de que la estrategia
iniciara en el momento ms desfavorable (prdida mxima consecutiva histrica de 1.184). Habra sido
posible realizar la simulacin con una cantidad inicial inferior (por ejemplo 300), ya que el margen para el
contrato CFD mini Francia 40 es de 21, teniendo en cuenta que, desde el principio de la estrategia el
sistema perdera aproximadamente 100 (como en el caso de la simulacin) y justo despus el capital
empezara a aumentar progresivamente.

2) En este ejemplo, el tamao de la posicin no ha cambiado, aunque tericamente sera posible aumentar
el tamao de la posicin por cada 2.000 ganados, aadiendo 2 contratos mini adicionales a cada nueva
posicin y aumentando exponencialmente tanto el beneficio potencial como el riesgo potencial. De hecho,
comenzando con 2.000 de capital y con un tamao de posicin de 2 contratos mini (incluso si el margen
requerido por el broker es de slo 42), se corre el mismo riesgo en trminos de % de prdida como
empezando con 4.000 de capital y con una posicin de 4 contratos mini, por ejemplo.

3) Un CFD es un contrato basado en la diferencia entre el precio de un activo en el momento en que un


inversor abre una posicin y el momento en que la cierra. Los CFDs son productos apalancados. Esto
quiere decir que un inversor slo deposita una parte del total de su exposicin al mercado. Los CFDs
pueden aumentar considerablemente el rendimiento de una inversin, pero las prdidas tambin pueden
ser superiores que los depsitos. Los CFDs se adecuan nicamente a clientes con experiencia que tienen
los medios econmicos suficientes para asumir dicho riesgo.

Descripcin de las ideas del sistema de trading

Idea inicial: Breakout 30 minutos


La estrategia clsica breakout 30 minutos identifica el nivel de precio ms alto y el ms bajo de los contratos
CFD mini France 40 durante los primeros 30 minutos de trading del da (entre las 9:00 y las 9:30). Este
periodo est representado en 2 velas de 15 minutos que se pueden ver en las imgenes siguientes y define
estos niveles como el nivel superior y el nivel inferior.

A continuacin, lanza una orden stop de compra en el nivel superior y un orden stop de venta en el nivel
inferior, como se muestra en la imagen inferior izquierda:
Cuando las rdenes se hayan lanzado, se abrira una posicin de compra si el precio toca primero el
nivel superior, tal y como se muestra en la imagen de la derecha.
Si el precio toca primero el nivel inferior, se abrir una posicin de venta.

Se muestra la orden stop de compra en verde y Se muestra una posicin de compra en este
la orden stop de venta en rojo, una vez ejemplo, donde el precio toca primero el nivel
definidos los niveles inferior y superior. superior y abre una posicin de compra.
Nota:
El sistema de trading no utiliza rdenes lmite objetivo para cerrar una posicin. Sin embargo, si hubiera
cualquier posicin abierta a las 21:45, se cerrara para evitar el riesgo de mantenerla abierta en overnight.

V 4.1.1 20170303 www.prorealtime.com 74 / 95


An exo C: Ejemplo detal lado de un si stem a de trading

2n idea: Se abrirn dos posiciones al da como mximo


En nuestro ejemplo, abrimos como mximo dos posiciones al da (una posicin de compra y una posicin de
venta). Cuando se toca alguno de los dos niveles, se abre una posicin y el nivel opuesto pasa a ser un stop
de proteccin. Si el precio toca este stop de proteccin, se invierte la situacin.

Vamos a ver las 3 situaciones que podran ocurrir si se abre una posicin de compra en primer lugar:

Situacin 1:
1. Se abre una posicin de compra de +2.
2. El precio permanece por encima del nivel superior durante todo el da.
3. La posicin se cierra a las 21:45 con una ganancia.

Escenario 1

Nivel
superior

Escenario 3
21:45

Nivel
inferior

Escenario 2

Situacin 2: Situacin 3:
1. Se abre una posicin de compra de +2. 1. Se abre una posicin de compra de +2.

2. El precio desciende hasta el nivel inferior. 2. El precio desciende hasta el nivel inferior.

3. El Stop de proteccin cierra la posicin con una 3. El Stop de proteccin cierra la posicin con una
prdida y abre una nueva posicin de venta de -2. prdida y abre una nueva posicin de venta de -2.
Por consiguiente, la posicin inicial se invierte. Por consiguiente, la posicin inicial se invierte.

4. El precio continua cayendo y la posicin se 4. El precio aumenta otra vez y alcanza el nivel
cierra a las 21:45 con ganancia. superior. La segunda posicin de venta se cierra
con el stop de proteccin y con una prdida (sin
invertir la posicin esta vez).

Todos las situaciones descritas anteriormente pueden ocurrir en el sentido opuesto cuando se abre la
posicin de venta en primer lugar.

V 4.1.1 20170303 www.prorealtime.com 75 / 95


An exo C: Ejemplo detal lado de un si stem a de trading

3a idea: Limitar el riesgo definiendo una distancia mxima y mnima entre los dos niveles
En nuestro ejemplo, el sistema no abrir ninguna posicin durante el da si exisitiera una distancia de ms
de 58 puntos entre el nivel superior y el nivel inferior.
Esta condicin se introdujo para intentar limitar directamente el riesgo, porque como hemos visto en los
anteriores ejemplos, el sistema de trading puede tericamente perder dos veces la distancia entre el nivel
superior y el nivel inferior.

Nivel superior

Distancia mxima:
En nuestro cdigo de ejemplo, si la distancia entre el nivel
superior y el nivel inferior es superior a 58 puntos
(parmetro modificable en el cdigo), el sistema de trading
no operar durante el da.

Nivel inferior

La distancia mxima es un parmetro modificable en el cdigo que puede ser ajustado dependiendo del
nivel de riesgo que acepte cada inversor.

Notas:

1) La prdida mxima terica indicada arriba est basada en la ejecucin de rdenes en los precios stop
calculados por el sistema. En algunos casos, el precio real de ejecucin puede ser diferente del precio de
la orden stop solicitada.

2) Si se alcanzara varias veces el nivel superior y el nivel inferior entre las 9:00 y las 9:30 (ejemplo de la
situacin 3, que es la ms desfavorable), cada da empezando por la fecha inicial del sistema de trading,
los resultados seran negativos da tras da durante este periodo y se podra llegar a perder todo el capital
inicial.

3) El sistema de trading poda posicionar una 3 era posicin durante el mismo da si el nivel de la orden de
compra y el nivel de la orden de venta se cruzaran durante el intervalo de 15 minutos posterior a la
definicin de estos dos niveles.

4) Nuestro mdulo ProOrder le permite simular fcilmente un sistema de trading con varios valores
diferentes para la distancia mxima. Esta optimizacin variable puede mostrarle que el funcionamiento del
sistema de trading podra ser an mejor con una distancia mxima ms grande, pero entonces
asumiramos un riesgo ms elevado por orden en este caso porque las rdenes stop de proteccin
estaran ms lejos de las rdenes para entrar en posicin.

V 4.1.1 20170303 www.prorealtime.com 76 / 95


An exo C: Ejemplo detal lado de un si stem a de trading

4a idea: Aumentar las posibilidades de una ejecucin favorable


En nuestro ejemplo, empezamos con la teora de que los niveles superiores e inferiores son zonas
importantes de soporte y resistencia donde muchos inversores pueden haber posicionado rdenes. Cuando
el precio se sale de dichos niveles, ese puede causar una aceleracin ms o menos fuerte del precio en la
direccin del breakout.

Para aprovechar esta amplificacin de la tendencia justo despus del breakout, el sistema ha sido
configurado para posicionar rdenes stop 4 puntos debajo del nivel superior y 4 puntos por encima del nivel
inferior, tal y como se muestra la siguiente imagen.
Este 4 parmetro llamado "DistanciaOrden" en este cdigo del sistema puede ser modificado dependiendo
de las preferencias del cada inversor.

Notas:

1) Esta condicin reduce la distancia entre las rdenes de compra y venta 2x4 puntos y, como
consecuencia, tambin disminuye el riesgo mximo, porque las 2 rdenes quedarn separadas por 50
puntos como mximo. La nueva prdida mxima terica diaria del sistema sera de 200 (2 x amplitud x
50 x 2 posiciones).

2) Si muchos otros inversores posicionaran rdenes al mismo nivel y en la misma direccin que la
estrategia sera posible aumentar la "DistanciaOrden" (a 4.5, 5, 5.5 o ms) para aprovechar la
aceleracin despus de la ejecucin de su propia orden.

V 4.1.1 20170303 www.prorealtime.com 77 / 95


An exo C: Ejemplo detal lado de un si stem a de trading

5a idea: Solo operar en breakouts claros para evitar falsas seales

Caso 1: Precio muy cercano al nivel superior e inferior a las 9:30


En este ejemplo, hemos decidido que el sistema no posicionar rdenes si el precio del instrumento
financiero de referencia est demasiado cerca del nivel superior e inferior al final del segundo perodo de 15
minutos.
En este caso, el sistema espera hasta el final de un perodo adicional de 15 minutos.

Si al final del nuevo perodo de 15 minutos (9:45), el precio est todava muy cerca a los niveles, el sistema
espera 15 minutos ms y contina hasta que los niveles se definan. En cualquier caso, para un da
determinado, si la distancia mxima de 58 puntos es sobrepasada, el sistema no operar ese da.

Este parmetro que mide la distancia entre el nivel superior y el nivel inferior se llama "PorcentageMin" en el
ejemplo de cdigo y, en este caso, est determinado al 30%, pero puede ser modificable dependiendo de la
eleccin de cada inversor.

En la imagen de la izquierda, el precio cierra muy


cerca del nivel inferior llegando hasta la vela 10:45.

Como consecuencia, el nivel inferior se ha ido


reduciendo cada vez hasta la vela de cierre 10:45
11:00.

Sin embargo, en este momento, la distancia entre el


nivel superior y el nivel inferior es superior a 58
puntos y, en nuestro ejemplo, el sistema no abrira
ninguna posicin ese da.

V 4.1.1 20170303 www.prorealtime.com 78 / 95


An exo C: Ejemplo detal lado de un si stem a de trading

Caso 2: Distancia muy pequea entre el nivel superior e inferior


En nuestro ejemplo, el sistema tambin evita situaciones en las cuales la distancia entre el nivel superior y
el nivel inferior es muy pequea (cualquier breakout podra considerarse no significante en este caso). Para
comprobar este punto, el sistema mide la distancia entre la orden de compra y la orden de venta. Si la
distancia es inferior a 11 puntos, (parmetro llamado " AmplitudMin" y modificable en el cdigo), el sistema no
abrir ninguna posicin durante el da.

6a idea: No abrir ninguna posicin si no hay tiempo suficiente en el da de trading


Dado que en nuestro cdigo de ejemplo no podemos abrir una posicin despus de las 21:45, hemos
configurado la estrategia de tal forma que no se abra ninguna posicin despus de las 17:15.

Tambin, si el da de trading es ms corto debido a las vacaciones (Ej: Navidad o el 31 de Diciembre), el


sistema no abrir ninguna posicin en ese da.

Estos parmetros son personalizables en el cdigo de la estrategia para definir el tiempo despus del cual
las seales pueden ser ignoradas por el sistema.

V 4.1.1 20170303 www.prorealtime.com 79 / 95


An exo C: Ejemplo detal lado de un si stem a de trading

El ejemplo de sistema de trading descrito en esta seccin es a ttulo informativo, con el fin de
presentar las funcionalidades del servicio de ProOrder. El objetivo de esta presentacin es
puramente formativo y no se trata de ninguna recomendacin ni sugerencia de ProRealTime para
utilizar la estrategia descrita. El lector debe tener en cuenta que las cifras mencionadas en este
ejemplo corresponden a datos pasados y a una actividad pasada (como referido en este
documento) y no es un indicador fiable para resultados futuros.

Puede obtener ayuda gratis a la programacin a travs de nuestro formulario.

Cdigo del sistema de trading "ProOrder Breakout"

// No cargamos los datos antes del inicio del sistema.


// Como resultado, si el sistema se inicia por la tarde,
// esperamos hasta el da siguiente antes de lanzar una orden.
DEFPARAM PreLoadBars = 0
// La posicin se cierra a las 9:45 p.m., hora del mercado local (Francia).
DEFPARAM FlatAfter = 214500
// No se abren nuevas posiciones despus de la vela que se cierra a las 5:15 p.m.
HoraEntradaLimite = 171500
// El anlisis de mercado empieza en la vela de 15 minutos que cierra a las 9:30 a.m.
HoraInicio = 091500
// Se excluyen algunos das festivos como el 24 y 31 de diciembre.
IF (Month = 5 AND Day = 1) OR (Month = 12 AND (Day = 24 OR Day = 25 OR Day = 26 OR Day = 30 OR Day =
31)) THEN
DiaTrading = 0
ELSE
DiaTrading = 1
ENDIF

// Variables que pueden ser adaptadas en funcin de sus preferencias


TamanoPosicion = 2
AmplitudMax = 58
AmplitudMin = 11
DistanciaOrden = 4
PorcentageMin = 30

// Iniciamos esta variable una vez iniciado el sistema de trading.


ONCE InicioDiaTrading = -1
// Las variables que pueden cambiar durante el da, se inicializan
// al comienzo de cada nuevo da de trading.
IF (Time <= HoraInicio AND InicioDiaTrading <> 0) OR IntradayBarIndex = 0 THEN
NivelCompra = 0
NivelVenta = 0
PosicionCompra = 0
PosicionVenta = 0
InicioDiaTrading = 0
ELSIF Time >= HoraInicio AND InicioDiaTrading = 0 AND DiaTrading = 1 THEN
// Almacenamos el ndice de la primera barra del da de trading
IndiceDiaInicio = IntradayBarIndex
InicioDiaTrading = 1

V 4.1.1 20170303 www.prorealtime.com 80 / 95


An exo C: Ejemplo detal lado de un si stem a de trading

ELSIF InicioDiaTrading = 1 AND Time <= HoraEntradaLimite THEN


// Para cada da de negociacin, el precio ms alto y el ms bajo del instrumento
// se registran cada 15 minutos desde HoraInicio
// hasta que los niveles de compra y venta se puedan definir
IF NivelCompra = 0 OR NivelVenta = 0 THEN
NivelSuperior = Highest[IntradayBarIndex - IndiceDiaInicio + 1](High)
NivelInferior = Lowest [IntradayBarIndex - IndiceDiaInicio + 1](Low)
// Clculo de la diferencia entre el mayor
// y el menor precio del instrumento desde HoraInicio
DistanciaDia = NivelSuperior - NivelInferior
// Clculo de la distancia mnima entre el nivel superior y nivel inferior
// para considerar que una ruptura del nivel superior o inferior sea significativa
DesviacionMin = DistanciaDia * PorcentageMin / 100
// Clculo de los niveles de compra y venta para el da si las condiciones se cumplen
IF DistanciaDia <= AmplitudMax THEN
IF NivelVenta = 0 AND (Close - NivelInferior) >= DesviacionMin THEN
NivelVenta = NivelInferior + DistanciaOrden
ENDIF
IF NivelCompra = 0 AND (NivelSuperior - Close) >= DesviacionMin THEN
NivelCompra = NivelSuperior - DistanciaOrden
ENDIF
ENDIF
ENDIF
// Creacin de las rdenes de compra y venta a corto para el dia si las condiciones se cumplen
IF NivelVenta > 0 AND NivelCompra > 0 AND (NivelCompra - NivelVenta) >= AmplitudMin THEN
IF PosicionCompra = 0 THEN
IF LongOnMarket THEN
PosicionCompra = 1
ELSE
BUY TamanoPosicion CONTRACT AT NivelCompra STOP
ENDIF
ENDIF
IF PosicionVenta = 0 THEN
IF ShortOnMarket THEN
PosicionVenta = 1
ELSE
SELLSHORT TamanoPosicion CONTRACT AT NivelVenta STOP
ENDIF
ENDIF
ENDIF
ENDIF

// Definicin de las condiciones para salir de mercado cuando una


// orden de compra o de venta est abierta
IF LongOnMarket AND ((Time <= HoraEntradaLimite AND PosicionVenta = 1) OR Time > HoraEntradaLimite)
THEN
SELL AT NivelVenta STOP
ELSIF ShortOnMarket AND ((Time <= HoraEntradaLimite AND PosicionCompra = 1) OR Time >
HoraEntradaLimite) THEN
EXITSHORT AT NivelCompra STOP
ENDIF
// Definicin de la cantidad mxima al riesgo por posicin en el caso
// de que el precio vaya en direccin desfavorable
SET STOP PLOSS AmplitudMax

V 4.1.1 20170303 www.prorealtime.com 81 / 95


An exo C: Ejemplo detal lado de un si stem a de trading

Cmo probar un sistema de trading / cdigo

Con una cartera virtual (modo PaperTrading)

Si tiene una cuenta www.ProRealTime.com, puede ejecutar sistemas de trading en la cartera virtual
PaperTrading.

El modo PaperTrading le permite probar sus sistema de trading da a da en las condiciones de mercado
reales, sin arriesgar su dinero real.

Le dejar ver posiciones abiertas en tiempo real y tambin probar sus propias estrategias de trading
automtico. Puede reiniciar el valor de su cartera virtual Paper Trading tantas veces como quiera para
empezar una nueva simulacin.

Modo de Trading real

Puede utilizar ProOrder AutoTrading en operativa real a travs de una cuenta IG patrocinada por
ProRealTime.

Ms informacin sobre la cuenta IG patrocinada por ProRealTime

Advertencia: si utiliza el sistema de trading a travs de ProOrder en trading real, este servicio le
enviar automticamente seales segn los parmetros que haya configurado, para ejecutar rdenes
sin validacin de cada orden individual. Su sistema ser ejecutado automticamente, incluso si su
ordenador est apagado. Es su responsabilidad asegurarse de que su sistema de trading no conduce
a prdidas superiores a una cantidad aceptable para usted.
En cualquier caso, ProRealTime no ser responsable de ninguna prdida incurrida despus de la
ejecucin de su sistema de trading.
Le recordamos que debido al apalancamiento, operar en CFDs puede exponerle al riesgo de una
prdida mayor a sus depsitos. Los CFDs se adecuan nicamente a clientes con experiencia que
tienen los medios econmicos suficientes para soportar dicho riesgo.

V 4.1.1 20170303 www.prorealtime.com 82 / 95


Glosario

Glosario
A

CDIGO SINTAXIS FUNCIN

ABS ABS(a) Funcin matemtica "Valor Absoluto"


AccumDistr AccumDistr(price) Designa la Acumulacin Distribucin clsica
ADX ADX[N] Indicador Average Directional Index
ADXR ADXR[N] Indicador Average Directional Index Rate
AND a AND b Operador lgico ET
AroonDown AroonDown[P] Designa el Aroon Down
AroonUp AroonUp[P] Designa el Aroon Up
ATAN ATAN(a) Funcin matemtica "Arctangente"
AS RETURN x AS "ResultName" Instruccin utilizada para atribuir un nombre a
una curva
AT AT (price) Designa la asociacin a un precio
Average Average[N](price) Media Mvil Aritmtica
AverageTrueRange AverageTrueRange[N](price) Designa la Media mvil con alisado de Wilder
del True Range

CDIGO SINTAXIS FUNCIN

BACKGROUNDCOLOR BACKGROUNDCOLOR(R,V,B Le permite colorear el fondo de la totalidad del


,a) grfico o solo de algunas barras
BarIndex BarIndex Nmero de velas desde los primeros datos
cargados (para un sistema de trading en el caso
de ProBacktest o ProOrder, o en un grfico en
el caso de un indicador ProBuider). Ver
tambin: PreLoadBars.
BollingerBandWidth BollingerBandWidth[N](price) Ancho de banda de Bollinger
BollingerDown BollingerDown[N](price) Soporte de la banda de Bollinger
BollingerUp BollingerUp[N](price) Resistencia de la banda de Bollinger
BREAK (FOR...DO...BREAK...NEXT) Instruccin de salida forzada de bucle FOR o
o WHILE
(WHILE...DO...BREAK...WEND)
BUY BUY (n) SHARES Instruccin apertura posicin a largo (compra)

V 4.1.1 20170303 www.prorealtime.com 83 / 95


Glosario

C
CDIGO SINTAXIS FUNCIN

CALCULATEONLASTBARS DEFPARAM Aumenta la velocidad de clculo de los


CalculateOnLastBars = 200 indicadores al definir un nmero de barras para
mostrar los resultados, comenzando por la ltima.
Nota: esta instruccin es compatible con la
v10.3 y versiones superiores de la plataforma.
CALL myResult=CALL myFunction Llamada de funcin del usuario
CASH BUY x CASH Designa la cantidad en efectivo a invertir
CCI CCI[N](price) o CCI[N] Da Commodity Channel Index
ChaikinOsc ChaikinOsc[Ch1, Ch2](price) Designa el oscilador de Chaikin
Chandle Chandle[N](price) Designa el Chande Momentum Oscillator
ChandeKrollStopUp ChandeKrollStopUp[Pp, Qq, Stop de proteccin segn Chande y Kroll en
X] posicin compradora
ChandeKrollStopDown ChandeKrollStopDown[Pp, Stop de proteccin segn Chande y Kroll en
Qq, X] posicin vendedora
Close Close[N] Designa el precio de cierre de la vela actual o
de n das previos
COLOURED RETURN x Colorea una curva de un cierto color segn la
COLOURED(R,G,B) convencin RGB (slo indicadores)
COS COS(a) Funcin Coseno
COUNTOFLONGSHARES COUNTOFLONGSHARES Indica el nmero de posiciones largas que tiene
actualmente abiertas en el mercado
COUNTOFPOSITION COUNTOFPOSITION Calcula el nmero total de posiciones (a largo o
a corto) que tiene actualmente abiertas en el
mercado
COUNTOFSHORTSHARES COUNTOFSHORTSHARES Indica el nmero de posiciones de venta a corto
actualmente abiertas en el mercado
CONTRACT BUY 1 CONTRACT Designa el nmero de contratos a comprar.
Equivalente de "Shares"
CROSSES OVER a CROSSES OVER b Operador booleano que verifica que una curva
pase por encima de otra
CROSSES UNDER a CROSSES UNDER b Operador booleano que verifica que una curva
pase por debajo de otra
cumsum cumsum(price) Sumatorio de un precio desde el inicio del
histrico mostrado
CumulateOrders DEFPARAM A estar configurado como falso, impide que un
CumulateOrders=true/false cdigo refuerce la posicin y establezca que
varias rdenes entren al mercado en la misma
direccin
CustomClose CustomClose[N] Constante configurable en la ventana de
propiedades al mostrar el grfico (por defecto, cierre)
Cycle Cycle(price) indicador Cycle (en precio)

V 4.1.1 20170303 www.prorealtime.com 84 / 95


Glosario

CDIGO SINTAXIS FUNCIN

Date Date[N] Designa la fecha de cierre de la vela actual


Day Day[N] Da de cierre de la vela actual
Days Days[N] Contador de das desde 1970
DayOfWeek DayOfWeek[N] Designa el da de la semana durante el cual la
vela actual se ha cerrado
DClose DClose(N) Precio de cierre del ensimo da previo al de la
vela actual
DEFPARAM DEFPARAM Permite definir parmetros
DEMA DEMA[N](price) Doble Media Mvil Exponencial
DHigh DHigh(N) Precio mximo del ensimo da previo al de la
vela actual
DI DI[N](price) Designa el "Demand Index" (Indice de la
Demanda)
DIminus DIminus[N](price) Designa el DI-
DIplus DIplus[N](price) Designa el DI+
DLow DLow(N) Precio mnimo del ensimo da previo al de la
vela actual
DO Ver FOR y WHILE Instruccin opcional de los bucles "FOR" y WHILE
para introducir la accin de inicio de bucle
DOpen DOpen(N) Precio de apertura del ensimo da previo al de
la vela actual
DOWNTO Ver FOR Instruccin que se aplica sobre el bucle "FOR"
para ordenar una lectura decreciente
DPO DPO[N](price) Designa el "Detrented Price Oscillator"
DPO DPO[N](price) Dsigne le Detrented Price Oscillator
DRAWARROW DRAWARROW(x1,y1) Dibuja una flecha apuntando hacia la derecha.
Es necesario definir un punto para la flecha
(ejes x e y). Tambin podr colorearla.
Nota: las siguientes instrucciones de trazado
son compatibles con la versin 10.3 y versiones
superiores de la plataforma.
DRAWARROWDOWN DRAWARROWDOWN(x1,y1) Dibuja una flecha apuntando hacia abajo. Es
necesario definir un punto para la flecha (ejes x
e y). Tambin podr colorearla.
DRAWARROWUP DRAWARROWUP(x1,y1) Dibuja una flecha apuntando hacia arriba. Es
necesario definir un punto para la flecha (ejes x
e y). Tambin podr colorearla.
DRAWBARCHART DRAWBARCHART Dibuja una barra persinalizada en el grfico. La
(apertura,mximo,mnimo,cierr apertura, el mximo, el mnimo y el cierre
e) pueden ser constantes o variables.

V 4.1.1 20170303 www.prorealtime.com 85 / 95


Glosario

DRAWCANDLE DRAWCANDLE Dibuja una vela personalizada en el grfico. La


(apertura,mximo,mnimo,cierr apertura, el mximo, el mnimo y el cierre
e) pueden ser constantes o variables.
DRAWELLIPSE DRAWELLIPSE(x1,y1,x2,y2) Dibuja una elipse en el grfico.
DRAWHLINE DRAWHLINE(y1) Dibuja una lnea horizontal en el grfico.
DRAWLINE DRAWLINE(x1,y1,x2,y2) Dibuja una lnea en el grfico.
DRAWONLASTBARONLY DEFPARAM Traza objetos en la ltima barra.
DrawOnLastBarOnly = true
DRAWRECTANGLE DRAWRECTANGLE(x1,y1,x2, Dibuja un rectngulo en el grfico.
y2)
DRAWSEGMENT DRAWSEGMENT(x1,y1,x2,y2) Dibuja un segmento en el grfico.
DRAWTEXT DRAWTEXT("your text", x1, Aade un campo de texto al grfico con el
y1) contenido de su eleccin en una localizacin
especfica.
DRAWVLINE DRAWVLINE(x1) Dibuja una lnea vertical en el grfico.

CDIGO SINTAXIS FUNCIN

EaseOfMovement EaseOfMovement[I] Designa el indicador "Ease of Movement"


ELSE Ver IF/THEN/ELSE/ENDIF Instruccin de llamada de la segunda condicin
a defecto de la primera salida de "IF"
ELSEIF Ver Contraccin de "ELSE IF"
IF/THEN/ELSIF/ELSE/ENDIF
EMV EMV[N] Designa el indicador "Ease of Movement Value"
ENDIF Ver IF/THEN/ELSE/ENDIF Instruccin a introducir al final del conjunto de
instrucciones condicionales
EndPointAverage EndPointAverage[N](price) Ultimo punto de Media Mvil
EXITSHORT EXITSHORT x SHARES Cierra una posicin a corto / a descubierto
EXP EXP(a) Funcin matemtica "Exponencial"
ExponentialAverage ExponentialAverage[N](price) Media Mvil Exponencial

V 4.1.1 20170303 www.prorealtime.com 86 / 95


Glosario

F-G

CDIGO SINTAXIS FUNCIN

FOR/TO/NEXT FOR i=n TO p DO NEXT Bucle con i que vara de de n a p (n<p) o de p a n


FLATAFTER DEFPARAM FLATAFTER = Cierra posiciones, anula las rdenes pendientes
HHMMSS y evita el lanzamiento de nuevas rdenes tras el
momento del da estipulado (en horas, minutos
y segundos)
FLATBEFORE DEFPARAM FLATBEFORE = Cierra posiciones, anula las rdenes pendientes
HHMMSS y evita el lanzamiento de nuevas rdenes antes
del momento del da estipulado (en horas,
minutos y segundos)
ForceIndex ForceIndex(price) Indicador "Force Index", que determina quin
controla el mercado (vendedor, comprador)
GRAPH GRAPH myvariable AS Instruccin que mostrar los valores histricos
"myvariable" de las variables de ProBacktest en los grficos

CDIGO SINTAXIS FUNCIN

High High[N] Designa el mximo alcanzado en la vela actual


o durante las n velas anteriores
highest highest[N](price) Designa el mximo de un perodo sur un
horizonte temporal dado
HistoricVolatility HistoricVolatility[N](price) Designa la volatilidad histrica (o volatilidad
estadstica)
Hour Hour[N] Designa la hora de cierre de cada vela del histrico

I-J-K

CDIGO SINTAXIS FUNCIN

IF/THEN/ENDIF IF a THEN b ENDIF Conjunto de instrucciones condicionales sin


segunda condicin
IF/THEN/ELSE/ENDIF IF a THEN b ELSE c ENDIF Conjunto de instrucciones condicionales
IntradayBarIndex IntradayBarIndex[N] Cuenta el nmero de velas en el grfico intradiario

V 4.1.1 20170303 www.prorealtime.com 87 / 95


Glosario

L
CDIGO SINTAXIS FUNCIN

LIMIT BUY AT x LIMIT Genera orden Lmite


LinearRegression LinearRegression[N](price) Trazado de regresin linear
LinearRegressionSlope LinearRegressionSlope[N](price) Pendiente de la regresin linear

LOG LOG(a) Funcin matemtica "logaritmo neperiano"


LONGONMARKET LONGONMARKET Indica si tiene actualmente posiciones abiertas
de COMPRA (largas) en el mercado
Low Low[N] Designa el mnimo alcanzado durante el perodo
lowest lowest[N](price) Designa el mnimo de un perodo dentro de un
horizonte temporal dado
LOSS Set STOP LOSS x Permite fijar un stop loss a x unidades del nivel
de precio
%LOSS SET STOP %LOSS x Establece un stop loss a x% del precio medio
de la posicin
$LOSS SET STOP $LOSS x Establece un stop loss a x o $ (en la divisa del
instrumento)
LOT BUY 1 LOT Designa el nmero de lotes que se van a
comprar (equivale a "SHARE")

M
CDIGO SINTAXIS FUNCIN

MACD MACD[S,L,Si](price) Designa al "Moving Average Convergence


Divergence (MACD)" en histograma
MACDline MACDLine[S,L](price) Designa la lnea del MACD
MARKET BUY AT MARKET Genera orden a precio de mercado, que ser
ejecutada a la apertura de la vela siguiente
MassIndex MassIndex[N] Indicador "Mass Index" aplicado en N velas
MAX MAX(a,b) Funcin matemtica "Mximo"
MedianPrice MedianPrice Media del precio mximo y del mnimo
MIN MIN(a,b) Funcin matemtica "Mnimo"
Minute Minute Designa el minuto del instante del cierre de
cada vela del histrico
MOD a MOD b Funcin matemtica "Resto del cociente
eucldeo" de a por b
Momentum Momentum[I] Designa el Momentum (precio de cierre actual
precio de cierre de la ensima vela precedente)
MoneyFlow MoneyFlow[N](price) Designa el "MoneyFlow entre -1 y 1"
MoneyFlowIndex MoneyFlowIndex[N] Designa el "MoneyFlowIndex"
Month Month[N] Designa el mes de cierre de cada vela del histrico

V 4.1.1 20170303 www.prorealtime.com 88 / 95


Glosario

CDIGO SINTAXIS FUNCIN

NegativeVolumeIndex NegativeVolumeIndex[N] Designa el ndice de volumen negativo


NEXT Ver FOR/TO/NEXT Instruccin a introducir al final del bucle "Para"
(FOR)
NextBarOpen AT MARKET NextBarOpen Orden a ejecutar en apertura de la vela
siguiente
NOCASHUPDATE DEFPARAM Permite no actualizar el capital con las
NOCASHUPDATE=true/false ganancias/prdidas (slo Backtest)
NOT Not A Operador lgico NO

CDIGO SINTAXIS FUNCIN

OBV OBV(price) Designa el "On-Balance-Volume"


ONCE ONCE VariableName = Instruccin que precede a otra que deseamos
VariableValue ejecutar una sola vez
ONMARKET ONMARKET Indica si tiene actualmente posiciones abiertas
en el mercado
Open Open[N] Designa el precio de apertura de la vela actual
o la de n das previos
OpenDate OpenDate Fecha de apertura de la vela actual en formato
AAAMMDD
OpenDay OpenDay Da de apertura de la vela actual
OpenDayOfWeek OpenDayOfWeek Da de la semana de apertura de la vela actual
OpenHour OpenHour Hora de apertura de la vela actual en el huso
horario del usuario
OpenMinute OpenMinute Minuto de apertura dela vela actual en el huso
horario del usuario
OpenMonth OpenMonth Mes de apertura de la vela actual
OpenTime OpenTime Hora de apertura de la vela actual en formato
AAAMMDD en el huso horario del usuario
OpenYear OpenYear Ao de apertura de la vela actual
OR a OR b Operador lgico "O"

V 4.1.1 20170303 www.prorealtime.com 89 / 95


Glosario

P-Q

CDIGO SINTAXIS FUNCIN

PIPVALUE PipValue Valor en /$ de un pip (o punto):


PipValue=Pointvalue
PIPSIZE PipSize Tamao de un (o punto): PipSize=PointSize
POINTVALUE PointValue Valor en /$ de un pip (o punto),
PipValue=Pointvalue
POINTSIZE PointSize Tamao de un (o punto): PipSize=PointSize
POSITIONPERF PositionPerf(n) Indica el porcentaje de ganancias o prdidas de
la ensima posicin liquidada
POSITIONPRICE PositionPrice Indica el precio medio de la posicin actual
PRELOADBARS DEFPARAM PRELOADBARS Establece la cantidad mxima de velas que
= 200 puedan cargarse de antemano para el clculo
de los indicadores utilizados en el sistema
automtico.
PriceOscillator PriceOscillator[S,L](price) Indicador "Percentage Price oscillator"
PositiveVolumeIndex PriceVolumeIndex(price) Designa el indicador "Positive Volume Index"
PVT PVT(price) Designa el indicador "Price Volume Trend"
QUIT QUIT Instruccin para detener un sistema de trading

CDIGO SINTAXIS FUNCIN

R2 R2[N](price) Designa el coeficiente R Cuadrado (error de


precios en la regresin linear)
Range Range[N] Devuelve el "Range" (rango, diferencia entre el
precio mximo y mnimo de la vela actual)
REM REM comment Precede un comentario (el cdigo no lo toma en
cuenta, pero facilitan la lectura al usuario)
Repulse Repulse[N](price) Devuelve el indicador "Repulse" (mide la fuerza
alcista y bajista de cada vela)
RETURN RETURN Result Instruccin que enva el resultado (slo
indicadores)
ROC ROC[N](price) Designa el "Price Rate of Change"
RSI RSI[N](price) Designa el oscilador "Relative Strength Index"
ROUND ROUND(a) Funcin matemtica "Redondeo a la unidad"
(parte entera)
ROUNDEDUP ROUNDEDUP Redondea las cantidades hacia la unidad superior
ROUNDEDDOWN ROUNDEDDOWN Redondea las cantidades hacia la unidad inferior

V 4.1.1 20170303 www.prorealtime.com 90 / 95


Glosario

CDIGO SINTAXIS FUNCIN

SAR SAR[At,St,Lim] Designa el Parablico SAR


SARatdmf SARatdmf[At,St,Lim](price) Designa el Parablico SAR en el mdulo ATDMF
SELL SELL (n) SHARES Cierre de posicin a largo (venta)
SELLSHORT SELLSHORT (n) SHARES Apertura de posicin a corto / a descubierto
SET SET Permite generar una orden stop o limite
SHARES BUY (n) SHARES Designa la cantidad de valores en una compra
SHORTONMARKET SHORTONMARKET Indica si tiene actualmente posiciones abiertas
de venta a descubierto en el mercado
SIN Sin(a) Funcin matemtica "Seno"
SGN Sgn(a) Funcin matemtica "Signo de"
SMI SMI[N,SS,DS](price) Designa el ndice "Estocstico Momentum"
(Stochastic Momentum Index)
SmoothedStochastic SmoothedStochastic[N,K] Designa un estocstico alisado
(price)
SQUARE Square(a) Funcin matemtica "Cuadrado" (potencia 2)"
SQRT Sqrt(a) Funcin matemtica "Raz cuadrada"
STD STD[N](price) Funcin estadstica "Desviacin Tpica"
STE STE[N](price) Funcin estadstica "Error tpico"
Stochastic Stochastic[N,K](price) Lnea %K del Estocstico
STOP SET STOP LOSS Permite de lanzar un stop (cf glosario LOSS)
summation summation[N](price) Suma de un cierto precio de las N ltimas velas
Supertrend SuperTrend[STF,N] Designa el "Super Trend"

V 4.1.1 20170303 www.prorealtime.com 91 / 95


Glosario

CDIGO SINTAXIS FUNCIN

TAN TAN(a) Funcin matemtica "Tangente"


TARGET SET TARGET PROFIT x Permite fijar un objetivo (target) a un precio x
TEMA TEMA[N](price) Media Mvil Exponencial Triple
THEN Ver IF/THEN/ELSE/ENDIF Instruccin que sigue la primera condicin del
conjunto condicional "IF"
TICKSIZE TICKSIZE Ofrece el "ticksize" del instrumento (variacin
de precio mnima posible)
Time Time[N] Ofrece la hora en formato HHMMSS
TimeSeriesAverage TimeSeriesAverage[N](price) Media Mvil de las series temporales
TO Ver FOR/TO/NEXT Instruccin "hasta" en el bucle "Para" (FOR)
Today Today Fecha actual en formato YYYYMMDD
TomorrowOpen AT (prix) TomorrowOpen Orden ejecutada a la apertura del da siguiente
TotalPrice TotalPrice[N] (cierre + apertura + mximo + mnimo) / 4
TR TR(price) Designa el "True Range"
TRADEINDEX TRADEINDEX(n) Indica el ndice de la vela en la que se ejecut
la ensima ltima orden
TRADEPRICE TRADEPRICE(n) Indica el nivel de precio en el que se ejecut la
ensima ltima orden
TRAILING SET STOP TRAILING x Permite fijar un stop dinmico a x unidades del
precio medio de la posicin
%TRAILING SET STOP %TRAILING x Permite fijar un stop dinmico a x% del precio
medio de la posicin
$TRAILING SET STOP $TRAILING x Permite fijar un stop dinmico a x , $ (en la
divisa del instrumento)
TriangularAverage TriangularAverage[N](price) Media Mvil Triangular
TRIX TRIX[N](price) Triple Media Mvil Exponencial
TypicalPrice TypicalPrice[N] Designa el precio Tpico (Media de mximo,
mnimo y cierre)

V 4.1.1 20170303 www.prorealtime.com 92 / 95


Glosario

CDIGO SINTAXIS FUNCIN

Undefined a = Undefined Permite dejar una variable indefinida (es un tipo


de variable)

CDIGO SINTAXIS FUNCIN

Variation Variation(price) Da la diferencia entre el cierre de la vspera y el


cierre actual en %
Volatility Volatility[S, L] Designa la volatilidad de Chaikin
Volume Volume[N] Designa el volumen
VolumeOscillator VolumeOscillator[S,L] Designa el oscilador de volumen
VolumeROC VolumeROC[N] Designa el volumen del "Rate Of Change"
(ROC)

CDIGO SINTAXIS FUNCIN

WeightedAverage WeightedAverage[N](price) Designa la Media Mvil Ponderada


WeightedClose WeightedClose[N] Media ponderada entre el precio de cierre,
mximo y mnimo.
WEND Ver WHILE/DO/WEND Instruccin a introducir al final del bucle "While/
Do/Whend" (mientras)
WHILE/DO/WEND WHILE (condition) DO (action) Bucle "Mientras"
WEND
WilderAverage WilderAverage[N](price) Da la Media Mvil de Wilder
Williams Williams[N](close) Calcula el "%R de Williams"
WilliamsAccumDistr WilliamsAccumDistr(price) Indicador "Acumulacin/Distribucin de
Williams"

CDIGO SINTAXIS FUNCIN

XOR a XOR b Operador lgico exclusivo "O"

V 4.1.1 20170303 www.prorealtime.com 93 / 95


Glosario

CDIGO SINTAXIS FUNCIN

Year Year[N] Da el ao en formato YYYY


Yesterday Yesterday[N] Da el da anterior en formato YYYMMDD

CDIGO SINTAXIS FUNCIN

ZigZag ZigZag[Zr](price) Designa los "Zig-Zag" de la teora de las ondas


de Eliott
ZigZagPoint ZigZagPoint[Zp](price) Designa los "Zig-Zag" de la teora de las ondas
de Eliott calculadas a Zp puntos

Operadores

CDIGO FUNCIN CDIGO FUNCIN

+ Operador de suma < Operador de inferioridad estricta


- Operador de sustraccin > Operador de superioridad estricta
* Operador de multiplicacin <= Operador de inferioridad
/ Operador de divisin >= Operador de superioridad
= Operador de igualdad // Introduce una lnea de comentario
<> Operador de diferencia

V 4.1.1 20170303 www.prorealtime.com 94 / 95


www.prorealtime.com

You might also like