Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Indicaciones y Funciones Basicas (Probuilder)
Indicaciones y Funciones Basicas (Probuilder)
Presentacin de ProBuilder______________________________________________
Captulo I: Principios fundamentales_______________________________________
Utilizar ProBuilder................................................................................................................................. 2
Tutorial rpido para la creacin de un indicador.............................................................................2
Atajos de teclado en la ventana de programacin..........................................................................5
Aspectos especficos de la programacin en ProBuilder......................................................................6
Las constantes financieras ProBuilder................................................................................................. 7
Las constantes de precio y volumen adaptadas a la unidad de tiempo del grfico.........................7
Constantes diarias del precio.......................................................................................................... 8
Constantes de tiempo..................................................................................................................... 8
Constantes de precio.................................................................................................................... 12
Constante indefinida..................................................................................................................... 12
Uso de indicadores ya existentes....................................................................................................... 12
Optimizacin de variables.................................................................................................................. 13
Glosario______________________________________________________________
Presentacin de ProBuilder
Presentacin de ProBuilder
ProBuilder es el lenguaje de programacin de ProRealTime. Le permite crear indicadores
personalizados de anlisis tcnico, estrategias y sistemas de trading (ProBackTest), o escneres de
mercados (ProScreener). ProBackTest y ProScreener tienen manuales de ayuda propios a causa de sus
propias especificidades de programacin.
ProBuilder es un lenguaje de tipo BASIC, muy simple y a la vez exhaustivo en cuanto a las posibilidades
de programacin que ofrece.
Con l podr construir sus propios programas que utilizarn los precios de cualquier valor que forme
parte de la cobertura de mercados de ProRealTime, a partir de los siguientes elementos de base:
el precio de apertura de cada vela: Open
el precio de cierre de cada vela: Close
el mximo de cada vela: High
el mnimo de de cada vela: Low
la cantidad de ttulos negociados: Volume
En este manual se familiarizar gradualmente con los comandos de programacin de ProBuilder con
una visin terica clara acompaada de ejemplos ilustrativos.
Al final del manual encontrar un ndice que le ofrece un listado global de los comandos de ProBuilder,
indicadores ya codificados y otras funciones complementarias a lo que haya aprendido durante la
lectura.
Para quien no est familiarizado con la programacin, sugerimos visualizar el vdeo titulado Programe
indicadores simples o dinmicos y leer ntegramente este manual, que hemos diseado para permitirle
programar lo ms rpidamente posible. Buena lectura !
www.prorealtime.com
1 / 43
En este ltimo caso deber pulsar el botn Crear indicador para acceder a la ventana de
programacin. Esta ventana le ofrece las siguientes posibilidades:
programar directamente un indicador en la zona de texto reservada al cdigo
utilizar el asistente Insertar funcin para abrir una nueva ventana con una biblioteca de
funciones clasificadas en siete categoras, para utilizarlas directamente en su codificacin.
www.prorealtime.com
2 / 43
Veamos el ejemplo del primer elemento tpico de los indicadores ProBuilder: la funcin RETURN.
Est disponible en la seccin 'Instrucciones ProBuilder', tal y como se muestra en la imagen a
continuacin.
www.prorealtime.com
3 / 43
Para aadir el comando en la zona de programacin, bastar con seleccionar RETURN y pulsar
Aadir.
RETURN muestra el resultado del clculo de su indicador
Antes de pulsar el botn Validar programa, es necesario dar un nombre al indicador en el campo
previsto a este efecto en la zona superior de la ventana. En este ejemplo, lo hemos llamado
VolumenDAX. Tras esto, pulse Validar programa y el indicador aparecer en la ventana de
grfico.
www.prorealtime.com
4 / 43
5 / 43
Volume
X = Volume
Este smbolo se utiliza de dos maneras distintas:
para atribuir una variable (como acabamos de ver en el ejemplo)
como operador matemtico binario (1+ 1 = 2 equivale a 2 = 1 + 1).
www.prorealtime.com
6 / 43
Para llamar a los valores de las velas precedentes, basta con aadir entre corchetes [ ] la cifra
referente a la vela considerada (nmero de velas a partir de la actual).
Tomemos p.ej. la constante precio al cierre. La llamada del valor se har de la siguiente manera:
Valor del cierre de la vela actual:
Close
Close[1]
Close [n]
Esta regla sirve para cualquier constante. Por ejemplo, el precio de apertura de la segunda vela
que precede a la vela actual, se utilizar la expresin: Open[2].
El valor que aparezca depender del perodo mostrado en el grfico.
www.prorealtime.com
7 / 43
Constantes de tiempo
A veces sucede que la constante tiempo no recibe mucha atencin en el anlisis tcnico. Sin
embargo, los traders conocen bien la importancia de los momentos claves del da, o de ciertas
fechas del ao. Para poder limitar el anlisis de un indicador a momentos especficos, existen
estas constantes:
Date : Fecha en formato YYYYMMJJ, que indica la fecha de cierre de cada vela
Supongamos que hoy estamos a 4 de Julio del 2008. El indicador conectar todas las fechas de
cierre de las velas, enviando el resultado 20080704.
Para leer una fecha, bastar con seguir esta regla:
20080704 = 2008 aos 07 meses y 04 das.
Obviamente, en una fecha con formato YYYYMMJJ, MM no puede ser superior a 12 y JJ, a la cifra
31.
www.prorealtime.com
8 / 43
Obtendremos una curva que conecta las horas de cierre de cada vela:
www.prorealtime.com
9 / 43
10 / 43
y
RETURN IntradayBarIndex
11 / 43
Constantes de precio
Estas constantes permiten obtener una informacin ms exhaustiva respecto a Open, High, Low y
Close, ya que combinan estas informaciones de manera que se puedan resaltar ciertos aspectos
de la psicologa del mercado, resumidos en la vela actual.
Range : diferencia entre High y Low.
TypicalPrice : media entre High, Low y Close
WeightedClose : media ponderada de High (peso 1) Low (peso 1) y Close (peso 2)
MedianPrice : media entre High y Low
TotalPrice : media entre Open, High, Low y Close
El Range resalta la volatilidad de la vela actual, que refleja el nerviosismo de los inversores.
La WeightedClose insiste en la importancia del precio al cierre (cotizacin de referencia), que se
mantiene fija durante todo el da y separa dos velas consecutivas (siendo as an ms importante
en el caso de las velas diarias o semanales).
Las constantes TypicalPrice y TotalPrice reflejan mejor la psicologa del mercado dentro de la vela
actual, ya que consideran respectivamente 3 y 4 niveles de precio alcanzados durante la jornada burstil.
Bajo una perspectiva de robustez, MedianPrice permite explotar el plus de calidad explicativa que
ofrecen las medianas respecto a las medias mviles, prestndose as mejor a modelizaciones
tericas que tratan de comprender mejor la psicologa del mercado.
Range en % :
MyRange = Range
Calculo = (MyRange / MyRange[1] - 1) * 100
RETURN Calculo
Constante indefinida
La palabra clave Undefined permite instruir al indicador para que no muestre un resultado en
ciertas variables. Por defecto, toda variable no definida est a cero.
Undefined : dato indefinido (equivalente a una casilla vaca o a NULL)
Podr ver un ejemplo en este mismo manual
Average[20](Close)
Es posible modificar estos valores por defecto segn nuestras preferencias: por ejemplo,
reemplazando el perodo de 20 velas definidas por defecto, y fijndolo a 100 velas. Anlogamente, se
puede modificar el argumento del precio o del indicador close por otro valor, como p.ej. "DOpen(6)":
Average[20](Dopen(6))
www.prorealtime.com
12 / 43
Este otro programa calcula una media mvil ponderada sobre 20 velas aplicada al precio estndar:
mm = WeightedAverage[20](TypicalPrice)
RETURN mm
Clculo de una media mvil alisada con el procedimiento de Wilder sobre 100 velas aplicada al
Volumen:
mm = WilderAverage[100](Volume)
RETURN mm
Programamos a continuacin un cdigo para calcular el MACD (en histograma) sobre el precio al
cierre. La lnea del MACD se construye como la diferencia entre la media mvil exponencial sobre 12
perodos menso aquella calculada sobre 26 perodos.
A continuacin, se realiza un alisado con una media mvil exponencial a 9 perodos, aplicada a la
diferencia para obtener la lnea de Seal. El MACD en histograma se crea as a partir de la diferencia
entre la lnea del MACD y la lnea de Seal.
REM Clculo de la lnea MACD
LineaMACD = ExponentialAverage[12](Close) - ExponentialAverage[26](Close)
REM Clculo de la lnea de Seal MACD
LineaSignal = ExponentialAverage[9](LineaMACD)
REM Clculo de la diferencia entre la lnea del MACD y su Seal
MACDHistograma = LineaMACD - LineaSignal
RETURN MACDHistograma
Optimizacin de variables
Al crear un indicador se introduce un cierto nmero de constantes. La opcin de optimizacin de
variables (situada en la zona superior derecha) permite atribuir un valor por defecto a una constante
indefinida para actuar posteriormente sobre el valor de la constante a partir de la interfaz de
parmetros (propiedades) del indicador.
La ventaja consiste en la posibilidad de poder alterar los parmetros del indicador sin necesidad de
modificar el cdigo.
Por ejemplo, en el clculo de una media mvil de 20 perodos:
RETURN Average[20](Close)
www.prorealtime.com
13 / 43
Para poder modificar el nmero de perodos directamente desde la ventana de propiedades, vamos a
reemplazar el valor 20 por una variable n:
RETURN Average[n](Close)
A continuacin, pulsamos OK. En la ventana de Propiedades del indicador (llamada en este caso
Propiedades - Mi Media Mvil), obtendremos as un nuevo parmetro que nos permitir modificar el
nmero de perodos de la media mvil:
Aplicando este mtodo para crear mltiples variables, ser posible combinar simultneamente varios
parmetros del indicador.
www.prorealtime.com
14 / 43
Se puede buscar una condicin y definir una accin que tendr lugar si la condicin se cumple.
Si la condicin no se cumple, no habr accin (se obtendr el valor por defecto de 0).
En el siguiente ejemplo, si el ltimo precio es superior a la MM de perodo 20, se obtendr el valor 1.
IF Close > Average[20](Close) THEN SI precio > media mvil de 20 perodos ENTONCES
Resultado = 1
SI NO Resultado = 0 (por defecto) FIN DE CONDICIN
MOSTRAR Resultado
Resultado = 1
ENDIF
RETURN Resultado
Tambin podemos definir un resultado distinto del definido por defecto en caso de que la
condicin no se cumpla. Retomando el ejemplo previo: si el ltimo precio es superior a la MM de
20 perodos, se muestra el valor 1. En caso contrario, se muestra el valor -1.
IF Close > Average[20](Close) THEN
Resultado = 1
ELSE
Resultado = -1
ENDIF
RETURN Result
Nota: Acabamos de crear un indicador binario. Para ms detalles al respecto, ver la ver la
seccin 'Creacin de un indicador binario o ternario' de este mismo manual.
Condiciones imbricadas
Se pueden crear subcondiciones aplicables tras la verificacin de una condicin principal. Eso
implica condiciones que debern verificarse secuencialmente (una tras otra) en orden de
aparicin. Para ello, basta con imbricar las condiciones IF, recordando insertar tantos ENDIF
como IF. Vemoslo en este ejemplo:
Condiciones dobles en medias mviles:
IF (Average[12](Close) - Average[20](Close) > 0) THEN
IF ExponentialAverage[12](Close) - ExponentialAverage[20](Close) > 0 THEN
Resultado = 1
ELSE
Resultado = -1
ENDIF
ENDIF
RETURN Resultado
www.prorealtime.com
15 / 43
Pueden definirse varios resultados, estando cada uno de ellos asociado a una condicin
especfica. El indicador devolver varios estados: si la Condicin 1 se cumple, se activar la
Accin 1; en cambio, si la Condicin 2 se cumple, se activar la Accin 2 y si no se cumple
ninguna condicin, se activar la Accin n.
Sintcticamente, esta estructura emplea las instrucciones IF, THEN, ELSIF, THEN .... ELSE,
ENDIF.
Y se escribe de la siguiente manera:
IF (Condicin1) THEN
(Accin1)
ELSIF (Condicin2) THEN
(Accin2)
ELSIF (Condicin3) THEN
(Accin3)
...
...
...
ELSE
(Accin n)
ENDIF
Aunque la codificacin es ms compleja, tambin es posible reemplazar los ELSIF por ELSE IF.
En tal caso, el bucle deber terminar en tantos ENDIF como IF se hayan escrito. Si desea
imbricar mltiples condiciones en su programa, recomendamos utilizar ELSIF de preferencia a
ELSE IF.
Ejemplo: deteccin de desbordamientos alcistas y bajistas
Este indicador devolver 1 si detecta un desbordamiento alcista; -1 si detecta un
desbordamiento bajista; y 0 en los dems casos.
// Descripcin de un desbordamiento alcista
Condition1 = Close[1] < Open[1]
Condition2 = Open < Close[1]
Condition3 = Close > Open[1]
Condition4 = Open < Close
www.prorealtime.com
16 / 43
Ejemplo: BarIndex
En el captulo I de este manual habamos presentado BarIndex como un contador del nmero
de velas (o de barras) desde el inicio del histrico visible. BarIndex se utiliza a menudo
asociado con IF. Por ejemplo, si queremos verificar si nuestro grfico contiene ms de 23 velas,
escribiremos:
IF BarIndex <= 23 THEN
a = 0
ELSIF BarIndex > 23 THEN
a = 1
ENDIF
RETURN a
www.prorealtime.com
17 / 43
NEXT
ENDIF
MMhigh = SUMhigh / 20
RETURN MMhigh
El avance decreciente se sirve en cambio de las instrucciones: FOR, DOWNTO, DO, NEXT.
Se escribe de esta manera:
FOR (Variable = ValorDeFinalDeSerie) DOWNTO ValorDeInicioDeSerie DO
(Accin)
NEXT
18 / 43
(Accin n)
WEND
La instruccin WHILE no conoce el valor de origen de i. Por ello, no puede verificar si se confirma
que i es efectivamente igual a 10.
El bucle utilizar sus recursos para definir la variable i y atribuirle el valor 0 por defecto. De este
modo, Count no ser procesado cada vez que el valor de retorno sea 0.
El cdigo correcto sera:
i = 0
Count = 0
WHILE i <> 11 DO
i = i + 1
Count = Count + 1
WEND
RETURN Count
19 / 43
BREAK
La instruccin BREAK permite hacer una salida forzada de un bucle WHILE o de un bucle FOR.
Cabe la posibilidad de crear combinaciones con el comando IF, tanto del bucle WHILE como FOR.
Con WHILE
Cuando queremos salir de un bucle condicional WHILE sin esperar a encontrar una situacin
que deshaga la condicin de bucle, utilizamos BREAK siguiendo esta estructura:
WHILE (Condicin) DO
(Accin)
BREAK
WEND
Tomemos por ejemplo un indicador que acumula perodos alcistas y bajistas consecutivos:
REM Indicador de tendencia: acumula el nmero de subidas y bajadas
REM Aumentamos de 1 un contador inicializado a 0 en caso de subida (o -1 para
una bajada)
Subida = (Close - Close[1]) > 0
Indicator = 0
i = 0
WHILE Subida[i] DO
Indicator = Indicator + 1
i = i + 1
BREAK
WEND
RETURN Indicator
Con FOR
Cuando se busca salir de un bucle iterativo FOR sin llegar al ltimo (o al primer) valor de la
serie, se utiliza BREAK estructurado de esta manera:
FOR (Variable = ValorDeFinalDeSerie) TO ValorDeInicioDeSerie DO
(Accin)
BREAK
NEXT
Tomemos el ejemplo de un indicador que acumula las subidas consecutivas del volumen de las
ltimas 19 velas. Este indicador devolver 0 si el volumen es bajista.
Indicator = 0
FOR i = 0 TO 19 DO
IF (Volume[i] > Volume[i + 1]) THEN
Indicator = Indicator + 1
ELSE
BREAK
ENDIF
NEXT
RETURN Indicator
En este ejemplo, si no se hubiese utilizado BREAK, el bucle habra continuado hasta llegar a 19
(el ltimo elemento de la serie) incluso si la condicin de volumen no fuese vlida.
Con BREAK, en cambio, en cuanto la condicin deja de ser vlida, el programa devuelve el
resultado y se vuelve a situar a 0.
www.prorealtime.com
20 / 43
CONTINUE
La instruccin CONTINUE permite reemplazar la lectura del programa en la lnea de inicio de un
bucle WHILE o FOR. Suele combinarse a menudo con BREAK para dar una orden de salida del
bucle (BREAK) o para mantenerse en el bucle (CONTINUE).
Con WHILE
Vamos a crear un programa que acumula la cantidad de velas con un nivel de apertura y cierre
inferiores a los del perodo inmediatamente previo. Si la condicin no se verifica, el contador
volver a 0.
Subida = Close > Close[1]
Contador = 0
WHILE Open < Open[1] DO
IF Subida[Contador] THEN
Contador = Contador + 1
CONTINUE
ENDIF
BREAK
WEND
RETURN Contador
A travs de CONTINUE, y tras verificar que se cumple la condicin del IF, el programa no sale
del bucle WHILE, pudiendo as acumular el nmero de figuras que verifican esta condicin. Sin
la instruccin CONTINUE, el programa saldra del bucle independientemente de que la
condicin del IF se cumpla o no. En tal caso, no podramos acumular la aparicin de
configuraciones, y el resultado sera binario (1,0).
Con FOR
Vamos a crear un programa que acumule el nmero de velas que tengan un cierre superior al
de la inmediatamente anterior. Si la condicin no se cumple, el contador volver a 0.
Subida = Close > Close[1]
Contador = 0
FOR i = 1 TO BarIndex DO
IF Subida[Contador] THEN
Contador = Contador + 1
CONTINUE
ENDIF
BREAK
NEXT
RETURN Contador
www.prorealtime.com
21 / 43
ONCE
La instruccin ONCE permite ordenar a una variable que se d una SOLA VEZ.
En todo programa, el lenguaje de programacin leer el cdigo tantas veces como velas haya en
el grfico antes de devolver un resultado. Por ello, se debe tener siempre presente que ONCE:
es procesado una sola y nica vez por el programa, aunque ste realice relecturas durante
su ejecucin.
cuando se produce la relectura del cdigo por el lenguaje de programacin, sta conservar
los valores calculados durante la lectura previa.
Para comprender bien el funcionamiento de este comando, es necesario tener una visin
clara de cmo el lenguaje lee el cdigo. Esto se ve con claridad en el ejemplo siguiente:
Tenemos aqu dos programas que devuelven respectivamente los valores 0 y 15, donde la nica
diferencia entre ambos es el comando ONCE:
Programa 1
1
2
3
4
5
6
7
Programa 2
Contador = 0
i = 0
IF i <= 5 THEN
Contador = Contador + i
i = i + 1
ENDIF
RETURN Contador
1
2
3
4
5
6
7
ONCE Contador = 0
ONCE i = 0
IF i <= 5 THEN
Contador = Contador + i
i = i + 1
ENDIF
RETURN Contador
Programa 2 :
el lenguaje lee L1 (Contador = 0; i = 0), a continuacin L2, L3, L4, L5, L6 (Contador = 0; i = 1);
llega a la lnea RETURN, retoma el bucle a partir de L3 (las lneas con ONCE slo se procesan
durante la primera lectura), L4, L5, L6 (Contador = 1; i = 2), vuelve de nuevo (Contador = 3; i = 3)
y as sucesivamente hasta que (Contador = 15; i = 6). Tras llegar a este resultado, la bucle en IF
deja de procesarse puesto que la condicin requerida para ello ya no se da; slo le quedar leer
L7. De ah el nuevo resultado: 15.
www.prorealtime.com
22 / 43
Funciones matemticas
Funciones comunes unarias y binarias
Examinemos ahora las funciones matemticas principales.
Observe que a y b son ejemplos de argumentos decimales. Pueden reemplazarse por cualquier
otra variable en su programa.
MIN(a, b) : calcula el mnimo de a y de b
MAX(a, b) : calcula el mximo de a y de b
ROUND(a) : calcula un redondeo a la unidad de a
ABS(a) : calcula el valor absoluto de a
SGN(a) : indica el signo de a (1 si positivo, -1 si negativo)
SQUARE(a) : calcula el cuadrado de a
SQRT(a) : calcula la raz cuadrada de a
LOG(a) : calcula el logaritmo neperiano de a
EXP(a) : calcula el exponencial (potencia) de a
COS(a) : calcula el coseno de a
SIN(a) : calcula el seno de a
TAN(a) : calcula la tangente de a
ATAN(a) : calcula la arcotangente de a
Vamos a codificar un ejemplo: la ley matemtica normal, cuyo inters aqu reside en que se utiliza
tanto en el clculo del cuadrado, como de la raz cuadrada o en el clculo de la potencia
exponencial:
REM Ley Normal aplicada en x = 10, Desviacin Tipica = 6 y Esperanza = 8
REM Definamos en variable optimizada:
DesviacionTipica = 6
Esperanza = 8
x = 10
Indicator = EXP((1 / 2) * (SQUARE(x Esperanza) / DesviacionTipica))
(DesviacionTipica * SQRT(2 / 3.14))
RETURN Indicator
23 / 43
Funciones sumatorias
cumsum : Halla el sumatorio (suma acumulada) de todas las velas del grfico
La sintaxis de uso de cumsum es :
cumsum (precio o indicador)
Funciones estadsticas
La sintaxis de uso de estas funciones es anloga a la de los indicadores y de la funcin
Summation:
lowest[cantidad de velas](precio o indicador)
Operadores lgicos
Como en todo lenguaje informtico, es preciso disponer de operadores lgicos para crear indicadores
pertinentes. Veamos a continuacin los 4 operadores lgicos de ProBuilder:
NOT(a) : NO lgico
a OR b : O lgico
a AND b : Y lgico
a XOR b : O exclusivo
Clculo del indicador de tendencia: On Balance Volume (OBV) :
IF NOT((Close > Close[1]) OR (Close = Close[1])) THEN
MiOBV = MiOBV - Volume
ELSE
MiOBV = MiOBV + Volume
ENDIF
RETURN MiOBV
Instrucciones ProBuilder
RETURN : devuelve el resultado
CustomClose : enva un valor de precio configurable; por defecto, enva Close
CALL : llama una funcin previamente creada por el usuario
AS : nombra los distintos resultados mostrados
COLOURED : aplica a la curva mostrada un color a definir
www.prorealtime.com
24 / 43
RETURN
Ya hemos visto en el primer captulo la importancia de la instruccin RETURN. Posee propiedades
especficas que deben conocerse para evitar ciertos errores de programacin.
Para utilizar correctamente RETURN en el codaje de un programa:
debe emplearse una sola y nica vez
en la ltima lnea de cdigo
puede usarse opcionalmente con otras funciones como AS y COLOURED
para mostrar mltiples resultados, escribiremos RETURN seguido de los resultados que
deseamos mostrar y separados por comas (ejemplo: RETURN a, b)
REM o //
REM (que tambin puede expresarse como //) permite insertar comentarios en el cdigo. Estos
comentarios le ayudarn a recordar el funcionamiento de la funcin programada. Los comentarios
son ledos por el programa, pero obviamente no sern procesados por el cdigo.
Veamos un ejemplo para ilustrar el concepto con ms claridad:
REM Este programa calcula la media aritmtica de 20 perodos al precio de cierre
RETURN Average[20](Close)
Al pulsar sobre el icono con forma de llave inglesa situado en el ngulo superior izquierdo del
grfico, comprobar que es posible configurar los precios utilizados para el clculo (en la zona
resaltada en amarillo de la imagen que se muestra a continuacin)
www.prorealtime.com
25 / 43
CALL
CALL permite llamar a un indicador personalizado ya existente en la plataforma.
El mtodo ms rpido consiste en seleccionar directamente a partir de la categora Indicadores
personales (en el botn Insertar funcin al que se accede tras pulsar Nuevo Indicador) el
indicador a utilizar.
Supongamos que ha codificado con el nombre HistoMACD el indicador de MACD en histograma.
Seleccione el indicador en la lista y pulse Aadir. En la zona de programacin aparecer el Cdigo
myHistoMACD = CALL HistoMACD
AS
La palabra clave AS nombra el resultado mostrado. Esta instruccin se utiliza conjuntamente con
RETURN segn la siguiente estructura:
RETURN Resultado1 AS "Nombre Curva", Resultado2 AS "Nombre Curva",
La ventaja consiste en facilitar la identificacin de los elementos que componen el indicador creado.
Ejemplo:
a = ExponentialAverage[200](Close)
b = WeightedAverage[200](Close)
c = Average[200](Close)
RETURN a AS "Media Exponencial", b AS "Media Ponderada", c AS "Media Aritmtica"
COLOURED
COLOURED se utiliza tras el comando RETURN para colorear la lnea visible con un color definido
segn la norma RGB (red, green, blue). A continuacin indicamos los colores principales de esta
norma:
Color
Valor RGB
(rojo, verde, azul)
Espaol
(0, 0, 0)
negro
blanco
(255, 0, 0)
rojo
(0, 255, 0)
verde
(0, 0, 255)
azul
(255, 255, 0)
amarillo
azul celeste
(255, 0, 255)
ail
www.prorealtime.com
26 / 43
www.prorealtime.com
27 / 43
Los indicadores binarios o ternarios se construyen con ayuda de la funcin IF. Por ello, se recomienda
releer la seccin referente a esta funcin para aprovechar mejor las explicaciones ofrecidas a
continuacin.
www.prorealtime.com
28 / 43
Nota: Hemos mostrado las medias mviles exponenciales de 10 y 20 perodos aplicadas al precio de
cierre para evidenciar la correspondencia de los resultados del indicador con ms nitidez.
Encontrar otros ejemplos de indicadores de deteccin de configuraciones de precios en los ejercicios
de este manual.
29 / 43
30 / 43
STOP de inactividad
Un STOP de inactividad cierra una posicin cuando el precio se mueve en un rango demasiado
estrecho y el objetivo de beneficio no se alcanza en un perodo determinado (expresado en
nmero de velas).
El cierre de la posicin tendr lugar en el rango inferior si la posicin es larga (long) o en el rango
superior si la posicin es corta (short).
El Stop mostrado a continuacin es un indicador binario que devolver el valor 1 si el STOP se
activa, y el valor 0 en caso contrario.
www.prorealtime.com
31 / 43
Trailing STOP
Un Trailing STOP sigue de modo dinmico la evolucin del precio, indicando el momento en que la
posicin ha de ser cerrada.
Proponemos a continuacin dos tipologas de Trailing STOP, correspondientes a la versin
dinmica del Stop Loss y del Stop Profit.
la
hora
de
entrada
las
las
www.prorealtime.com
32 / 43
C a p t u l o I V: E j e r c i c i o s
www.prorealtime.com
33 / 43
C a p t u l o I V: E j e r c i c i o s
Indicadores
BODY MOMENTUM
La definicin matemtica del Body Momentum es as:
BodyMomentum = 100 * BodyUp / (BodyUp + BodyDown)
BodyUp es un contador del nmero de velas que cierran a un nivel de precios superior al de la
apertura, durante un perodo definido (en el cdigo de este ejemplo tomamos un perodo = 14). El
contador BodyDown es anlogo en sentido inverso (cierre inferior a apertura).
Periodos = 14
b = Close - Open
IF BarIndex > Periodos THEN
Bup = 0
Bdn = 0
FOR i = 1 TO Periodos
IF b[i] > 0 THEN
Bup = Bup + 1
ELSIF b[i] < 0 THEN
Bdn = Bdn + 1
ENDIF
NEXT
BM = (Bup / (Bup + Bdn)) * 100
ELSE
BM = Undefined
ENDIF
RETURN BM AS "Body Momentum"
www.prorealtime.com
34 / 43
C a p t u l o I V: E j e r c i c i o s
Williams %R
Su funcionamiento es similar al de un estocstico. Para trazarlo, se definen primero dos curvas.
El %R queda as definido por (Close LowestL ) / (HighestH LowestL ) * 100
HighestH = highest[14](High)
LowestL = lowest[14](Low)
MiWilliams = (Close - LowestL) / (HighestH - LowestL) * 100
RETURN MiWilliams AS "Williams %R"
Bandas de Bollinger
Las bandas se componen de una media mvil de 20 perodos que se aplica al cierre. La media mvil
se multiplica por el doble de la desviacin tpica sobre las 20 velas previas del precio al cierre para
limitar las bandas superior e inferior.
a = Average[20](Close)
// Definicion de la desviacion tipica
DesviacionTipica = STD[20](Close)
Bsup = a + 2 * DesviacionTipica
Binf = a - 2 * DesviacionTipica
RETURN a AS "Average", Bsup AS "Bollinger Up", Binf AS "Bollinger Down"
www.prorealtime.com
35 / 43
Glosario
Glosario
A
Cdigo
Implementacin
Funcin
ABS
ABS(a)
AccumDistr
AccumDistr(price)
ADX
ADX[N]
ADXR
ADXR[N]
AND
a AND b
Operador lgico Y
AroonDown
AroonDown[P]
AroonUp
AroonUp[P]
Designa el Aroon Up
ATAN
ATAN(a)
AS
RETURN Result AS
"ResultName"
Average
Average[N](price)
AverageTrueRange
AverageTrueRange[N](price)
Cdigo
Implementacin
Funcin
BarIndex
BarIndex
BollingerBandWidth
BollingerBandWidth[N](price)
BollingerDown
BollingerDown[N](price)
BollingerUp
BollingerUp[N](price)
BREAK
www.prorealtime.com
36 / 43
Glosario
C
Cdigo
Implementacin
Funcin
CALL
CCI
CCI[N](price) o CCI[N]
aplicado por defecto en
TypicalPrice
ChaikinOsc
ChaikinOsc[Ch1, Ch2](price)
Chandle
Chandle[N](price)
ChandeKrollStopUp
ChandeKrollStopUp[Pp, Qq, X]
ChandeKrollStopDown
ChandeKrollStopDown[Pp,
Qq, X]
Close
Close[N]
COLOURED
RETURN Result
COLOURED(R,G,B)
COS
COS(a)
Funcin Coseno
CROSSES OVER
a CROSSES OVER b
CROSSES UNDER
a CROSSES UNDER b
cumsum
cumsum(price)
CurrentDayOfWeek
CurrentDayOfWeek
Designa el da actual
CurrentHour
CurrentHour
CurrentMinute
CurrentMinute
CurrentMonth
CurrentMonth
CurrentSecond
CurrentSecond
CurrentTime
CurrentTime
CurrentYear
CurrentYear
Designa el ao actual
CustomClose
CustomClose[N]
Cycle
Cycle(price)
www.prorealtime.com
37 / 43
Glosario
D
Cdigo
Implementacin
Funcin
Date
Date[N]
Day
Day[N]
Days
Days[N]
DayOfWeek
DayOfWeek[N]
DClose
DClose(N)
DEMA
DEMA[N](price)
DHigh
DHigh(N)
DI
DI[N](price)
DIminus
DIminus[N](price)
Designa el DI-
DIplus
DIplus[N](price)
Designa el DI+
DLow
DLow(N)
DO
DOpen
DOpen(N)
DOWNTO
Ver FOR
DPO
DPO[N](price)
Cdigo
Implementacin
Funcin
EaseOfMovement
EaseOfMovement[I]
ELSE
Ver IF/THEN/ELSE/ENDIF
ELSEIF
Ver IF/THEN/ELSE/ENDIF
EMV
EMV[N]
ENDIF
Ver IF/THEN/ELSE/ENDIF
EndPointAverage
EndPointAverage[N](price)
EXP
EXP(a)
ExponentialAverage
ExponentialAverage[N](price)
www.prorealtime.com
38 / 43
Glosario
F-G
Cdigo
Implementacin
Funcin
FOR/TO/NEXT
ForceIndex
ForceIndex(price)
Cdigo
Implementacin
Funcin
High
High[N]
highest
highest[N](price)
HistoricVolatility
HistoricVolatility[N](price)
Hour
Hour[N]
Cdigo
Implementacin
Funcin
IF/THEN/ENDIF
IF a THEN b ENDIF
IF/THEN/ELSE/ENDIF
IntradayBarIndex
IntradayBarIndex[N]
Cdigo
Implementacin
Funcin
LinearRegression
LinearRegression[N](price)
Regresin linear
I-J-K
LinearRegressionSlope LinearRegressionSlope[N]
(price)
LOG
LOG(a)
Low
Low[N]
lowest
lowest[N](price)
www.prorealtime.com
39 / 43
Glosario
M
Cdigo
Implementacin
Funcin
MACD
MACD[S,L,Si](price)
MACDline
MACDLine[S,L](price)
MassIndex
MassIndex[N]
MAX
MAX(a,b)
MedianPrice
MedianPrice
MIN
MIN(a,b)
Minute
Minute
MOD
a MOD b
Momentum
Momentum[I]
MoneyFlow
MoneyFlow[N](price)
MoneyFlowIndex
MoneyFlowIndex[N]
Designa el MoneyFlowIndex
Month
Month[N]
Cdigo
Implementacin
Funcin
NEXT
Ver FOR/TO/NEXT
NOT
NOT a
Operador lgico NO
Cdigo
Implementacin
Funcin
OBV
OBV(price)
Designa el "On-Balance-Volume"
ONCE
ONCE VariableName =
VariableValue
Open
Open[N]
OR
a OR b
Operador lgico O
Cdigo
Implementacin
Funcin
PriceOscillator
PriceOscillator[S,L](price)
PositiveVolumeIndex
PriceVolumeIndex(price)
PVT
PVT(price)
P-Q
www.prorealtime.com
40 / 43
Glosario
R
Cdigo
Implementacin
Funcin
R2
R2[N](price)
Range
Range[N]
REM
REM comentario
Repulse
Repulse[N](price)
RETURN
RETURN Resultado
ROC
ROC[N](price)
RSI
RSI[N](price)
ROUND
ROUND(a)
Cdigo
Implementacin
Funcin
SAR
SAR[At,St,Lim]
SARatdmf
SARatdmf[At,St,Lim](price)
SIN
SIN(a)
SGN
SGN(a)
SMI
SMI[N,SS,DS](price)
SmoothedStochastic
SmoothedStochastic[N,K]
(price)
SQUARE
SQUARE(a)
SQRT
SQRT(a)
STD
STD[N](price)
STE
STE[N](price)
Stochastic
Stochastic[N,K](price)
summation
summation[N](price)
Supertrend
Supertrend[STF,N]
www.prorealtime.com
41 / 43
Glosario
T
Cdigo
Implementacin
Funcin
TAN
TAN(a)
TEMA
TEMA[N](price)
THEN
Ver IF/THEN/ELSE/ENDIF
Time
Time[N]
Da la evolucin de la HoraMinutoSegundo y
permite llamar la hora en el programa
TimeSeriesAverage
TimeSeriesAverage[N](price)
TO
Ver FOR/TO/NEXT
Today
Today
Fecha actual
TotalPrice
TotalPrice[N]
TR
TR(price)
TriangularAverage
TriangularAverage[N](price)
TRIX
TRIX[N](price)
TypicalPrice
TypicalPrice[N]
Cdigo
Implementacin
Funcin
Undefined
a = Undefined
Cdigo
Implementacin
Funcin
Variation
Variation(price)
Volatility
Volatility[S, L]
Volume
Volume[N]
Designa el volumen
VolumeOscillator
VolumeOscillator[S,L]
VolumeROC
VolumeROC[N]
www.prorealtime.com
42 / 43
Glosario
W
Cdigo
Implementacin
Funcin
WeightedAverage
WeightedAverage[N](price)
WeightedClose
WeightedClose[N]
WEND
Ver WHILE/DO/WEND
WHILE/DO/WEND
WHILE (condicin) DO
(accin) WEND
Bucle "Mientras"
WilderAverage
WilderAverage[N](price)
Williams
Williams[N](close)
Calcula el %R de Williams
WilliamsAccumDistr
WilliamsAccumDistr(price)
Cdigo
Implementacin
Funcin
XOR
a XOR b
Cdigo
Implementacin
Funcin
Year
Year[N]
Yesterday
Yesterday[N]
Cdigo
Implementacin
Funcin
ZigZag
ZigZag[Zr](price)
ZigZagPoint
ZigZagPoint[Zp](price)
Otros
Cdigo
Funcin
Cdigo
Funcin
Operador de adicin
<>
Operador de diferencia
Operador de sustraccin
<
Operador de multiplicacin
>
<=
Operador de inferioridad
Operador de igualdad
>=
Operador de superioridad
www.prorealtime.com
43 / 43
www.prorealtime.com