Sei sulla pagina 1di 366

^ ') ^ ~1 "> "I ^ ^ ^ ^ ^ n ^ '1

Estrategias de Inversión con


VISUAL CHART
E strategias de Inversión con V isual C h a rt
Francisco Fernánd ez M a rtín e z
© Análisis Global de M ercad o s 2 0 0 1

Editado por:
A nálisis Global de M ercad o s
h tt p; //W W W . ag m e rc a d o s .com

IJustración & d iseñ o de cu b ierta :


Ángel D om ínguez Jim énez

Im presión: A. G ráficas M-3

D epósito Legal: A L -1 -2 0 0 2
RSTRATF.CIAS DK INVF.RSiON CON VISUAL CHAÍ^T

PREFACIO

En lo s últimos años el te m a de la inversión bursátil ha sufrido un


espectacular d e sa iT o llo manifestándose en primer lugar en un n o ta b le aumento
de personas que deciden emplear sus ahorros de esta forma al objeto de
obtener con ellos una mayor rentabilidad. Recientemente he leído en diversas
revistas de información económica datos sobre el número de inversores
españoles, y aunque existen ciertas diferencias de apreciación -en u n caso se
habla de cuatro millones y en otro de más de seis millones-, es innegable que
la cantidad es importante y que refleja un cambio significativo en la
mentalidad general sobre el mundo de la Bolsa. May cada vez más un mayor
interés y demanda de información, que a su vez ha generado un gran
incremento en los espacios que los medios de comunicación -prensa, radio,
televisión. Internet, etc- ofrecen al respecto. Se ha pasado de una época en la
que esta actividad se podría considerar c o m o marginal, como reservada a unos
pocos, a otra en la que nos llegan a abrumar por la cantidad de noticias,
recomendaciones, variedad de productos, etc. y entre las que hay que saber
discernir muy bien y separar el polvo de la paja.
Es evidente que el acceso a este tipo de mercado no se puede realizar
sin un cierto bagaje o asesoramiento, pues si en un mundo tan competitivo
como el actual, el intentar llevar a témiino con é.xito cualquier actividad exige
un gran esfuerzo y preparación, al pasar a una dimensión tan específica como
la de la inversión bursátil, todo ello se ve multiplicado. Información,
investigación, gestión, aplicación adecuada, deben ser pilares básicos que la
guíen si se quiere conseguir buenos resultados. Para poder desarrollar actitudes
ganadoras, hay que partir del conocimiento de una serie de conceptos básicos
y junto a ese conocimiento la ayuda de los programas informáticos se revela
como imprescindible.
Cuando los responsables de Visual Chart me dieron a conocer su
programa, comencé a analizar las posibilidades que ofrece, y verdaderamente
quedé impresionado por la gran versatilidad que posee, porque es una
herramienta de prim er orden en el diseño de estrategias de inversiónj
proporcionando unas plataformas de creación de códigos de verdaderos
) l ) : . \ ^ \ í M í W 'I ♦ ' f W í W M ^ t >

__________________________ E S T R A T E G IA S D E IN V E R S IÓ N C O N V IS U A L C H A R T __________________________

sistemas con toda la potencia de los lenguajes de programación, reflejando en


los mismos las ideas propias sobre el tema o utilizando los ya establecidos, y
porque a todo ello aúna una gran capacidad-de evaluación, verificación y
optimización, realizando tests de gran calidad sobre bases de datos históricos
de cotizaciones, campo de prueba que pcnnite obtener conclusiones válidas.
Al plantcamie la metodología a emplear en la redacción de este libro,
he querido huir un poco del tradicional enfoque propio de los manuales al uso
y secciones de ayuda de programas informáticos, para centrarme más en un
tipo de producción enseñanza-aprendizaje que partiera inmediatamente de la
práctica, de las situaciones concretas, sobre las que ir descubriendo los
distintos elementos de trabajo.
Asi, podemos hablar de un núcleo central que vertebra al conjunto, en
el que se desarrolla un aprendizaje significativo de las bases de creación y
empleo de sistemas automatizados en el programa Visual Chart, de forma que
cualquier persona pueda estar capacitada para ello. Yendo de lo más sencillo a
lo más complejo y enlazando con los conocimientos previos que se van
adquiriendo, se avanza y se adentra a través de una serie de sistemas con
función claramente didáctica, que incorporan los distintos campos que
habitualmente se manejan en ellos. Con esta misma técnica se explica la
creación de estudios visuales y de indicadores de distinto tipo que coadyuvan
en la decisión de intervención.
No se trata de exponer sistemas brillantes, con unas posibilidades
excepcionales, sino de modelos que sirvan para, en suma, proporcionar
elementos de análisis y reflexión y poder ser autónomos a la hora de plantearse
la inversión a realizar, saber diseñar ideas personales, conocer los principales
componentes que se usan para ello, etc.
Todo este tema central que sirve de núcleo, encuentra su justificación
teórica en el capitulo inicial, dedicado a la teoria sobre la inversión con
sistemas automatizados, donde se pretende introducir un cuerpo conceptual
funcional que sir\ a de pauta para una actuación consciente, eficaz, coherente y
sólida que huya, de la improvisación o emocionalidad del inomento. Se
procede en primer lugar a enmarcar los sistemas automatizados en su hábitat
natural dentro de las grandes escudas o modelos de análisis para la inversión,
destacando su singularidad y posibles ventajas, clasificándolos en distintas
categorías, para después entrar en los distintos aspectos a tener en cuenta para
ponerlos en marcha, desde la fase creativa de concepción, explicitación,
programación y verificación, hasta la fase de gestión y control del riesgo,
pasando por la no menos importante de optimización de parámetros y
evaluación. Además se advierte sobre el peligro de dejarse llevar por una serie
f \ f '■ f M w \ f '' f ) í ) f ) f ) f

I
__________________________ E S T R A T E G IA S D E IN V E R S IÓ N C O N V IS U A L C H A R T __________________________

de mecanismos psicológicos inconscientes que pueden-influir de forma


negativa.
Y como complemento a lo anterior podemos consultar un Glosario de
términos relacionados con el tema que nos ocupa y de los que a menudo se
desconoce su significado, ampliando el contenido de algunos de ellos por su
especial interés; podemos examinar detenidamente el desarrollo de los
sistemas y dcinás estrategias comentados en el libro, lo que nos aporta una
visión general del conjunto para complementar las explicaciones más
pormenorizadas que se han ido sucediendo previamente; y podemos adquirir
conocimientos sobre los protocolos de evaluación de sistemas que se llevan a
cabo en la operativa real desde bases profesionalizadas a partir de diversos
aspectos de un modelo práctico y aplicable. Este tipo de protocolos,
ampliamente solicitado por las personas conocedoras de la confección de este
trabajo, permite incidir en el conocimiento exhaustivo de las posibilidades de
cualquier sistema que llevemos a cabo, complementando todo el proceso
anterior. Sin duda, cuando se vaya a aplicar un sistema automatizado, es
fundamental conocer su funcionamiento y saber lo que se espera de él, sus
fundamentos, el ajuste a la forma de ser del inversor que lo utiliza para poder
hacer un seguimiento riguroso.
La mejor ayuda para la comprensión son los elementos gráficos, y en
esc sentido se ha intentado conseguir el equilibrio necesario entre este aspecto
y el estrictamente literario con objeto de que todos ios conceptos queden
meridianamente dominados. Se ha intentado que los comentarios de los
sistemas y demás estrategias sean variados, con diferentes formas y contenidos
con objeto de romper la posible monotonía en los mismos al ser numerosos.
Una gran parte de los ejemplos de aplicación de estrategias inversoras y de
otros elem entos diversos se han basado en un excelente campo de
investigación. la extensa base de datos histórica tanto diaria como intradiaria
del que para nosotros debe ser el índice más conocido, el Ibex 35,creado para
servir de subyacente o referente a la contratación de productos derivados en
España, como los Futuros o las Opciones.
No queda para concluir más que manifestar mí agradecimiento a todas
aquellas personas que han contribuido a la realización de este libro: A
Femando Cantón y Felipe Andres por su apoyo y ascsoramiento técnico, y al
equipo de profesionales de AGMercados por su pemianente disponibilidad y
colaboración.
Francisco Fernández
Almería, 2001
l. L í k i.
ESTRATEGIAS DE INVERSIÓN CON VISUAL CHART

LOS SISTEMAS AUTOMATIZADOS


DE INVERSIÓN. Introducción
) ■ ) ■ V, V ) . ) ) V ) -i ) ' )• ) ) )‘ V ) )■
■ )' ) 'I ) ) '^ ) ■' ) ■1 ' i >

__________________________ E S T R A T E G IA S D E IN V E R S IÓ N C O N V IS U A L C H A R T __________________________

¿QUÉ SON?
Podem os definirlos como un conjunto de reglas operativas
estructuradas en un código centralizado de instrucciones que a partir de unos
parámetros concretos y la existencia de determinadas condiciones toman
decisiones de actuación en los mercados generando las órdenes de compra y
venta precisas para ello. La automatización supone que las señales que se
producen de donde emanan las órdenes no sean interpretables, sino que
siempre se produzcan del mismo modo sea quien sea quien esté usando el
sistema. Además, otra de sus características es el diseño y evaluación con
ayuda de soñware especializado, siguiendo un plan perfectamente delimitado
y probado sobre una base de datos histórica.

¿EN QUÉ T IPO DE M ODELO DE ANÁLISIS SE INCLUYEN?


Los inversores, cuando actúan en el mercado de valores, lo hacen
guiados normalmente por algún tipo de modelo de análisis que les sirve de
referencia para tomar sus decisiones. Podemos distinguir en general dos
grandes grupos: Análisis fundamental y Análisis técnico.
a) Análisis Fundamental. ,
Realiza un examen pormenorizado de los indicadores fundamentales de
las empresas; PER, capacidad de crecimiento, perspectivas del sector,
resultados trimestrales, equipo de dirección, dividendos, etc. para tratar de
llegar a conclusiones sobre el valor intrínseco de sus acciones y decidir si es
interesante o no que se invierta en ellas. Se piensa más a largo plazo. Se
considera que si se está situado en una buena empresa, los beneficios
terminarán llegando.

b) Análisis Técnico.
En general trata de descubrir tendencias en las cotizaciones para
arm onizar la actividad inversora a las mismas según el sentido que
manifiesten. Los datos que tiene en cuenta ya no son los de la realidad
financiera de una empresa, sino la evolución histórica de los precios, sobre los
I que aplica determinadas metodologías. Se le llama Análisis Técnico en
' general, pero precisando un poco más diferenciaremos un primer subgrupo, el
Análisis C harlista o Gráfico, que centra su investigación en la búsqueda de
una serie de figuras que forman las barras que representan el movimiento .
diario de los valores en sus distintos campos, y a las que se supone
implicaciones de distinto tipo: alcista, bajista, consolidación, continuación, etc.
Son las ya conocidas figuras de doble suelo, hombro-cabeza-hombros.
ESTRATEGtAS DE INVERSIÓN CON VISUAL CHART

iri:ingulos, banderas, platillos, ctc. También se pretende identificar sobre


rceistro grátlco puntos espccialinciitc significativos como soportes y
rcsistcncias de los precios, establecimiento de líneas directrices, ctc. Un
segundo subgrupo seria el Análisis Técnico propinincnte dicho, que es el que
se basa fundaincntalmente en la aplicación de indicadores y osciladores como
medio de examinar las variables internas de la estructura del mercado, que
permitan deducir y confirmar tendencias y orientar la actuación: MACD, RSI,
Medias Móviles, etc. Pero en ambos casos aún juega un papel decisivo la
actuación humana, la experiencia del analista, su intuición, y también el
aspecto emocional cuando estima si es el momento oportuno coyunturalnientc
o cuando hace valoraciones sobre lo que los indicadores dejan entrever.
Un tercer subgrupo aparece dentro de este modelo con fuerza
amparado en el gran progreso de la informática y se va imponiendo cada vez
más de cara al futuro. Son los Sistem as A utom atizados. Utilizan préstamos
del análisis técnico al basarse en muchos de sus elementos (soportes,
resistencias, indicadores y osciladores de distintos tipos, etc.), aunque también
se dedican a localizar patrones o modelos de actuación de los precios con
análisis exhaustivos de las relaciones entre campos de la barra, sobrepasando
los métodos empíricos anteriores que no eran susceptibles de medición
histórica, pero sobre todo ya es un concepto totalmente diferente por el hecho
de que se trata de llevar a la práctica de fomia mecánica decisiones con base
objetiva, en las que no cabe ya la interpretación humana al aplicarlos.
interv ención del hombre en la decisión concreta ya no es fundamental. Lo ha
sido en la elaboración del sistema, pero ahora, en su funcionamiento la
emotividad personal queda a un lado.

¿QUÉ V ENTAJAS O FRECEN?


Vamos a señalar en principio cuatro ventajas que apuntarían a favor de
los sistemas automatizados como método de actuación en los mercados de
valores:
I. La posibilidad de poder realizar una auté
investigación, es decir, plantearse todas las fases de cualquier prueba,
establecer hipótesis de trabajo, experimentar, comparar, obteniendo
unos resultados sobre bases de datos históricas que se podrán
contrastar, algo que no existe en las otras modalidades, donde el factor
humano es el determinante. Todo lo anterior permite que haya un
control sobre el riesgo, lo cual es un teína decisivo a la hora de la
gestión de capital. De los distintos procesos de análisis se obtienen
conelusiones referidas a ganancias pero también a series de pérdidas

10
ESTRATEGIAS DE INVERSION CON VISUAL CHART

máximas, y esto permite comrolar mejor c! capital y su utilización


táctica.
II. Psicológicam ente evita el terrible desgaste de la
discusión permanente con el objeto de la inversión, sobre si se está
dando determinada figura técnica, si el momento o coyuntura es alcista
o bajista, si hay que esperar más o menos, etc. La opción de intervenir
con órdenes automáticas se revela como más eficaz en este sentido,
• pues los criterios y objetivos ya están fijados y si se dan las
condiciones previstas, inmediatamente se generan las órdenes precisas
de compra o venta.
III. Perm iten un enlace adecuado con las nuevas
tecnologías.
IV. Acostumbran al inversor a ser disciplinado y a tomar
decisiones basadas en lo que ya está analizado seriamente y no en la
improvisación o emocionalidad

¿CÓ M O SE CLASIFICAN?
Jack Schwager, en su libro Technical A nalysis establece una
clasificación en tres grandes grupos, que creemos es muy adecuada por su
claridad y concisión de conceptos.
- Sisieniüs de Seguimiento de Tendencia, en los que tras un movimiento
específico de la curva de precios se inicia una posición en la misma dirección
de la tendencia establecida, en la presunción de que ésta continuará.
- Sistemas de Aniitendencia, en los que tras producirse como en el caso
anterior un significativo movimiento de los precios, lo que se hace es iniciar
posición en la dirección contraria, esperando una corrección del mercado.
* Sistema de Reconocimiento de Patrones, en los que antes que una
extensión o movimiento direccíonal de precios, lo que se Iiace es identificar un
modelo en sí mismo que busca anticipar las posibilidades de subidas o bajadas
a partir de detennínadas condiciones. En cierto modo incluiría a los grupos
anteriores, que al fin y al cabo, lo que hacen es reconocer una situación
dcteniiinada.
De todos modos, las líneas divisorias son tenues, y con ligeros cambios
se pueden transfonnar las categorías.

-i .. .j , ■. .. .. t) . ¿ 'Ji . i . i :é . i : í / i ¡i ;
I I I I i
I ( I

ESTRATEGIAS DE INVERSIÓN CON VISUAL CHART

¿CÓ M O SE ELABORAN?
Dentro de un planlcamicnto activo que busque tener éxito con la
aplicación de los sistemas, tenemos que hablar por encima de todo de que hay
que llevar a cabo un auténtico trabajo de investigación-acción, que se
manifiesta a través de una serie de pasos precisos que enmarcan el proceso de
creación-evaluación.

i . C r tíifjió íj.

a) El sistema tiene que estar basado en unas ¡deas o


co n c e p to s c la ro s, aplicables, de forma que el inversor sepa
perfectamente la actuación que desea y no haya ambigüedad, Por tanto,
esta primera fase será la de detenninar el escenario en que se trabajará,
saber de forma nítida lo que se pretende.
b) A continuación viene la fase de expiicitacíón, de
convertir las ideas en condiciones o requisitos, en pautas concretas de
actuación, reflejándolo todo por escrito en un esquema que vaya
sirv iendo de orientación a la posterior programación. Se indicará aquí
cuáles son las señales que usaremos para marcar la entrada en el
mercado, qué forma de seguimiento tanto de beneficios como de cortar
pérdidas realizarem os, etc. Todos estos elementos deberán ser
susceptibles de comprobación o análisis en un periodo temporal. Es por
tanto, el momento de delimitar bien cada parte o sección del sistema:
- prim ero cuál es la razón o causa para entrar en el mercado
teniendo en cuenta la hipótesis que nos hayamos planteado, cuáles son
los indicadores o señales técnicas generales que nos llevan a querer
tomar posiciones.
- segundo, cuáles son las fórmulas o términos concretos de esas
señales para detectar el momento de actuación.
- tercero, relacionado con lo anterior, construir las reglas
precisas que el sistema empleará cuando se den esas condiciones
requeridas, qué tipo de orden se dará - compra, venta -, cuáles serán los
puntos de entrada, qué protección se pondrá con objeto de cortar
pérdidas rápidamente si el mercado actúa en nuestra contra (stop íoss),
qué seguimiento de los beneficios haremos si el mercado actúa en
nuestro favor {stop progresivo de acompañamiento, utilización de
objetivos, etc).
c) Hay que program arlo, para lo cual Visual Chart presta
una ayuda básica a través de la Plataformas de Diseño Visual y del

12
F.STRATKGÍAS DE JNVERSIÓN CON VISUAL CKART

entorno de trabajo Visual Basic. Esta programación dcl sistema se


realiza colocando adecuadamente una serie de elementos que en la
segunda parte de este libro desarrollamos en extensión para su eficaz
empleo; variables, funciones, indicadores, órdenes, e tc ., los cuales irán
formando lo que se llama código, que será el eje directriz dcl proceso.
Conforme se vaya elaborando, es aconsejable ir probándolo por partes
para comprobar su buen funcionamiento, sobre todo cuando se vaya
llegando a un grado de complejidad mayor.
d) Es la fase de verificación, de comprobación dcl
funcionamiento del sistema. Insertaremos el sistema en un gráfico, y
con los negocios que se hayan producido a la vista y la mayor cantidad
posible de herramientas que hayamos empleado para su elaboración
presentadas, iremos controlando que se han ido llevando a cabo ios
supuestos que habíamos planteado, el cumplimiento de las condiciones,
los puntos de entrada y salida.

L EvEilciiición.
Una vez que el sistema funciona tal como queremos y hemos
certificado que actúa en los puntos precisos, pasamos a la fase de Evaluación,
lo que significa puntuarlo con una calificación que indique la calidad del
mismo. Usaremos un protocolo determinado y preciso que permita llegar a
conclusiones válidas. Los sistemas tienen que ser evaluados y comparados en
su actuación sobre un historial de datos extenso. Para ello tenemos que
proceder en primer término a realizar una optimización de ios parámetros de
cada sistema, y Visual Chart demuestra en ese campo una potencia de cálculo
increíble. ¿Qué es lo que se va a medir? Hay una serie de conceptos a
c a lib r a r que representan aspectos decisivos y que sintetizaremos en los
siguientes:
- En primer lugar la ganancia máxima que puede obtener el sistema.
- A continuación y como contrapartida, la serie máxima de pérdidas
que puede llegar a tener.
- Derivado de ambos, el PoícnciaX, que seria el cociente o la razón
entre la ganancia máxima y la serie máxima de perdidas, y que representa uno
de los principales puntos a tener en cuenta en un sistetna, ya que va
íntimamente relacionado también con la intensidad de riesgo a correr.
- El Acople, que vendría a representar la mayor o menor homogeneidad
entre los resultados en pruebas internas en un periodo de tiempo determinado,
y los arrojados por pruebas externas sobre el mismo sistema. Esto es muy

13
ESTRATEGIAS DE INVERSIÓN CON VISUAL CHART

importante porque esa prueba externa tendrá un peso decisivo en la


homologación de nuestra estrategia.
- Otros (hitos csíadistk'os que aportan diversa ponderación; Número
negocios, Indice de negocios positivos/negativos. Fiabilidad (relaciona
mediante un cociente los negocios favorables y desfavorables), Profit Factor,
que relaciona la fiabilidad, la ganancia media de los negocios positivos y las
pérdidas medias de los negocios negativos, PRR o Pessimistic Return Ratio,
que intenta medir el aprovechamiento del sistema, y relaciona en una ecuación
eí número de negocios positivos, la ganancia media de los negocios positivos,
el número de negocios negativos y la pérdida media de los negocios negativos.
El proceso de optim ización de parám etros, es decir, la búsqueda de
los mejores valores para las variables que entran en juego en los sistemas, es
realizado por el programa Visual Chart a través de dos métodos distintos; por
búsqueda lineal y por algoritmos genéticos.
a) Búsqueda lineal. Toma lodos los casos y en orden, desde
el extremo inferior al superior, calcula todas las combinaciones, sin
saltarse ninguna. Cuando se efectúa el proceso es preciso dejar que
llegue a ténnino y no cortarlo antes de tiempo, pues no se sabe nunca si
el m ejor resultado está al final. Este tipo de búsqueda es más
apropiado cuando el número de combinaciones de parámetros a
analizar no es excesivo, pero a medida que se aumenten los elementos
mejorables, se calcularán miles, a veces millones de iteraciones. Para
ello es más eficaz pasar al segundo método.
b) Algoritmos genéticos. Basado en conceptos derivados de
observaciones sobre la resolución de problemas de adaptación en la
Naturaleza -evolución biológica-, busca soluciones en un amplio
espacio de posibilidades. Utiliza operadores reales como selección,
cruce o mutación, y parte del establecimiento aleatorio de una
denominada población genética (Visual Chart por defecto toma un uno
por mil del total de combinaciones). A partir de aquí se ponen enjuego
los mecanismos internos, buscando potenciar el éxito priorizando
cruces y combinaciones con los valores que mejor se comportan,
creando una base estadística que sin embargo no descarta lo que en
principio habla quedado en la zona menos buena, y también de forma
aleatoria va introduciendo datos de ésta última en las recombinaciones.
Con este tipo de búsqueda no es preciso esperar a que finalice su
proceso, sino que cuando lleva un tanto por ciento de pasadas analíticas
suficientemente alto, los resultados son ya muy significativos. Quizás
no sean los mejores en términos absolutos, pero se aproximarán

14
KSTRATKGIAS DE ÍNVERSIÓN C oN VtSlML CHART

bastante. No olvidemos que lo que estamos planteando es encontrar el


mecanismo que con mayor eficiencia encuentre buenas variables para
las constantes de los sistemas enlre nunicrosns allernativas.
A la hora de evaluar sistemas, es preciso introducir las comisiones, de
modo que sean realistas, al igual que un factor de deslizam iento é c
cumplimiento de las órdenes al no poderse hacer siempre las operaciones en
los precios exactos que queremos (slippage) con objeto de no llevarse
desengaños después al comparar datos de la optimización con datos de la
operativa diaria si esos gastos no son tenidos en cuenta.
Cuando se ha superado esta fase primera de la evaluación, se han
obtenido diversos buenos resultados con parámetros variados, se hace
necesario elegir entre ese ámbito seleccionado y analizar minuciosamente para
decidir cuál será el que ostente la “titularidad" en el sistema. Podemos
adelantar, aunque veremos después ejemplos de protocolos de evaluación en
futuros, en acciones y de selección de variables, que hay que ir pensando en la
homogeneidad, o sea, en zonas donde se aprecie algún punto de potencial
superior, pero a su alrededor se mantenga también un buen potencial aunque
vaya decayendo algo conforme nos vayamos separando, antes que picos
sueltos, aislados de gran ganancia, pero sin significatividad porque en su
entorno no hay resultados avalables semejantes.

¿QU É ES LA G E ST IÓ N DEL C A PIT A L Y EL C O N T R O L D EL


RIESG O ?
El disponer de un buen sistema, bien diseñado, evaluado y optimizado
para su aplicación, no basta para actuar con garantías de éxito. Se necesita
también un elemento de control externo que se debe reflejar en un plan de
control del riesgo, a través del cual se tomarán las decisiones oportunas que
intenten minimizar la influencia del peligro que representan las series
máximas de pérdidas. Todos los inversores se mueven entre la dicotomía
rentabilidad/riesgo intentando maximízar la primera y procurando estar al
mayor resguardo posible del segundo, manifestado en los bruscos cambios que
experimentan los mercados y que pueden llevar a inversores poco precavidos a
situaciones de inoperancia por pérdida de su capital.
Existen libros específicos sobre teoría de carteras y estrategias de
gestión, donde se desarrollan numerosos e interesantes conceptos explicados
con fórmulas matemáticas y métodos estadísticos, pero su exposición detallada
excede el objetivo de este libro. Lo que haremos será señalar una serie de
principios y elementos que deberá tener en cuenta cualquier plan de seguridad,

IS
r í ( r (
( I i f i 1 I f
I ( í
E S T R íX T E G IA S D E IN V E R S IÓ N C O N V IS U A L C H A R T

que se erija en supervisor del sistema, todo ello tratado desde el punto de vista
de la lógica, la experiencia y el sentido común.

PRINCIPIOS Y ELEMENTOS
• Series de pérdidas
• Ladiversificación
• Otros elementos tácticos
- Cantidad a arriesgar por entrada
- Número de contratos a gestionar
- Aumento o reducción de posiciones
- Cobertura

Series de pérdidas.
Parece razonable que si el principal temor es la cantidad de riesgo que
se corre en la operativa inversora, se parta del conocimiento de las series de
perdidas que arroja el sistema y dentro de ellas en concreto identificar la
máxima serie de perdidas que se haya dado al examinar la actuación en un
periodo histórico. Por tanto este dato será el punto de partida (problema) para
diseñar tácticas y estrategias de conírol (soluciones). El programa Visual Chart
proporciona esta referencia tanto por puntos como porcentualmente en su
sección de análisis estadístico de riesgos, pero en realidad se trata de una de
las muchas posibles series máximas de pérdidas. Para una verdadera
aproximación a su conocimiento habría que llevar a cabo un test llamado
Simulación de Moniecarlo en el que se producen múltiples recombinaciones

CURVA DE PROBABILIDAD NORMAL

Ift
r r r r r r r r r n r- ,

ESTRATEGIAS DE INVERSIÓN CON VISUAL CHART

aleatorias de secuencias con el rango de los valores de parámetros del sistema,


obteniendo a partir de ellas una representación de la función de distribución
normal con una campana de Gauss.
Esta información de las probabilidades de que pudieran acontecer los
mayores trayectos adversos calculadas en virtud de la desviación estándar,
permitiría apreciar las zonas que entran dentro de la normalidad estadística y
aquellas que presentan situaciones de perdidas anormalmente bajas o altas.
Interesa situar al sistema en la parte de la desviación típica más desfavorable,
para contemplar las posibles contingencias máximas que puedan darse. En
cualquier caso, como todo estudio desde el pasado hacia el futuro, no deja de
ser una medida orientativa.

La diversificadón.
Junto a este riesgo inherente al sistema, existe también un riesgo propio
tanto del mercado como de las empresas en que so invierte.
En este sentido actuar con un solo contrato o con un solo bloque de
acciones en un único mercado, índice o empresa, es probablemente la
situación menos deseable, pues la posibilidad de tener que sufrir en un
momento dado los descensos más grandes de la curva de beneficios, es alta.
¿Cómo se podría .minimizar esta circunstancia? El Plan de Control entra en
funcionamiento y plantea que se lleve a cabo una buena D iversificación.
Muchas veces hemos iodo la típica frase de “no pongas todos los huevos en la
misma cesta” para señalar que no se debe por prudencia invertir todo el capital
en un solo valor, sino que se debe hacer un fraccionamiento del mismo en
distintas unidades para llevar a cabo las operaciones, de modo que con esta
distribución se vayan compensando los riesgos. Pero además de esta medida
lógica y estadísticamente probada, el concepto de diversificación exige
combinar en una cartera de inversión o Portfolio, tanto distintos sistemas como
distintas empresas y distintos mercados. Pero, y aqui llegamos ai punto clave,
¿cómo hacer esa selección?. Si solo tenemos acciones de empresas de un
mismo sector, o solo futuros sobre un mismo producto, o trabajamos solo en
mercados que tienen comportamiento parecido, en realidad no estamos
diversificando nada más que en la forma, no en el fondo. Cualquier situación
de drástico cambio de las circunstancias afectaría a todos esos elementos en la
misma medida. Habría que basarse para tomar las decisiones en la variable
estadística conocida como Correlación, siguiendo el modelo establecido por
Harry Markowitz ya en los años 50,y que le valió el premio Nobel de
Economía en 1990 por su trabajo pionero en la Teoría de la Economía
Financiera.

17
ESTRATEGIAS DE INVERSIÓN CON VISUAL CHART

Cam bm acidn

Si tenemos dos sistemas que actúan de forma similar, y mantienen una


misma proporción cuando obtienen beneficios y cuando obtienen pérdidas, es
previsible que cuando ganen doblen la ganancia y cuando pierdan doblen
también ja pérdida. En ese caso se dice que tienen alta correlación o
correlación positiva. Como esta variable se mueve entre -1 y I, estaríamos
hablando de la zona entre O y 1. Si se da el caso contrario, en el que mientras
uno de los sistemas obtiene beneficios el otro obtiene pérdidas, estaríamos
hablando de baja correlación o correlación ne^aiiva^ con valores entre O y - l .
Existe por tanto lodo un espectro de correlación imperfecta, desde la qué
refleja ninguna relación hasta la que se acerca más o menos a los extremos
(éstos serían los casos de correlación perfecta, difíciles de darse). Observemos
el comportamiento de dos sistemas A y X del primer tipo de correlación,
trabajando solos y combinándolos. La tendencia de ganancia es superior que
la de pérdidas, manteniéndose un nivel de rentabilidad determinado, pero para
llegar a él, su trayecto ha sido bastante accidentado, con un tanto por ciento de
riesgo grande, que nunca se sabe hasta dónde puede llegar.
Ahora veamos el caso del mismo sistema A pero combinándolo con un
sistema B con el que tiene correlación negativa. Observamos que se ha
conseguido la misma rentabilidad, pero no ha presentado el mismo peligro de
sufrir grandes reveses en un momento dado. Su evolución ha sido más
uniforme y se ha minimizado el riesgo. Por tanto una diversificación eficaz en
los sistemas pasaría fundamentalmente por utilizar aquellos que presenten
correlaciones bajas entre si con objeto de eliminar el riesgo especifico de cada
uno.

18
ESTRATEGIAS DE INVERSIÓN CON VISUAL CHART

S ís t a m a B / ' . . ,
' -------------C om binaciÓ B - ■ ' ■ ’ '

Pero también sería preciso, para tratar de minimizar ese otro riesgo del
que hemos hablado que tienen en particular las empresas y los mercados,
diversificarlos, invirticndo en activos diferentes - acciones, futuros, bonos,
divisas - y también buscando Índices negativamente correlacionados, y no solo
se pueden encontrar casos en los índices internacionales (a pesar de la
globalización que hace que los movimientos se den con frecuencia ai unísono),
sino también entre los nacionales suele haber diferencia de comportamiento
entre los que representan valores de alta capitalización y aquellos otros que
agrupan a títulos pequeños y medianos. Concluyendo, a la hora de construir
nuestro Portfolio debemos incluir en él una selección bien diversificada de
sistemas, mercados y valores^ cuya combinación operativa será la piedra
angular de una inversión con mayores posibilidades de éxito que intenta atacar
al riesgo inherente a esta actividad desde la base.

Otros elementos tácticos.


Pero todavía se puede hablar algo más de la Gestión del capital y su
plan de control, por ejemplo su influencia sobre la aplicación de elementos
tácticos como decidir qué cantidad arriesgar, cuándo añadir o reducir
posiciones, etc.
A/ Con respecto a la determinación de la cantidad a arriesgar en cada
entrada podemos decir que existen fundamentalmente dos posibilidades: una
cantidad fija de capital o un porcentaje fijo del mismo. Los estudios
realizados al respecto muestran los mejores resultados que obtiene el segundo
sobre la primera. En efecto, cuando se van obteniendo pérdidas consecutivas al
utilizar ui\ porcentaje se va arriesgando cada vez m enos capital
progresivamente, con lo que se preserva durante mayor tiempo que si
ponemos en juego siempre la misma cantidad. Solo queda establecer cuál es el

19
ESTRATEGIAS DE INVERSIÓN CON VISUAL CÍMRT

tamaño mas adecuado de esa fracción. Veamos lo que opinan algunos autores
al respecto:
Schwagcr, op. cit. , aconseja no arriesgar más dcl I o 2 % en cada
entrada, pudiéndose permitir un aumento hasta llegar al 5%.
Alexandcr Eider, “Trading for a living”, opina que se debe seguir la
regla del 2% (incluye síippage y comisiones) como limite que no debe
superarse.
Ralph Vince, “Portfolio management formulas”, dedica un estudio
exhaustivo a la búsqueda de la fracción fijada óptima, a la que llama f , a partir
de un divisor del dato de las mayores pérdidas. Ofrece distintos métodos para
su cálculo, media geométrica, interpolación parabólica, bucles de búsqueda en
un test comparativo para diferentes valores de f , etc., concluyendo que el uso
de esta fracción ofrece grandes ventajas en el largo plazo fundamentalmente,
maximizando el aprovechamiento del capital.
W olf von Ronik, en su artículo “Your Crash Potential”, publicado en la
revista Stocks and Commodities, julio de 2001, propone la siguiente fórmula
para encontrar esta fracción f, basándose sobre todo en la capacidad que
muestre el sistema que vayamos a emplear

Donde A es la media de la ratio Ganancias/Pérdidas y p es la


probabilidad de éxito del sistema que estemos utilizando.
Así, si disponemos de un sistema que actúa positivamente un 45% de
las veces y la media de la ratio de Ganancias/Pérdidas es de 1.5, siguiendo los
cálculos obtendríamos.

{ { 1 ,5 + 1 ) * 0 45 ] - 1
f= = 0 083 = 8 3%

15

B/ Si estamos invirtiendo en Futuros y queremos saber cuántos


contratos podemos gestionar, podríamos establecer unos criterios también

20
KSTRATF.GIAS DF, INVRRSIÓN CON VISUAL CMART

desde nuestro Plan de Control que nos sirvieran de guia, e a los que se podría
tener en cuenta el capital, la serie de perdidas y las garantías económicas que
se exigen en depósito en este tipo de productos. Pero además podríamos añadir
un factor multiplicador, que llamaríamos de Seguridad, y que sería el que en
última instancia, según su valor, determinaría el riesgo. Este factor, subjetivo,
puede moverse por ejemplo entre I y 3, siendo el término medio el equilibrio.
La fórmula podría quedar asi.

Capilal
Número de Contratos =

[Sem de pérdidas*F«ctot de SegimdidJ+Guaniíis

Pongamos un caso práctico. Disponemos de 30.000 Euros de capital y


queremos invertir en Futuros. Sabemos por nuestras pruebas que el sistema
que vamos a emplear arroja datos de 1500 puntos Ibex de sene máxima de
perdidas. También sabemos que nos piden un depósito de garantía de 7000
Euros para poder actuar. El Factor de Seguridad lo ponemos nosotros según
queramos correr más o menos riesgo.

30.000
Número de Contratos =

(15000 * 2 ] + 7000

Se m ultiplica 1500 * 10 euros el punto

El resultado final es 0.81, o sea que nuestra fórmula nos dice que con el
capital que tenemos y el riesgo que tenemos que tener presente, no debemos
empezar a trabajar con ningún contrato hasta que consigamos un capital que
equilibre el riesgo, que sería al menos el valor que refleja el denominador de la
fórmula, o sea, 37000 euros. Esa sería la cantidad mínima para invertir un
contrato en Futuros en estas condiciones explieitadas con el sistema que
tenemos evaluado.
En general se dedica muchísimo tiempo a buscar buenos sistemas, y
después a intentar maximizar stis ganancias buscando con la investigación una
mayor productividad, pero esta investigación se centra sobre todo en el
aspecto de los elementos internos (porcentajes de stops, timing de los
indicadores, etc.). Hay un camino menos transitado para esta optimización y es
ESTRATEGtAS DE INVERSIÓN CON VISUAL CHART

el de centrarse en la reducción dcl riesgo para presionar después con la


cantidad de capital a arriesgar. Siguiendo con el caso de los contratos de
Futuros de la fónnula anterior, si somos capaces con una buena diversificación
de sistemas de bajar esa serie de pérdidas que había, que era de 1500 puntos, y
se consigue dejarla en la mitad, podemos entonces presionar sobre los
contratos de manera que si antes cada 37.000 euros negociábamos un contrato,
ahora con la misma cantidad de capital se puede trabajar con dos, obteniendo
mayores ganancias vía contención del riesgo.
C/ Otra función de la supervisión externa es también controlar la
relación con la evolución de la curva que sigue nuestro dinero^ de modo que
estableciendo zonas de crecimiento, en ocasiones se pueda decidir añadir o
reducir presencia activa, incluyer\do además una franja de seguridad, a partir
de la cual puede ser preciso provocar un cortocircuito en el sistema por encima
de su unidad de salida.

Podemos apreciar en el gráfico cómo habiendo conseguido que cada


10.000 euros se pueda añadir un contrato al que había en vigor, y vigilando
cómo se mueve !a curva del global del capital, cuando éste sube se pasa de 1 a
2, 3, 4 contratos, y cuando baja se reducen del mismo modo para preservarlo,
quedando desconectada la operatividad al entrar en la franja de seguridad
general. ^

D/ Hay que tener presente siempre la estrategia de cobertura ante


situaciones de mercado evolucionando en contra de nuestras posiciones. Si
hace un tiempo la inversión se centraba casi exclusivamente en acciones y la
única manera de protegerse era obtener liquidez pasándose a renta fija, hoy en
día existen diversos métodos y nuevos productos, como los derivados -
Futuros y Opciones (en particular el uso de estas últimas requiere un grado de
aprendizaje y experiencia) - o las ventas a crédito en algunos casos de

22
ESTRATKGIAS DE INVERSIÓN CON VISUAL CMART

acciones, que se utilizan con prodigalidad a tal fin sin necesidad de deshacer la
cartera que se posee. Este es un tema ya más complejo, que junto con la
distribución de activos, medidas de rentabilidad, ctc.. componen aspectos
centrales de la teoría de carteras.
Una vez apuntados todos estos elementos, podríamos concluir queliay
que hacer un uso inteligente de la Gestión del C apital, previendo siempre los
obstáculos que vamos a encontrar y controlando en todo momento los aspectos
externos que acompañan a los sistemas y que pueden mejorar sus prestaciones,
no a su funcionamiento interno.

¿CÓ M O PUEDE AFECTAR LA PSICO LO G ÍA DEL INVERSOR?


Todavía falta un elemento decisivo para poder completar el marco
correcto en el que llevar a cabo una inversión en las mejores condiciones, y es
el psicológico. Existen toda una serie de mecanismos inconscientes que hay
que conocer y sobre todo hay que dejar a un lado, que pueden influir
negativamente. Seguro que a muchos de nuestros lectores les suena alguna de
estas situaciones:

El inversor im paciente que espera ganar dinero


rápidamente y si no es así desecha su sistema o sistemas y los
cambia continuamente, no dejando nunca que ninguno de ellos
pueda dar resultados.

El inversor que tiene sus ideas propias sobre el mercado


y no hace caso en determinadas circunstancias a las órdenes de los
sistemas que utiliza y con los que les va bien, porque por ejemplo,
“los viernes tiene que bajar la Bolsa”, perdiéndose movimientos
alcistas en ese día de la semana y quejándose luego amargamente.
El inversor que cuando comienza su actuación o incluso
cuando va ganando, tiene mucho respeto al riesgo de la serie de
pérdidas y ciñe mucho los stops de protección para asegurar la más
mínima ganancia aún a costa de perder tendencias duraderas, pero
que cuando va perdiendo, cambia su mentalidad y decide no tener en
cuenta el riesgo, no respetando los stops previstos o llevando a cabo
proniediaciones (sigue operando en la dirección en que van las
perdidas con objeto de hacer la media con los negocios iniciales, que
son los que llevan acumulado más perjuicio económico) para no
ponerse nervioso al ver números rojos, consiguiendo que éstos sean
cada vez más abundantes; o invirtiendo más cantidad para recuperad

23
ESTRATEGIAS DE INVERSIÓN CON VISUAL CHART

antes lo perdido, despreciando lo que antes era respetado, y


normalmente llegando a una disrninuctón mucho mayor de su
capiinl.

Y como colofón de todas estas actitudes mentales


negativas:
Hemos invertido. Todo va bien. Estamos ganando dinero.
Nos sentimos eufóricos. Pensamos que esto siempre va a ser así, que
no nos podemos equivocar nunca. Pensamos que nuestro sistema
automático de inversión es el mejor, que no falla. Creemos en él
ciegamente. Varias entradas positivas. Tranquilidad.
Llega una serie de pérdidas. Pensamos que pronto pasará,
pero esto sigue y hay aún más pérdidas. Comenzamos a sentimos
incómodos. Afloran sentim ientos negativos, dudas sobre la
estrategia. Seguro que si hubiera puesto un stop más separado, no
me habría pillado este movimiento tan brusco en el que he entrado y
salido varias veces. Siguen las perdidas. No tenia que haber dejado
la posición abierta. Cuando he podido ganar y recuperar algo me he
puesto nervioso y he intervenido tomando pequeños beneficios
demasiado pronto. Otra vez una entrada en falso. Tomamos la
“gran” decisión: abandonamos temporalmente el sistema porque no
sir%e y quedamos a ia espera.

Vemos ahora desde nuestra nueva situación la evolución del


mercado. ¿Será posible?. De nuevo ia coyuntura es favorable y
vuelve a subir. ¿Nos habremos equivocado al dejar el sistema?
Comprobamos lo que hubiera pasado en este tiempo si estuviéramos
en actividad y con nuestro preciado sistema, y vemos que habríamos
recuperado las pérdidas anteriores y además estaríamos otra vez con
ganancias. Nos apresuramos a volver a invertir

¿Pero qué es esto? Ahora hay noticias negativas que hacen que todo
se enfrie y que la tendencia haya cambiado. Otra vez en pérdidas,
frustración y desánimo total. Otra vez abandono.
¿Cómo iifrontar todos estos hechos? En primer lugar hay que tener
disciplina y ser coherente con nuestras ideas. Si tenemos un buen sistema, lo
hemos evaluado y probado, creemos en él y seguimos unas normas de
seguridad, no podemos ceder a las primeras de cambio y cambiar nuestra
opinión. Aplicamos el sistema sabiendo que hay momentos de ganancias y
tam bién momentos de pérdidas . Es el mom ento de “ rearm arse

24
ESTRATEGIAS DE INVERSIÓN CON VISUAL CHART

ideológicam ente”. Tenemos que repasar toda la inform ación de que


disponemos. Repasamos la base de datos histórica sobre la que hemos hecho
las pruebas y revisamos los resultados que se han dado a lo largo de un
periodo amplio. Comprobamos que no es la primera vez que sucede, que
siempre después ha habido recuperación. El gráfico y la visión de .los
resultados dcl sistema deben hacemos recuperar seguridad y confianza en él.
Por tanto, hay que superar esos momentos malos de las series de
pérdidas, esas pruebas a que nos vemos sometidos, viendo la perspectiva
histórica, con racionalidad, frialdad tanto vital como estadística, e intentando
evitar las interferencias emocionales, no querer “interpretar” el mercado y
forzar las decisiones del sistema. Solo con relajación, seguridad y confianza se
pueden superar momentos adversos. Al final, si el sistema es bueno, lo
demostrará y debemos sobre todo creer en él. Si a pesar de todo demuestra que
ha dejado de funcionar en las circunstancias reales, tenemos una selección de
ellos a nuestra disposición para sustituirlo, y todo ello dentro de la
diversificación de que hemos hablado anteriormente, que hace que los riesgos
y con ello la presión psicológica que sentimos, se alivien.

25
i J
ESTRATF.CrAS DE ÍNVERSIÓN CON VISUAL CiíART

LOS SISTEMAS
AUTOMATIZADOS DE INVERSIÓN.
Programación con Visual Chart

27
I : I í > ( { I t í ( ^
I I í ♦ í I I
( ( I ( ( , ( : i < i f ( < ( r f r r r ( r ( / r /

___________________________R S T R A T E G IA S D E IN V E R S IÓ N C O N V IS U A L C H A R T _________________________ _

V PARTE: PRINCIPIOS BÁSICOS GENERALES

VISUAL CHART. POSIBILIDADES.


Es indudable que se necesita tener una orientación sólida a la hora de
proceder a la toma de decisiones por parte del inversor, y el disponer de unos
gráficos útiles y una amplia base de datos es la primera condición. Visual
Chart proporciona en primera instancia un espacio de trabajo donde poder
incorporar las cotizaciones de las distintas empresas, valores, índices, etc.
tanto de España como de otras bolsas dcl mundo, no solo después del cierre de
los mercados sino también en tiempo real, con lo que se establece una gran
interactividad. Se pueden seguir las cotizaciones de los valores de los distintos
índices mundiales a través de gráficos y también por medio de tablas ya
definidas o que el usuario puede crear con sus preferencias colocando los
códigos correspondientes (mediante una opción concreta se visualiza
cualquiera de sus componentes), se puede seguir en tiempo real noticias
económ icas que van aconteciendo, existe la posibilidad de ver las
contrataciones que las distintas agencias de valores van llevando, etc.
Sobre las series de datos se realizan todo tipo de análisis técnicos a
través de un grupo de herramientas poderosas que el programa ofrece,
partiendo de lo más sencillo, representación de soportes, resistencias, líneas de
tendencia, comparación de gráficos distintos en un mismo plano, trabajando
tanto en configuración de pantalla estándar como en pantalla completa con la
inclusión de mcnús flotantes, pasando por la señalización de objetos de
medición muy vanados, como ángulos de resistencia, lincas de regresión,
canales, ciclos, etc., siguiendo con la incorporación de indicadores muy
diversos, tanto ya diseñados como susceptibles de elaboración personal,
indicadores que pueden señalar características detemiinadas que inciden en el
comportamiento de los precios y pueden proporcionar pautas de compra y
venta, hasta llegar a la aplicación de verdaderos sistemas de inversión,
sistemas mecánicos que utilizan todos los elementos anteriores para llegar a
configurar una serie de reglas objetivas de operación en el mércado, que
pueden ser reflejo de las ideas personales que se tienen sobre el tema o utilizar
la de los que vienen incorporados, y que posibilitan una actuación consciente y
basada en razones técnicas que intentan eliminar la muchas veces funesta
inlluencia de los nervios, la improvisación, el rumor, etc. El gran potencial de
confección de sistemas a través de las plataformas de creación de códigos y el
análisis de la aplicación de los mismos que ofrece Visual Chart permite
realizar evaluaciones antes de llevarlo a la práctica en la inversión real y
obtener conclusiones, pudiendo optimizar los resultados que se producen ai

29
ESTR.\TEGIAS DE INVERSIÓN CON VISUAL CHART

examinar todas las posibilidades y combinaciones de parámetros que desde el


sistema se proponen, en una base de datos histórica que se manifiesta como un
campo de pruebas magnifico.
Para ello se ofrece la utilización de múltiples funciones diseñadas por
un grupo de expertos informáticos, las cuales aseguran la base necesaria tanto
para que se puedan aplicar con garantía los sistemas, como para el que tenga
sus ideas propias lleve a cabo la creación de nuevos sistemas de inversión.

VISUAL CHART.M ODELO ORGANIZATIVO.


El núcleo del modelo organizativo de Visual Chart para tratar la
infonnación es el Espacio de Trabajo. En él se puede guardar todo tipo de
elementos, desde los gráficos de las cotizaciones hasta tablas numéricas de
seguimiento. Su estructuración se caracteriza por la flexibilidad y la elección
de criterios a gusto del usuario:
- Se puede, por ejemplo, utilizar un Espacio de Trabajo para guard
Mercado Continuo, otro para los índices de futuros, otro para las bolsas
europeas, etc.; o situar en uno los valores que se han de seguir en tiempo real,
en otro los valores fin de día, en otro los favoritos con sus indicadores y
sistemas. Es como una gran carpeta donde archivamos nuestros informes,
diferenciando distintos apartados con el siguiente nivel de agrupación, las
Ventanas, susceptibles de ser visualizadas de manera individual o de forma
simultánea. Siguiendo con los ejemplos anteriores, dentro de un posible
Espacio de Trabajo dedicado a los valores del Mercado continuo, podríamos
crear ventanas para diferenciar cada sector: alimentación, bancos, eléctricas,
construcción, etc.
Una vez hecho esto descendemos un nuevo nivel para dividir cada
ventana en Hojas de Trabajo, donde colocaríamos a cada una de las empresas
de los sectores diversos. Así, en la ventana Bancos, situaríamos en la Hoja 1 a
Bankinter, en la Hoja 2 a BBVA, en la Hoja 3 a BSCH, etc. Por último, dentro
de cada hoja podemos visualizar diversas subventanas para componer gráficos,
datos, o insertar subhojas que permitan apreciar determinados aspectos, como
estar analizando el gráfico diario con la referencia a largo al lado, etc.
Otro tipo de organización puede ser crear un Espacio de Trabajo
destinado a las pruebas de sistemas sobre gráficos y así solo tener uno cada
vez, de forma que sea fácil el traslado de sistemas PDV a entorno VBA y
viceversa, o tener ios códigos de los sistemas junto a los gráficos, algo que es
más dificil cuando coexisten varios al mismo tiempo.

30
ESTRATEGIAS DE INVERSIÓN CON VISUAL CHART

Sobre las empresas y sus charts se pueden aplicar como es lógico, en


orden creciente, todos los elementos de análisis que hemos comentado, todo lo
que nos puede permitir tomar decisiones relativas a la inversión e incluso se
puede realizar un seguimiento de distintos valores de forma secuencial
liaciendo que las distintas hojas de trabajo vayan alternándose cada cierto
periodo de tiempo de forma automática, añadirlas o borrarlas.
Con todas estas características de flexibilidad, m ultiplicidad,
sim ultaneidad, variedad y adecuación, se co nsigue un óptim o
aprovechamiento de las capacidades organizativas de Visual Chart sin tener
que recurrir a pesadas y laboriosas actividades que son las que el interesado en
la inversión bursátil pretende evitar.

LOS ESCENARIOS DE DISEÑO.


Cuando hablamos de estrategias nos estamos refiriendo a todo un
conjunto de normas o procedimientos que nos permiten crear y utilizar
estudios gráficos, indicadores de actuación o verdaderos sistemas donde se han
matematizado esas reglas, en los que se basan las decisiones de inversión, de
forma que quede a un lado la posible subjetividad, la ambigüedad o la
actuación inconsciente. La comprobación histórica sobre una base de datos se
revela también totalmente necesaria para elegir la mejor estrategia, obteniendo
conclusiones fundamentales.
Visual Chart ofrece todas estas posibilidades y se constituye en un
poderoso y eficaz instrumento de diseño de estrategias, sin más limites que el
conocimiento de esas nomias y su aplicación. Todo el proceso de diseño se
realiza por medio de la Plataforma de Diseño Visual (PDV) o por medio del
entorno dé programación Visual Basic (VBA). Entre ambos escenarios hay
algunas diferencias, siendo las más importantes las siguientes:
- En PDV no es necesario tener conocimientos de programación, sino
que utiliza fundamentalmente la estructuración de la Lógica mediante
diagramas de flujo que canalizarán las series de cálculos. Su entorno está
configurado en nuestro idioma, lo que facilita la labor, aunque funciones,
variables y otros elementos pemianecen en ingles. El manejo es más fácil a!
estar ayudados por una serie de iconos representativos. Predomina lo visual, y
a un golpe de vista se aprecia lo que el sistema debe desarrollar. Desde PDV.
al compilar el diseño y registrarlo, se crea un fichero con la extensión flw,
pero también se hace una transcripción a lenguaje VBA, por lo que se crea un
documento asociado ya hecho en la otra plataforma. En PDV cada proyecto
tiene una ventana diferente y hay que salir de uno para entrar en otro. No todas
las funciones matemáticas se pueden usar, como por ejemplo Seno, Coseno,

31

i I
{ ( < { t i i i < ( i : I I r t I i f f f f ^ ( ( ( ( f ( ( i

__________________________ E S T R A T E G IA S D E IN V E R S IÓ N C O N V IS U A L C H A R T _____________________________

Absoluto, etc. El proceso de verificación y , comprobación del buen


funcionamiento del sistema se tiene que haccr sobre el gráfico de un valór
cualquiera donde se ha insertada previamente.
- En VB.‘\ sí es necesario tener algunos conocim ientos
programación. Es una aplicación de Microsoft que se puede usar en muy
distintos programas y que presenta unos procedimientos característicos. Su
entorno ha mantenido la configuración en el idioma inglés con objeto de ser
compatible entre inversores intemacionaies. Predomina el formato de texto y
tienes que ir reflejando ios datos en los distintos módulos establecidos al
efeclo para señalar lo que e] sistema debe hacer. No establece documcnlos
asociados. Si diseñas el sistema en esta plataforma, queda ese documento
solamente. Puedes tener todos los proyectos sobre los que estés trabajando
abiertos y desplazarte con rapidez de unos a otros. Hay acceso a todas las
funciones matemáticas, y como lenguaje de programación que es, permite
mayores posibilidades, como la creación y uso de arrays, especie de matrices,
variables con varias dimensiones. El proceso de comprobación y verificación
de funcionamiento del sistema se hace no sobre el gráfico, sino sobre el mismo
código, con un procedimiento al que nos referiremos más adelante, la
depuración.

FUND.\M ENTOS.
En realidad, basta con dominar una serle de aspectos muy concretos,
entendiendo bien su funcionamiento y la lógica que rige el diseño de
estrategias. La práctica hará todo lo demás.

J. £ i cíilc;ulo.
Las series son un conjunto de registros a lo largo del tiempo -en el
programa reciben la denominación de “datas”-, que se organizan en barras,
recogiendo valores determinados: cotización más alta, cotización más baja,
primera cotización, última cotización, momento temporal (fecha, hora),
volumen, opcn intorest. Estas barras pueden ser visualizadas en distintos
formatos de tiempo (5 minutos. 30 minutos, 1 día, 10 días, 1 semana, etc.)
insertándolas en un gráfico.
Visual Chart llevará adelante el código de cualquier sistema que
inserteinos calculándolo barra a barra, comprobando las restricciones
establecidas y ejecutando si es preciso las operaciones relacionadas con ellas.
El comienzo será la primera barra del gráfico, a no ser que en la expresión
Barra Inicio, que comienza teniendo por defecto valor O, pongamos otro
r ( / f y í ( 4 f i f * f f r f / r ^ f f f / f ^ r

___________________________ R S T R A T E O IA S D K IN V E R S IÓ N CO N V IS U A L C H A R T _________________________ _

cualquiera, que sería un número referido a las barras que se dejarían pasar
antes de comenzar.
Por tanto, recordemos: El código que diseñemos pasará por cada una
de las barras comprobando si se dan las condiciones señaladas,

J i . L ü3 h tr j- ü n i J í í u lt i s .

Indicadores.
Son fónnulas matemáticas que a partir de unos datos ofrecen resultados
que pueden ser visualizados en un gráfico y que nos señalan ciertas
características con respecto a la evolución de los valores, a partir de las cuales
podemos tomar decisiones concretas. Más de cien indicadores ofrece el
catálogo del programa entre los que podemos elegir en cada momento el que
más nos interese. Se encuentran integrados en distintos grupos; medias
móviles, clásicos, volatilidad, spread y volumen. Entre los más famosos
destacan las conocidísimas medias móviles de todo tipo -simples, ponderadas,
exponenciales, aplanadas, etc.-, el RS!, los Estocásticos, el MACD, etc. Son
una ayuda fundamentalmente a la hora de tener puntos de entrada o salida de
las posiciones. En la operativa del sistema, se calculan de una vez al principio,
para todas las barras, ya que se carga como fuente, y después es cuando se
desarrolla el código.
Los indicadores del catálogo están programados en lenguaje C, al igual
que el resto de Visual Chart, y se puede acceder a ellos para ver sus fórmulas
pero no modificarlos, cosa que sí se puede hacer con los indicadores que
vayamos creando desde las plataformas de diseño con nuestras ideas
personales. Al insertarlos se puede actuar sobre los parámetros del indicador
correspondiente. Estos son los indicadores disponibles:
Medias
AvSimple-Media Móvil Simple
AvExponential-Media Móvil Exponencial
' AvQuick-Media Móvil Acelerada
AvFlat-Media Móvil Aplanada
I AvWeiglited-Media Móvil Ponderada
I AvWildcr-Media Móvil de Wilder
AvAdapted-Mcdia Mó\ il Adaptativa
AvTriangular-Media Móvil Triangular
AvLifcl-Media Móvil Life-1
AvLifc2-Media Móvil Life-2
AvLife3-Media Móvil Life-3

3.^
KSTKATF.GIAS DE INVERSIÓN CON VISUAL CHART

Paraboiic-Parabólico
líoilingucr Bands-Bandas de Bollinguer
RainbowChariOsc-Mcdins Arco Iris
WcighlClosc-Linca de Cierres Ponderados
Sobre Atedias
AvSimplcOsc-Oscilador MMóvil Simple
AvSimpIeOscP-Oscüador MMóvil Simple-P
AvExponentialOsc-Oscilador MMóvil Exponencial
AvExponentialOscP-Oscilador MMóvil Exponencial-?
A\ QuickOsc-Oscilador MMóvil Acelerada
AvQuickOscP-Oseiladür MMóvil Acelerada-P
A\ FlalOsc-Oscilador MMóvil Aplanada
AvFlatOscP-Oscilador MMóvil Aplanada-P
AvWeightedOsc-Oscilador MMóvil Ponderada
AvWeightedOscP-Oscilador MMóvil Ponderada-P
AvWilderOsc-Oscilador MMóvil de Wilder
AvWildcfOscP-Oscilador MMóvil de Wildcr-P
AvAdapteiiOsc-Oscilador MMóvil Adaptativa
AvAdaptedOscP-Oscilador MMóvil Adaptativa-P
AvTrianguIarOsc-Oscilador MMóvil Triangular
AvTriangularOscP-Oscilador MMóvil Triangular-P
AvLifelOsc-Oscilador MMóvil LlFE-l .
AvLifclOscP-Oscilador MMóvil LIFE-l-P
AvLife2Osc-Oscilad0r MMóvil LIFE-2
AvLife20scP-Oscilador MMóvil LJFE-2-P
AvLife30sc-Oscilador MMóvil LlFE-3
AvLife30scP-Oscilador MMóvil LIFE-3-P
BollinguerBandsOsC'Oscilador de Bollinguer
BolíinguerBandsOscP-Oscilador de Bollinguer-P
RambowCharlOsC'Oscilador MMóvÜ Arco Iris
AvDisagreeOse-Oscilador Diferencial de Medias
AvDisagreeOseP-Oscilador Diferencial de Medias-P
Clásicos
RSI-Indicc de Fuerza Relativa
Stocliaslic-Oscilador Estocástico
Williams-Oscihidor Williams %R
DMKOsc-Oscilador DMK
REI-lndicc de Expansión TDR
MACD-MACD
PriceOsc-Oscilador de Precios

34

i i (< I
ESTRATEGIAS DE INVERSIÓN CON VISUAL CHART

Momentum-Oscilador de Momento
MomcntuinSlow-Oscilador de Momento Aplanado
PriccROC-ROC-Precios
DPO- DPO
Trix-Trix
CCl-CC!
WilliamsAD-Acumulación/Distribución de Williams
Swingindex-Indice de Fluctuación
SwinglndcxAcuin-lndice de Fluctuación Acumulado
DlPositivc-lndicc Direccional Positivo
DINegative-lndice Direccional Negativo
ADX-ADX
ADXR-Indice Promedio de ADX
DirectionalMov-Movimiento Direccional
SSl-Indice de Selección de Acciones
CSl-lndice de Selección de Futuros
StandardDev-Dcsviación Tipica
StandarDevP-Desviación Típica Porcentual
Volatilidad
AnnVolatility-Volatilidad Anualizada
BollVolatility-Volatilidad de Bollinguer
BollVolatilityOsc-Oscilador de Bollinguer Porcentual
Masslndex-Indice de Mass
VolatilityChaik-Volatilidad Chaikin’s
AvTrueRange-Promedio de Amplitud
AvTrueRangeP-ATR* Promedio de Amplitud-P
Volatilitylndex-Indice de Volatilidad
Volatilitylndexp-Indice de Volatilidad Porcentual
VHF-VHF
Spread
Correlationindex-Indice de Correlación
SpreadOsc-Oscilador Beta
MomentuniSpreadOsc-Oscüador de Momento Beta
RSC-Indice de Fortaleza
PercentSpread-Spread Porcentual
PcrcentSpreadSour-Sprcad Porcentual con Origen
DisagreeSpread-Spread Ditcrcncial
DisagreeSprcadSour-Spread Diferencial con Origen

35
I t « ♦ I í « « > I I ; I I I ¡ ( ' f , • » ♦ I I > f » k ( )

ESTRATEGIAS DE INVERSIÓN CON VISUAL CHART ______________________

Volumen /
Vol-Volumen
IVN-Indice de Volumen Negativo
IVP-Indice de Volumen Positivo
OBV-Balance de Volumen
AccumDistrib-Acumulación-Distribución
ChaikinOsc-Oscilador Chaikin
VolumeROC- ROC- Volumen
AvVolumeROC- ROC- Volumen con Media
PVTrend-Tendencia de Precios-Volumen
MFl- MFI- Indice de Flujo de Fondos
KVO* Oscilador KVO
EaseMov-Oscilador EOM
Funciones.
El programa incorpora una gran cantidad de funciones (las hay que
obtienen datos, otras sirven para dar órdenes, otras son estadísticas) que a
partir de una fuente base efectúan unos cálculos a través de fórmulas
matemáticas determinadas y devuelven un resultado. Cuando fallan, es decir,
si no encuentran lo que se les pide en su búsqueda, devuelven un valor
numérico muy elevado, concretamente 2147483647, excepto las estadísticas,
que devuelven un valor 0.
Con respecto a los indicadores cabe señalar algunas diferencias. Por
ejemplo, las funciones no son series de datos, por lo que no se pueden aplicar
sobre sí mismas. Además, se van actualizando en cada barra, lo que nos
permite mayor flexibilidad y la posibilidad de cambiar sus parámetros.
A continuación figura la lista de funciones que se pueden utilizar y una
pequeña referencia de lo que hace cada una.. Procure conocer bien las
funciones disponibles. Le simplificarán la labor y serán un ayudante de primer
orden a la hora de establecer la estrategia.
Alert-Aíerta ^
Buy-Comprar
Close-Cierre
CurrentBar-Barra actual
CurrentContracts-Número actual de Contratos/Acciones
CurrentEntries-Número actual de entradas
Date-Fecha
Ex ¡tLong-Cerrar Largo ,

36
l ♦ l ( t I I f

ESTRATEGIAS DE INVERStóN CON VISUAL CHART

ExitShort-Cerrar Corto ^
GetBarsSinceEntry-Barras desde entrada
GctBarsSinceExit-Barras desde salida
GelEntryDate-Fecha de entrada en negocio
GetEntryPrice-Precio de entrada
GetEntryTime-Hora de entrada en negocio '
GetExItDate-Fecha de salida de negocio
GetExitPrice-Precio de salida de negocio
GetExitTime-Hora de salida de negocio
GetHighest-Mayor de una serie
Getlndicatorldentifier-Obtener identiflcádor de un indicador
GetlndicatorValue-Obtcner el valor de un indicador
GetLowest-Menor de una serie
GetMarketPosition-Posición actual
GetMaxContracts-Mayor núinero de contratos
GetMaxEntries-Mayor número de entradas
GetNthHighest-Mayor ordinal de una serie
GetNthLowest-Menor ordinal de una serie
GetPivotDown-Pívot inferior
GetPivotUp-Pivot superior
GelPositionProfit-Ganancia de una posición
GetSwingHigh-Pivot superior
GetSwingLow-Pivot inferior
GetSymbolIdentifier-Obtener identificador de un símbolo
High-Máxima
Low-Minima
Minutes to Time-De minutos a tiempo standard
NetProfit-Ganancia total
Open-Apertura
Openinterest-Interés abierto
Sel!-Vender
ShouIdTemiinate-Orden de terminar
Time-Tiempo
Volume-Volumen

37

/
ESTRATEGIAS DE INVERSIÓN CON VISUAL CHART

Variables.
Con frecuencia es necesariio usar un mismo valor en distintas secciones
del código que vayamos formando, y a veces este valor puede ser una
expresión compleja y larga. Para no tener que estar repitiéndolo podemos
guardarlo en una variable, a la que llamaremos cuando sea preciso. Ese valor
no tiene por qué ser fijo, puede que vaya modificándose a lo largo de los
diversos registros en función de las circunstancias que se vayan calculando.
Pueden ser de varias clases: de tipo boolean (verdadero o falso), de tipo precio,
de tipo cadena de caracteres, de tipo numérico. Se revelan como elementos
básicos en cualquier diseño de sistemas que afrontemos pues permiten una
gran flexibilidad y dinamismo en el cálculo, así como la posibilidad de
mejorar los resultados cuando las hemos declarado como parámetros a
optimizar, lo cual se realiza activando la opción de tal nombre en el menú que
se despliega al pulsar sobre la variable con el botón derecho del ratón.
Asimismo, cada vez que se inserte un sistema en un gráfico determinado, se
pide al empezar los valores de inicialización de las mismas.
D a ta ty p e S ta ra g e ( l i e R ange
B y le 1bíte O to 255

In trg e r 2 biftM • 32,768 to 32,767


Long 4 b»te* •2,147,483,649 tO 2,147,493,647
(lo n g in te g e r )

S in g le 4 b » te i -J.402823E38 to • ! .4O1290E-4S for


(íirit)lí-precTiyon negative valiieí; 1.4 0 I 29SE-4S to
h o a tjr g -p o in t) 3 ,4 D2823E30 for poíitive vaiuei
D o u b I» B -1.79; 693l 3466231E30e to
( d o u b le - p r c D íio n -4 .W 065645S41247E-324 for negative
í lo s t i n g - p o in t ) VíiLtf: 4 .9J 06S645S41247E-324 to
1 .797693134&6232E30S for positiva v«luaf

C u rre n c y « b ftej •922,337,203,685,477.5808 to


(iC d le d in te o e f ) 922,337,203,665,477.5807
14 +/-
7 9 ,228,162,51 4 ,264,337,593,543,950,335
with DD decimal potnt;
+ /-7.9; 20162514264337S9354395O335
with 28 places to the right of the decimal;
ím allest non-iero number «
■f/-O.OODOOOOOODDDOt3OOO00ODOOOOOOl
V a rla n t 16 b fte i Any num ene valué up to tha range t>f a
(witti num beri) D ouble

Las* variables de tipo num érico pueden contener prácticamente


cualquier valor que queramos asignar, pues existe un amplísimo rango,
representado en el cuadro anterior.
Las variables de tipo boo/ea/¡ solo pueden tomar valor “verdadero" o
“falso”, y se suele emplear como forma de control de que ha sucedido o no
una determinada circunstancia. No pueden ser parámetros.

38

i < ‘
ESTRATEGIAS DE INVERSIÓN CON VISUAL CHART

Las variables de tipo precio son las que se encargan de recoger valores
que hacen referencia al campo de la barra: apertura, máxima, mínima, cierre,
volumen. Hay que aclarar que no nos referimos a valores de tipo numérico
sino a identificación dcl registro a utilizar. Pueden funcionar como parámetros
por ejemplo buscando el aspecto del campo de la barra funciona mejor la
estrategia.
Las variables de tipo fecha recogen valores numéricos relativos a la
misma. Así, para una barra que tenga la fecha de 16/04/2001, el valor
guardado en la variable tendrá el siguiente formato numérico; 20010416.
Las variables de tipo cadena de caracteres guardan esos valores entre
comillas. Solo se puede utilizar en el entorno Visual Basic.
Los nombres que se pongan a las variables no deberían coincidir con el
código de ningún indicador que hay en catálogo ni con los valores básicos del
campo de la barra, con ninguna de las palabras reservadas para evitar un mal
funcionamiento de las mismas.
Dominar el uso de variables es uno de los aspectos fundamentales del
diseño de estrategias.
Las órdenes.
En el programa hay cuatro tipos de órdenes: compra, venta, cerrar largo
y cerrar corto, y a su vez, cada una de ellas puede ejecutarse al cierre, puede
ser orden de mercado, limitada o en stop.
- Compra.
Compramos cuando pensamos que la cotización de un valor puede
subir, hacerse más alta, y por ello, obtener un beneficio cuando nos
desprendamos de ella por la diferencia de precio, A esto se le llama tener una
posición a largo.
- Cerrar largo.
La contrapartida de la compra en principio es liquidar el negocio,
realizando una venta de las acciones que previamente habíamos adquirido. El
programa toma esta venta como una venta al contado, con el mismo número
de acciones que se poseía. Este tipo de venta se conoce como Cerrar Largo
(cerrar la posición a largo) y supone la tenninación del negocio iniciado con
una compra.
- Venta.
Visual Chart entiende esta orden como venta a crédito (ver Glosario) si
estamos aplicándola sobre acciones, por lo que abre nuevas posiciones a la
baja, a corto. Estimamos que en el mercado se van a producir descensos en las

39
ESTRATEGIAS DE INVERSIÓN CON VISUAL CHART

cotizaciones y pensamos obtener beneficios también en este sentido. Si habla


alguna compra abierta, que no habíamos cancelado con Cerrar Largo,
internamente ajusta la liquidación de la posición compradora en el número de
acciones que supusiera, pero además abre su posición con otras tantas
acciones. También es muy usada en productos derivados como los Futuros,
aunque aquí no supone carácter de a crédito.
- Cerrar corto.
Se utiliza para cancelar una operación a corto, o sea, una venta, y no
posicionarse de nuevo a largo, sino liquidar y esperar.
En cuanto a las formas de ejecutarse estas órdenes, encontramos las
siguiente modalidades: “al cierre” , “mercado”, “en stop” y “limitada”.

> Las órdenes “al cierre” y “de mercado” equivalen en la operativa real
a la orden de mercado. La primera de ellas se ejecuta en el sistema cuando se
dan las condiciones, en e! cierre de la barra en que se está calculando, mientras
que la segunda lo hace en la apertura de la siguiente barra.

> La orden “en stop”, que ahora mismo solo se permite en la realidad
en el mercado de futuros, consiste en colocar un precio por encima o debajo de
la cotización del valor en ese momento, según si es compra o venta
respectivamente. Se ejecutará siempre que la cotización iguale o sobrepase el
precio que hemos puesto.

>La orden “limitada” supone la idea contraria, más difícil de entender.


Queremos comprar y ponemos un precio por debajo de la cotización del
momento (esperamos su retroceso). Si queremos vender, ponemos un precio
por encima de la cotización. La limitada se hace en cuanto se alcance su precio
o sea inferior en el primer caso, y en cuanto sea igual o superior en el segundo
caso.
Ahora que tenemos una noción general de todo lo relacionado con las
órdenes, podemos enlazar con el segundo fundamento, que era el cálculo, pues
es interesante saber cuál es el proceso exacto que sigue en cada barra, algo que
nos ayudará cuando estemos programando un sistema. Los pasos siguen una
secuencia estricta:
a) Verificación y en su caso ejecución de las órdenes de stop y
limitadas ya emplazadas.
b) Seguimiento del flujo del código a lo largo del diagram a
comprobando si se plantea alguna orden concreta para la siguiente barra.
c) Ejecución de órdenes de cierre y mercado.

40
ESTRATEGIAS DE INVERSIÓN CON VISUAL CHART

En lo que hace referencia al punto a) hay que señalar que sigue también
unas determinadas prioridades cuando realiza la verificación. Así, las órdenes
de stop y limitadas se evalúan primero en la apertura de la barra, después en el
punto más cercano a la apertura (mínima o máxima), a continuación en el
punto más lejano (mínima o máxima) y por último en el cierre. Si os parece
algo complicado, no os preocupéis, ya que conforme sigáis leyendo el libro y
lleguemos a los ejemplos concretos, lo entenderéis mucho mejor. Cuando
volváis a releer esta parte cada vez estará más claro.
Para la casación de todas estas órdenes que damos en los sistemas, se
utiliza en principio por Visual Chart un determinado modelo establecido por
defecto, que es el de la entrada sin acumular. Esto quiere decir que cuando se
ha ejecutado una de ellas, por ejemplo, una compra, no volverá a llevar a cabo
una orden en el mismo sentido hasta que se haya cerrado esa primera entrada.
El flujo del cálculo pasará por las órdenes discriminando si ya hay abierta una
posición y obviará las que tienen la misma tendencia. Por ello, al diseñar
estrategias podemos poner órdenes de compra y venta simultáneas, pues
sabemos que solo se llevarán a cabo las contrarias a la que esté vigente.
Existen otros modelos, como son el de Acumular por etiqueta. Acumular
siempre y Mezclar etiquetas.
Acumular p o r etiqueta se utiliza cuando deseamos que se pueda
ejecutar más de una orden simultáneamente en una misma posición. Para ello
se identificarán a las operaciones con un nombre o etiqueta, y para cada una
deberá explicitarse una orden, por lo que el número de posiciones es limitado.
Cuando se ejecute una orden de signo contrario, cerrará todas las operaciones
en vigor y además se abrirá un nuevo negocio con los contratos o acciones
especificados en su etiqueta.
Acumular siempre supone aceptar todas las operaciones que se puedan
hacer, sin fijarse en ninguna etiqueta. Por tanto, el número de posiciones puede
ser ilimitado, hasta que una orden de signo contrario las cierre todas y abra un
nuevo negocio con las especificaciones que se le indiquen.
Mezclar etiquetas es una modalidad en la que, al igual que las
anteriores, se permiten tener distintas operaciones en una misma posición,
pero en la que una orden de sentido contrario no cierra todos los negocios en
activo, sino solo la que este identificada con la misma etiqueta que ella.
Una última aclaración importante es que cuando nos encontremos en
un sistema diseñado en Visual Chart con una orden que indique compra o
venta de “ 1”, por ejemplo al cierre, tenemos que saber que ese número hace
referencia a una unidad, como seria el caso de un contrato de Futuros, aunque
también puede considerarse como una acción en tanto unidad de trabajo,
porque luego los resultados estadísticos deberían expresarse al final en

41
ESTRATEGIAS DE INVERSIÓN CON VISUAL CHART

términos porcentuales, que son los que permiten unificar los criterios. No
obstante, se puede reflejar en vez de “Compra l al cierre”, “Compra 100
(acciones) al cierre”, puesto que el programa va preparado para ello, y en ese
caso trabajar por puntos, es otra posibilidad. Es muy importante comprender
los tipos de órdenes para actuar sabiendo lo que se puede esperar exaclamente
y verificar después los resultados.

42
ESTRATEGIAS DE INVERSIÓN CON VISUAL CHART

IP PARTE: LA PLATAFORMA DÉ DISEÑO


VISUAL (PDV)

PDV. EL ENTORNO.

Este es el entorno de trabajo de PDV, al que se accede tras seleccionar


en Sistemas la opción Crear Sistema con Plataforma Visual. El programa
pedirá un código para identificar después en el catálogo el nuevo sistema y
aparecerá este espacio en blanco a la derecha o escritorio donde se colocará el
código en el diagrama de flujo, acompañado de un bloque de iconos en el
extremo izquierdo y un grupo de carpetas identificadoras de herramientas de
trabajo a usar en los sistemas que vamos a diseñar a la derecha de los iconos.
Ctütdi
-3 \

* -ü
j lr>d(«daifff
■J «vilbiK
f-i Ptncort
» \f'w

r~ íM » T '

LA ESTRÜCTURA DEL CÓDIGO.

“Un lugar para cada cosa y cada cosa en su lugar”.


Cuando diseñamos una estrategia en el entorno PDV lo que estamos
haciendo es colocar en un orden detenninado una serie de unidades de trabajo,
los comandos (condiciones, sentencias, bucles) y los operadores (órdenes de
compra y venta, cerrar largo y corto), unidos entre sí por unos enlaces lógicos
que identifican el camino o trayecto que debe seguir el cálculo definido, y todo
ello da lugar a una estructura que denominamos diagrama de flujo. De la
importancia de esa ordenación correcta, siguiendo unos principios que
expondremos a continuación, da fe el hecho de que de su corrección o
incorrección dependerá primero que el programa acepte registrar la estrategia,
pues rechazará dando error lo que no sea coherente lógicamente, y después el
que se obtengan los resultados esperados.

43
RSTHATEGrAS DK INVF-RSIÓN CON VISUAL CHART

Antes de explicar las principales característica^ del código, permítanme


intentar comenzar con un ejemplo muy sencillo que de forma lúdica puede
aclarar algo ia comprensión de estos conceptos, aunque como todo, sera la
práctica la que nos lleve a ello.
Imaginemos que nos han encargado en una Híbrica embotelladora de
agua asegurar que o! llujo que sale por un grifo llegue a las botellas de
plástico. Disponemos de recipientes y depósitos de distintas clases para los
procesos intennedios, y de tuberías para conectarlos.
Cuando el agua sale del grifo, cae hacia abajo y la vamos recogiendo
en los depósitos que tenemos: se llaman sentencias, condiciones, bucles,
órdenes. En cada uno de ellos sufre un proceso determinado, en ocasiones con
cambios cuantitativos y cualitativos.

Sentencia

SEN T EN C IA

El agua pasa siempre por ella entrando por la parte superior y saliendo
por la inferior sin detenerse, aunque toma las propiedades minerales que hay
dentro de ella y que se reflejan en las asignaciones de su texto. Las sustancias
iniciales al entrar cambian sus proporciones en parte al salir.

Condición

C O N D IC IO N

Esta alcubilla recoge el agua por su parte superior, y actuando de


calibrador, analiza las características organolépticas que tiene según unas
restricciones que se reflejan en su parte centra!. Según sea su resultado la
dejará seguir por una de las dos salidas que tiene, lado inferior o lateral
derecho.

-14
' 'i ' ■> ^ ^ ^ ^

RSTKATl-X'.IAS I)R IN V E R S IÓ N CO N V IS U A l. C IIA R T

Bucle

BUCLE

En este depósito se combinan los otros, fonnando uno más complejo,


que incluso tiene un motor que hace que el agua que en él entra, suba y baje un
número de veces dctemiinado para examinar más exhaustivamente alguna de
sus características y darle un certificado de control que se usará después en
otros receptáculos.

Órdenes

ORDENES

En ellas se procede al embotellado del agua que ha llegado por fin al


final. Con un tipo de órdenes se rellena la botella, y con otro tipo se tapona,
quedando lista para su comercialización.

Para que el agua pueda ir pasando de unos a otros contenedores se


precisan también unas buenas tuberías, que son ios enlaces o conectores, los
cuales deben colocarse apropiadamente para asegurar el proceso y que no se
produzca retención o estancamiento en ningún punto del circuito.
Con este ejemplo hemos adquirido una noción aproximativa de las
principales unidades de trabajo, y ahora añadiremos sobre esa base algunos
elementos típicos descriptivos que vayan conformando su mejor comprensión.
El comando más importante es la Condición, que establecerá los^
requisitos o situaciones en que queremos que-se dé determinada actuación.

45
ESTRATEGIAS DE INVERSIÓN CON VISUAL CHART

Externamente aparecerá como un rombo con tres vértices, uno de entrada del
llujo, el superior, y dos de salida, el inferior y el lateral derecho. Es náuy
importante enlcndcr su funcionamiento, ya que el cálculo tras entrar en el
comando, decide si es cierta o falsa, y se divide, siguiendo su curso en el
primer caso por abajo, y en el segundo por la dcrecha, En cada una de esas
direcciones se pueden añadir otros elementos, que adquirirán el carácter de
dependientes de la Condición establecida.
Otros comandos son las Sentencias, donde se asignan valores a las
variables, y que aparecen representadas por un rectángulo con un punto de
entrada superior y uno de salida inferior. En cualquier caso, por ellas atraviesa
el flujo sin dividirse.
También nos encontramos con los Bucles, que pueden ser de dos
clases: Mientras, y Desde...Hasta. Ambos se visualizan como un rombo con
cuatro vértices señalados como puntos de seguimiento del flujo, entrando por
el superior, siguiendo por el inferior (en el primer tipo de bucle si la condición
incluida dentro es cierta y en el segundo conforme una variable contador
establecida se \ay a incrementando), retornando al bucle por el vértice
izquierdo y continuando por el derecho (en el primer tipo en el momento en
que la condición que se había fijado de cómo resultado “falso", y en el
segundo cuando la variable contador alcance el número de veces que se le
había asignado, adquiriendo también un valor boolean que servirá de control).
En cuanto a los operadores, en el caso que nos ocupa son las Ordenes
de compra, venta y cierre de posición. Son también rectángulos con un punto
de entrada en la parte superior y uno de salida en la inferior. Son muy
importantes, porque todo el armazón que se ha ido construyendo en el
diagrama lleva al final a la consecuencia de dar una orden determinada de
participación en el mercado con una expresión de precio concreta.
P.or último nos encontramos con los enlaces o conectares, cuyo buen
uso reviste la catalogación de fundamental, pues señalan el camino por el que
llega o puede continuar el flujo. Imaginemos que son tuberías por donde el
agua que imaginariamente dejaríamos caer desde el punto inicial del diagrama,
debería seguir hasta llegar al final, desviándose en los lugares asi planteados,
pero que en cualquier caso tiene que tener siempre continuidad. Esta
introducción a la estructura del diagrama de flujo se irá ampliando
progresivamente y aclarando en la práctica a través de la elaboración de una
serie de sistemas que aparecen a continuación y de los que iremos paso a paso
explicando el proceso de diseño.

46

>.
ESTRATEGIAS DE INVERSION CON VISUAL CHART

RECORRIDO DIDÁCTICO A TRAVÉS DE 13 SISTEMAS

[SISTEMA MEDIA M Ó V ^
Vamos a diseñar nuestro primer sistema con la Plataforma Visual.
Seguimos los consejos que nos han dado. En primer lugar tener las ideas claras
sobre lo que queremos que haga el sistema. Pensamos que la curva de precios
se mueve en tendencias durante determ inados periodos de tiempo y
pretendemos detectar una tendencia alcista para asi ajustar el sistema a esta
característica del mercado y aprovecharla. Usaremos el indicador llamado
Media Móvil, que representa la media de los precios en un determinado
periodo, y como tal reduce las posibles distorsiones que éstos puedan
presentar, para confinnar la tendencia y en función de ella tomar la decisión de
inversión. Esto es lo que tenemos en mente: queremos dar orden de comprar
cuando el cierre de la cotización esté por encima de una media móvil
determinada, permaneciendo con esos títulos comprados hasta que se de la
situación contraria, que el cierre de la cotización se ponga por debajo de la
media móvil, señal que consideramos puede significar cambio de la tendencia.
En ese momento daremos orden de dar por terminada esa compra (cerrar el
negocio, cerrar largo). Por tanto, la misma media nos servirá para acompañar
la posición saliendo de la misma si se mueve en contra, o protegiendo los
beneficios si todo va bien. En el gráfico adjunto podemos apreciar cuál es la
idea que sustenta al sistema. Parece que todo está claro.

]'*W

La segunda fase será la de reflejar esas ideas en el entorno de la


Plataforma por medio de un diagrama de flujo. Vayamos por partes.
Elegimos en el menú Sistemas la opción Crear sistema con Plataforma
Visual. Se nos pide un código para el catálogo y un nombre para e! archivo,
con objeto de identificar el sistema. Le pondremos de nombre “Media Móvil” ,
en ambos casos. Aceptamos, y ya estamos en el entorno de trabajo.

47

) í )
) I I I

ESTRATEGÍAS DE INVERSIÓN CON VISUAL CHART

Nos situamos en la herramienta Indicadores, damos al botón derecho,


opción Añadir, y elegimos en la hsta una de las diversas clases de media
móvil, por ejemplo A\ Simple, una media móvil simple, y le damos un valor
inicial cualquiera, 30 en este caso, que señala el periodo sobre el que irá
calculándose, las últimas 30 barras. Aceptamos y ya está activado el indicador
que queremos usar.
Ahora seleccionamos en el bloque de iconos el rombo verde, que
representa al comando Condición y llevamos el cursor al espacio en blanco.
Pulsamos el botón del ratón y se despliega un cuadro de diálogo, en el que se
nos pide una serie de datos para elaborar la condición: identificadores
(nombre, valor, línea si es un indicador, barra a la que hace referencia),
operador lógico que los relacionará, etc. Recordemos que una condición es al
fin y al cabo comparar dos ténninos, que en su cuadro de diálogo aparecen a
izquierda y derecha, a través de los operadores de la parte central,

ManMbate Difi
VdD CIERRE
B«i* ’O

_J

En la parte izquierda de este cuadro hay tres conceptos donde


seleccionar. El primero de ellos es el campo del identificador, donde siempre
aparecerá Data para referirse a las barras donde se registran las cotizaciones.
También aparecen, cuando pulsamos la flechita de la pestaña, los demás
identificadores que bajamos puesto en las carpetas de herramientas. Como en
nuestro caso hemos elegido la media móvil simple, aqui la podemos encontrar
para señalar cualquier aspecto relacionado con ella en la condición.

4X
ESTRATEGIAS DE INVERSIÓN CON VISUAL CHART

El segundo campo es el del valor, donde aparecen los distintos tipos de


registro que tiene una barra: apertura, máxima, mínima, cierre, volumen,
fccha, tiempo. Aquí podemos, una vez marcada en el identificador la
expresión Data, elegir el tipo que más nos interese para establecer
comparaciones en las condiciones.

IdsnliÜMda D«ta
V*ta CIERRE •]
B«i«
apertura

1 MINIMA
VOLUMEN
-E)v<MÍón OPEN INTERES!
FECHA
TIEMPO
^ 1

El tercer campo es el número de barra sobre el que se está hablando. O


supone la barra actual, 1 la anterior, y así sucesivamente.

ldarUic«lai -0^4 90

Vakjf ClEFfiE
IIC
B«t« 1i¿
1

1 1
2
-Eivmidn 3
i
5
Y 1 10
15
30

° 1

En la parte central hay un rectángulo donde se recogen términos de


comparación, de relación cuantitativa, tales como mayor que, menor que,
igual, etc.

Mayo( ^
jÜEHRSSDEE
Mayor o Igual
Menor
Menor o igual
Disthto
I g u a l______________

49
ESTRATEGIAS DE INVERSION CON VISUAL CHART

En la parte derecha la misma estructura que en la izquierda. Si en la


casilla de identificador elegimos por ejemplo la Media móvil, el campo de
Valor se transforma automáticam ente en Linea (características de ios
Indicadores, que pueden tener hasta 10).

Siguiendo con nuestro sistema, tras concretar los datos, pulsamos el


botón de Añadir Condición y la expresión formada aparece para nuestro
examen en la ventana de edición, que sería ésta: ”Si el valor del precio de
cierre de la barra actual es mayor que el valor del indicador Medía Móvil en
esa misma barra...”.

I Id H tfcad B Dala Idwttcwta AvSn<pM)«*


I Véa CIERRE l iM 1
S«H ' D

’-J
■»«

í WwVjiaU. I
sJ

Si estamos de acuerdo aceptamos y aparece en e! espacio de trabajo ya


un rombo que contiene en su interior la condición que acabamos de formar.
Este rombo tiene tres vértices señalados, y cada uno tiene la siguiente función:

50

í
ESTRATEGIAS DE INVERSION CON VISUAL CHART

Volvemos al sector de iconos y seleccionamos el rectángulo azul, que


representa a la operación Orden . Llevamos el cursor al espacio de trabajo y
pulsamos por debajo del rombo anterior. Se despliega un nuevo cuadro de
diálogo para expresar las características de la orden que vamos a dar: orden,
lipo de orden, precio en el caso de que se de en stop o limitada, n“ de contratos
o acciones y si queremos poner una identificación en el negocio con un texto
breve, en la opción etiqueta. En nuestro caso:

[M » Is ra "
T i» d i(h to i C*'*

P i» I
N iM d iC a F iM k » r tito Ij

*MOUt )

Aceptamos, y bajo el rombo de la condición nos aparecerá un


rectángulo indicando la compra al cierre. Tiene un punto de entrada en la parte
superior, que uniremos con la salida inferior del rombo mediante un conector.
Esto se lleva a cabo pinchando sobre uno de estos puntos de enlace y lo
arrastramos sin soltar hasta el otro. Se va desplegando una flecha y cuando
aparezca un cuadrado en el punto de enlace destino soltamos y la conexión ha
quedado hecha.

Ahora, si interpretamos el diagrama, nos encontramos con que quiere


decir que si se cumple la condición que habíamos expresado en el rombo, es
decir, que el cierre de la cotización sea mayor que la media móvil, el flujo
sigue por el conector y nos lleva a dar la orden de compra ai cierre de esa
barra.
Aún nos queda reflejar qué queremos que pase cuando el cierre se
ponga por debajo de la media móvil, la otra salida del rombo de la condición.

51
I I < ) i « I I t t t I I I

ESTRATEGIAS DB INVKRSIÓN CON VISUAL Cl lART

Queremos que liquide la posición. Por tanto, volvemos al bloque de iconos y


pulsamos en el rectángulo de órdenes, lo llevamos al espacio de trabajo y eñ cl
cuadro de diálogo seleccionamos las opciones cerrar largo, al cierre y un
contrato. Accptamus y aparecerá reflejado en cl diagrama. Lo unimos con un
conector con la salida derecha del rombo, "et voilá", así queda el sistema;

Un último detalle precisamos conocer antes de seguir, y es hablar sobre


la función de la carpeta de herramientas llamada Baña Inicio. El valor que se
adjudique es el que indica desde qué barra comenzará la actuación dcl sistema.
Por defecto, si no ponemos nada, toma O y aplica el código desde cl primer
registro. En algunos casos será necesario cambiar este número con objeto de
dejar pasar un lapso de tiempo necesario para hacer los cómputos derivados de
a lg iJ i)¿ is funciones que tienen e-xplicilado un-periodo de cálculo. Si usamos
indicadores, como es la media mó\ il, no es preciso cambiar nada en líarra
Inicio, pues el programa suma automáticamente el valor que tenga la longitud
en la que se pide que trabaje el indicador, al valor O que habla por defecto. Si
la media móvil es de 30 barras, el cálculo comenzará a partir de la barra 3 1.
Una vez que hemos terminado de diseñar la estrategia, la compitamos
pulsando el botón con el icono de una flecha roja sobre unas hojas. Compilar
es un proceso por el que cl sistema programado se transforma en un archivo
individualizado y ejecutable. Se transcribe el diagrama a lenguaje VBA, y se
registra en el catálogo de sistemas. Si todo está bien y no hay ningún error
lógico en el diagrama, saldrá un mensaje que indicará que el proceso ha
finalizado correctamente. Si no, indicará lo contrario y habrá que revisarlo. En
nuestro caso todo ha funcionado sin problemas.
Pasamos a otra fase, la de comprobación y verificación visual sobre et
gráfico de la actuación del sistema. Salimos de la Plataforma, elegimos un
gráfico y sobre el colocamos en primer lugar cl indicador utilizado, es decir, la
media mo\'il simple de 30 dias.

52
l i l i [ l i l i l í

ESTRATFX.IAS HE INVERSIÓN CON VISUAL CHART

A la hora de visualizar un indicador sobre el gráfico, hay que tener en


cuenta los distintos tipos de activación que hay: Elegimos la opción Insertar
indicador dentro dcl menú Indicadores, ponemos los parámetros oportunos, y
al aceptar, la media móvil aparece en una ventana inferior. ¿Qué ha pasado?

W it p q o d e ( « k c c i i n

In d c a d o n j

N o ttx te C M g o : S n p lt Tpo: M edM ©


X
0 > c M c a « « y H « n a n c n l« r

C6<1i9o N w r * te iH O í c W e ir * T" V e ría n Nwib-e Vokt


_ [ A v £ « p o n n tia l M etí» Mov< E > p o o fn cn ( Nue»» FufrííSas* O a lsl CW^XIJ

J A v L itíl M e da Móv< L F E 1 Petiodo X


J A v L ile l M e du M W LFE 2 CvigenD^os OerK
J AvL« 3 Mbv< LFE 3 f i c i l a v w v « k v t> O r tg ra le t
J A W W ftíte d Mr<M MOVÍ P w v íe fM » E tIsW eC ír com o P re d rte iin M d o s
j¿AYSmpl6 Móv< Sinpte
J A v r tia n g ^ M n k a Móv4 TiiangU ar

J R * í* o w < M r t M a lte s A icovis

J Paracokc Pv abdica
JWei^Cloja We<edOose

En la pestdña derecha dcl nombre dcl indicador, en la columna


Ventana, hay una pequeña flecha en la que ai pulsar hace que se despliegue un
cuadro con tres opciones: Nueva, Con escala de la serie y Ventana O, Si la
opción en activo es la primera, será cuando aparezca bajo el gráfico. Con las
otras dos aparece sobre las barras aunque con alguna pequeña diferencia en la
apariencia de los márgenes donde figuran los precios.

5.1
0
ESTRATEGIAS DE INVERSIÓN CON VISUAL CHART

NUEVA
0 'r m
8ANMNTER Fifi U 1 H : J W * 38.01 M » .1 5 m » . M C 39 89 f >4* . V 03

70.05

60.00

ÍJ t W ' N ' y Y x i 50,00

60.00
SOCO
I3B.88I
,i "Ncy 'oic 'ÓÓ feb 'M»r 'W r " 'May_____
d ---- |ju
T n
W l '> m r h l Jj

Si todo está claro, podemos pasar a probar la estrategia. Seleccionamos


Sistemas, Insertar Sistema, y buscamos el nombre del nuestro, en este caso.
Media Móvil. Lo marcamos y aceptamos. Tras unos segundos en los que
aparece un cuadro de procesamiento de datos, quedan reflejados en el gráfico
los negocios próducidos. Cuando el resultado de los mismos es positivo una
linca azul une el punto de entrada y e! de salida. Si es negativo, la línea será
roja. Más adelante explicaremos cómo se pueden cambiar estos colores. De
momento, con ellos podemos apreciar en un solo golpe de vista qué
predomina, los buenos o malos negocios, o cuánto duran, etc. Nos situamos al
comienzo de una de las operaciones. Comprobamos lo que habíamos pedido,
que si el cierre está por encima de la media se ha producido la orden de
compra, que se ha mantenido así hasta que el cierre se ha puesto por debajo de

54
ESTRATEGIAS DE INVERSIÓN CON VISUAL CHART

la media, y que entonces se ha ejecutado la orden de cerrar largo. Bien, todo


está en regla. Observamos distintos negocios y vemos que todo va de acuerdo
con lo previsto.

Tl>0ACtXv Fm 4 9 tfít 1 4 ^4 * M 2 Z 5 9 A. 127 M 1.^9 m U7 C: 1.27 f


O
IMtl 1,50

i.«o
A fe ii

ík- v W ’, ; í 11 a
"1,

V" 1.20

1.10
U rlf

'Ot 'May
«'<!» hVvU

Este sistema es fácil de verificar incluso solo visualmente, pero cuando


haya que estar comprobando precios en cada barra, desplazarse por el gráfico
sabiendo lo que vale en cada momento los indicadores, y otros procesos más
complicados, es bueno saber que existen dos excelentes auxiliares que
proporciona Visual Chart para ello; Son las Trazas o Líneas Supervisoras y e!
Inspector de Cotizaciones.
Las primeras se presentan a la vista como dos líneas perpendiculares,
con desplazamiento horizontal y vertical respectivamente; y el inspector de
cotizaciones, se muestra en un rectángulo recogiendo estructuradamente todos
esos valores que corresponden a la posición del puntero o de las trazas, y
también los precios de entrada en los negocios. Simplerríente haciendo doble
click sobre el gráfico aparecen:

55
RSTRATEGIAS DE INVERSION CON VISUAL CHART

Confonne vamos subiendo o bajando las lineas, o pasándolas de


dcrecha a izquierda, los datos se van renovando en el inspector. Si las lineas’se
colocan sobre la ventana inferior en la que por ejemplo tenemos colocado un
oscilador, lo que ocurre es que solo nos da la información de ese indicador y
no de la cotización.
Hay otra manera de activarlos aparte del doble click sobre el gráfico, y
es marcando en el icono correspondiente de la barra de herramientas que
encabeza normalmente el gráfico, y ambos iconos, el de las líneas y el del
inspector están juntos y son éstos:

í
Con el de la derecha hacemos visible o quitamos el inspector, y con el
de la izquierda las líneas.
Vamos a ver qué podemos esperar de la estrategia que hemos diseñado.

_ Concepto Vslor
Ganancia total 0,96
Ganancia en posiciones abiertas 0,00
Ganancia por día 0,00
Ganancia por mes 0,01
Ganancia por aña 0,14
Ganancia a corto - 0,00
Ganancia a largo 0,96
Acumulado negocios positivos 2,89
Acumulado negocios negativos -1,93
de barras analizadas 1.71B
N ° de negocios 90
N ° de negocios positivos 20
N ° de negocios negativos 70
de negocios de la mejor serie 2
N ° de negocios de la peor serie 8
Ganancia media por negocio 0,01
Ganancia media positivos 0,14
Pérdida media negativos -0,03
Mejor serie de ganancia 1,61
Peor sene de pérdidas •0,73
Mejor Negocio 0,91
Peor Negocio -0,11
Fiabilidad 22,22 Vo
Profit Factor 1,50
PRP, 2,80

Llamamos al menú Sistemas opción Estadística. Aquí aparecen una


serie de datos muy interesantes para apreciar lo bueno que pueda ser el
sistema: barras analizadas. n“ de negocios, positivos y negativos, series de
perdidas y beneficios, ganancia y pcrdidas’por puntos o porcentualniente, tanto

56
ESTRATEOIAS DE INVERSIÓN CON VISUAL CHART

por ciento de fiabilidad, etc. También puede dar un informe individual


dclailado de cada negocio: número, fecha, punto de entrada y salida en cada
uno, ganancia acumulada, y de aspectos tan interesantes como los riesgos o los
liempos.
No termina aquí la historia dcl Sistema Media Móvil. Como los
resultados no son lo brillantes que desearíamos, pensamos en utilizar un
periodo distinto, porque solo hemos usado la de 30 días. ¿Y si optimizáramos
la media para ver cuál es la que mejor rentabilidad puede dar? ¿Se puede hacer
esto? Sí. Con la opción Sistemas, Optimizar Parámetros. AI seleccionar la
opción, nos aparece un mensaje señalando que no hay parámetros a optimizar,
lo cual nos recuerda que había que haber declarado como parámetro el
indicador de la media. ¿Se puede arreglar ahora? Si.
Seleccionamos Sistemas, Modificar Sistemas y buscamos el que
acabamos de diseñar. Lo abrimos y nos encontramos con el entorno de ia
Plataforma Visual y el diagrama de flujo del diseño. Nos situamos en la
herramienta Indicadores, sobre AvSinipleData, que es la señalización de la
media móvil simple y en el botón derecho del ratón, pulsamos la opción
Activar/Desactivar parámetros. Observaremos lo siguiente:

Herram ientas X
a ú Senes
s □ Indicadores
B ♦ AvSimpleData
0 D Variables
a ♦ Av5impIeDataPeriodo
a ♦ AvSimpleDataOrigenDatos
□ Función
B □ Barra Inicio

Han aparecido variables de la media móvil que sí pueden actuar como


parámetros. Recordaremos esto. La próxima vez activarem os desde el
principio como parámetros las variables que deseemos optimizar. Compilamos
^ de nuevo el diseño, pues ha habido modificaciones.
Volvemos al gráfico. Menú Sistema, Optimizar parámetros. Aparece
I un cuadro de diálogo que nos pide los límites inferior y superior entre los que
efectuar la búsqueda y el incremento que queremos que se vaya produciendo.
En este caso le pedimos que busque desde la media de 5 barras a la media de
100 barras de l en I. La búsqueda la puede efectuar el programa linealmente o
mediante algoritmos genéticos cuando las variantes son muy elevadas.

57
ESTRATEGIAS DE INVERSIÓN CON VISUAL CMART

P««n d re1 { *vSOTpK>alaPetiQ«> S 100 100

2J

NúneraWild»iwtaann
NúneiodsMlarui avnMÍHi fís
(• B ú tq u a d * b iB ti
r A lp a rfn iM g e n é tic o i. A
C . 'v .- t m a i t '- . - : rlir.THl.tfjr

Aceptamos y comienza el proceso. Cuando termina el cálculo, queda


un cuadro de resultados con las m ejores variables ordenados
fundamentalmente por ganancia. Pero hay que pensar mucho también en la
serie de pérdidas, y elegir parámetros que aunque presenten menos ganancias,
tengan un riesgo también mucho menor.
Cambiamos el indicador en pantalla de acuerdo con los resultados
optimizados y aplicamos de nuevo el sistema. Comprobamos los resultados y
vemos que ha mejorado el rendimiento.
Como colofón de cada uno de los sistemas que vayamos diseñando,
haremos una pequeña ficha técnica con sus principales datos, que sirva como
recordatorio visual dcl mismo.

Nombre. Media Móvil.


Tipo. Seguimiento de Tendencia.
Tema. Relación del cierre de la barra respecto a un indicador.
Indicadores. AvSimpleData (Media móvil simple) sobre los precios de
cierres.
Variables. AvSimpleDataPeriodo (número de barras sobre el que se
calculará la media), AvSim pleDataOrigenDatos (campo de los
registros de la barra con cuyos valores se calculará la media móvil).
Funciones. Ninguna,
B arra Inicio.0.
Ó rdenes. Posiciones solo al alza; compra y cerrar largo.

58
ESTRATRGIAS DE INVERSIÓN CON VISUAL CHART

Puntos E n trad a. A) cierre cuando la barra en su campo de cierre sea


superior al valor de la media móvil.
P untos S alida. Al cierre cuando la barra en su campo de cierre sea
inferior al valor de la media móvil.

SISTEMA COMPARAClÓÑI
Este es un sistema muy sencillo, que actúa en tendencia empleando
para su determinación la comparación de determinado valor de la barra con su
Iiomónimo de n barras atrás. Se estima que si se ha mantenido una diferencia
de precio a favor del más reciente es porque hay una confirmación de la linea
ascendente. Cuando no suceda esto, se considerará terminada.
Vamos a utilizar solo en principio el valor Cierre del Identificador
Data, y lo haremos procediendo a cotejarlo con el de hace un número
determinado de barras, al que pondremos como valor por ejemplo 6, para
saber si es mayor que él.
Seleccionamos en el bloque de iconos el de condición y pasamos al
espacio en blanco. Pinchamos y se despliega el cuadro de diálogo, donde
elegimos Data Cierre O (recordemos que O equivale a ia barra actual en la que
se hacen los cálculos) en un lado, “mayor” en la parte central, y Data Cierre 6
{es decir, el cierre de seis barras más atrás). Añadimos ia condición en la
ventana de edición y pulsamos Aceptar. Aparece ya reflejada la condición de
esta forma:

Ahora es el tum o de las órdenes. Para nuestro objeto es suficiente en


principio compra al cierre si se verifica la condición o cerrar largo si no es así.

59
i f t i < f t t f t ( * t t i I ' t f f f f f t t t * * i $ i

__________________________ E S T R A T E G IA S P E IN V E R S IÓ N C O N V IS U A L C H A R T __________________________

En el primer caso el flujo seguiría por el punto de salida inferior del


diagrama, y en el segundo por el lateral derecho.
En Barra Inicio ponemos un valor de 7 para que el código empiece a
ser operativo después de dejar pasar ese número de barras, con objeto de poder
hacer la comparación de forma efectiva. Esto se consigue situándonos sobre su
carpeta, marcando con el botón derecho del ratón, y escogiendo la opción
Modificar. Se despliega el cuadro de la variable y cambiamos el valor
numérico. Aceptamos y ya queda establecido. Compilamos el sistema y lo
probamos sobre el gráfico de un valor cualquiera, examinando los negocios
para comprobar si todo se está ejecutando tal como lo hemos previsto y
reflejado en el diagrama.
Aparecen una serie de negocios, con las etiquetas de C (compra) y L
Alza (cerrar largo), que son los caracteres que por defecto se aplican,
dibujando una línea de color distinto según su resultado entre los puntos de
entrada y salida. Si queremos cambiarlos hay que proceder así; Pinchamos
sobre la flecha de uno de los negocios, damos al botón derecho y elegimos
Configurar objeto. Aparece un cuadro de diálogo, en el que seleccionaremos la
pestaña Color. Alli está la asignación de colores para indicar operación
positiva y operación negativa. Marcando un cuadrito con puntos suspensivos
se despliegan todos los colores posibles. Elegimos el que queramos y
aceptamos. Después se aplican los cambios y ya tenemos la visualización
preferida.

Aquí vemos los negocios que ofrece e! sistema. La estadística general


no es muy buena. Quizás 6 na es el número más apropiado para indicar la
barra con que comparar. ¿Qué podríamos hacer para saberlo? Pues utilizar la
optimización del programa, para lo cual necesitamos crear alguna variable que

60
f t i i i i i f t i i í t / ( « ( < ( < ( i < i / ^ '

__________________________ E S T R A T E G IA S D E IN V E R S IÓ N C O N V IS U A L C H A R T _______________________________________

sea declarada como parámetro. Así que como no lo hemos hecho al principio,
nos vamos al sistema de nuevo, con la opción Sistemas , Modificar Sistemas, y
-en la carpeta de herramientas Variables pulsamos con el botón derecho del
ratón y elegimos Añadir. Cuando se despliega el cuadro, ponemos un nombre
a la variable, en este caso “n”, le asignamos un valor de tipo numérico, le
señalamos para comenzar el mismo que tenia, 6, y marcamos el cuadrito “usar
como parámetro”.

Nonibi«detaV«iabla Tjpo
Numifico

P U u í como Pvimeba

Acep>» I Canctto

Ahora en el área de trabajo pinchamos en e! rombo de la condición con


doble click con objeto de cambiar la redacción. Pulsamos la opción Borrar
para eliminar lo que había en el escritorio, y volvemos a hacer la operación de
elegir identificador, valor, etc., pero cuando llegamos al segundo término,
hacemos click en el cuadrito con los puntos suspensivos y aparece un nuevo
cuadro, Crear una Sentencia.

O c < ia i

Vemos que en el identificador aparece Data y en el valor Cierre.


Pulsamos Añadir y aparece en el escritorio “Cierre”. Ahora volvemos a la
casilla de Identificador y pulsamos en la flechita, apareciendo dos opciones:
Data y n. Elegimos n. Marcamos paréntesis, el cual aparece en el acto,

61
ESTRATEGIAS D E INVERSIÓN CON VISUAL CHART

marcamos Añadir, con lo que aparece n, y marcamos paréntesis, quedando


todo entonces de esta foniia: ,
Le damos a Aceptar y ya aparece en el cuadro de la condición en el que
estábamos.
Ahora con Añadir condición, comprobamos que la redacción queda en
el escritorio así : Cierre > Cierre (n), que podríamos traducir como: “Si el
cierre de la barra actual es mayor que el cierre de n barras atrás...” -siendo n en
principio 6 pero pudiendo cambiarlo en función de la optimización que se
haga*. Aceptamos y ya queda en el diagrama de flujo de esta manera:

Compilamos de nuevo, y ahora al ir a insertar el sistema en un gráfico


nos pedirá qué valor queremos para n. Podemos dejarle 6. Aparecen los
mismos negocios que antes, pero ahora seleccionamos en la opción Sistemas,
Optimizar parámetros.
Establecemos unos límites inferior y superior entre los que se hará la
búsqueda, la cual, recordemos, puede hacerse de forma lineal, siguiendo un
orden preciso entre ambos limites calculando todas las combinaciones sin
saltarse ninguna, pues es el método más adecuado cuando hay un prudente
número-de posibilidades o por algoritmos genéticos, que es el mecanismo que
se emplea cuando el número de cruces e iteraciones es tan elevado que
debemos proceder a tratar de encontrar la mejor solución posible, actuando en
principio de forma aleatoria para encontrar las mejores variables, priorizando a
continuación su acoplamiento.
Una vez que el cuadro de resultados nos ofrece los mejores parámetros,
volvemos a insertar el sistema, ponemos e! nuevo número para n y pulsamos la
opción establecer como predeterminados, para que lo tenga ya en cuenta
siempre al empezar. Aceptamos, y ahora vemos los nuevos resultados.
Efectivamente, han mejorado sustancialmente.

62
ESTRATEGIAS DE INVERSIÓN CON VISUAL CHART

ConHguraciónSHlema»
[*f t f iiw rtró ir' I 'Howjbrw^ ^ I n feH o r* ^ 1n¿añ^^1
P w á m e tr o l |n 2 » 1 CÓ

2 l_ 2J

Nú m io total <ja ÍM«cionM


Número do « vmMÍz« [Í5

Bútqueda lne«l
Aceptaf I
C AljMitmot ganéticm.
CUncds I

Nombre. Comparación.
Tipo. Seguimiento de Tendencia
T em a. Relación entre precios de cierre de barras de distinto periodo
temporal.
Indicadores. Ninguno.
Variables, n (número de barras hacia atrás).
Funciones. Ninguna.
Órdenes. Posiciones solo al alza: compra y cerrar largo.
B arra Inicio: El valor que tenga la variable n.
Puntos E n trad a. Al cierre de la barra actual si el cierre es superior al
cierre de la barra n.
Puntos S alida. Al cierre de la barra actual si el cierre es, inferior al
cierre de la barra n.

63
ESTRATEGIAS DE INVERSION CON VISUAL CHART

SISTEMA CRUCE
Seguiremos usando las medias • móviles como confirmación de
tendencia, pero podriamos cambiar el momento concreto de actuación. ¿Qué
tal si para mayor seguridad el punto de entrada lo diera un cruce de medias?
Primero aclaremos ideas; La condición seria que una media de periodo
teinporal más corto cruzara al alza sobre una media de periodo temporal más
largo. Entonces daríamos orden de comprar, manteniéndonos hasta que se
produjera un cruce en sentido contrario, a la baja, señal para cerrar la posición.
Por supuesto queremos que las medias sean optimizables, así que las
señalaremos como parámetros (ya no se nos olvidará hacer esta labor desde el
principio). Vamos a introducir una novedad. La orden de compra será en stop
(hasta ahora solo se ha hecho al cierre). Hay que pensar la fómiula exacta.
Teniendo delante un gráfico en el programa, insertamos en él dos
medias móviles, en este caso exponenciales, de 10 y 30 días. Estas medias, al
igual que las ponderadas, dan más peso progresivamente a los datos más
cercanos en el tiempo y utilizan un cxponente multiplicador para acortar el
retardo en seguir la cotización que suelen experimentar las medias móviles
simples. Diseñamos un pequeño esquema expresando los requisitos que se
tienen que dar, y reflejamos la fonna de significar el stop. Será utilizando la
máxima del día del cruce, de esta forma: Máxima + Máxima* 1/100, con lo que
señalamos un punto que está situado por encima de la Máxima ya que le
sumamos a ésla la cantidad resultante de multiplicarla por un coeficiente y
dividirla por cien, o sea, que al valor de la máxima le sumamos un porcentaje
de ella misma.
Pues vamos a empezar. Nos situamos en la Plataforma de Diseño
Visual y primero elegimos como indicadores las dos medias móviles
exponenciales, que serán denominadas AvExponentialData la de 30 y
AvExponentiallData la de 10. Las activamos como parámetros, con lo que
tanto en una como en otra podremos cambiar el campo de origen de datos y el
periodo de cálculo.
Señalamos la condición y tras cumplimentar ios datos, queda el rombo
así;

lndicadot[AvExponerVial1Data) >
lrtdicadot(AvExpQnentiálData)

64
KSTRATKOIAS DR INVRRSION CON VISUAL CMART

“Si cl valor de la media AvExponcntiaM en la barra actual es mayor


que cl valor de la media AvExponenliar’
Ahora pasamos a establecer la orden de compra. Esta vez, en cl cuadro
de diálogo tenemos que poner cl precio de la orden en stop. Para ello pulsamos
a la derecha de la casilla Precio, sobre cl nombre Editor. Aparecerá encima
olro cuadro distinto desde cl que podremos crear la expresión compleja.
BTT i<J
'xl! 6<na
O id c n d e C o m p r a V e n ta
MMMA O^
OT<kn L U _ L I^ ^
¡m" - iJ jJ - L l _J VmMt (
P*woa r* ~l td iQ I I
_l I
Corti«to» V 'L lísJ; J Cancel» I
■ [U _ J^ j J
£lK|kNtt 1/100

Elegimos corno identificador Data, como valor Máxima y Rarra O, es


dccir, la actual. Pulsamos cl botón Añadir. Se incorpora Máxima a la ventana
de edición. Pulsamos sobre cl signom ás. Se incorpora directamente al igual
que los números que pongamos. De nuevo “Añadir”. Tenemos Máxima +
Máxima. Vamos insertando los demás símbolos y números, y cuando esté
formada la expresión, aceptamos y queda asi cl cuadro de la orden;

*J

Oiden

T ip o d * O n lB n

P is c o

Nua lie CaniltliM P

EbiliiaU

Aceptamos y se incorpora la orden al diagrama general de flujo.


Ponemos en el diagrama la orden de cerrar largo, que se ejecutará cuando no
se cumpla la condición, y se dará al cierre para que la salida sea rápida.

65
ESTRATEGIAS DE INVERSIÓN CON VISUAL CHART

Compilamos el sistema y pasamos a la fase de verificación, que es muy


importante también ya que en ella se pueden detectar los errores de
funcionamiento. Al analizar los negocios nos damos cuenta de que la salida, el
cierre largo, lo hace correctamente, pero la entrada en stop no la hace donde
queríamos. Vamos a ver, pretendemos que compre en stop en el valor de la
máxima del día en que se produce el cruce más un porcentaje, y que se
mantenga ese stop si no se hace la operación enseguida. Algunos negocios sí
ejecutan bien el proceso porque se supera el stop en la siguiente barra, pero
otros que han tardado más barras, lo que hacen es ir colocando el stop
utilizando la máxima de cada barra que va apareciendo.

En el gráfico tenemos un ejemplo de lo que estamos diciendo, pues la


compra la hace con el stop que pone la máxima de la barra anterior, y no con
el de tres barras antes, que es cuando se produce el cruce de medias. Por tanto,
habrá que pensar en hacer algo para anclar el stop y que no vaya
actualizándose. Lo mejor es crear una variable a la que se le asigne en el
momento de la condición e! valor de la máxima. La llamaremos Techo. Nos
situamos en las carpetas de herramientas, seleccionamos Variables, botón
derecho y Añadir. Aparece el cuadro de cumplimentación de datos, que nos
pide el nombre de la variable, el tipo (en este casó numérico, pero podría ser

66
ESTRATEGIAS DE INVERSIÓN CON VISUAL CHART

también de tipo boolean -cierto o falso-, de fecha, etc.) y el Valor inicia! que se
le quiere dar, en este caso 0.

Nombre (ío la V«iabte Tipo


[Techo '

r U w t como Parémetio

A ceptjí { Cancelaf

Una vez establecida esta variable, la debemos hacer valer en el


diagrama m ediante una sentencia que situarem os bajo el rombo de
condiciones. Además, sustituiremos en la orden de compra en stop la
expresión Máxima por la de Techo (si no, no tendría sentido la operación que
hemos llevado a cabo). El diagrama quedarla asi:

Compilamos y volvemos a verificar sobre un gráfico en el que se


inserta el sistema. ¡Caramba! ¡Otra vez lo mismo! Solo se realiza sin error
cuando se ejecuta en la barra siguiente. Si no, toma el valor de la máxima de la
barra actual. Veamos cómo solucionar esto.
Sabemos que tenemos la variable adecuada, pero sigue actualizándose,
así que vamos a poner otra condición más restrictiva de forma que solo tome
la variable Techo el valor de la máxima de la barra en la que se dio el cruce de
medias. Esta condición va a consistir en pedir que además de que la media de
periodo más corto se coloque por encima de la de periodo más largo, que ya
sabemos que esto se refiere a la barra actual de cálculo, en la barra anterior se
diera la circunstancia contraria, con lo que nos aseguraríamos de que se ha.
producido el corte en ese momento. ¿Cómo expresar esto? De esta fonna: Si el

67
ESTRATEGIAS D E INVERSIÓN CON VISUAL CHART

Indicador de la Media Móvil Exponencial Corta dé la barra actual es mayor


que el Indicador de la Media Móvil Exponencial Larga de la barra actual y
además el Indicador de la Media Móvil Exponencial Corta era en la barra
anterior menor que el Indicador de la Media Móvil Exponencial Larga de la
barra anterior, en esc caso Tech'o tomarla el valor de la Máxima. Pero no
vamos a poner todo este enunciado en la misma condición, cosa que se podría
hacer utilizando en el cuadro de diálogo el conector lógico Y, sino que irán en
condiciones distintas, pues para cerrar la posición solo necesitamos que no se
cumpla la primera de ellas.

IdenUcadM Ay£«ixinmWi1Dll« Identlctdot *


Lm 1 L»»« 1 *
Baiti 1

lm^a<j3Íiuv€)(poncrtballC'a»»MI cIrHJcddcujA'.CKpor^uaDíía.l.l) Bon« I


Nuey* Firtcrinl
NutvjVjfatite [

I A c W » I C j n c ( l 3í |

Asi que ponemos los datos en el cuadro de condiciones. Obsérvese que


en el número de barra figura un 1, que indica la barra anterior;
Aceptamos y ahora el diagrama de flujo aparece de esta forma:

Compilamos de nuevo el sistema. Volvemos a comprobar su exactitud


en el gráfico y sigue haciendo bien los negocios que entran a la barra
siguiente, pero ahora los que se hacían-unas barras después a precio de la

6K
ESTRATEGIAS DE INVERSIÓN CON VISUAL CHART

máxima del momento, ni siquiera se hacen. Examinamos detenidamente el


diagrama de flujo, donde los conectores juegan un papel fundamental.
Debemos recordar que es como si un grifo de agua se situara encima, entra por
el primer punto superior de la condición y sigue una serie de tuberías. Si en
alguna de ellas no se le da salida, el flujo se corta, y eso es lo que aquí ha
pasado:
- El cálculo comienza en la primera condición. El programa comprueba
que la condición de estar la media corta por encima de la larga se da. Si no es
así, sigue por la parte derecha, y como no hay nada comprado aún, no cierra
largo nada. Si la condición se da, sigue el flujo hacia la siguiente condición,
que analiza si la media corta de la barra anterior está por debajo de la media
larga de la barra anterior. Si esta segunda condición es cierta, sigue el flujo,
asigna a la variable techo el valor de la máxima de esa banra y compra en stop
en el precio que hemos designado.
- Pero, ¿y si esa segunda condición es falsa?. Esto puede suceder
cuando no entramos en el negocio a la siguiente barra. Ya no estamos en la
condición de haber cortado entre la barra anterior y la actual. Ahora se desvía
el flujo hacia la derecha del segundo rombo. Pero, ¿hemos conectado esa
salida con algún sitio? Ahí se detiene el flujo y como no sigue hacia la orden
de compra, ésta no se efectúa.
Por tanto, sí hemos detectado el fallo, la solución es bien sencilla.
Conectamos con un enlace esa salida, pero no a la variable de techo porque ya
se había producido esa asignación al pasar por primera vez por las dos
condiciones verdaderas, sino directamente a la orden de compra, que se hará
manteniendo el stop con la variable techo que queríamos anclar:

69
ESTRATEGIAS DE INVERSIÓN CON VISUAL CHART

De nuevo en el gráfico, verificamos los negocios y ahora el


funcionamiento está rcclificüdo. Obtenemos la estadística del sistema, y
optimizamos las medias. Es importante saber que existe una fonna de hacer
que el sistema operativo del ordenador priorice esta labor de optimización de
variables. Se hace del siguiente modo. Cuando el optimizador está a la vista y
ha empezado el proceso, se pincha dentro con e! botón derecho, y de entre las
opciones se escoge Establecer Prioridad.
Cuando hacemos esto, aparece otra ventana donde se nos pide que
decidamos entre Prioridad alta, normal o baja. Marcamos y aceptamos.

2.47

2 47 íj. Botde*1
AktMOíteHflñnrii^*:;]
)ct
fe

Si tenemos mucho interés en la labor de optimización y hay otras tareas


realizándose, conviene la prioridad alta, con la que el sistema operativo
monopoliza el procesador para tal fin. Si es otro tipo de prioridad, reparte Jas
cualidades del procesador entre los diversos trabajos que se estén llevando a
cabo.

Nombre. Cruce.
Tipo. Seguimiento de Tendencia.
T em a. Situación comparativa de dos indicadores entre sí (cruce de
medias móviles).
Indicadores. AvExponential y AvExponential 1.
Funciones. Ninguna.
\'üriables. Techo, para recoger el valor de la máxima de ia barra en
que se produce el cruce.
B arra Inicio. 0.
O rdenes. Posiciones solo al alza: compra y cerrar largo.
Puntos E ntrada. En stop: Techo+Techo* 1/100

70
ESTRATEGIAS DE INVERSIÓN CON VISUAL CHART

Puntos Salida. Al cierre cuando la media rápida cruce a la baja a la


media lenta.

71
♦ f . ' . ' ’ r í ' » t i i í I i •I ' i i i -i I
E S T R A T E G IA S D E IN V E R S IÓ N CO N V IS U A L C H A R T

ISISTEMA PIVOTS

¿Se puede hacer un sistema sin poner ninguna condición? Bueno,


vamos a hacer una prueba. Solamente pondremos una orden de compra en stop
en un pívot superior y una orden de venta en stop en un pívot inferior. ¿De
venta? Si, en efecto, vamos a introducir en el tipo de órdenes la de venta. En
realidad, cuando en las anteriores estrateiiias indicábamos Cerrar Largo, lo que
se hace es una venta de las acciones o contratos que se habían comprado
anteriormente. La venta que no pretende solo cerrar una posición previa
alcista, sino que quiere apostar por una bajada de la cotización y por ello abre
una posición a la baja, a corto, es la que queremos introducir. En efecto, es un
mecanismo muy común en los mercados de productos derivados, como
Futuros y Opciones, pero también en el mercado de acciones se puede llevar a
cabo, si bien en la modalidad de venta a crédito, en la que se realiza el
préstamo de los títulos necesarios por un banco especializado (ver Glosario-
operaciones a crédito).
Por tanto, y aclarando conceptos:
- Si queremos vender para cerrar una posición alcista, se hace por el
número de unidades que se hubiera adquirido antcríomiente.
- Si además de cerrar posición se quiere abrir una nueva a la baja, se
hace por el número de unidades que teníamos más las que queremos
adquirir ahora para ponemos a corto.
- Si solo vamos a posicionarnos a corto se establece únicamente el
tamaño de acciones o contratos que queremos tomar en ese sentido, y
cuando queramos cen ar esa operación, lo que se llama cerrar Corto, se
hará de foniia iin ersa, es decir, con una compra,

Tras este preámbulo, continuamos con la elección de las funciones a


utilizar. Serán GetPivotUp y GetPivotDown, que nos devuelven el valor de

72
ESTRATEGIAS DE INVERSION CON VISUAL CHART

estos puntos representativos buscados en una determinada extensión, pero con


la mayor flexibilidad respecto a otras funciones relacionadas de poder
optimizar independientemente el número de barras que deba haber a su
derecha e izquierda.
Después de añadir en la carpeta de herramientas de Funciones las de
(jetPivotUp y GetPivotDown, activamos sus parámetros y queda asi:

GeíPivotUpDaUOcurrence
Get Pivoí DownDat aOcurrence
GetPivotDownDatatPfice
GetPivotDownDataLength
GetPIvoHjpDatdLeftCount
GetPivoíUpDaíaRiqhlComt
GetPtvotDovjnOataLeftCoünt
GetPIvotOownDataR ightCcHjnt
GetPivotUpDatatPfice
GetPivotUpDdtal.ength
'~~1 Funcoo
a ♦ GetPivotUpOdla
E ♦ GctPwotDownOata

Debajo están las dos funciones titulares y encima los diversos


parámetros que tienen, que son:
DataOcurrence se refiere al número de pívot hacia atrás que queremos
buscar. En este caso hemos puesto de valor 1, el primer pivot hacia atrás.
DauuPrice pide el campo de la barra sobre el que se calculará el pivot:
High, Low,Cióse, etc. Hay que vigilar que esté bien elegido, pues comienza
por defecto en Cióse, Así que para el pivot superior el priee será tíigh y para el
pívot inferior el price será Low.
DaíaLeftCount recoge el número de barras que debe tener el pívot a la
izquierda. De inicio hemos puesto 5.
DataRightCowU lo mismo pero a la derecha.
DaíaLength es el periodo hacia atrás en el que buscar, el número de
barras en los que se intentará encontrar el pivot correspondiente. Ponemos un
valor inicial de 50.
Con todos estos preparativos hechos, pasamos al área de trabajo, donde
vamos a colocar dos órdenes, una de compra y una de venta, que mutuamente
se relacionan cerrando la operación contraria. El tipo de orden será en stop y
simplemente pondremos el lugar señalado en el mismo valor de los pívots.

73
ESTRATEGIA?; DR INVERSIÓN CON VISUAL CHART

Compca 1 Stop GeíPivofUpDafa

];
Venta 1 Stop GeílPivoíDownOata
------------------------- 11 - - -- - ■

El sistema ya está tenninado, pero solo hay un pequeño problema que


podría surgir en su funcionamiento, y es que en el periodo señalado para su
búsqueda, según los requisitos solicitados, no se encontrara ningún pívot,
¿Qué valor devuelve entonces la función si falla? Devuelve un valor muy alto,
como ya explicamos en su apartado correspondiente. Y ¿qué sucede entonces
cuando hay una orden en stop con un valor tan alto? Pues que para la orden de
compra no afectará porque no se llega a ese precio, pero para la orden de venta
si que la hace en el acto, dándose entonces una operación que no
pretendíamos. ¿Cómo se puede evitar esta distorsión? Declarando una variable
llamada Nulo, que no es preciso ni siquiera inicializar cuando se la declare. Ya
sabéis, área de herramientas, botón derecho sobre Variables, y en el cuadro de
edición ponemos el nombre. Aceptamos. Será la que asuma o recoja el fallo de
la búsqueda. Su uso correcto sobre lo que ya tenemos diseñado sería insertarla
en una condición previa, de este modo;

La transcripción seria más o menos ésta: “Si el valor que obtiene la


función GetPivotUpData es distinta del valor que toma la variable Nulo, da
orden de comprar en stop en el valor que se haya encontrado para GetPivotUp,
y pasa a la siguiente condición; y si no es distinto de Nulo, entonces pasa de
igual modo a la siguiente condición, que es precisamente su simétrica para la
venta, o sea. Si el valor que devuelve la función GetPivotDownData es distinto

74
ESTRATEGIAS DE INVERSIÓN CON VISUAL CHART

ilcl que recoge la variable Nulo, entonces ordena vender en stop en el valor de
CSC pivot, y si no es así, tcnnina el cálculo de esta barra”
Podemos hacer una labor de aclaramiento de variables en este sistema
aún. Por ejemplo, la longitud en que buscar, los GetPivotUpDataLength y
(ictPivoíDownDataLcngth podemos identificarlos con una de nueva creación
a la que llamaremos Periodo. Incluso podríamos poner un Periodo para la
húsqucda de pívots superiores y otro para la de los pivots inferiores. Pero lo
ilcjarcnios por ahora en un solo Periodo. Hemos creado esta variable con ese
nombre y le hemos puesto de valor por ejemplo 25. Ya está operativo. ¿Cómo
se hace la asignación? Colocándonos en los Length correspondientes en las
herramientas Variables dcl entorno, con esa carpeta abierta, los señalamos y
con botón derecho Modificar, aparece el cuadro de edición de variables, donde
dejamos el mismo nombre y formato, pero cambiamos el valor, poniendo
niiora en lugar dcl número que habla, el nombre de Periodo, y a continuación
quitamos la marca que señalaba a esta variable como parámetro. Aceptamos.
Lo hacemos para los dos casos.

Nombre de Id Vatúble T jpo

kPivotU Numénco ▼ iPeiiodo Ecítof

r Ü s« como ParáfTWlro

Acep<aí I Cancetat | Añadir

Ahora vamos a hacer lo mismo con el número de barras que se exige


para ser considerado un punto como pívot a ambos lados, a derecha e
izquierda. Son los DataLeftCount y DataRightCount, y los vamos a asimilar
con variables nuevas que creamos llamadas Barrasizquierda y BarrasDerecha,
a las que he declarado como parámetros. Por tanto, situándonos en los Left y
Right Count, botón derecho del ratón, Modificar, y en el valor sustituimos el
número que habíamos puesto por el correspondiente de Barrasizquierda o
BarrasDerecha. Los desmarcamos como parámetros y aceptamos.
Nos quedan las variantes de la función Ocurrence y Price. Podemos
dejarlas como parámetros si quisiéramos buscar por ejemplo cuál es el pívot
hacia atrás más interesante para los resultados, el primero, el segundo, etc., o
si quisiéram os cam biar el campo de la barra en que buscar. Pero
probablemente aquí nos interesa solo el primer pívot y el campo de Máxima
para uno y el de Mínima para otro. Asi. los desactivamos como parámetros
para que queden fijos. ¿Cómo se hace? Pues de dos maneras. O con el bolón

75
, : ' ; ■ , ■. í í ' I ' I ' ' ■ ' ' ‘
» V t ( ' '■
__________________________ E S T R A T E G IA S D E IN V E R S IO N C O N V IS U A L C H A R T __________________________

derecho del ratón, opción Modificar, desmarcas la señal, o con el mismo botón
pero en la opción Activar/Desactivar Parámetros, pulsas y.ya está hecho.
De cstíi nianeia, en la carjKla Variables tendremos todas las que se han
declarado, sean o no parámetros, pero cuando insertemos el sistema, solo nos
pedirá tres de ellos, simplificando la labor.
Así queda el cuadro de herramientas del entorno de trabajo PDV en
este sistema en cuanto a la carpeta Variables, con todas las asignaciones
hechas y las desacti\'acioncs correspondientes, con sus valores respectivos,
como se puede apreciar en el desplegable:
3 i i VaiiabtK
E ♦ NJo
♦ N u m é r ic o : O

E ♦ GetPivotUpOataOcwfence
♦ lo n g : J

♦ GtlPivotDownOataOeurrence
♦ Long : l
2 * GetPivrtCowfiCatyPfice
♦ Prict: Piicetow
B * (ktPtvotOcwTiOatalerigith
♦ NumétKO ; Periodo
S ♦ B í r r a il; q u i« f d «

♦ P < 5 , , ) N u m é r ic o : 5
♦ B a r iis t e e t f w

♦ P ( 5 , , ) ( * jm é < ito : 5
?; ♦ G e tP iv o t M p D a tJ lfí tC o L r t
♦ fkjmpfKO : B«rasl;quiíidl
K * G r tP w M U p O « a R ig h tC ( x x <
♦ NunétKO ; BsfraíCeiecha
3 ♦ G e t P r r t< P o « r O a ía le ítC o ir t
♦ N ix n íf ic c i; B a f r a ilr q u e t d a

j? ’ * G e t P iv o l D o w r i O a l a R i g K C ix j n t

♦ N u m é r ic o : B j f t a s O e r e c h j
♦ P e to d o

♦ P < :5 , , > N u m é ric o : 3 5


- ♦ G e t P iv o í U r f ia t jt P iic e
♦ P r ic e : P f i í H i g h

S ♦ G e t P iv o t u p D a t a l e n g t h

♦ N u n i i i c o : P e r io d o

Y éste sería el aspecto ya mucho más simplificado, del cuadro de


diálogo al insertar el sistema en un gráfico, cuando nos pide los datos que
quieres para cada parámetro.
Nofflbr# r V«lo(
Fuerte Bate Datsl (B0VA MC) ^
Baifí5(iqkJietcls 5 000
8ati»:DetecM 5 000
Periodo 25 0ÚÚ
Re^sur»r Vítores Ois>n»ies
EítiHecer c&mo Predelífmrudos

76
ESTRATEGIAS DE INVERStÓN CON VISUAL CHART

Entre los rectángulos redondeados del gráfico podemos apreciar los


pivots superior e inferior con cinco barras a cnda lado en este caso y cómo son
■los que determinan tanto la compra como la venta. Una vez que se ha
producido la compra, los pivots superiores no actúan, y hay que ir fijándose en
los inferiores para salir del negocio con la operación contraria.

Nombre. Pivots
Tipo. Seguimiento de Tendencia
Tema.Utilización de soportes y resistencias a través de los Pivots
Indicadores. Ninguno
Variables. Nulo, que recoge el valor de fallo de las funciones; Periodo,
que señala el niimcro de barras hacia atrás en que buscar al pivot;
Barraslzquierda, que representa al número de barras que se exige al
pivot a su izquierda para ser considerado; BarrasDereeha, que cumple
la misma labor pero en la derecha; GetPivotUp y DownDataOcurrence
(número de pivot hacia atrás que se quiere encontrar); GetPivotUp y
DownDatatPrice (campo de la barra en que buscar); GetPivotUp y
D ow nD ataLenght (periodo en que buscar); y G etPivotU p y
DownDataLeft y DataRight Count (barras a ambos lados del pivot
como requisito)
Funciones. GetPivotUpData y GetPivotDownData
B arra Início.O
Órdenes. Compra y Venta
Puntos entrada. En Stop en el valor de los pivots
Puntos salida. En Stop en el valor de los pivots

77
ESTR.MEGIAS DE INVERSIÓN CON VISUAL CHART

S i s t e m a BANDASI
Vamos a croar un sistema que produzca un movimiento continuo con
presencia permanente en el mercado. Estimaremos o tendremos en cuenta la
actuación en la empresa, índice, etc,, correspondiente a partir de la superación
al alza o a la baja de puntos más o menos significativos en la curva de la
cotización, y a partir de ahí se acompaña a la tendencia que haya en vigor.
Bueno ¿cuáles serían los elementos a usar?
La idea es establecer unas bandas de fluctuación progresivas cuya
violación en uno u otro sentido origine la señal de entrada o salida de los
negocios. Para formar esas bandas utilizaremos las funciones GetMighestData
y GetLowestData, que obtienen el mayor y menor valor respectivamente de la
serie de datos en un número determinado de barras.
Comenzamos seleccionando en las carpetas de herram ientas las
funciones a las que acabamos de referirnos. El diálogo de selección pide
confomiidad o posibilidad de cambio de dos datos: tPrice, que hace referencia
al campo de la barra(apertura, máxima, mínima, cierre, etc.) sobre el que
calcular la función, y Length, que es el periodo o número de barras en que se
hará la búsqueda. En el caso de GetHighest escogemos en tPrice máxima y en
el caso de GetLowest mínima. En cuanto a Length, dejamos en ambos el valor
10 en principio. i
Ahora activamos como parámetros (es decir, optimizables) ambos
contenidos sencillamente pulsando sobre el nombre de las funciones que han
aparecido con el botón derecho y escogiendo la opción Activar/Desactivar
parámetros. Asi. ya están declaradas como variables.
Pero aún hay algo que se puede hacer. Como el campo de la barra no lo
vamos a cam biar (máxima en un caso y mínima en otro), podemos
desactivarlo, dejando como mejorable en el proceso de optimización solo el
periodo o Length, con el que, dándole valores más altos o más bajos, se
conseguirá unas Bandas más amplias en su espectro o más ceñidas. Así que
nos situamos sobre GetHigheslDatatPrice y GetLov/estDatatPrice y con el
botón derecho marcamos, se despliega el cuadro de posibilidades y elegimos
Activar/E>csactivar parámetros. Ya queda fijo el uso de estos campos y hay
menos variables a optimizar.
Si abrimos el contenido de las variables pulsando sobre el cuadradito
con signo + que hay antecediéndolas, se despliega su contenido. ¿Cómo
podemos saber en el ejemplo que acabamos de explicar si ya está desactivada
la variable como parámetro y está fija? Esto es lo que hay que observar:

78
ESTRATEGIAS DE INVERSIÓN CON VISUAL CHART

ACTIVADAS DESACTIVADAS
(D e cualquiera de estas dos form as)
S ♦ GetLowestDaí«>Price a ♦ GetHighestOafa<P(ice
♦ P {) P íic e : PriceLow ♦ P tic e . PiiceHtgh
0 ♦ GelHighestDelatPtice ♦ Ge<LowesfDa(atPfice
♦ P(PnccHigh..) P ric e : PiiccHigh ^ P iic e : PiiceLow

En Barra de fnicio ponemos el valor 10 para que la estrategia empiece


a calcularse pasadas diez barras, de manera que ya pueda hacer los cálculos de
acuerdo con la longitud del periodo que hemos puesto a GctHighestData y a
GctLowestData. Pero también podemos poner la variable Length de estas
funciones como indicador del periodo de cálculo para que siempre vaya en
consonancia con ella. Esto se haría colocándonos sobre Barra Inicio en el
cuadro de herramientas, opción Modificar, y en el cuadro de edición de
sentencias que aparece, borramos el O que lleva por defecto esta función, y
seleccionamos en la flecha de idcntlficador, GetHighestDataLength, por
ejemplo. Se añade en el espacio en blanco del editor y se acepta, con lo que
queda incorporada como valor de Barra Inicio.
Vatiios a crear otras variables llamadas BandaS y Banda! que
recogerán el valor de las funciones ya señaladas para que vaya el proceso con
mayor rapidez. Les asignamos de principio un número muy alto a la primera,
99999, y un número muy bajo a la segunda, O, para que en la primera pasada
no se lleve a cabo ninguna operación.

0 Cü Vattabtes

i Q ♦ GítHighestOalatPrtce

i : ♦ Pjícc : PticeHigh
i É ♦ GetHigheítDalaLer>g»h

i i ^ ♦ PdO.0 .100000 )Long. 10

i ® ♦ GetLowestOatatPrice

:
♦ Pjice PiiceLow

1 é ♦ GefLow«»Da(aLenj}th

♦ P(10.0 .100000)Long: 10
i él ♦ BándaS
♦ Numéiico: 99999
;i ^ ♦
♦ Numético; 0
É Cu Función

i S ♦ GelH»gl%stOata

i 0 ♦ GetLowestDdta

La estructura del sistema es muy sencilla;

79
{ ( ( i i / i ! ! I f í / f t i f f 4 ( i

E S T R A T E G IA S D E IN V E R S IÓ N C O N V IS U A L C H A R T

Primero la condición precisa para acíivar la compra y derivada de ella


su orden,
Scguiuh la condición precisa para activar la venta y derivada de ella su
orden.
Tercero, la sentencia donde las variable BandaS y Bandal toman los
valores que les proporcionan en cada barra las funciones GetHighcst y
GotLowest.
La primera condición será que el cierre de la barra sea mayor o igual
que la BandaS. Si eso se cumple, se comprará al cierre. La segunda condición
será que si el cierre de la barra es menor o igual que el valor de la Bandal, se
venderá al cierre. Vamos al diseño, incluyendo también la sentencia de
asignación que he com entado en el párrafo anterior. Un elem ento
importantísimo será la buena colocación de los enlaces, de forma que todo el
conjunto quede conexionado y se asegure la circulación del flujo del cálculo.

Después de compilarlo pasamos a la verificación sobre el gráfico. Este


sistema presenta más problema que los anteriores para su comprobación, pues
debemos ir haciendo cálculos en bloques de diez barras que van eliminando
cada vez la más lejana y añadiendo una nueva.
La optimización se realizará sobre el periodo de búsqueda de los
valores que originan las Bandas, lo cual aparece en el cuadro de dialogo
señalando los números a analizar para la variable GetHighestDataLcnght y
GetLou eslDataLcnght y su incremento.

xo
J
• ( f i / i '( i ( f f ( f f t * f f / f f H 4/ f (

c e n F FR R A TA ^ Esta hoja debe insertarse


entre las pág. 80 y 81

Nombre. Bandas
Tipo. Seguimiento de Tendencia
T e m a . Ruptura de bandas que intentan representar puntos
significativos en un periodo de tiempo dado por parte de la cotización •
Indicadores. Ninguno
Variahlcs, BancíaS y Bandal, que recogen c) valor que devuelven las
funciones Ge ti lighesiData y GetLowcstData.
Funciones. GetHighestData y GetLowcstData
B arra Inicio. Según la longitud del periodo en que se calcularán las
funciones
Órdenes. Compra y Venta
Puntos entrada. Al cierre cuando el campo de la barra precio de cierre
iguale o supere a la Banda Superior
Puntos salida. Al cierre cuando el campo de la barra precio de cierre
iguale o se ponga por debajo del valor de Banda Inferior

SISTEMA CONSECUTIVOS
Buscamos en este nuevo sistema reconocer un determinado patrón o
modelo. Queremos calcular cuándo se dan determinado número de máximas
consecutivas, lo que sería la señal para plantearse la compra, y cuándo se dan
determinado número de mínimas consecutivas, que producirían la liquidación
de la posición a largo. Necesitaremos utilizar unos elementos que hasta ahora
no habían aparecido, y que son los bucles, necesarios cuando se quiere
comprobar la repetición de una determinada situación. En el caso que nos
ocupa, emplearemos uno de sus tipos, el llamado “Desde..Hasta”. Antes de
entrar a cada bucle, se crean unas variables de control de tipo boolean,
verdadero o falso, que toman una de esas formas tras llevar a cabo un número
de pasadas por el bucle, que se fijan en otra variable contador de tipo
numérico. Vamos por partes.
I Al entrar en el bucle el cálculo, la variable control vale “cierto” . En el
pude se hacen N pasadas (Desde i = O hasta N), mirando en cada una de ellas
si se da la condición que a continuación se expresa, es decir, que la máxima
del último día o última barra sea menor que la anterior.Ojo, que hay que poner
aquí lo contrario de lo que queremos buscar, pues en cuanto se produzca eso,
toma inmediatamente el valor de “ falso" y sale del bucle con esa etiqueta. Si
no es así, sigue el contador i funcionando y se repite la pasada, en total N
ESTRATEGIAS DE INVERSION CON VISUAL CHART

vcccs. Si al final de todas ellas no se da la condición, sigue la variable control


con el valor “cierto” y sale dcl bucle. La siguiente restricción se basa en el
valor que porta la variable, y a partir de ello se da la orden de compra, solo en
el caso de ser “cierto”, ya que significaría que se han producido las máximas
consecutivas requeridas.

Pasamos a la segunda unidad de! diagrama, el bucle que examina las


mínimas consecutivas. Se hace de la misma manera. Habrá que llamar de otra
forma a la variable control, por ejemplo controlB, y por si queremos después
optimizar la variable del número de veces de las pasadas de las mínimas
independientemente de las de las máximas, la llamaremos en vez de N, NB.
En la condición que hay debajo de! bucle ponemos, repito, lo contrario de lo
que estamos buscando, con objeto de que en cuanto se de alguna vez que no
son mínimas consecutivas, tome el valor de “falso” y salga asi dcl bucle.
Al comprobar el funcionamiento de este sistema nos damos cuenta de
lo siguiente:
Si ponemos un valor de N Igual a 3. entiende que debe haber cuatro
máximas seguidas porque el contador comienza en O tomándolo en cuenta
como la barra actual que compara con la I, después la 1 con la 2, la 2 con la 3,

Rt
( ( t j f '■f i ( \ i

__________________________ K S T R A T E G IA S D E IN V E R S IÓ N C O N V IS U A L C H A R T __________________________

y como el contador es hasta el valor de N, también la 3 con la 4, de modo que


entran en jucyo cinco barras para encontrar 4 máximas consecutivas. Si solo
queremos tres repeticiones, la manera de solucionarlo es poniendo en la
condición dcl bucle; “Desde i^O hasta N-T', Asi conseguimos que compare la
barra actual, O con la I, la 1 con la 2, y la 2 con la 3, entrando enjuego cuatro
barras con las que se buscan tres máximas seguidas, que es lo que queriamos.
Hay que hacer los cambios pertinentes también en la condición de salida:
“ Desde i=^0 hasta NB-1” . En el gráfico que a continuación rcHeja el
comportamiento del sistema figuran los valores de 3 para ambas variables (N y
NB).

Ya hemos probado cl sistema en una empresa, y ahora queremos


hacerla en oirás cuantas, pero es una pesadez tener que cambiar de pantalla,
insertarlo, poner sus parámetros. ¿Habrá alguna manera de poder matUcner
tamo los indicadores que situemos en el gráfico como los valores de las
variables del sistema forma que tan solo cambiando de hoja aparezcan los
resultados del mismo sistema pero en otro titulo cualquiera?.
Bueno, hay una solución relativamente aceptable. Ya tenemos
insertado el sistema correspondiente con sus parámetros y hemos colocado los
indicadores que necesitamos para un mejor seguimiento. Comprobamos los
resultados. Ahora nos fijamos en la parte superior izquierda, donde figura el
nombre de la empresa o Índice en una banda gris en la que figuran diversos
datos numéricos de interés. Si pulsamos en la Hecha a su izquierda se
despliega un cuadro con las diez últimas empresas que han ido visualizándose
en el espacio de trabajo.
I í ( , f i • i ■i / ' í í ^ ^ ‘ í ^ W ■<

___________________________ E S T R A T E G IA S D E IN V E R S IÓ N C O N V IS U A L C H A RT __________________________

Elegimos uno de esos valores, pinchamos en él y se consigue e! cambio


y la actualización adaptada de los resultados a la curva de precios de! nuevo
.titular de la hoja.

; M 13 5# * 18,05

P .E F S O l V P f
T U E A C E X
¿ C E R fc L IA
T E L E F O M IC A
P R O S E G U R
i-UíilliüaCSSB^
A C £ f l l W O ,<
BANnUTER
I B E X 35 P L U S
Z E L T I A _ _ _ _ _ _ _ _ _ _ _

Nombre. Consecutivos
Tipo. Reconocimiento de Patrones
Tema. Modelo Máximas consecutivas- Mínimas consecutivas
Indicadores. Ninguno
Variables, i, que es un contador; N y NB, número de veces que se
repetirá el bucle , el primero para detectar la condición alcista y el
segundo para la bajista; Control y ControlB, booTcanas, que
establecerán o no el penniso para llevar a delante las operaciones
Funciones. Ninguna
B arra Inicio. O
Órdenes. Compra y Cerrar Largo
Puntos E ntrada. Al cierre
Puntos Salida. Al cierre

83
ESTRATEGIAS DE INVERSIÓN CON VISUAL CHART

jSISTEMA SALIDAS

Volvemos a utilizar las inedias móviles como instrum entos de


seguimiento de la tendencia que se establezca, y en este caso serán dcl tipo
ponderadas, que también dan más peso a las cotizaciones más recientes. A
partir de este filtro con restriccioncs diversas vamos a ir aquilatando mucho
más las señales operativas y vamos a diseñar un escenario de salida doble para
posiciones solo a largo, alcistas ( por objetivos o por ruptura de la protección).
Cuando los sistemas se vayan haciendo complejos, recordad siempre que es
mejor crear unidades lógicas funcionales, que se vayan encargando de
diferentes tareas, y ensamblarlas todas después. Ello facilitará la labor.
Asimismo podemos ir probando el funcionamiento parcialmente para detectar
errores de forma más sencilla.
¿Cuál será el momento para entrar en el mercado? Queremos que
cuando se de una situación determinada - cruce de una media rápida a una
lenta y señalización de que el cruce se ha producido en esa barra - se
establezca un stop de compra. Si la situación es de no estar aún en ningún
negocio, la orden se activará, y en caso de ejecutarse, inmediatamente
estableceremos dos tipos de salida, o por un porcentaje de ganancia que
podremos ir variando, o por un cierre de la cotización por debajo de la media
móvil rápida cuando lleve un periodo de tres barras descendiendo.

JOliíí
R E P ^ O L YPF ' Fin u «i * \ íi t t H 2 3 S 9 A 1 B .K M 1 0 .0 0 m : tS 7 2 C: l a . e s f b '

e,50

e.oo

7 .5 0

'9 7
H <' >' W>T\ vatiot /T C 1• I

Vamos a crear una variable llamada Condición, de tipo Boolean, o sea.


Cierto o Falso en sus posibilidades, que se active del primer modo cuando se
produzca la situación deseada. Ahora tenemos que pensar dónde pondremos la
cara opuesta, pues en algún momento tendrá que variar. Quizás lo mejor sea
colocarla así cuando se haya llevado a cabo cualquiera de las dos salidas, con

84
ESTRATEGIAS DE INVERSIÓN CON VISUAL CHART

objeto de que ya no vuelva a entrar comprando si no ha habido de nuevo cruce


de medias en los términos que queremos.
EJ comienzo es fáciJ. SeJeccionamos eJ indicador de las dos medias
móviles ponderadas de distinto lapso de tiempo. Son AvWeightedData y
A v W eig h ted D atal, y activam os sus parám etros (D ataP eriodo y
DataOrigenDatos). Añadimos la función GetSwingHighData (obtiene el valor
de un pivot o punto más alto en un periodo concreto hacia atrás siempre que
ese pivot este flanqueado a ambos lados por un número igual de barras), que
servirá para señalar una posible resistencia, la cual tendremos en cuenta al
poner el stop, y crearemos una variable llamada StopC que recogerá ese valor
del pivot. Además añadiremos en una sentencia un identiñcador de la
situación que deseamos se produzca, y, como hemos explicado anteriormente,
lo reflejaremos como Condición = Cierto.
Por tanto, así queda esta primera sección, donde aparece la condición
multirrestrictiva de opcratividad, la fijación de un stop de compra en una zona
concreta y el identificador de situación. Pero, al igual que explicamos con la
función GetPivot, con GetSwing puede ocurrir que en el periodo que
pongam os para su búsqueda no encuentre ningún pivot con esas
características, por lo que devolvería con ese fallo un valor muy elevado, que
haría que se mantuviera la orden de compra hasta que Condición cambiara.
Por todo esto, es mejor colocar una condición antes del stop que diga que se
establecerá éste solo en el caso de que la función tenga valor distinto de la
variable Nulo, que es la que se usa a tal fin.
Los enlaces deben ajustarse de forma que todo el conjunto quede
conexionado adecuadamente para que el flujo pueda discurrir sin problemas.

85

i ' i
f ( n rry rw 'w

E S T R A T E G IA S D E IN V E R S IÓ N CO N V IS U A L C H A R T

La transcripción sería; “ Si el valor de la media rápida


{A\ Weiyhtcd! Data) es en la barra actual (no es necesario poner O para*
idenlificaria) mayor que el valor de la media lenta (AvWeightedData), y en la
barra previa (los témiinos 1,1 se refieren a la linea 1 del indicador y a la barra
K o sea, la anterior) la situación era la contraria, en ese momento y solo si el
valor de la función GctSwingnighData para la barra en uso es distinto de
Nulo, se establece un stop de compra en ese valor, y además la variable
Condición toma el valor de Cierto”
Pasamos a la segunda unidad o sección. ¿Cuándo y en qué precio
compraremos?
En cuanto a la primera pregunta, con objeto de que no haga la compra
nada más que cuando nos interesa y con ese stop, pondremos como requisito
sine qua non el que Condición = Cierto, es decir, que se haya producido el
corte de las medias, que es cuando toma ese valor, y además añadiremos para
evitar problemas con el funcionamiento de los stops, que la función
GetM arketPosition, que nos indica ia posición de mercado en que nos
encontramos (devuelve el valor O si estamos fuera de cualquier negocio, l si
estamos con compras y - t si estamos con ventas) esté igualada a 0.
La segunda cuestión la expresamos a través de una fómiula con la que
debemos familiarizamos por su uso repetido; StopC + StopC * PCompra /100.
PCompra (Porcentaje de Compra), para que sea optimizable ,1o
declararemos como variable parámetro y le daremos un valor inicial por
ejemplo d e l .

Queda por diseñar la tercera sección, la encargada de la salida, que a su


vez se divide en dos grandes partes. Siguiendo el flujo aparecería la primera
orden de cerrar largo, la que .se haría efectiva cuando se alcanzara un objetivo
de ganancia. Lo vamos a expresar con una orden de tipo limitada. El sentido
de la orden limitada es claro: cerrar largo equivale a una venta, y por ello, si la

86
f •( r . f r ¡ r r r r r r r r

ESTRATEGIAS DE INVERSION CON VISUAL CHART

compra que tenemos sigue en su trayectoria ascendente, no se puede colocar


ca stop, que sería en su mismo sentido, sino que como tiene que ser en sentido
contrario, será cuando iicgue a ese punto cuando se de orden de vender, lo que
supone posición contraria.
El modelo de redacción emplea la función GetEntryPrice (devuelve el
valor del precio en el que se comenzó el negocio, en este caso, en el que se
compró) reflejando ia suma de ese precio con un porcentaje de el mismo:
(íctlintrypnco + Gc(I£ntryPrice * PSalida/ 100.
PSalida, o sea, Porcentaje de Salida, será también optimizable, para
que cada inversor decida qué beneficio quiere obtener.
Junio a esta orden incluimos en una sentencia la asignación de Falso a
la variable Condición, con objeto de que tras haber liquidado posición por este
camino, quede libre para buscar de nuevo la situación operativa.

Por último, la segunda opción de terminación de negocio la haremos a


través de un stop utilizando la función opuesta a GetSwingHigh, que es
GetSwingLow (encuentra el valor del pivot de mínimas más bajo en un
periodo o longitud), con las fórm ulas que ya conocem os, o sea,
(ietSwingLowData - GetSwingLowData * PSalida2 /lOO , donde PSalida2 es
ol porcentaje de salida número 2, pero para que esta orden se efectúe, debe
haberse activado el seguimiento de la posición que hará la media rápida, lo
cual se producirá cuando ésta lleve tres barras seguidas descendiendo. ¿Cómo
expresar esto? Vamos a utilizar un bucle Desde..Hasta. Con este comando
realizaremos durante tres veces un cálculo, en este caso si el indicador de la
media de cada barra analizada es mayor que la anterior. Establecemos una
variable de control, que al principio tiene el valor de cierto y una variable
contador, “i”, que señala el número de vueltas. Si en el cálculo ocurre alguna
'oz que el indicador de la media es mayor que la barra anterior, ya no hay
descenso tres días seguidos, y el control toma el valor de falso. En un caso u
otro, que se termine el bucle siguiendo el valor de cierto, el flujo continua por
extrem o derecho del rombo, pero tan solo si sale con el valor de Cierto para
Control, podrá pasar la última barrera en foniia de condición inexcusable; Si el

87
ESTRATEGIAS DE INVERSIÓN CON VISUAL CHART

cierre está por debajo de la media móvil rápida, y además ésta lleva tres barras
bajando (Control = Cierto), será cuando se fijará la salida en stop.
Hay que aclarar, porque es fácil la confusión y se pueden producir
equivocaciones, que las extensiones que hay en la condición del bucle
referente a la comparación del valor de la media rápida, se refieren la primera
a la barra donde se da ese valor, y la segunda a la línea del indicador. Asi:

Indicador (AvW eightedíData, i -éste ese el contador que irá tomando


valores desde O hasta 2, y que representa la barra que compara el valor de su
media-; 1, éste es el número de línea del indicador, que como es una media
móvil tienen solo una línea)
Indicador (AvWeighted 1Data, i+1, representa la barra comparada en la
que se suma 1 para que sea siempre la anterior; 1, número de línea).
Como fmal de ese grupo de comandos y operadores que reflejan la
salida de protección (stop loss), colocaremos como en la salida por objetivos,
la sentencia que adjudica a Condición el valor de Falso.

En el primer gráfico observamos cómo a partir del cruce de medias,


busca el primer GeíSwingHigh en el periodo establecido y a partir de su
máxima genera con la fórmula que habíamos puesto el stop de compra, en
donde se hace la operación. Después liquida por objetivos, con un 8% de
ganancia.
ESTRATEGIAS DE INVERSION CON VISUAL CHART

En el segundo gráfico se puede observar cómo después de una bajada


de tres barras consecutivas del valor de la media rápida, busca el
GetSwingLow más cercano y establece un stop de salida de la posición.

UC AvWtiQhUd 39.90 F

■30,00

■20.00

■26.00

24.00

■22,00

'2Q.QD li
'd Ic
Htwuj

Nombre. Salidas
Tipo. Seguimiento de Tendencia.
T em a. Situación comparativa de dos indicadores entre sí generando
stop de compra
Indicadores. AvWeighted y AvWeightedl
Variables. StopC, para tomar el valor del stop de compra; PCompra
como coeficiente multiplicador para la fónnula de compra; PSalida,
coeficicnte multiplicador para la fónnula de cerrar largo en una de sus
posibilidades; PSaIida2, lo mismo para la otra opción; Control, de tipo
boolcan; i como contador; Condición, señalizando veracidad o falsedad
de una situación concreta

Funcíones.GetSwingHighData,GetSwingLowData, GetMarketPosition
y GetEntryPrice
B arra Inicio. O
Ó rdenes. Compra y Cerrar Largo
Puntos E n trad a. En stop con la fórmula StopC + StopC * PCompra /
100
Puntos Salida. Limitada GetEntryPrice + GetEntryPrice * PSalida. En
stop GetSwingLowData - GctSwingLowData * PSalida2 / 100

89
I I í ( \ ( i ( I w 1t f 't <I t u 'f '( }t . t I t i K

F .ST K A T K G IA S D R tNVFCfíSIÓN C O N V IS U A L C H A R T

SISTEMA FLUCTUACIÓN

Con csk* sistciiKi intcnUiiiios uprovcclinr los periodos do tluctuación


que se d;in eiilrc soportes y resistencias a menudo. La idea consiste en comprar
cuando la cotización llega al soporte, apostando por un rebote en esa zona. Si
el movimiento sigue, cerraríamos largo un porcentaje por debajo del pivot
interior. Por el contrario, hariamos una venta cuando el precio llegue a la
resistencia, apostando por la vuelta a la zona operativa. Si sigue el movimiento
y estamos vendidos, cerraríamos corto un porcentaje por encima del pivot
superior. Utilizaremos los indicadores denominados PivotUp y PivolDovvn
para localizar estos puntos. Estamos hablando, por tanto, de un sistema que se
inscribiría en el grupo de los de AntiTendencia, donde hay que tener siempre
buenas protecciones contra posibles movimientos adversos. Todo esto lo
combinaremos con objetivos de ganancia determinados que pennitan recoger
ios beneílcios que se obtengan y esperar otra oportunidad.
Señalaremos el punto exacto o situación concreta de entrada cuando la
mínima o máxima en cada caso toquen o superen los puntos extremos de la
zona que identifican los indicadores de pivots, pero el cierre no sobrepase esos
limites. Vamos a ver los diagramas de forma paralela para la operativa
compradora y para la vendedora en cuanto entrada en negocio.

Una vez que hemos establecido las condiciones necesarias para que se
pueda originar el mandato de acción, le añadiremos el subsistema de salida.
Utilizaremos la función CjctMarketPosilion para saber qué tipo de operación es
la que hay acli\a, para en función de ello lijar dos tipos de liquidación: por
objeti\os o por seguridad. Si se trata de una compra, primero colocamos una
orden de cerrar largo limitada en la clásica fórmula GetEntryPrice +
GelEntr> Price * Porc / 100 con objeto de que si se da la ganancia prevista, se
aproveche recogiéndola.

90
i 1 , ; I I ^ ■. )T id i / ■< . < ' í I . ( ¡ r , f ¡ f - f ,f ^

__________________________ K S T R AT R G IA S DR: IN Vr.RSK^N C O N V IS O A I. C H A RT__________________________

También se coloca a continuación una orden de salida por protección, y


esta sí que se coloca en stop porque supone que tras la compra, la cotización
Jia ¡do en contra, va dcscendiemlo, y en ese mismo sen litio es en el que so hace
la orden de vender. La fórmula es Indicador PivotDown-lndicadorPivotDown
* Saf (esta es una variable de seguridad donde podemos aunientar o disminuir
el riesgo que queramos correr) / 100.
Por supuesto, en el caso contrario, es decir, si GetMarketPosition es
igual a -1, que quiere decir que hay una venta activa, se sitúan las mismas
órdenes de consecución de objetivos y de protección, pero cambiando los
términos. Donde antes era cerrar largo ahora es cerrar corto y donde antes
ponía IndicadorPivotDown, ahora figurará IndicadorPivotUp.

■-1

1'
[ Cen« Codo 1Lnísda G«EnfyPlcfrCetn(riftt«‘p«/10fl|

Cw» Calo 1Stop


l«fc*MPM3rurcai3|.lr>*:*t.ifP1vaTUPO*larS^/100

Después de unir adecuadamente con los enlaces oportunos todos estos


elementos, echamos a andar el sistema, pero a la hora de la comprobación y
vcriñcación de resultados, nos damos cuenta de que hay un problema, y es que
mientras que los objetivos los ejecuta bien, las salidas de protección suelen
perder más.de lo previsto. Tras analizar exhaustivamente el diagrama y el
gráfico con los negocios, percibimos que los valores de los Indicadores
PivotUp y PivoiDown en el momento de la compra o de la venta inicial no son
los mismos que a la hora de salir, y que la orden que hemos puesto va
cambiando en función de la variación de esos valores. Por tanto la solución
debe pasar por lograr un anclaje de lo que valían en el momento inicial, en
cuya referencia se establece la cantidad posible de pérdidas permitida. Para
que no se nos olvide esto, crearemos una variable a la que llamaremos
precisamente Anclaje, añadiéndole 1 o 2 según se refiera a uno u otro
indicador, y en una sentencia la colocaremos en la primera sección junto a la
orden de compra o a la orden de venta, de fonna que cuando éstas se ejecuten,
inmediatamente los valores de los indicadores en ese momento queden fijos
para el cálculo de la salida. Sustituiremos, entonces, en la orden de cerrar corto

91
ESTRATEGIAS DE INVERSIÓN CON VISUAL CH Aírr

O largo, los términos Indicador... por el de las variables Anclaje 1 o Anclaje2


correspondientes.

92
ESTRATEGIAS DE INVERSIÓN CON VISUAL CHART

En el siguiente gráfico, sobre los indicadores de pivots'con cinco barras


a cada lado en los dos casos , apreciamos dos compras, una que se resuelve
'con un objetivo del 3 por ciento y otra que liquida la posición por ruptura del
espacio de seguridad del 0.3 por ciento.

Y aquí, en otra empresa, podemos ver cómo se producen tres


operaciones exitosas por objetivos, en este caso con un 5 por ciento de
ganancia.
I ' I t 'i f :I n ' (

ESTRATEGIAS DE INVERSIÓN CON VISUAL CHART

Nombre: Fluctuación
Tipo. AntíTcndcncia
T em a. Situación de los valores dcl campo de la barra respecto al
indicador de Pívots
Indicadores. Indicador PivotUp y PivotDown
Variables. SaC que representa el coeficiente multiplicador de la
fórmula de los stop loss; Porc, que multiplica la fónnula dcl objetivo
por ganancia; Anclaje 1 y Anclaje2, que toman el valor de los
indicadores en un momento dado para que no se actualice
Funciones. GetMarketPosition y GetEnlryPrice
B arra Inicio.O
Órdenes. Compra y cerrar largo. Venta y cerrar corto.
Puntos E ntrada. Al cierre si el indicador PivotUp queda entre la
máxima y el cierre de la barra o si el indicador PivotDown queda entre
la mínima y el cierre
Puntos Salida. Cierre de protección a largo en el valor dcl indicador
PivotDown reflejado en la variable Anclaje 1 menos un porcentaje de sí
mismo, y a corto en el valor dcl indicador PivotUp reflejado en la
variable Anclaje2 inas un porcentaje de si mismo

SISTEM A RSlj
Hn este sistema utilizaremos un indicador muy (amoso y de uso
extendido para establecer la tendencia con la que actuará el sistema. Se trata
dcl RSl, o Índice de fuerza interna relativa que muestra un valor. Fue dado a
conocer por J. Welles Wilder en su libro “New Concepts In Technical Trading
Systems” en 1978. Forma parte del grupo de indicadores a los que se conoce
como osciladores, pues en su movimiento la línea que lo representa oscila
entre los valores del rango establecido. Analizado generalmente en un periodo
de 14 unidades del tiempo con que las barras estén trabajando, se crean
normalmcnle bandas para sus representación gráfica y seguimiento más claro
en .^0 y 70, pues en la zona entre ambos valores se encuentra la mayor parte
del tiempo. Lo que calcula es la relación comparativa entre la cantidad de
subida y la cantidad de bajada que experimenta el precio de un valor en el
periodo estudiado, y a partir de ello se va representando en una linea, que es
interpretada de distintas formas: buscando divergencias con los precios,
intentando localizar alguna figura gráfica técnica, o, como va a ser el caso de

94
t i , t M ■( . i ^ ■f ^ ^ t r f
( )í ■( >' w

R S T R A T B O IA S D R IN V E R S IO N C O N V tS U A L C H A R T

cslc sistema, estimando que si en su oscilación se sitúa por debajo o encima de


puntos extremos, podría señalar posiciones de sobrevenía o sobrecompra
(etapas con movimiento muy rápido del precio que pueden avisar de posibles
cambios en la dirección que sigue la curva de cotizaciones al agotarse el
impuiso).

w 'il'i'jgywiw i - lui *i
» T E L Ero m C A - rin d< «<« 1 H 23 98 A; 12.44 M: 12.71 in: 12.28 C. 1270 P jV T T V 3i _ . Q »
rnAíü"
30.00

28.00

t'/ 26,00

24.00

22.00
R SI_T E FM C ftSI 43,27 BJO djSu p 70,00 Bjndjtnl:3Q.OO f 33 iO
TWDU
•{iD3
0.00
eti 'Mar ’Abf
hHIMH 'nJ 2i

El “tempo” de entrada y salida en el mercado vendrá determinado de la


siguiente fonna: Compraremos cuando el valor del RSI se ponga por encima
de 50, que es una linca intennedia y venga de posición de sobrevenía, es decir,
de haber estado por debajo de la banda inferior, del valor 30. Obviamente
venderemos cuando se produzca lo contrario, que se ponga por debajo de 50
viniendo de posición de sobrecompra, de haber estado por encima de la banda
superior, es decir, del valor 70.

95
KSTRATEGIAS d e INVERStON CON VISUAL CMART

Vamos a emplear en principio para liquidar los negocios, sección de


salida, alguna función de tiempo, con objelo de ver la utilización de nuevos
elementos. Así cerraremos las posiciones si peniianeccmos en el negocio más
de un número de barras determinado, que pondremos como parámetro,
inicializándolo en 15.También cerraremos si son las 17.30 horas, cuando acaba
el mercado, con objeto de no dejar ninguna posición abierta para el día
siguiente.
Este tipo de salida presenta, no obstante, un grave problema, y es que
adolece de reflejar un buen stop de protección, un control del riesgo interno,
pues en ese lapso que hemos fijado, la posición puede ir en contra con
resultados tremendamente negativos. Buscaremos al final una alternativa más
segura.
La dificultad más ostensible podría ser: ¿cómo plasmar la situación del
RSl proviniente de las zonas extremas? Esto se puede hacer mediante lo que se
llama una Bandera, es decir, creando una variable de control, en este caso de
tipo boolean, que se vaya calculando siempre y devuelva el valor de cierto o
falso que utilizaremos en las condiciones.
Así que com enzam os.Prim ero añadimos el indicador del RSl
seleccionándolo en el catálogo que se despliega en la carpeta de indicadores.
Después creamos dos variables, una de tipo boolean, que llamaremos Control,
y otra de tipo numérico, N, que comenzará valiendo 30 y que será optimizable.
No está de mas que añadamos una tercera variable, que será BandaM, que
viene a reflejar el valor medio del RSl entre 30 y 70, el punto 50. Ya se sabe
que se dice que en el medio está la virtud.
Pasamos a las condiciones. La bandera encargada de verificar cuando
está operativo el RSl porque viene de las posiciones extremas queda así:

Pero hay que tener cuidado al conexionarlo, porque queremos que


siempre se calculen ambas condiciones. Por tanto et flujo deberá pasar por
ambas y además deberemos después dejarlas independizadas» como un sector
que sea autónomo funcionalmente
ESTRATEGIAS DE INVERSIÓN CON VISUALCMART

¿Cuál es la solución? La clave está en los enlaces que establezcamos.


Se puede unir en horizontal o en vertical, pero en ambos casos el cálculo debe
asegurar su continuidad y no quedarse estancado. En el siguiente gráfico
podemos ver cómo se hace.

La siguiente sección es la que señala los requisitos para comprar o


vender. Así que aquí utilizaremos el Indicador del RSI, la variable BandaM
(50) y la variable de control booleana (cierto/falso), para poner la condición de
que si el valor del RSt está por encima de la BandaM, que es 50 y control es
cierto, o sea, que viene de haber estado por debajo de 30, comprar al cierre, y
si se da la circunstancia de que el RSI está por debajo de 50 y además control
es falso, o sea, que viene de haber estado por encima de 70, entonces vender a!
cierre. Hay que fijarse bien por ejemplo en este gráfico que viene a
continuación, donde queda sin enlazar una de las salidas de una condición.
Para que el cálculo pueda seguir, debe unirse con la siguiente sección tanto la
orden de compra como la de venta, con lo que vuelve a unirse el flujo que
antes se habia separado.

Bueno, ahora seguiremos con las conexiones. Por lo pronto vamos a


desarrollar la tercera parte, la que controlará la liquidación de las compras y
ventas. La idea era terminar el negocio cuando hubiera pasado un número
determinado de barras, optimi/able, o cuando fueran las 17..10 horas, fíicn.

97
f < f f r i f t !

{
ESTRATEGIAS DE INVERSIÓN CON VISUAL CHART

hay que añadir entonces las funciones GetBarsSinCeEntry, que nos devuelve la
inf^orinación dcl número de barras que han pasado desde que un negocio se
empezó, combinándola con la variable Num (Número), para optimizar la
función; y Tiempo, que nos da en formato número el valor de la hora que tiene
estampada la barra.
Por tanto la condición sería; Si Tiempo=1730 (obsérvese cómo se
escribe el formato de la hora) O GetBarsSinceEntry tiene un valor igual que el
de la variable Num. entonces cerrar largo al cierre o cerrar corto al cierre.
Vamos a ver cómo quedaría todo cerrando el flujo del diagrama. Al unirse la
segunda con la tercera sección, el resto del código anterior se hace
independiente de esta unidad, y así lo que viene después se desarrolla
autónomamente.

Asi que como hemos podido ver, el sistema se estructura en base a tres j
unidades: j
1/ Bandera que reconoce situaciones de sobrecompra o sobrevenía,
2/ Subsistema de entrada.
3/ Subsistema de alida con utilización de criterio de permanencia un
número de barras y de liqi idación Fin de Día.
Vamos a intentar nejorar sus prestaciones con nuevas ¡deas, como
serian:

* Optimizar el periodo de cálculo del RSI. Para ello hay que situarse en
el cuadro de herramientas, y pulsar con botón derecho sobre el indicador
RSI, tras lo que se selecciona la opción Activar/Desactivar Parámetros, y 'j
ya podemos optimizar este aspecto, pues no tiene que ser siempre
necesariamente el periodo de 14 días estándar el que se utilice.

98
í (

ESTRATEGIAS DE INVERSIÓN CON VISUAL CHART

• El valor que indique sobrecom pra o sobrevenía podría ser


optímizabíe en vez de dejarlo fijo en 70 y 30. Para ello crearíamos unas
variables llamadas por ejemplo X y Z que recogerían esos valores.
* Restringir la condición en el sentido de exigir que desde que se
produce la estancia de la línea de RSI por debajo o por encima de los puntos
críticos y después se produzca el corte a la Banda Media de 50, solo transcurra
un corto número de barras, no como ha ocurrido cuando hemos comprobado el
funcionamiento de los negocios, en los se aprecia que a vcccs se producía un
estancamiento largo del RSl antes de cortar a Banda M. Es más lógica esta
variación, pues va relacionada con la idea de movimiento rápido de la
cotización. Los cambios a introducir son:

- la presencia de un contador que se pondrá a cero cuando se de la


situación que recoge !a bandera, y se irá actualizando solo cuando el indicador
inicie su camino hacia Banda Media

- una variable de nueva creación que llamaremos NúmeroBarras, y que


será uno de los factores incluidos en la condición para que ésta sólo se tenga
en cuenta si el contador está por debajo o iguala su valor .

Así quedarían las dos primeras secciones con estos últimos cambios:

Primera unidad.
La bandera que ya conocemos, con cl añadido del contador y do las
variables de señalización de puntos considerados clave.

99
RSTRATKGIAS D E INVERSIÓN CON VISUAI. CHART

ScQiiníía unidad.

Condiciones y órdenes de compra y venta más actualizador del


contador.

V>nl41Cora

Conl«dor«Cona<lDi*11

En cuanto a la tercera unidad, tenemos que decir que evidentemente


los criterios temporales usados no son fiables, pues no tienen ningún elemento
de seguridad mientras se da el número de barras de permanencia o mientras se
llega a las 17.30, siendo más lógico en caso de que se insistiera en seguir con
esos criterios, añadir stops de protección. Por ejemplo, podríamos separar las
condiciones de Tiempo = 730 de la de GetBarsSinceEntry = Num y poner en
el caso de que aún no haya llegado el número de barras dcl negocio al de
permanencia, que se cierre la posición con los GetLowest y con los
GctHighcst según sea compra o venta..
En la nueva versión m ejorada prescindirem os de los criterios
temporales y dejaremos la protección simple:

100
ESTRATEGIAS DE ÍNVERSIÓN CON VISUAL CHART

Desde que el valor del RSI entra en la zona inferior a 30 el contador se


pone a O y sigue así mientras se da la situación, pero en cuanto sale de esa
zona y se encamina a la Banda Media, o sea, 50, ya empieza a añadir. En este
caso pasan siete barras, estimándose que ese movimiento en menos de un
plazo que hemos determinado y optimizado, es señal de fortaleza en el mismo,
en este caso alcista. Para la venta sucede el mismo mecanismo pero desde la
posición superior a 70 y cruzando a la Banda Media desde ahí en el plazo
establecido.
Nombre. RSI
Tipo. Seguimiento de Tendencia
Tcm a.Situación comparativa del indicador respecto a su banda de
oscilación
Indicadores. RSI
V ariables. BandaM, que representa una banda media del oscilador:
Num, que representa un número de barras de permanencia en el
negocio; Control, de tipo booleano; Contador, para ir recogiendo el
número de barras que transcurren: N um eroBarras, con un valor
determ inado de barras que no debe superar Contador para la
operatividad; X y Z, que representan el valor por debajo o por encima
del cual se produce una preseñal de actuación; RSIDataPeriodo, para
variar la longitud del cálculo

101
í 7 < ( ( *

\
( f

ICSTIÍATKGIAS l)K INVKRSIÓN CON VISUM- CIIAlíT

O iMiiiciones. GclBarsSinccEntry, GctMarkctPosition, Getf.Iighcst y


(jclLowcsl
B arra Inicia. El valor de! periodo de cálculo dcl RSI
Ó rdenes. Compra y Venia
Puntos E ntrada. AI cierre cuando se den las condiciones requeridas
P untos S alida. Al cierre según hora y según número de barras de
peniianencia dentro de un negocio en una de las variantes, y en stop en
los valores de GetHighestData y GetLowestData en otra variante

ISISTEMA ClERRESi
Puede que los cierres tengan algo que decir. Planteamos lo siguiente: si
se da un número de veces un cierre superior al de la barra anterior y después es
inferior, aprovecharemos para comprar, estimando que se produce un descanso
en el movimiento alcista, y cerramos la posición con un objetivo o si va la
cotización en contra de la posición, en los GetLowestData. Por el contrario, si
se da un número de veces un cierre más pequeño que el de la barra anterior y

Se puede apreciar en la zona señalada


seis cierres consecutivos mayores que et
anlenof y después un cierre por d e b ^ i
del úDinio, se ñ ^ de compra

• if

T aqu vm os la skiacim C9t*ana. se»


cienTS consecjivos m tnont que el de l«
bans preceiicrfc y un cieñe supenor a
cofAnuación

102
í ( f r f f r r

F.STHATÍvOIAS DK tNVKFÍSlON CON VIStMI, CIIART

clcspuós es superior, realizamos una operación de venta, y de la misma forma


que en el c;iso de h compra, ecrrarcihos corto con un objetivo de ganancia o
con los Gcll ligliestüaia.
Para comprobar la existencia de estos modelos repetitivos de cierres
consecutivos alcistas o bajistas, tendremos que emplear en la primera sección
dos bucles “ Mientras”. Crearemos las variables X y Z en cada caso que
tt)marán el valor correspondiente después de pasar por el bucle. Así, X estará
continuamente haciendo pasadas mientras se de la condición que hemos
puesto, que el cierre de la barra anterior sea mayor que el de la anterior más
uno, y para que pueda continuarse el cálculo, añadimos una sentencia debajo
que haga que X tome el valor de X+1. Así el contador aumenta y sigue
examinando adecuadamente las posiciones de los cierres. Por lo que respecta a
los cierres bajistas, el bucle es igual y cambiamos todo lo que antes era X por
Z. También varia la condición, aunque solo en el signo que lleva. Al final de
los bucles, los valores que porten X y Z pasan a las nuevas variables Vx y Vz.
lil hecho de iniciar X igualándolo a 1 es debido a que se compara desdo la
barra anterior a la actual porque esta se reserva para la condición de tener
comportamiento distinto en el cierre respecto a los anteriores.

La segunda sección o unidad independiente es la que se encargará de


establecer las condiciones para dar órdenes de compra y venta. Crearemos una
variable que se llamará VecesA y otra que se llamará VecesB -Veces Alcista,
Veces Bajista-, en referencia a las cuales compararemos la evaluación que
obtengan X y Z después de pasar por los bucles de cálculo, y que como hemos
dicho se reflejarán en Vx y Vz.
Por tanto, la condición de compra será que el valor de Vx sea mayor o
•gual que el valor de VecesA y además el cierre de la barra actual sea menor

t03
ESTRATEGIAS DE INVERSIÓN CON VISUAL CHART

que el anterior. Para la venta el valor de Vz debe ser mayor o igual que el valor
de VeccsB y además el cierre de la barra actual debe ser inayor que el anterior.

Y por último tendríamos la tercera sección, a la que adjudicarem


finalidad de liquidar las posiciones, tanto por un objetivo de ganancia como
por salida rápida de protección con los niveles de soportes y resistencias que
representan los valores de las funciones GetLow^est y GetHighest. La orden de
salir con un objetivo será limilada, pues como ya sabemos, en stop la haría
inmediatamente sin esperar al tanto por ciento marcado, que viene reflejado en
la variable Porcentaje, que será optim izable. Se usará la función
GetEntryPrice, que nos marca el precio de entrada en el negocio, y con una
simple fórmula típica, que sería GetEntryPrice más o menos, según el ca^o,
otra vez GetEntryPrice por Porcentaje dividido entre 100, dejamos cubierto
este aspecto. Para saber en qué momento nos encontramos, es decir, fuera del
mercado, comprados o vendidos, según la terminología al uso, echaremos
mano de la función tan socorrida de GetMarketPosition.

C*i«L«g(>>Sliv

C aw L«go 1

104
ESTRATEGIAS DE INVERSIÓN CON VISUAL CHART

En el gráfico que aparece a continuación se puede apreciar una compra


resuelta con liquidación de un 10%'de objetivo de ganancia, una compra que
liquida la posición al tocar el stop de protección establecido en el valor de la
función GetLowestData de los últimos 10 días, y una venta que se cierra
también en el valor de su stop de protección, fijado en la función
GetHighestData.

B A N K JN T E R fin 4 ij 1 H M M A ijg . to M J 8 .M n . 3 8 .8 0 C ; j a . M F I ; . . . V ; 19- i

1^.00
te.oo

17.00
t

16.00

15.00

11.00

Nom bre. Cierres


Tipo. Reconocimiento de Patrones
T e m a . Modelo basado en varios cierres consecutivos superiores o
inferiores cada uno a los de la barra anterior junto a un subsiguiente
cierre con retroceso
Indicadores. Ninguno
Variables. X y Z contadores para los bucles; Vx y Vz, donde
asignamos el valor que obtengan después de cada buclc Z y X;
V cccsA lcista y V ecesB ajista, que representan el núm ero de
repeticiones que debe tener el modelo para que entre en opcratividad;
Porcentaje, coeficiente multiplicador de fórmulas de stop limitadas
Funciones. GetLowestData, GetHighestData, GetMarketPosition y
GetEntryPrice.
B arra Inicío.O
Ó rdenes. Compra y Cerrar Largo .Venta y Cerrar Corto
Puntos Entrada. Al cierre sí se cumple el patrón buscado
P untos S alida. De dos formas tanto para la compra como para la
venta: por objetivos en orden limitada y por protección en stop

tos
íiSTKATKQIAS DE INVIiKSlON CON VI.SUAl. CIIAHT

¡SISTEMA ACUM ULACIÓN

En la parte inicial de este trabajo hemos hablado de la modalidad de


casar órdenes que usa el programa por defecto, que es la de Entrada sin
acumular, en la que solo se ejecutará una orden en cada posición, es decir, si
hay una compra hecha no se hará otra hasta que se haya liquidado la primera
con una orden de cerrar largo o con una orden de venta. Por lo tanto, se
descartan todas las órdenes en el mismo sentido de la qiie se haya ya
ejecutado. Pero hay otras tres modalidades, que son: acumular por etiqueta,
acumular siempre y mezclar etiquetas.
Vamos a diseñar un sistema en el que se utilice la segunda modalidad,
es decir, acumular por etiqueta. La idea en la que nos basaremos será la
formación de dos bandas, que determinarán los GetHighestData y los
GctLowestData de dos periodos distintos de tiempo, y la compra o venta de l
unidad -contrato, acción- al sobrepasar en el sentido correspondiente cada una
de esas bandas.
Así que nos ponemos manos a la obra. En primer lugar añadimos las
funciones que acabamos de nombrar y activamos sus parámetros. De entre
ellos, podemos desactivar de principio los de Price porque ya están
calculándose sobre la máxima y la mínima, como corresponde. Con respecto a
los Lenght, o sea Longitud de barras en las que buscar los valores máximos,
podemos también desactivarlos porque los asignaremos a variables que los
representen. En este caso, esas variables serán llamadas PeriodolU p,
PeriodoID ow n, Periodo2Up y Periodo2Down, a los que pondremos los
valores en principio por ejemplo de 20 y 60.
Este sistema es otro ejemplo de diseño sin necesidad de establecer una
condición, ya que como veremos, solo usaremos sentencias y órdenes de
compra y venta. La sentencia que encabeza el diagrama es la que hemos
comentado ahora mismo, para actualizar la variable antes de usar la función,
ya que la vamos a usar con dos periodos distintos. A continuación, y
relacionada con ella, la orden de compra y venta, en stop, en los puntos de
referencia. Ojo, al poner estas órdenes en su cuadro de diálogo, todo se
cumplimenta como siempre, pero al llegar a la casilla etiqueta, hay que
colocarle un nombre, el que se quiera, pero que sean diferentes en los distintos
casos. Por ejemplo, hemos nombrado a la compra del primer periodo como C1
y a la venta del mismo periodo V 1.
Como la segunda sección del sistema es idéntica a la primera, y solo
cambiará el nombre de la variable del periodo y la etiqueta de las órdenes, lo
que hacemos para ahorrar tiempo es seleccionar todo el bloque, copiarlo y

■r
106
i i » ( f f f f p r í f t (• t 0 ^ 4 t * ( f » 0 (

__________________________ E S T R A T E G IA S D B [N V K R S lO N C O N V IS U A I, C H A R T ________________________ _

i pegarlo. Como queda encima de lo anterior, lo arrastramos un' poco más abajo.
Ahora cambiamos en la sentencia el nombre de las variables y en las órdenes
'd e compra y venta ponemos la etiqueta de C2 y V2 respectivamente. •

Enlazamos las dos secciones, y compilamos e insertamos el sistema.


Pero no se producen distintos negocios en el mismo sentido, solo una compra
y una vent& cada vez, Claro, es que las operaciones responden a la modalidad
que hay por defecto, Ja de entrada sin acumular. Para cambiarla, pinchamos en
la flecha de uno de los negocios que han salido y cuando ésta se marca con un
cuadradito, pulsamos el botón derecho del ratón y seleccionamos la opción
Configurar objeto, eligiendo dentro de su cuadro la pestaña de Ajustes. Nos
situamos en la casilla de Método de entrada y marcamos “Acumular por
etiqueta”. Aplicamos y enseguida vemos que ha cambiado el escenario de los
negocios. Ahora aparecen varias compras o varias ventas seguidas, incluso en
una misma barra, aunque en precios diferentes.
Para com prender un poco el m ecanism o que se lleva a cabo
observemos el gráfico siguiente: Nos situamos en dos negocios de compra que
hay seguidos porque las condiciones se han dado en esos puntos. Tras ellos
aparece una venta. Esta etiqueta de venta supone que cierra las dos posiciones
de compra anteriores y además deja abierta una venta por un número de

107
ESTRATECJAS OR INVERSIÓN CON VISUAL CHART

contratos equivalente al especificado en la etiqueta. O sea, que si la venta


estaba prevista por una unidad, se hace con tres, porque dos servirían para
liquidar la posición a largo y otra para abrir posición a corto

ACERINOS- Ftn U í i t 1 tfiu H: 23 M A: SJflO M 3 2 2 i I»- 31,70 C. 32^5 f i" V; 108

■28.00

Nombre. Acumulación
Tipo. Seguimiento de Tendencia * i
Tema.Creación de bandas de distinto periodo de tiempo que rodean a
la cotización
Indicadores. Ninguno
Variables. Periodo lU p, PeriodoIDown, Periodo 2Up y Periodo
2Down, en las que se recogen el número de barras hacia atrás en que
buscar los valores que devuelven las funciones GetHighestData y
GetLowestData para formar las Bandas
Funciones. GetHighestData y GetLowestData
^ a r r a Inicio. Ai menos tendrá que dejar pasar el número de barras que
represente la longitud de las funciones
Órdenes. Compra y Venta
Puntos E ntrada. En stop en el valor de las funciones
Puntos Salida. En stop en el valor de las funciones ^ É.

108
ESTRATfíGtAS DE INVERSIÓN CON ViSUAL CHART

^ISTEM A RETROCESOSi
Vamos a desarrollar una idea algo más compleja. A partir del
establecimiento de unas variables llamadas Techo y Suelo sobre la barra, que
se actualizarán solo en función de que sean superadas por las máximas o las
minimas de cada barra, pondremos un stop de compra utilizando el valor de
Sucio más él mismo por un porcentaje dividido entre 100, y para el de venta la
misma fórmula pero utilizando el valor de Techo menos él mismo por un
porcentaje dividido entre ICO. Se trata de aprovechar un posible rebote de la
cotización en cualquiera de los dos sentidos y aprovechar el movimiento desde
el principio pues tenemos fijados unos stops de entrada. Hay que tener cuidado
do que el porcentaje sea lo suficientemente operativo para no producir
compras y ventas en la misma barra.

Stop <íe compra Stop de compra COMPRA

Teciic

Stop de venta Stop de venta

El principal problema con el que podemos encontramos es que si se va


agrandando la diferencia espacial entre Techo y Suelo sin que haya entrada en
negocio, puede haber distorsiones en la operativa. Por ello habrá que ir
combinando anclajes y actualizaciones de las variables. Por ejemplo, una
sección o bandera que se encargue de ir comparando en cada barra Techo y
Suelo con las m áxim as y m ínim as respectivam ente, y la función
CiciMarketPosition para que cuando se haga una compra o una venta, en ese
momento se actualice la variable que corresponda.
Primero declaramos las variables que vamos a necesitar, en principio
Techo y Sucio, con el botón derecho del ratón, opción Añadir, sobre la carpeta
de herramientas “Variables” en el entorno PDV. También declararemos el
parámetro Porcentaje para separar más o menos los stops de entrada respecto a
las posiciones del momento, y seleccionaremos la función GetMarketPosition
en la carpeta de Funciones.
Con estos elementos podemos empezar a diseñar nuestra estrategia.
Según lo que hemos pensado, tendremos tres secciones: una dedicada al

109

t i-
( ( t t i i < í 1 f f I f f ( / f f f f ( f f í i i i é f 4

^ _____________________tüSTKATCC.IAS OR INVKR.Sf^N CON VISUAl. CllART____________________

control de Tccho y Suelo; otra para las órdenes de compra y venia en los stgps
precisos; y por último otra que actualice en ef momento de entrar en negocio la
variable que estuviera más separada de! sentido dcl mismo.
La primera sección deberá, ser una bandera que calcule siempre el
valor de las variables techo y suelo. No sabemos cuándo se producirá la vuelta
de la cotización, por eso vamos acompañando tanto ai techo como al suelo. Si
la mínima va siendo inferior el suelo se actualiza y toma ese valor, y si la
máxima va siendo mayor, es el techo e! que se actualiza.

Hay que tener cuidado al inicializar estas variables porque si ponemos


Suelo a O nunca entrará enjuego ya que no se cumplirá la condición, así que lo
inicializamos a 9999. Techo se inicia a O por la misma razón. Si pensamos en
la primera barra, vemos que ambas condiciones se cumplen y por ello Techo
será a partir de ese momento la máxima de la barra y Suelo la minima de la
barra. Con esos valores se iniciarán los cálculos. Al cerrar los conectores, esta
sección se convierte en unidad independiente.
Una segunda sección se ocupará de establecer los stops de las órdenes
de compra y venta. Aquí utilizaremos la fórmula Suelo+Suelo*porcentaje/100
en el primer caso, y Techo-Techo*porcentaje/100 para el segundo.

110
í ^ f f é ( < ^ f f f /

ESTRATEGIAS DK INVERSIÓN CON VISUAL CHART

Por Último, una tercera sección será la encargada de actualizar en el


momento en que se está dentro de un negocio a Techo y Suelo si se separan
mucho. Si hemos comprado, Suelo tomará cl valor de la mínima de la barra en
que se ha hecho la operación, siguiendo este mecanismo en tanto dure la
compra, y actuando entonces la primera sección para actualizar Techo. Y en cl
caso de ia venta lo que se hace en cuanto se produce es que Techo toma cl
valor de la máxima de esa barra, siguiendo durante toda la venta así, y
encargándose entonces la primera sección de actualizar Suelo.

Para mercados con gran volatilidad, podríamos cambiar dentro del


mismo sistema la segunda sección, y así incluir el indicador de ATR, que
como sabemos proporciona una media móvil de la amplitud de cada barra
tomando en cuenta la influencia del cierre anterior en un periodo detenninado.
De esta manera colocando los stops en función del ATR los márgenes se
sitúan en proporción a la amplitud de movimiento de la cotización:

Compta 1 Stop
Sueto*lndicadof(AvT fugRangeDatalTotccnlaie

V e ría 1 Síop
T echo-)ndicadot(AvT tueñ angeP ala)'Po(centajt

F in d i d i j l 'd í u H: 2 3 59 Á :' 1 3 .0 S M : 1 4 .4 S m : 1 3 .0 1 C : 1 4 .2 4 F 1 .S ? V : 3 1 « I
J,u u

-2 .8 0

C Compra MI Suelo ♦
(ATR'Pwcíirt^e)
ESTRATEGIAS OK INVERSIÓN CON VISUAL CHART

Nombre. Retrocesos
Tipo. Seguimiento de Tendencia •
T em a. Acompañamiento de stops a la cotización para aprovechar
cualquier rebote desde el comienzo
Indicadores. AvTrueRange, indicador de volatilidad
Variables. Techo y Suelo, que recogen el valor de los puntos
representativos desde los que se configuran los stops de entrada y
snlida; Porcentaje, coeficiente multiplicador
Funciones. GctMarkctPosition
B arra Inicio. O
Órdenes. Compra y Venta
Puntos E ntrada. En stop según fórmula
Puntos Salida. En stop según fórmula

tSISTEMA E S P E ^

Para concluir este grupo de sistemas confeccionados en el entorno


PDV, crcaremo.s uno en el qtie se plasme como tema principal un retardo en la
asignación de las órdenes de entrada en mercado, es decir, dcjnr pasar un
tiempo como filtro para asegurar )a certeza de un movimiento. Partimos del
establecimiento de un análisis comparativo entre campos de dos barras,
buscando que exista una diferencia acusada entre una y otra para que salte una
primera señal de aviso. Asi, combinando esto con el retardo, podríamos hablar
deJ principio de la doble confirmación para poder actuar.
Habrá que diseñar distintas secciones que recojan cada apartado y
después ensamblarlas adecuadamente. La primera de ellas se encargarla de
controlar con la primera condición o requisito que el cierre de la barra actual
esté bastante por encima de la máxima de otra barra anterior, concretamente el
valor de esa máxima más una pequeña fórmula que seria máxima de la bana
menos mínima de la barra partido por dos, de modo que pueda concretarse así
una diferencia más o menos acusada. Pero esta diferencia podría hacer que s<
agrandara añadiéndole un multiplicador. Para saber sobre qué barra previa es
más eficaz comprobar la diferencia, se declarará una variable parámetro que
llamaremos por ejemplo Factor. Habrá que tener algún tipo de variable de
control boolean que indique con sus valores Cierto o Falso que existe permiso
para continuar con siguientes comparaciones o que hay que esperar a que se

112
ESTRATEGIAS DE INVERSION CON VISUAL CHART

produzca algún desenlace operativo antes. Y por supuesto, tendremos que fijar
algún contador que se ponga a O cuando la primera confirmación se de y desde
allí vaya supervisando el número de barras que pasan según el retardo que
hayamos puesto. Por tanto, la primera unidad queda de esta forma:
Cuando en la condición aparece el término Control sin igualarlo a
Cierto o Falso, equivale a Cierto, que es normalmente el valor que toma por
defecto si no le hemos señalado alguno al declararlo. En la sentencia, al mismo
licmpo que se inicia el contador, la variable Control cambia para que mientras
se produce la espera del retardo, no se haga ninguna otra verificación, para
centrarse en esta operación exclusivamente.
La siguiente sección será la que se encargue de comprobar que se
produce la segunda confirmación, es decir, que cuando pase el pla/o do espera,
el cierre de la barra en curso esté por encima del que correspondo a la barra
que indica el número del contador. Asi que como podemos ver, en la primera
parte desde una barra X se miraba hacia atrás a una barra llamada Factor y se
hacia una comparación. Si el resultado era positivo, se dejaba pasar un plazo, y
es ahora desde la última barra del plazo desde donde se mira a la barra X para
volver a comparar.
Pero para poder saber que éste es el punto exacto en el que detener
nuestros cálculos, hay que hacer algún tipo de anclaje que no permita pasar de
l:irgo dcl punió deseado, y esto se consigue con una variable que Ilaniaicinos
l'spera, idcntillcándola con el contador cuando ambas variables .se igualen.
Solo en ese momento comprueba la condición, y si se da, se genera orden de
compra al cierre, cambiando inmediatamente la variable Control a Cierto de

113
i < i ( 'I ( i < (

ESTRATEGIAS DE INVERSIÓN CON VISUAL CHART

nuevo para que el ciclo pueda comenzar, ya que esta operación sigue su cauce
independientemente. Si en ese momento no se da la condición, igualmente
cambia el valor de Control, pero ya no comprueba nada más hasta que surja
una nueva señal.
Si la compra se ha hecho, y podemos saberlo, como es lógico, si la
función GetMarketPosition retorna el valor 1, entonces nos planteamos dos
tipos de salida, como vimos en un sistema anterior: o por objetivo de ganancia,
o por ruptura del stop de protección. Usaremos como novedad en la
formulación del objetivo previsto la función GetPositionProfit, que nos
devuelve el valor de la ganancia que lleva el negocio hasta el momento actual,
y así pediremos que cuando ésta sea igua) o superior que el precio de entrada
por un Porcentaje partido por cien, se cierre largo, y si no se há llegado aún, se
saldrá también con el seguimiento de cerca que va haciendo los protectores
GeiLowestData. Hay que tener cuidado en la fórmula de que hemos hablado
porque es fácil echar a perder el diseño del diagrama con un mal
pronunciamiento en este sentido. Por ejemplo, imaginemos que hemos
comprado un paquete de acciones de Telefónica a 14 euros cada una, y
queremos plantear venderlas cuando lleguen a 15.40 euros. Fijémonos en la
diferencia de formulación, suponiendo un valor para el coeficiente porcentaje
de 10:

Si la ganancia que lleva el negocio es igual a 1.4 euros desde que se


entró en él, se cerrará largo, lo cual es razonable y se puede comprobar que se
realiza en el funcionamiento del sistema.

Si GetPositionProfit >= GetEntryPrÍce+ (GctEntryPnce*'Porcentaje /100)


\4 + 14 » 10 /100
. _________________ 14 +__________ 1.40 — ► 15.4

De este modo, si la ganancia que lleva el negocio es igual a 15.4 euros


desde que se entró en él, se cerrará largo. Como podemos ver, es una
exageración para un objetivo a corto o medio plazo, y por ello en ocasiones
vemos que en el gráfico el sistema no cumple estas órdenes y no sabemos por
qué. Pero si examinamos detenidamente las formulaciones que hacemos nos
daremos cuenta de la fácil posibilidad de error.

114
r f f

ESTRATEGIAS DE INVERSION CON VISUAL CHAFíT

El porcentaje multiplicador habrá que adaptarlo para cada empresa o


índice según las posibilidades que se observen al respecto de colocar un stop
de recogida de ganancias.
Por último, hay que asegurar que el contador pueda ir incrementándose
crt cada barra y por ello al fmal, en una sentencia al cfccto, se señala tal hecho.
La tercera gran unidad funcional, por tanto, sería esta.

Cuando verificamos el funcionamiento del sistema sobre una empresa


en concreto, nos damos cuenta de que examina bien la primera condición y
compara con la barra indicada en Factor, pero cuando hay que dejar pasar el
número de barras en el C ontador equivalente a Espera, no lo hace
correctamente sino que deja pasar el valor de Espera menos uno. Por tanto,
hay que analizar detenidamente el código, y entonces podemos apreciar que al
cumplirse la condición primaria, se pone el contador a 0. Esto está bien, pero
inmediatamente en el cálculo de la misma barra, al fmal, en la sentencia que
incrementa el contador, hace que pase a valer 1. jY estamos, repito, en la
fiiisma barra! Hay que arreglar esta disfunción. Lo m ejor es trasladar la
sentencia fmal de actualización dcl contador al inicio dcl diagrama, con lo que
conseguimos que a partir de un contador determinado de principio, por
ejemplo, 50, se vaya incrementando en cada barra, pero al darse la condición,
*e pone a O, y ya no se cambia en la misma barra, sino al comenzar la
siguiente.

115
ESTRATEGIAS DE INVERSIÓN CON VISUAL CHART

En el gráfico podemos apreciar la actuación del sistema con Espera=3


y también Factor=3. Hay dos negocios, el primero de los cuales se ha resuelto
con una salida recogiendo beneílcios (Porcentaje^ 10), y el segundo, que no ha
llegado a cumplir el objetivo previsto, ha terniinado al romper el stop de
seguridad proporcionado por el valor de los GetLowestüala.

m
► TUBACEX - Fin d e d 'n 1 d l i s H: 23:58 A: 1,34 M: 1.30 m: 1,34 C: 1,35 P : 1,55 V ; 1 4 1 7 0 0 F: ^ p j c

o
Reí a rd o * !
LPI21
O 1,50
LMit
1,40

Hi y ♦ m i
c 1,30
■> I
R r tw c ío iJ r, /J.Í
1.20

1,10

'01 _____ 'F e b 'M ar


k I 4 ^ >1 t A v a r i o t / Hoja 4 / !< !

Nombre. Espera
Tipo. Seguimiento de Tendencia
Tem a. Relación entre campos de la barra más retardo en la aplicación
de las órdenes
Variables. Factor, que representa al número de barra en que buscar la
máxima y la mínima que van a ser comparadas; Multiplicador, que es
un coeficiente para ampliar la diferencia de amplitud de barra; Control,
que es del tipo Cierto/Falso y que representa un tipo de restricción
determ inada para la em isión de órdenes; Contador, que irá
almacenando el valor de las barras que van pasando desde un
detenninado momento, y Espera, que es el número de barras de retardo
Funciones. GetMarketPosition, GetEntryPrice , GetPositionProfit y
GetLowestData
Barra Inicio. O
Órdenes. Compra y Cerrar Largo
Puntos E ntrada. Al cierre

116
ESTRATEGIAS DE INVERSIÓN CON VISUAL CHART

Puntos Salida. Al cierre en la salida por objetivo de ganancia y en stop


en la salida de protección

1•KI^C:IPAI.R:S E L E M E N T O S QUE HAN A P A R E C ID O EN LOS


SISTEMAS

Funciones
Función GetMarketPosition. Esta función se utiliza para conocer la
posición en referencia al mercado en que nos encontramos en cada momento,
pudiendo devolver los valores O si se está inactivo, en espera de invertir, 1 si
hay una posición de compra abierta ó -l si hay una posición de venta abierta

' Sistema Salidas


- Sistema Fluctuación
- Sistema RSI
- Sistema Cierres
- Sistema Retrocesos
- Sistema Espera

Función GetEntrvPrice. Esta función se emplea para conocer el precio


en que se ha producido la entrada en un negocio, sea de compra o venta

- Sistema Espera
- Sistema Cierres
- Sistema Fluctuación
- Sistema Salidas

Función GetPositionProfit. Esta función es usada para conocer en cada


momento la ganancia que lleva una posición, y devuelve el valor que señala la
diferencia entre el precio de cierre de la última barra y el de entrada
multiplicado por el número de contratos/acciones
- Sistema Espera

Función GetSwing (High/LowVObtiene el valor de un pivot o punto


máximo o mínimo representativo, el cual puede ser buscado de esta fonna
marcando siempre el mismo número de barras a ambos lados del mismo
- Sistema Salidas

117
ESTRATEGIAS DE INVERSIÓN CON VISUAL CHART

Función GctHitihcst. Se utiliza para saber el valor mayor de un capipo


dctcnninado considerando un número concreto de barras hacia atrás desde !a
presente.
- Sistema Acumulación
- Sistema Cierres
- Sistema RSÍ
- Sistema Bandas

Función GetLowest. Realiza el mismo cometido que su homónima


anterior pero en este caso referida al valor nienor de la serie de datos

- Sistema Espera
- Sistema Acumulación
- Sistema Cierres
- Sistema RSl
- Sistema Bandas

Función GetBarsSinccEntrv. Esta función se emplea para conocer el


número de barras que han transcurrido desde que se abrió una posición
determinada
- Sistema RSI (Versión inicial)

Función Tiempo. Devuelve el valor horario que va incluido en cada


barra y que se refleja en la hora de fmalización del periodo temporal que
resume la barra. Al igual que Date tiene íntima conexión con rutinas que
establecen opciones de finalizar posiciones a término de sesión

- Sistema RSI (Versión inicial)

Función GetPivot (U p/Dow n).Similar a GetSwing, esta función


también proporciona el valor de un pivot, pero en este caso se pueden marcar
para delimitarlo distinto número de barras a cada uno de sus lados, Up será la
catalogación de búsqueda de pivot superior y Down pivot inferior
- Sistema Pívots

Indicadores

Medias móviles. Este indicador se suele emplear para representar en un


gráfico el precio medio de un valor en un determinado periodo de tiempo. Se
las considera buenas seguidoras de tendenciá. Las hay de diversos tipos:

118
ESTRATEGIAS DE INVERSIÓN CON VISUAL CHART

simple, ponderada, exponencial, aplanada, etc,., siendo todos ellos intentos de


llevar a cabo una mejora en el ajuste de la representación teniendo en cuenta
diversos factores, fundamentalmente el peso mayor o'm enor que se otorga a
ios datos más recienlcs o a los más alejados en el tiempo.

- Sistema Primero
- Sistema Cruce
- Sistema Salidas

RSl fRelative Strength Index).Este indicador pretende medir el


comportamiento interno de un valor en cuanto al tamaño de las subidas y
bajadas que experimenta, que son las que compara conformando una línea
oscilatoria que puede señalar periodos de sobrecompra o sobrevenía,
- Sistema RSl

AvTrucRange (ATR).Es un indicador de volatilidad, que va realizando


una media de una serie de valores de las barras, midiendo la amplitud de las
mismas teniendo en cuenta la influencia del cierre de cada barra anterior,
- Sistema Retrocesos

Indicador PivotUp/PivotDown. Representa en una línea la unión de los


distintos pívots superiores o inferiores que se van sucediendo en el periodo de
tiempo que se establece, con objeto de servir de referencia en la relación que
respecto a los mismos sigue la cotización.
- Sistema Fluctuación

Variables
De control (tino booleanVLas variables asi definidas permiten guardar
valores solo con dos expresiones: verdadero y falso, con lo que sé constituyen
en verificadoras de situaciones concretas que llevan a poner en marcha las
acciones pertinentes asociadas.
- Sistema Espera
- Sistema RSl
. - Sistema Consecutivos

Variable Nuio. Se emplea esta variable cuando en el código se incluye


alguna función cuyo resultado de retorno' pudiera ser el de no haber

119
ESTRATEGIAS DK INVERSION CON VISUAL CHART

encontrado ningún dato con las condiciones estipuladas, io cual se


manifestaría en ia asignación de un número muy elevado, que podría hacer que
se produjeran problemas operativos. Con la variable Nulo se absorbe ese
hecho, filtrando la situación antes comentada, que quedaría desactivada.

- Sistema Salidas
- Sistema Pívots

Variable Contador. Con este tipo específico de variable se pueden


pretender objetivos muy distintos: congelar ciertas operaciones en tanto no
transcurra un periodo que se concretará en condición, o repetición de una
instrucción en un bucle. Es por tanto también un control de situaciones.

- Sistema Espera
- Sistema RSl
- Sistema Salidas

Variable Porcentaje. Generalmente suponen espacios de seguridad, ya


sean filtros de confirmación de movimientos o señales de finalización de los
mismos, estrechamente relacionadas con los stops de precios, sobfc los que
suelen calcular, añadiendo o restando la cantidad correspondiente.

- Sistema Espera •
- Sistema Retrocesos
- Sistema Cierres
- Sistema Fluctuación
- Sistema Salidas

Asignación de variables a otra variable. Es un mecanismo corriente en


los sistemas guardar valores que serán usados en el momento conveniente
mediante la envoltura de una variable, pero se puede a su vez emplear como
valor otra variable, en muchos casos para simplificar el acceso a la misma.

- Sistema Acumulación
- Sistema Cierres
Oíros elementos

Anclaje de stops. Con objeto de establecer puntos concretos de entrada


o salida en un negocio sin que se vayan actualizando y por tanto cambiando de
ubicación, es preciso recurrir a este recurso, que fija de manera permanente
tales stops

120
ESTRATKOIAS DE IN V E R S IÓ N CON VJSUAL CHART

- Sistema Fluctuación
- Sistema Salidas
- Sistema Cruce
- Sistema Retrocesos

Bandera. Así llamamos a una sección de código, independizada del


resto, que se ocupa preferentem ente de verificar el cum plim iento de
determinadas condiciones para su uso como restricción añadida o como
actualizador o fijador de stops.
- Sistema Cierres
- Sistema Retrocesos
- Sistema RSI

Fórmulas para señalar momentos exactos de cruces de indicadores. Su


utilidad es innegable y soluciona problemas inmediatos en la redacción del
código de un sistema con objeto de acotar drásticamente momentos concretos.
Generalmente se sirve de las distintas líneas de los indicadores y de! valor
temporal de la barra.
- Sistema Cnice
- Sistema Salidas

Bucles. Son estructuras de búsqueda reiterativa que generan la


repetición de unas instrucciones determinadas durante un número de veces ya
establecido o m ientras se produzca cierta condición. En el programa
encontramos bucles de dos tipos: Desde...Hasta y Mientras.

. - Sistema Consecutivos
- Sistema Cierres
- Sistema Salidas

121
ESTKATliCUAS DK INVÍCKSIÓN CON VISUA L L'IIAKT

KKCUUSOS DE USO PKA c T IC O EN EL M A NEJO DEL ENTORNO


IM)V

Tras Idílo (h ’ hl<)(¡lu '\y_¡ mi iludes.


Cuando estamos diseñando un diagrama de flujo, es frecuciite que a
menudo queramos mover un bloque del mismo. Lo que debemos hacer es
pinchar fuera de éi con el botón izquierdo dcl ratón y dejándolo pulsado,
extender un rectángulo que va apareciendo, alrededor (no dejar ninguna parte
sin incluir).Todas las unidades del bloque se señalarán con cuadraditos
celestes. Bastará con que nos pongamos sobre una de ellas hasta que aparezca
el símbolo de dos flechas de cursor cruzadas y con el botón izquierdo pulsado
arrastramos el bloque a donde deseemos. Sobre la imagen fija del diagrama se
verá cómo virtualmentc se produce el traslado en cuatro fases. Al soltar,
aparece el bloque en el nuevo lugar.

122
JCSTKA Í t-XÍIAS f)R INVÍCRSIÓN CON VISUAI. Cl lART

Si se trata de una sola unidad, basta con pinchar con el botón izquierdo
ilcl ratón dentro de la misma y con el sííiibolo de las flechas de cursor a la
vista, sin dejar de pulsar, arrastrarla al lugar que se quiera. Por ejemplo, si
queremos trasladar la orden de venta de este diagrama a un lugar más bajo.

Borrar elementos.
Si queremos eliminar algún elemento del diagrama, lo podemos hacer
sencillamente pinchando dentro de él con el botón izquierdo del ratón, y
cuando aparezcan los cuadraditos que señalan su selección, presionamos la
tecla del ordenador con función “Supr”. Desaparece inmediatamente.
Si se trata de un conector, podemos hacerlo de dos maneras: o
pinchamos sobre el mismo, apareciendo dos cuadraditos rojos en los puntos
que une, y entonces presionamos la tecla “Supr”; o haciendo la misma
operación pinchamos y arrastramos un poco, observándose el desplazamiento
vinual. Al soltar, desaparece.

123
ESTRV\TEGIAS DE INVERSIÓN CON VISUAL CHART

Copiar un elemento *
A veces queremos copiar algún elemento del diagrama para no tener
que repetir todos los pasos de su ejecución, y no sabemos cómo hacerlo. Es
sencillo, pero tiene alguna característica especial que hay que conocer. En
primer lugar, marcamos el elemento a copiar hasta que se señalice con los
cuadraditos verdes. Pulsamos Control C. Con ello hemos dado la orden de
copiar. Ahora Pulsamos Control V y ya se ha pegado la copia, pero encima dcl
original. Buscamos el signo de las dos flechas de cursor en cruz y con el botón
izquierdo del ratón presionado, arrastramos la copia y la ponemos en el lugar
del espacio de trabajo que deseemos.

i . I
ESTRATEGIAS DE INVERSIÓN CON VISUAL CHART

Crear una copia del fichero del sistema para hacer modiñcaciones
ilivcrsas sin alterar el oripnal.
Con el sistema original a la vista y ya compilado, solamente tenemos
que seleccionar en el menú Archivo la opción Guardar como. Nos pide un
nombre cualquiera para el fichero y en el catálogo el programa deja el mismo
nombre que el original añadiéndole un número - 1,2,etc..-.Al aceptar, aparece
en cl entorno PDV el mismo diagrama que teníamos, pero ya en el nuevo
fichero. Ahí podemos hacer todo tipo de modificaciones, todo lo que sea
necesario, pero que no queríamos realizar en el. original por no tener que
volver al principio si no nos satisfacían los cambios.
Trabajar con pantalla completa.
En ocasiones, cuando estamos diseñando un sistema, por ejemplo, nos
encontramos con que necesitamos más espacio para trabajar. Esto lo podemos
conseguir simplemente alargando cl cuadro do trabajo a costa dcl de carpetas
de herramientas, pero si aún así queremos más libertad se puede trabajar a
pantalla completa seleccionando esta opción en el menú Ver, o pulsando la
combinación Control + F12, con lo que ganamos un área mayor al desaparecer
cS entorno de comandos de Visual Chart, que queda contenido en un pequeño
cuadrado en el que al situarse despliega un menú flotante. Así que seguimos
teniendo las mismas posibilidades pero ampliando la zona de producción. Con
liscape volvemos a la situación anterior. Este es el cuadrado del menú flotante
en su posición resumida y en la de despliegue.

Jb/ P u n ttra i G rih c ti T ^ b l»


0
C M te ra
^
H o tk íK D ib u iir
^
A n ih is
t
A rc h iv o

Tener en pantalla al mismo tiempo el gráfico sobre el que se insería el


'‘i'iícnia. V el código fuente del mismo.
Cuando realizamos un proceso de verificación o comprobación de los
resultados de un sistema, a la vísta de los negocios que han salido, en
ocasiones es preciso recordar lo que desde el código del diagrama se le ha
pedido que haga, las condiciones y demás elementos, siendo molesto pasar de
una pantalla a otra. Esto se puede solucionar siguiendo este procedimiento:
Insertamos el sistema en el gráfico y ponemos la ventana en estado
Restaurado, Elegimos en el menú Sistemas la opción M oditlcar y cuando
tenemos ante nosotros el código, hacemos lo mismo, lo ponemos en estado
Restaurado. Con las dos ventanas a la vista, seleccionamos en cl menú

125
, ( 1 , 1 (' M í ^ í ( ■( ■í ( ' ' ' ( f ( í f f ( ^

\ __________________________ E ST W A T K e .lA S D E IN V E R S IÓ N CO N V IS U A L C H A R T __________ _______________

Voliuina la opción Mosaico vertical. Quedan las dos en vertical una al lado de
la olra.

Si preferimos verlas una encima de otra la opción será Mosaico


horizontal.
Vista slobal de! diagrama de flujo v zoom.

[B6JM

) 500,G

) <00.0

,’ OW 17 05 13 15 14 25 15 35 'líwiííot 11:40 1350 14:15 1S35


'iJ

,r í
Una herramienta interesante es la posibilidad de tener a la vista todo el
diagramp y poder actuar sobre el haciendo un zoom sobre una zona
determinada o ampliando y reduciendo el diagrama.
Esto se consigue pulsando el botón derecho dcl ratón sobre el árca de
trabajo. En ese menú seleccionamos Vista de pájaro.
En la pequeña pantalla que ha aparecido sobre el código, y que
podemos trasladar a otro rincón del entorno para que no estorbe a la visión dcl
mismo, se puede actuar de dos maneras: pulsando con el ratón dentro del
rectángulo lo llevas arriba, abajo, a derecha o izquierda situándolo sobre algún

126
{ i ,, { ( ^( i r , ♦ , ,í , r , . r ," r . r r- ,r . r , r r' r

__ _______________________ K S T K A T K G IA S DK IN V tvR SIÓ N C O N V IS U A L C IlA k T _________________________ _

demento concreto que es el que va apareciendo en el área central para lo que


se necesite; o situando el puntero sobre las lineas exteriores dcl rectángulo y
cuando aparezcan las flechas de arrastre tirar dcl mismo haciéndolo más
yMíule si queremos aumentar e) zoom o haciéndolo más pequeño si queremos
cnipequcñeccr el diagrama.

giopiedades / .. m ':'-,

Panel liq iie rd o . f


Qe|dt4 de puntot
¡V Puntoi doConewón i ’
^ V iíía d e P ^ o
ye t Enotet

TamaíSa ' ►

N ueva IderVifícador >

127
KSTRATEGfAS DE INVERSIÓN CON VISUAL CHART

Creación de variables seíruidas.


Cuando estamos situados en el área de trabajo PDV y queremos crear,
diversas variables, pulsamos con el botón derecho del ratón sobre la carpeta
variables y elegimos Añadir. En el cuadro de diálogo ponemos los datos que
nos interesan: nombre de la variable, formato, inicialización, señalización de
parámetro, etc. Pero si a continuación queremos seguir con otras, en vez de
aceptar y después volver a hacer toda la operación, solo con pulsar Intro son
aceptados los valores y aparece otro cuadro de diálogo a rellenar.
Variables o funciones olvidadas.
En ocasiones comenzamos a poner la condición o la sentencia y nos
damos cuenta de que estamos contando con alguna variable qué aún no hemos
creado. No hay problema. Si nos fijamos en la parte inferior derecha de la
siguiente ilustración, veremos que desde ahí se puede llevar a cabo esta labor
sin tener que salir de la situación en que ya nos encontramos.

WirtfcadOI,.GtMalieiPmiian i: IdKHüudot.

•S I

Aíitwiwioncs.
A menudo nos encontramos con que el diagrama de flujo ha quedado
un poco desordenado o con los enlaces adquiriendo extrañas formas debido a
que sus elementos no se encuentran bien dispuestos. Es el momento de utilizar
una opción que nos permite arreglar todo eso, y se consigue pinchando con el
ratón y arrastrando el rectángulo envolvente a los elementos que queremos
ordenar. Después pulsamos el botón derecho del ratón, y en “Alinear”
aparecerán diversas posibilidades: alinear vertical, horizontal, derecha,
izquierda, etc.. Vamos a ver un ejemplo de cada caso sobre unos gráficos que
nos ilustren.
Aquí tenemos el prim er caso. Vamos a alinear verticalmente este
diagrama tan desordenado. En la imagen A antes de la operación de
alineación. En la imagen B después de haber seleccionado todo el bloque con
el rectángulo envolvente y quedar todos los elementos señalados.

128
ESTRATEGÍAS DE INVERSIÓN CON VISUAL CHART

En la imagen C cuando pulsamos dentro de alguno de los elementos


señalados con el botón derecho del ratón, y en la imagen D el resultado final
de la alineación vertical.

'J tKhm<kífi>mÍtn
i|kViMdiPiim
VwElMMt

ApiM
G « L e n f l ih . f « tc S
G « * lo w g t iD «IjL e n ¡ fh ^ a i t l

6 tfO tS «G é ih i ^ t < D í i í
B í « W »G «41 o io e ilO 4 (4

El segundo caso es la alineación horizontal. Se hace cuando queremos


igualar la altura de algunas unidades del diagram a. En este ejemplo
seleccionamos las unidades que queremos alinear, que son las órdenes de
compra y venta, y seguimos el mismo proceso.

129

) V ) > ) )
r # í f ( f t f , f 'f ■¡ ( f '< '/ / 'f f t í '( 'f ■> <

\ ESTKATIvC.IAS t>R INVRRSIÓN CON VISUAL CMART

Otro caso es la alineación izquierda y derecha, que efectúa una


justificación dcl diagrama en tomo al margen correspondiente.
En cuanto a la alineación abajo y arriba, son más problemáticas en su
uso, pues pueden producir distorsiones difíciles de subsanar formando un
amasijo de unidades y enlaces, un verdadero embrollo a veces.
A uxiUarvs de vcriUcadón de resultados en el menú flotante.

i m i ñ i A f M 17.34 A 7 7 » ^ M 7 701.0 tn 77 S0 ^ C: 7 700,0 ^ 7 i j.Q X

1flOO.O
rUmél
c f,c * l

Hr
TrM4l í 700.0

□ i I 1/

T T T iS I) Bj 'a *1 &
U P \M « « i TiU m C » « < M a it» A nA ut M »«
liJ
En el menú flotante esta función se realiza al desplegar las opciones de
Punteros, y elegir el icono correspondiente;
Edición directa en los elementos del diagrama de flujo.
Cuando estamos trabajando sobre un diagrama de flujo y queremos
hacer alguna corrección en la redacción de lo que ya tenemos establecido,
normalmente pinchando sobre ese elemento se vuelve a desplegar el cuadro de
entrada de datos, pero hay un camino más rápido, sobré todo si lo que hay que
corregir es poca cosa o es fácil de hacer directamente. Se trata de coíocar el
cursor sobre ese elemento, por ejemplo, el rombo de una condición,
pincham os dentro y se marca el elem ento con cuadraditos verdes,
transformándose el cursor en dos flechas cruzadas. Hay que seguir hacia la

130
i i i ^ í i i '( f Y f f f f f r f r f í / f ( r

__________________________K S T R A T R G tA S D E IN V B R S trtN C O N V IS U A L C F tA R T__________________________ _____ ,

parte superior del elemento lentamente hasta que el cursor se transforme en I


este símbolo: I. ■ j
■ (

Hacemos entonces click y el rombo se transforma en rectángulo donde ■


podemos intervenir directamente sobre la redacción anterior. Por ejemplo aquí

vamos a cambiar el signo que había en la condición. Después dcl cambio


pinchamos con el cursor fuera dcl rectángulo, y vuelve a su forma de rombo
con las correcciones oportunas.

Cambio de PD V a VBA.
Cuando estamos en el entorno PDV examinando el diagrama de algún
' sistema que ya este compilado y queramos pasar a su versión cu V'BA por
algún motivo, podemos hacerlo de forma rápida simplemente pulsando sobre
el icono correspondiente, que es el siguiente:

131
ESTRATEGIAS DE INVERSION CON VISUAL CMART

CREACION DE ESTUDIOS E INDICADORES

Estudios,
Los estudios son códigos que permiten ver realzado de forma visual
clara sobre el gránco correspondiente algún aspecto concreto relacionado con
la evolución de la cotización de un valor: situación de los pivoís, barras con
más o menos grosor para indicar que está ocurriendo algo, por ejemplo:
cuantificación del volumen, señalización de zonas con RSl sobrccomprado o
sobreveiidido, cierres consecutivos, etc.., con objeto de sacar conclusiones de
cara al diseño general de estrategias.
El entorno PDV es el mismo que cuando diseñamos sistemas. Lo único
que varía es el color del icono de las órdenes, de los operadores. Se mantienen
las condiciones, los bucles, las sentencias, pero ahora en vez de órdenes de
compra y venía, como sucedía en los sistemas, aparece la orden PaintBar
(Pintar barra).
Estudio 1. “ Doble curva de precios’*.
Seleccionamos la opción Crear Estudio con Platafomia
menú Estudios, y se nos pide un código para el catálogo y un nombre para el
archivo. Hecho este trámite, nos situamos en el área de trabajo y después de
pulsar sobre el icono rectangular verde, pinchamos en el centro. Aparece un
rectángulo señalizado con la expresión PaintBar en su interior. Se encuentra
tapado por un menú de propiedades que se ha desplegado. Podemos mover
este menú a un lado pinchando y arrastrándolo. En él hay que tomar
decisiones.

]P a m t ^ r M
Pdintfiai I T i» E * lu (io H Pimi«Baiia i^ l* l
—a— P«nt PartBar
Apeftuia Apetlma
Ciere (^ le
M w n ia Manms
Mínima Mínima
Mum. de Linea 0
Ancho 1 .
Bañas Atias 0
Colof r — 1 192.19Z192 ^

Primero nos situamos en el primer recuadro y elegimos la opción Paint


Pasamos a Tipo de estudio, donde se puede establecer la posibilidad de Pintar
Barra (Se pinta una barra senalizando en ella lo.s campos de apertura, cierre.

132
ESTRATEGIAS DE INVERSIÓN CON VISUAL CHART

ininima y máxima, cuyos valores pondremos en sus casillas correspondientes.


Por defecto se refiere a los de la barra actual) o Pintar MaxMin (Se pinta una
barra señalizando en ella solo máxima y minima).Otras posibilidades son
cambiar el ancho de la barra, el color, las barras hacia atrás en que queremos
que aparezca, el número de linca caso de que haya diferentes órdenes de
pintar, etc.
Cuando damos la orden de Pintar, lo hace sobre el gráfico ya existente,
pero teniendo en cuenta las referencias que pongam os. Por ejemplo,
supongamos que queremos que se visualice una serie de barras que discurra de
forma paralela por la parte superior a la que ya existe. Hacemos lo siguiente:
1. En la fila de Apertura pinchamos en el centro y se despliega un
editor de sentencias en el que ya figura el termino “Apertura”. Le añadimos el
signo + y el número 50,

UKiU<e«dai
Oti*
J j-U ^ ^ _ ü _ lJ 3
j J-LI- l I sdH
I { i I 3I ■ { N>ia[ 9<»i«| i

H - J - d -Ü _í!í!ül

2. Aceptamos, con lo que queda fijado que se pinfe una barra con la
apertura en el lugar de la actual más 50 puntos por arriba.
3. Se sigue el mismo procedimiento con los otros campos de la barra.
4. Elegimos un color distinto pinchando en el centro de esa casilla y
decidiendo entre la gama que aparece ante nuestros jos. El rectángulo inicial
cambia de color. Salimos de este menú y compilamos el estudio, que como se
ve, solo consiste en ese rectángulo con la instrucción exterior y las
propiedades internas:

Lo insertamos en un gráfico cualquiera. El resultado es éste, una serie


de barras paralela pero a una distancia por encima de la otra.

133
.............................................................. ............... I I t t I I I > i
i » » » » '

i';.sriy’A r K (;iA S n i ': i n v I';k‘s k ‘>n i ' o n v i s u a l t'M AK’ i'

F T O !m m B s$ a i
PLUS InMtftj 9 minut»! H 1/ J4 A 0 ^22.0 M 9 3.M.0 m U JU0.Ü C 6 J19.Ú * m.O

'la 31^.1
8ÍOÜ.U

16 0 5 J 6 5 D '31/08;01 1D 30 11 15 1 2 0 0 12 4 5 13 30 1 4 1 5 1 5 0 0 1 5 4 5
HM' ►1lia 1 li Hoja ? / vw» I <I J jJ

En principio este ejemplo no tiene más valor que el de mostrar una de


las posibilidades gráficas de los estudios. Si volvemos a este mismo estudio y
en la casilla Ancho ponemos por ejemplo 3 en vez del valor que tenía, que era
1. aparecerá la misma serie de barras en la parte superior, pero ahora con un
ancho superior. Puede ir probando todas estas posibilidades y manejar sin
miedo diversos aspectos.

Estudio 2. “Seguimiento ele Media M óvir\


En este estudio la idea es que se visualicen de un color aquellas barras
cuyo cierre esté por encima de una media móvil, en este caso simple, y de otro
color aquellas cuyo cierre esté por debajo. Es una manera muy sencilla de
hacer el seguimiento valorativo de la media móvil.
Añadimos en los indicadores AvSimple, con el valor que queramos, y
activamos sus parámetros para que podamos elegir el periodo de la media que
queramos.
Pulsamos sobre el icono de Condiciones y rellenamos los datos
precisos:

134
i;s IiM i r.diAS ni% invi jís iú n í o n v isu a i . í maht

“Si el cicrrc de la barra actual es mayor que el indicador de la media


móvil simple,..". Ahora pul.sanios en el icotio Dibujar estudio, pincliamos en el
área de trabajo y en las propiedades elegimos el color correspondiente,
lineemos lo mismo para el caso en que no se cumpla la condición, y unimos
con los enlaces adecuadamente para que todo quede conectado.
Compilamos el estudio y lo insertamos en un gráfico. El resultado
puede ser éste:

Rstiidio 3. “ Muestra Pivots^.


Se trata de mostrar en pantalla sobre el gráfico realzados los pivots
superior e inferior buscados en un determinado periodo de barras hacia atrás.
Usaremos las funciones GetSwingHighBar y GetSwingLowBar. Primero
asignaremos el valor del número de barras a cada lado que tiene que tener el
pivot, a una variable llamada BarrasLaterales, y después pondremos de
longitud el periodo que configura la fórmula BarrasLaterales* 15, para que
haya suficiente espacio como para poder determinar estos puntos altos y bajos.
El procedimiento ya lo conocemos de la sección Sistemas, a través de sendas
sentencias en la parte inicial del diagrama. Después pondremos la condición,
que será la siguiente: “SÍ el número de barras hacia atrás en que se dio el pivot
superior es mayor que e! número en que se dio el pivot inferior”, y las órdenes,
pintar de un color los pivots inferiores y de otro los superiores.
En las propiedades de los PaintBar que pondremos a continuación en la
salida de cada una de las posibilidades de cumplimiento de la condición,
pondremos estos valores:

135
ESTRATEGIAS DE INVERSIÓN CON VISUAL CHART

Ptopwdade* Pxopiedadsi n

P « in l d r 1-1 í S
'j E s m m

T ip o E itu d b Pnl» Baita ••Ij TipoEitudo Pnlai Baiia ril* J


Pam» PaniBat | Part PaniBai
Apertura Apeituja|GHS«WH)Lovsi6afD ita) 4 Apeduia Apeitua(GetSwingHighe wDala)
Cietre Cierte(GetSwirgLowB«D a( a) !( | Cie«B Cierre(GetSwjigHighB«D alaj
Mawma MaxíTia(Gd SwngLovíBai Data| j Maxma Mawna(C etS w*>gHighe«Oata)
Mrwna ' Mimna(GetSwingLovv6a(Data) i Mirwna Mrima(GelSw»>i^ighe «Data)
Num. de Lines '0 1 Nwa de Linea 0 t
Artcho > t, Anc+io 2
Barias Atias •GetSvwigLoweaiOala ¡ \ BatiatAtiat GelSwrigH «Data
Cola ■ ■ 2 5 5 0 .0 Cota 1H H 00.255 ' '

En el espacio reservado a Color podemos hacer las váriaciones que


queramos pinchando en esa casilla y eligiendo el de nuestra preferencia en una
paleta de colores que aparece con esa acción.
El diagrama de flujo del estudio es éste:

Y cuando lo insertamos en un gráfico obtenemos este resultado:


CBEfiDRÚLA
IBERDROIA- fift d» d i i l diM H; 23 5« A; 15.01 M 15.37 m. 15.01 C; 15.07 P 3.65 V; 1.27 X

16,00

4Í6.D7I
14.00

13.00

12.00
/ 11,00
^98 V eb *Mar ~*Abr *Ma¥ Gim *jiji
(Oíl >I «n rÓM1 HoiaZAHoia3/HpiftIlJ Jj

136

/ ' I f
ESTRATEGIAS DE INVERSIÓN CON VISUAL CHART

Estudio 4. ‘^Cierres consecutivos^.

23 59 A:e,S1 M 0.93 iti: 0,51 C O.OI P 2JCi V 973 S80 f 06 K

3.50

3,00

) 'w 3.50

xz yz, im 'seo *oct ’nov


2l
Con objeto de comprobar a un golpe de vista la situación de un número
determinado de cierres consecutivos al alza o a la baja, establecemos dos
bucles "M ientras” que analizan cada uno de esos aspectos. X y Z son dos
variables, la primera de las cuales servirá para señalar la actualización de las
parejas de barras que van siendo escrutadas, en las que se va desarrollando la
comparativa en sentido ascendente, y la segunda con igual función pero en
sentido descendente.

Cuando todo este proceso de análisis termina con un valor concreto


para X y otro para Z, pasamos a la condición principal. Si X es mayor o igual
que Z, es decir, si el número de cierres alcistas es mayor o igual que el de
bajistas, se pintarán las barras de un color determinado y con un grosor que
marcaremos en las propiedades del PaintBar poniendo por ejemplo en Ancho

137
ESTRATEGIAS DE INVKKSIÓN CON VISUAL CUAKT

la variable X o 7. menos 1.Si hay cinco cierres scgiiidos por ejemplo, el grosor
será cuatro; si el número de cierres es dos, el grosor será 1,clc,.
Estudio 5. “ Volumen”.
Este estudio es bastante más complejo que lodos los nteriores. Iremos
desgranándolo poco a poco y explicando su funcionamiento. Comienza con
una sentencia que asigna unos valores a dos variables llamadas MaxVol y
FraccVol.

M axVol=6 etHighestD ala


FraccVol=MaxVoI/Ancho_Maximo

M a x V o l toma el valor de los GetHighestData o datos más allos


referidos al volumen, al campo de la barra volumen, en un periodo
determinado de tiempo. En este caso le pondremos 100 barras hacia atrás, pero
es un parámetro que se puede cambiar al insertar el estudio.
FraccVol se calcula dividiendo MaxVol entre Ancho_Máximo, que es
un parámetro que representa el ancho máximo que la barra va a tener. Ese
ancho va a ser de 10. •
Pongamos un ejemplo; Suponiendo que MaxVol sea una barra que
tenga 700 unidades de volumen, lo dividimos entre 10 y da 70. Obtenemos 10
periodos o fracciones de 70.Por tanto, lo que hemos hecho es dividir el
volumen máximo del periodo de los GetHighestData entre 10 y establecemos
10 fracciones. Es importante entender esta primera parte para continuar con el
proceso que sigue. El número de fracciones no varía, lo que varía es el tamaño
de cada una en todo caso.

138
r' r

RSTRATROIAS DR INVRRSirtN CON VISUAI. CHART

r
Ahora pasamos a un bucle dcl tipo Desde..Hasta que lleva dos
condiciones y da lugíir a dos tipos de órdenes de piular barra:
í-
En la primera parte del bucle establecemos diez pasadas, ya que se
expresa “ Desde ¡ = Ancho_Maximo (es decir, 10) hasta I con un salto de
menos 1 cada vez, es decir, 1 0 ,9 , 8, 7, etc.
A continuación ponemos una condición que nos dice que si el volumen
es mayor o igual que la diferencia entre MaxVol y FraccVoI multiplicado por
i, pase a examinar la siguiente restricción, que consiste en comprobar si el
cierre es mayor o igual que lá apertura (para apreciar si existe relación entre el
volumen y la posible catalogación de alcista o bajista a la barra teniendo en
cuenta la posición del cierre respecto de la apertura) dando orden de pintar de
uno u otro color las barras. Como esto es complicado, hay que ponerse a
pensar en una barra concreta y ver qué es lo que pasa.
El estudio calcula primero los GetHighest del volumen buscando hacia
atrás en la longitud que hayamos puesto. Con ese valor se obtiene FraccVoI
lijándose una serie de fracciones o periodos. A partir de aquí y según la
condición pasaría lo siguiente: En cada pasada el bucle mira en qué fracción se
encuentra el volumen.
Imaginemos el valor 200 de volumen de una barra. El bucle comienza
analizando esta pregunta: ¿Es el volumen de la barra actual (en el ejemplo,
200) mayor o igual que MaxVol (700) menos FraccVol*i (70*10, o sea 700)?
En resumen ¿es 200 mayor o igual que 700-700? La respuesta es Sí. Por lo
tanto está en la primera fracción. Pasa a ver si el cierre es mayor que la
apertura, pintando de un color u otro la barra en esta primera pasada con el
grosor 1, lo cual viene establecido en las propiedades del PaintBar, en la
casilla Ancho_Maximo, con una fórmula en la que interviene la variable i.

|P a M d r i l

TípoEtludo 1 R rt» Barra


Pan) PaintBai
Apwtua jApettura
Ütll» _
Mm í m Mantua
Minma Mnma
Num de L«ea ;0
Ancho ' Ancho_MaMÍmo4»1
S w atA b at ^0
Cota______ _ ' 012 0 255 ¿ i

Sigue el bucle en la segunda pasada y pregunta: ¿Es el volumen de la


kan-a actual (en el ejemplo sigue siendo 200) mayor o igual que MaxVol (700)
rocnos FraccVoI*i (ahora i vale 9 porque el bucle va desde 10 hasta 1 hacia

139
ESTRATEGIAS DE INVERSIÓN CON VISUAL CHART

atrás) 70*9, o sea 630. En resumen, ¿es mayor o igual 200 que 700-630? La
respuesta es Sí. Por lo tanto pinta la barra sobre lo anterior con un grosor 2,
Sigue el bucle en la tercera pasada y pregunta de nuevo; ¿Es el
volumen de la barra actual (continúa 200) mayor o igual que MaxVo! (700)
menos FraccVol*i (ahora i vale 8) 70*8, o sea 560. En resumen, ¿es mayor o
igual 200 que 700-560? La respuesta es Sí. Por lo tanto pinta sobre lo anterior
con un grosor 3.
Cuarta pasada, ¿Es el volumen de la barra actual (200) mayor o igual
que MaxVol (700) menos FraccVol*í (ahora i vale 7) 70*7, o sea 490. En
resumen, ¿es mayor o igual 200 que 700-490? La respuesta es No. Por tanto
teniiina el bucle y pasa a examinar la siguiente barra.
Este es el proceso que puede parecer muy complicado, pero que si nos
ponemos a verlo barra a barra sobre la práctica y haciendo los cálculos como
he explicado anteriorm ente, no debe tener mucho problem a para
comprenderlo.
Compilamos y aplicamos sobre un gráfico. El resultado:

CREPSOtYPf
► REPSOL YPF ■Fin di díj 1 diai H 23 50 A; 18.95 M: 10,00 m; 16,72 C: 18,85 P 10.07 V. 3 » .B j<
20,00

he.asl
10,00

16.00

M,00

1 2 ,0 0

w
'a q o 'sep 'oct ' n ov 'dic '9? 'pet) 'Mar 'Aür 'May 'ju n “jul J

140
ESTRATEGIAS DE INVERSION CON VISUAL CHART

Indicadores,
Los indicadores son elementos que ayudan en e! análisis técnico de los
valores, calculando y representando datos, m arcando determ inadas
características, señalando tendencias, reflejando cam bios, y en suma,
pretenden ayudar en la toma de decisiones de inversión.
El entorno es el mismo que ya conocemos, con la sola diferencia de
que en el icono que estaba de azul en los sistemas para dar órdenes, y de verde
en ios estudios para mandar que se pinten las barras, es ahora de color rosa y
sirve para establecer el valor del indicador.
Indicador h “M edia móvü sobre una media móviP'.
Al comenzar con la opción Crear Indicador, aparece como siempre el
cuadro de diálogo que nos pide un nombre para el código y otro para el
archivo. Pasado este trámite, nos encontramos con la zona habitual de
despliegue de diagramas. Vamos a empezar creando un indicador que puede
ser de utilidad. Yo uso a menudo la media exponencial de otra exponencial, y
para poder insertarlas en el gráfico se tiene que hacer primero con la que es
fuente de la otra y posteriormente la segunda. Ahorraría bastante tiempo si
di.spusiera de esa AvExponentialAvExponential directamente.
Vamos a necesitar una media exponencial normal y una media
exponencial sobre otra. Las añadimos en la carpeta Indicadores, y activamos
sus parámetros: periodo y origen de datos. El último irá referido al cierre, y en
cuanto al primero, lo que vamos a hacer es subsumirlo en una variable de
nueva creación que se llamará por ejemplo Periodo. Así, cuando haya que
darle una inicialización a los parámetros de las medias, le pondremos en ese
nuiincnto *‘Pcriodü”, desactivándolas a cóntiiuiación como parámetro. Ahora
será Periodo el encargado de portar el valor de la longitud de la media (en este
cüso podemos poner por ejemplo 30) y de ser optimizado con posterioridad.
Una vez hechas estas operaciones, pinchamos en el icono de color
rosa-violeta y pasamos al área de trabajo. Señalamos, y aparece un rectángulo
de ese color sobre cl que hay desplegado un cuadro de propiedades donde
podemos señalar el valor que queremos poner. En este caso pulsando en la
casilla Valor del indicador, aparece un editor de sentencias, donde elegiremos
cl identificador que necesitam os, A vExponentialA vExponentialD ata.
Aceptamos y volvem os a lo anterior pero ya aparece en la casilla
correspondiente el nuevo valor. Nos pide cuántas líneas, y en este caso será
solo una. Si queremos, podemos cambiar también su color. Salimos de ese
cuadro, compilamos el indicador, y ya está disponible para su utilización.

141

, / 1 / / , / /
( f í f I I
' ' ’ ' ' ' ' '' f ^ t t f ^ ♦ t ( t f ^ I < t (

___________________________E S T R A T E G IA S D E IN V E R S IÓ N CO N V IS U A L C IIA R T _________________________ _

I n d ic a d o r 2, ^'’P iv o ts S u n c r lo r c s ’V **l*ivo< slnfcriorcs'\

La idea es poder tener representado en el gráfico la situación de los


pivots calculados en un detenninado periodo y que pueda servir de base para
confeccionar algún sistema al servirle de referencia. Sabemos que hay varias
funciones relacionadas que obtienen esos datos, fundamentalmente GetSwing
y GetPivot, diferenciándose ambos en que el primero tienen un número fijo de
barras a cada lado y con el segundo se puede variar. Por tanto, se puede
utilizar cualquiera de ellas.
Nos basaremos por ejemplo en GetSwing, y por Canto, una vez esteinus
en cl entorno, hay que añadir esta tunción en el cuadro de herramientas,
activando sus parámetros a continuación.
I:n cada barra cl proceso que seguirá cl cálculo será buscar cl ivot y
establecer su valor. Como es posible que en algún momento no haya un punto •
que cumpla los requisitos, con lo que se distorsionaría el proceso, lo que
haremos será declarar una variable Nulo, y así, si en algún nionienlo no
aparece ese punto representativo, el valor que tomará será cl que tuviera en la
barra anterior. Para que esto se pueda realizar estableceremos una variable
llamada ValorAnterior, que en cada pasada del código tomará al hnal el valor
del GetSwing para ir actualizándose. El diagrama siguiente refleja cl código
del indicador Pivots superiores, pues utiliza la función GctSwingHigli, El ;
indicador Pivots inferiores se diseña de la misma forma y cambia solo en cl |
empleo de la función que le corresponde, que es GetSwingLow. '

Los posibles parám etros de las funciones que empleemos son;


Oeurrence (el número de pivots hacia atrás que buscar), Strengtli (cantidad do
barras a ambos lados del pivol), Length (periodo en el que hacer la búsqucdal
y Pricc (campo de la barra sobre el que hacer el cálculo: cierre, máxima,
mínima, etc). Podemos activar y desactivar los que creamos oportunos, c
incluso subsumir alguno en otra variable que recoja su valor. Así se verían los
dos indicadores, el de pivots. superiores y el de inferiores en un gráfico.

142
( i ( ( i f < t ( i í J f f < f f f í ! > ! t ^

Indicador 3. *‘Cruce de medias con Alerta”.


La idea de csíe indicador de dos lincas es que se genere una alerta
visual cuando se produzca un cruce al alza o a la baja de una media rápida
sobre otra lenta. En primer lugar añadimos los indicadores que serv irán de
t'ucnte, por ejemplo AvExponentiai y A vExponentiall, con sus respectivos
valores. Se activan sus parámetros y si es necesario dejar'fijos alguno de ellos,
se liace. Imaginemos que solo queremos las medias calculadas sobre los
cierres. Con el botón derecho sobre este parámetro, se pulsa en la opción
desactivar y ya se queda el cálculo solo referido a los precios de cierre.
Vamos a establecer el valor de cada media. Primero creamos una
variable llamada MExpLarga para representar a la primera media. Ahora,
pinchando en el icono correspondiente pasamos al área de trabajo, y cuando
aparezca el rectángulo, ponemos en sus propiedades linea 1.

Piopiedadet

«loiindicadof 3 ri.i
V a k X (M ln ifc « Ío r
fium de Linea
M ExpLaga ■3 ] Vtlofdallndbador
Num deLinea
MExpCoílJ
2
Col« 25500 Colw OO255
J

MCKplMga MExpCorta

1-13
ESTRATEGIAS DE INVERSIÓN CON VISUAL CHART

Hacemos lo mismo con la segunda media, identificándola con


MExpCorta, y la señalamos como linea 2.
Pasamos a formular la condición, que, como ya liemos hecho en
diversos sistemas, hace ver que en la barra acUial una media rápida se coloca
por encima de la otra y en la barra anterior la situación era la contraria. Pero
como ese enunciado es muy largo y también queremos reílejar cuándo se da
el hecho de que la media rápida se ponga por debajo de la lenta y en la barra
anterior era al revés, lo que vamos a hacer antes de seguir es crear otras
variables que las representen en esos momentos. Como ya tenía MExpLargay
MExpCorta, ahora pondré también MExpLargaAnt y MExpCortaAnt, y lodo
ello lo asignaré en una sentencia inicial.
Y ya que tenemos la sentencia y los establecimientos de valor d
indicadores usados, podemos centramos en la condición y en su consecuencia
lógica, la puesta en marcha de la alerta, para lo que hemos debido añadir tic
entre las funciones disponibles, la función Alcrt, que en ese momento nos pide
el texto que deberá aparecer como aviso. En este caso hemos elegido “Crucc
de inedias". La estructura, entonces, queda de fonna ordenada con una primera
sentencia, dos indicadores con sus valores respectivos fomiando la linea 1 y la
línea 2 del nuevo indicador, y una condición con la función Alerta como
consecuencia de su cumplimiento.

MEKCtwo»^rit*(n<Jicatioi [A v £ « p o n e r í ia O -sla,1 .1 )
M£j<pCoi1(»&rit«tn<licadoi;AvEKponertiall Dala.1,1)
ME«pL»g4-lr¥Íc#Jo(|Avt «pcnenlidCala)
ME«pe ni 4«l nicado<|Av£ «ponenhji 1D atsl

■ i ”
MEnpCoti»

Cuando tengamos insertado el indicador en un gráfico, hay que tomar


la medida, si queremos que funcione con su alerta, de pinchar en él hasta que
quede marcado, y con botón derecho del ratón, seleccionar Configurar objeto,
donde buscaremos la pestaña Alerta y marcaremos la opción Activar.

144

* V < > '


ESTRATEGIAS DE INVERSIÓN CON VISUAL CMART

PR IN C IPA L E S E L E M E N T O S QUE HAN A P A R E C ID O EN LOS


KSTUDIOS E INDICADORES C O N FECCIO N A D O S EN FDV Y QUE
NO HAN ESTADO PRESENTES EN LOS SISTEM AS

Funciones:

-GctSwingHighBar

- GclSwingLowBar

- Alert

- Volumen

KLEMENTOS Y ESTUDIOS O INDICADORES DONDE APARECEN.

Función GetSwincHighBar / GetSwingLowBar. Estas funciones se


utilizan para conocer el número de barras contadas a partir de la actual en que
se ha dado un determinado pivot del tipo Swing, con un número fijo de barras
a cada lado del mismo, referido al campo de Máximas (High) o al de Mínimas
(l.ow).
- Estudio MuestraPivots

Función Volumen. Retoma la cantidad de acciones o contratos que se


negocian en el espacio temporal de una barra
- Estudio Volumen

Función Alert. Se puede utilizar solo en Indicadores para emitir una


alerta a través de un mensaje que establecemos previamente avisando del
cumplimiento de las condiciones que figuran en su código
- Indicador Cruce de Medias con Alerta

145
^ >l s *

IvST IM T W .IA S l)K INVF.K'SION CON V ISU A L C'HAKT

CUESTIONARIO

Si después de este pnsco por PDV has obtenido un buco


aprovcchaniicnlo, no tendrás ningún problema en contestar eorrcctamentc
cstns preguntas sobre diseño de sistemas. De todas maneras, cada vez ».)iic
releas todo lo anterior cada vez comprenderá mejor todo lo relacionado con b
elaboración de códigos en esta Platafonna.

Kjcrcício 1
Aquí hay una contradicción en la redacción del código del sistema.
¿Cuál es?.

Ejercicio 2
Si aplicamos este sistema, se producen compras y liquidación de la
compra en la misma barra. ¿Por qué?.

146
líSTRATKC.IAS DK tNVÍCKSlON CON VISUAI, CMAKT

Ejercicio 3 1

Por cicrlü, siguiendo con el ejemplo anterior, ¿qué podría pasar si


llamos la orden de salir con el objclivo de ganancia en vez de limitada con un
stop?.

A B
C«í» L»go1 Lndad» Cen-ML « o o 1 Stop
GeiErlivP(ice»G «lE ríj/’nce'Pwcffiíflp G«*£r'ilí>iPiicc*Gi;ífit(vPtiíit'Pri<':<ír.M(<»

Ejercicio 4

Sil liémonos menlalnicnte en la primera barra del gráfico y vamos a


pensar qué valores debemos dar inicialmente a las variables techo y suelo para
c|iie tomen los de la máxima y mínima de esa barra.

Ejercicio S |

Queremos detectar si el cierre de la barra actual es inferior a cada uno


de lus cierres de las 5 barras anteriores. Utilizamos un bucle del tipo Desde
• Hasta, ¿cuál de los dos bucles que a continuación aparecen es el que
deberíamos utilizar?.

147
ESTRATEGIAS DE INVERSION CON VISUAL CHART

^ c r c ic io 6

Insertamos este sistema y no híty ningún resultado, no apnrcccn


negocios. ¿Por qué puede suceder eso?.

Esta función ha sido utilizada en numerosas ocasiones a lo largo de los


distintos sistemas diseñados. Se trata de unir cada valor con su significado:

Í48
ESTRATEGIAS DE INVERSIÓN CON VISUAL CMA«T

G etM arketPosition O Posición abierta de com pra

G ctM arketPosition 1 Posición fuera de m ercado

GctM arketPosition -1 Posición abierta de venta

Ejercicio 8
Observa bien esta sección del diagrama de un sistema y contesta. ¿Qué
crees que pasa cuando el flujo llega a la condición subordinada que hay a la
derecha y tiene que salir por el punto lateral derecho?.

jCompt^l C»ii^

ü Salta a la siguiente condición o sección

Q Se queda estancado y se corta, pasando el cálculo a la siguiente barra

E jercicio^
No se ha declarado ninguna variable Nulo, y estamos utilizando
órdenes en stop de compra y venta en los puntos señalados por GctPivotUp y
GctPivotDown respectivamente. ¿Qué pasará si no encuentra el sistema
ningún pivot en el periodo señalado?

Ejercicio IQ
Al verificar un sistema nos damos cuenta de que en ocasiones se
ejecuta más de una orden en la misma barra. ¿ A que so puede deber esto?.

149

í I \ I t i i t
> V f 'k

i : s i iv*a t i : g i a .s d k in v k k s k ^ n c o n v i.s iiA i.n iA U T

FjiTcici» I I
Sigiiiciulo CUJI el cjcrcicit) anlciior, ¿que soluciones podemos apliciir'si
no deseamos que esto se prodii/ea?.

Kjcrcicio 12

Acabamos de tenninar un sistema que debe producir diversas compras


y ventas en la misma dirección porque emplea la modalidad de Acumular
siempre. Lo insertamos y solo se da compra una vez en cada sentido antes de
que se de la venta en el otro sentido, pero no hay varias al mismo tiempo.
Repasamos el código. Parece que está bien. ¿En qué podemos pensar como
causante de esa anomalía?

Ejercicio 13

En este diagrama de flujo hay un gnieso error en el uso de! lenguaje y


expresiones propias de PDV, ¿Cuál es?.

Ejercicio 14

Queremos optimizar un sistema. Con el gráfico áelante, seleccionamos


la opción Optimizar parámetros del sistema, pero no está disponible. ¿Por
qué?.

150
» * ‘ • » » > ^ > V > ^ ^ ^ A > > ^

K S T IM T K C .IA S D K IN V K W SlrtN CO N V tS U A I.C M A R T _____ __________

Ejercicio 15
Tienes insertado cl sistema en el g rálk o . Siilcccionas f)plim i/íir
paiánieMüs, pero no hay ningún elemento o variable que pueda ser mejorablc
en sus resultados. ¿Por qué?.

I Ejercicio 16
¿Qué podemos hacer entonces para declararlos?.

1Ejercicio 17
' La optimización puede durar según el equipo que utilices bastante
tiempo. ¿Hay alguna manera de hacer que cl sistema operativo priorice esta
labor?.

Ejercicio 1 8 1
Las variables de Control tipo boolean Cierto/Falso, ¿Cómo se
inicializan por defecto?.

Ejercicio 19
¿En qué tipo de variable se guarda un identificador de campo de barra
(apertura, máxima, mínima, cierre, volumen)?
- Date
- Price
- String
- Doublc

Ejercicio 20
¿Y el valor numérico de ese mismo identificador?

- Date
- Price
- String
- Double

151
KSTWATKGIAS DK INVr:RSIÓN CON VISUAL CFtART

Ejercicio 21
líl sistom;» ti ahaja con las rclac¡i)iics entre cierre ele !a barra y situación
íle lina media móvil, por cjemiilo ele perioilo 30. ¿ Tenemos que poner en Uarra
Inicio el valor tic 3 I para que ilcje pasar esc número ele barras y poder así
calcular bien la media móvil?.

Ejercicio 22
¿Qué ténnino falta en esta sentencia para que el bucle sea cfcctivo?

PDV. RESPUESTAS AL CUESTIONARIO

Respuesta 1
La contradicción consiste en que hemos declarado una variable llamada
Techo y la hemos identificado en una sentencia con la máxima cuando se de la
circunstancia de la posición de las medias móviles según la condición
expresada. Sin embargo cuando se establece la fórmula de compra en stop, no
se utiliza para nada, careciendo entonces de sentido tanto su creación como la
asignación de valor a la misma sin objetivo alguno.

Respuesta 2 1
Para comprenderlo, pongámonos mentalmente*en la barra en que se de
la condición, que recordemos, consiste en que se produzca el cruce de la media
móvil corta a la larga. En ese momento fija un stop para la siguiente barra para
comprar en Máxima+Máxima* 1/100. En la barra que la continúa comienza el
cálculo verificando stops. Si se da el precio establecido en el stop, hace la
compra, y después sigue el cálculo del código, que en este caso, como el cruce

152
KSTRATKGIAS DK INVERSION CON VISUAL CHART

se lia dado en la barra anterior, nunca seguirá por el conducto de condición


cici ta, sino por el de condición lalsu, cotj lo que llega a la orden de ceiTar largo
al cierre. Así, en la misma barra, compra en stop y al termino liquida la
posición.

Respuesta 3
Si en vez de una orden limitada elegimos la opción B y ponemos la
orden en stop, el problema es que si estamos en posición de compra, lo que se
va a hacer es cerrar largo, que equivale a una venta, así que en cuanto se de la
compra, a la barra siguiente se va a dar la liquidación por objetivo al ser
inadecuado el tipo de orden.

Respuesta 4
Techo debe tomar de inicio valor O para que se cumpla la condición,
que nos dice que si Máxima es mayor que Techo, entonces Techo es igual a
Máxima. Al poner O aseguramos la asignación. Suelo debe inicializarse por
ejemplo a 99999, que es un valor suficientemente alto como para que en el
Ibcx no se produzca interferencia alguna, y asi, la Mínima será seguro menor y
se asignará a suelo el valor de mínima desde la primera barra.

Respuesta 5
El bucle A, porque si nos fijamos en la condición, examina si el cierre
actual es superior at del número que representa la variable i (de 1 a 5), de tal
manera que si ese es el caso, inmediatamente sale del bucle con el valor de
Falso, mientras que si no es así, sino que es menor, continúa en el bucle
siguiendo la comprobación, y si Iras las cinco pasadas sale con el valor C'icrto,
seria la señal que nos indicaría que se han dado los cinco cierres consecutivos
bajistas. Sin embargo, en el bucle B la condición a examinar es la contraria, es
decir, ver si el cierre actual es menor que el anterior directamente. Si se da el
caso, !a variable control toma el valor de Falso y sale del bucle, quedándonos
con las ganas de saber si se ha dado el número de cierres progresivamente más
bajos unos que otros.

Respuesta 6
Es un problema de enlaces o conectores. Si al empezar el cálculo en la
primera barra el cierre no es superior o igual a Banda Superior (por ejemplo si
la hemos inicializado a 99999), no seguirá su camino hacia la orden de
compra, sino por el vértice derecho de la condición, que no se encuentra unido
a ningún otro elemento del diagrama. De esta forma, en todas las barras se

153
< t
» !

ESTRATKGIAS DE INVERSIÓN CON VISUAL CHART

produce la misma siluacióu y lodo queda estancado, no dándose niiiizÚTi


ncgocii) evidentemente. Este vcilicc derecho deberla enlazarse con la siguiente
condición. Pero si lo enlazamos y procesamos el sistema, solo saldrán órdenes
de compra, porque cuando llega a la condición de venta tenemos la misma
situación. Si hemos inicializado Bandalnferior a O, el cierre nunca va a ser
igual o menor que O, asi que el cálculo se bifurcará por ci vértice derecho, que
a su vez tampoco está enlazado con la asignación de valores a las Bandas. Por
tanto, doble error en las conexiones propician que a pesar de insertar el
sistema, nada ocurra.

Respuesta 7
GetMarketPosition O = Posición fuera de mercado.
GetMarketPosition I = Posición abierta de compra.
GetMarketPosition -1 = Posición abierta de venta.

Respuesta 8
Salta a la siguiente condición. Hay una frase típica que debemos
recordar: “Cuando el Ilujo que divide la condición se vuelve a unir, se ha
formado una sección independiente, que funciona autónomamente”. l:n este
caso, como el resto de elementos está enlazado, lodo el cálculo pasa a la
siguiente unidad. *

Respuesta 9
La función devuelve un valor muy elevado si no encuentra ningún
pivot con las características que se hayan establecido. Este valor, 2147483647,
hace que si tenemos una orden de compra en stop, no se vaya a realizar en
ningún momento; pero con la orden de venta en stop sucede que la va a hacer
inmediatamente, pues se supone que el precio has sido superado a la baja. Por
ello es preciso declarar una variable Nulo, que absorba ese valor y colocarlo en
la condición como compra o venta si GetPivotUp o Down son distintos de
Nulo.

Respuesta 10
Generalmente es porque hay algún stop que no ha actualizado, y
como lo primero que hace el cálculo es verificar órdenes de stop y de mercado,
pues puede suceder que haga la operación en stop, que puede ser compra,
venta o cerrar posición, y después cuando sigue el cálculo encuentra otra orden
y también la hace.

154
'y '/ (.(,*)> ‘ I

E S T R A T E G IA S D E IN V E R S IÓ N C O N V ISU A L C H A R T _________

Respuesta 11 |
Intentar actualizar el stop o ponerle un valor muy alto para que no lo
haea, o utilizar fórmulas como la de solo liquidar cuando haya transcurrido un
número de barras determinado (Función GetBarsSinceEntry), o cualquier otra
restricción de Control (uso de variables boolean) que lo impida.

Respuesta 12
En que cuando se ha establecido un modo de casar órdenes en el
cuadro de configuración del objeto, se mantiene para los siguientes sistemas.
ll:iy que volver a ese mismo cuadro y en la opción ajustes cambiar el método
do entrada.

Respuesta 13
En PDV las variables control de tipo boolean toman o el valor Cierto o
‘ el valor Falso, pero no los que aquí aparecen en inglés; Truc y False, que son
I los que sí utilizan en el lenguaje VBA.

I Respuesta 14 j
Todavía no se ha insertado el sistema, asi que no es operativa la opción
en cuestión.

No se ha declarado ninguna variable como parámetro al diseñar el


sistema, por tanto no puede aparecer en la optimización.

Respuesta 161
Volver al sistema con la opción M odificar Sistemas, en el menú
Sistemas, y en la pantalla de herramientas situar sobre la variable que se quiera
optimizar el botón derecho. Pulsar y elegir Modificar. Allí se señala con una
cruz el cuadrito en blanco que pregunta si se quiere declarar la variable como
parámetro. Aceptamos. Se compila de nuevo, y ya aparecen las variables
parámetros para que puedan ser mejoradas.

Respuesta 17
Sí, Se hace dcl siguiente modo. Cuando se tiene el optimizador a la
vista y ha empezado el proceso, pinchamos dentro con el botón derecho, y de
entre las opciones escogemos Establecer Prioridad. Cuando hacemos esto,
aparece otra ventana donde se nos pide que decidamos entre Prioridad alta.

155
ESTRATEGIAS T)F. INVERSIÓN CON VISUAL CHART

normal o baja. Marcamos y aceptamos. Cuando tenemos mucho interés en la


lahor lie optimización y hay otras tareas realizándose, conviene la prioridad
alia, con la que el sistema operativo monopoliza el procesador para tal Tin. Si
es otro tipo de prioridad, reparte las cualidades del procesador entre los
diversos trabajos que se estén llevando a cabo.

Respuesta 18
Estas variables se inician por defecto en el valor Cierto.

Respuesta 19
Estos idcntificadores de precios, que pueden referirse tanto a la
apertura como a la máxima, mínima, cierre o volumen, se guardan en variables
de tipo Price. Ojo, no guardan el valor del precio de esa barra en ese campo,
solo identifican el registro o campo que vamos a utilizar.

Respuesta 20
El valor numérico de ese misino idcntificador que acabamos de guardar
en una variable de tipo Price, se recoge en variables de tipo nunu-g^o, y entre
las cuatro que aparecen para elegir, solo podemos tomar Double, que recoge
un amplio abanico de valores numéricos.

Respuesta 21
Barra Inicio toma O como valor de comienzo por defecto. Por tanto,
según el cálculo que queramos hacer habrá que variar su valor para que haya
un margen suficiente de operatividad. Pero en el caso de uso de detenninados
indicadores, como es en este caso la Media móvil, los cuales tienen un valor
ya establecido para desarrollar sus cálculos adecuadamente, lo que hace es
sumar automáticamente este valor ai O por defecto de Barra Inicio. Un
ejemplo: Utilizamos una media móvil de periodo 30 y el sistema relaciona el
cierre con la media. Barra Inicio toma el valor de O (por defecto) + 30 (propio
del indicador), lo cual es suficiente para que sea viable el cálculo.

Respuesta 22
El término que falta es el que haga aumentar eí contador para que vaya
actualizando el cálculo dentro de la condición. Por tanto, en la sentencia
debería figurar X = X+1

156
ESTRATEGIAS DR tNVKRSIrtN CON VISUAL CHART

IIP PARTE. EL ENTORNO DE DISEÑO VISUAL


BASIC (VBA)

DECLARACIONES Y PR O CED IM IEN TO S


En el siguiente gráfico podemos ver cuál es el entorno de trabajo de
VBA, donde aparece el editor en el que se redactará el código de las
estrategias. Se aprecian tres módulos diferenciados por lineas continuas, donde
el usuario puede escribir los datos del sistema, y cada uno de ellos cumple una
misión distinta.
w cf n o n Visual Basic - P d n e c ll. [irtUSystafn (Code)|
E* »«* ^ e«bu9 lo* WMm
]j® *a p ’ « i o r-. i „ . V i N C? « O
[(CenertI»

■F«can>etei3 ' '


C p t io n E k p l l c t t
P u b l i c y f t Í 3 Sjra U s e rJlp p
Im p J u m e n t a 3 y s c e » ___________________ _____ ____
P u b lic Su b $ y 9 tem _ 0 n Í n i t C « I c u : B t e ( |
u it h APP
End V l t b
E nd S ub
P u b lic Su b 3 y 9 C e n _ 0 n C a lc u la t e B a c ( B y V a l B a r &9 Lorig )
u it b iP F
End V ic h
End 3ub _____________________________ _________________________________ __ ___ _________

- El p rim ero está dedicado a la declaración de variables que vamos a


usar en la estrategia, primero las que son parámetros, entre las expresiones *¡¡
Parameters y ‘ Parameters !!, y después todas las que se vayan a manejar, en la
expresión Option Explicit, que obliga a su declaración explícita. Todas las
variables son en principio declaradas explícitamente como de tipo Variant,
pero consumen de esta manera más recursos de memoria que si lo haces
asignándole un tipo propio específico. Por tanto, al obligar Option Explicit a
hacer esta labor, se reducen los problemas de conflictos de nombres o de
errores por mezclas de letras. Los siguientes términos, “ Public APP As
SysUserApp, “ Implements System” serán la conexión que se utiliza para
relacionarse con Visual Chart.
- El segundo corresponde al procedimiento OnlnitCalciilaíe, donde
inicializamos las variables, se establecen los identíficadores de los indicadores
a usar, las características de algunos parámetros de las funciones, etc. En lodo
este módulo, marcando un punto se despliega un menú con funciones y
variables a las que podemos acceder. Esa información se obtiene gracias a la
clave APP, que encontraremos en diversas ocasiones con la expresión “With

157
I í • < ' t ' • I t t ' t

K S I W M W tlA S [)K INVKKSU')N CON VISUAI. n i A K l '

A1’P”.A este proccdimiciUo de inicialización recurrirá el progrania solo una


ve/. íinles lic coincn/ar los cálculos.
- Kl terecro corresponde al proccdi miento OnCalciilaícBar, donde se
tlcllnc la esiratciiia: condiciones, operadores, e(c. AI igual que en el an(crii)r se
llega a las variables y lunciones a través del punto por la clave AIM’.A esie
procedimiento recurrirá el programa una vez por cada barra del gránco en que
se prueba la estrategia para hacer los cálculos.
En los siguientes tres m ódulos no escribimos nada, pues son internos
del sistema y no deben ser niodiricados. Son los siguientes;
- OnCalculaíeRange. Es el procedimiento director al que se llama desde
Visual Chart cuando se va a utilizar el código. Lo priniero que.hace es buscar
en OnInitCalculate lo que allí se ha establecido para comenzar los cálculos.
Solamente lo hace una vez para todo el sistema, como se lia explicado antes. A
continuación busca en OnCalculatcBar lo que el sistema debo hacer y esto lo
efectúa en cada barra del gráfico.
- OnSetParainetcrs. Aquí toman el valor las variables parámetro. Puede
ser el definido inicialmente o el que el usuario le de al insertar la estrategia.
- OnConncí tion. Se utiliza para asignar a la variable APP el valor de
variable de conexión entre Visual Chart y Visual Basic.

REC O RR ID O DIDACTICO A TRAVES DE 12 SISTEMAS

SISTEMA FLAT
Vamos a apreciar todo esto sobre un ejemplo. En un sistema al que
llamaremos Fiat, vamos a distinguir los distintos módulos, sus finalidades y
los elementos que allí se recogen.
Este sistema relaciona la cotización con una media móvil del tipo
Aplanada, que proporciona una curva más suavizada en su indicación de
tendencia. Por tanto, nos fijaremos en que el cierre se sitúe por encima de la
media móvil para ordenar compra, y en caso contrario la orden será de venta.

I5X
KS TIM'I I'X'.IAS i)K INVKKSI6 N C(íN VISUAI, Cl lART

' I , PocTüneters
Diio A v F l a t D a t a P e r l o d o A3 Douh»le ' 3 0
Diiri A v F l a t D a t a O c i g e n D a t o s As P r i c e
' P a ra itiec er s ' I
Dim A v F l a t D a t a As D o u b ie
O p tlon E x p l i c i t
P u b l i c APP As S ysU se r A p p
Irnpleroents S y s t e m

Esta es la p rim e ra sección, donde se procede a la declaración de


variables parámetro y variables públicas. Entre las expresiones '¡¡Paramctcrs
las primeras, las que van a ser optimizablcs, Dim es el termino que se emplea
indicando su dimensión, rescr\'ando zona de memoria, y solo se hace en este
módulo. Así, podríamos traducir el primer renglón como ”La dimensión de la
variable parámetro AvFlatDataPcriodo (periodo de tiempo en que se va a
ciilciilar la media móvil) se hace en fonnato numérico del tipo Doubie y le
d;inios en principio un valor de 30 (barras, días, etc..)*'. Existen diversos tipos
de formato numérico, y éste de Doubie abarca un amplio espectro .Al
adjudicarle el valor, se coloca una comilla antes del número para validarlo.
La olra variable parámetro es el origen de los datos de la media móvil,
que se declara como formato Price, o sea, Precio, para elegir después sobre
que campo de la barra (apertura, cierre, máxima, minima, etc..) queremos que
se calcule la media. Eso, al igual que cualquier otro cambio en la primera
variable, se nos pedirá al insertar el sistema en un gráfico.
Por último, fuera de estas expresiones Parameters, y en tomo a Option
Explicit, de forma obligatoria y explícitamente, el resto de declaraciones, en
este caso, la de la media móvil que actúa de indicador fuente. Hay que aclarar
que las variables a las que no se les asigna un tipo determinado, toma por
defecto el tipo Variant, pero como así se consumen más recursos de memoria,
es conveniente declararlas en el tipo de data que mejor les convenga para
evitar problemas.
Además, conviene saber la forma exacta de declarar variables. Así,
podemos distinguir unas diferencias claras entre las siguientes tres fonnas de
hacerlo;

Dim SCompra As D o u b ie 'D o i ^ i le


Dim S V e n c a As D o u b ie ' D o u b ie
Dim H e d ia R a p i d a As D o u b ie ' D oiüíle
Dim H e d i a L e n t a As D o u b ie ' D o u b i e

I5 ‘)
ESTRATECGIAS DK INVERSIÓN CON VISUAL CHART

nn este proccdiinicnto se han declarado indcpcndienlcmcntQ las


variables con un data de tipo numérico Doublc.

Dim SConnpra k s D o u b le , S V e n t a As D o u b le , H ed ía R a p id a As D ou ble,


H ed ia L e n c a As D ou ble 'Dovibre

Aquí las tres primeras variables de la fila son declaradas como tipo
Variant (el que utiliza por defecto) al omitir a continuación de cada una el tipo
concreto, mientras que la última sí ha sido declarada como Double.

Dím SConnpra, S V e n t a , H ed ia R a pida , H e d ia L e n t a As D o u b le ' Doxible

Y en este procedimiento los efectos son los mismos que en el p


ejemplo, ya que todas se declaran del tipo Double.
Todo este conjunto representa la primera parte o módulo de la
delincación del sistema.
A continuación viene el p ro c e d im ie n to M amado S ystcm On
InitCalculatc , donde se llama a los indicadores si los hay y se inicializan las
distintas herramientas a emplear.

P u b l i c Sub S y 3 C e n ) _ 0 n I n i c C a l c u l a t e [)
U i c h APP
A vFlatD ata ■ . G e t i n d i c a t o r I d e n c i f i e r (A vF lat, D ata,
A v F la tD a ta P e r lo d o , A vF latD ataO rigen D atosJ
.S tartB ar ~ O
End U i t h
End Sub

Como podemos comprobar, se procede a la identificación del indicador


utilizando la función G etlndicatorldentifier, que recibe como datos
obligatprios para su filiación el nombre del indicador en primer lugar, AvFlat,
y la serie sobre la que se va a calcular. Data (por defecto es cualquier gráfico
en el que se coloque el indicador). Además tiene también unos parámetros
adicionales, que se corresponden con los de entrada que el Indicador tiene, en
este caso: Periodo (número de barras o días, etc. que utiliza para su cálculo) y
OrigenDatos (campo de la barra que se va a aplicar).
También se inicializa la función StartBar, ert este caso a O, que es
también el valor que recibe por defecto. Recordemos que cuando se emplean
indicadores, se le suma automáticamente el periodo de éstos.
Pasamos ahora al te rc e r m ódulo o procedimiento general, llamado
System OnCalculateBar, donde apareccii las condiciones, sentencias, órdenes,

i 60
ESTRATEGIAS DK INVKRSIÓN CON VISUAL CIlAkT

ele., los elementos propios que dirigen la acción en el sistema y que


conocemos por código.

P u b l i c Sub S y a c e m ^ O n C a lc u la t e B a i: (ByV ai Bar As Long)


With APP
I f . C i ó s e > . G e t I n d i c a t o r V a l u e ( A v F l a t D a t a ) Then
, B u y AtC lO Se, 1
E lse
. S e l l A tC lo a e , 1
End I f
End W ith
End S u b

La condición que aparezca se enmarcará en los términos de la estructura


decisoria If...Then....End If. La que aquí aparece se puede traducir por “Si el
valor del cierre de la barra actual es mayor que el valor (GctlndicatorValue )
de la media móvil. Aplanada (AvFlatData), entonces (Then) damos una orden
de compra (Buy) de las de tipo Al Cierre (AtClose) con un contrato.

Ahora nos encontramos con otra expresión que se añade a la estructura


anterior para decidir qué parte del código se ejecutará; “Si no se da esa
circunstancia (Else), damos una orden de cerrar la posición de ese contrato a
largo también Al Cierre (ExitLong AtClose).
La compilación se hace seleccionando la opción Publish en el menú
Dcbug, grabándose su diseño y registrándose en el catálogo de uso del
programa. Si hubiera algún error, aparecería un cuadro donde nos indicarla
que existe algún problema. Entonces tendríamos que seleccionar Compilo,
procedimiento con el que aparece el error encontrado y quedando marcado el
'jM c ro s o n Vtaual Baste -C:UkrchMn d»|it(i 9 ariMM:iM(lOaci«iwilaiVlu<SWefiv>s(ta(.w-
iJp 6U im ¡«M Iwwt fiT)í>*(E^ isr*" B*
lid) a ~ Q I y pM t a
|Sy«»e
O i» * v r i a t D o t a P e t i o c , „
t>l» Avr l a t C a t a O e i O e i V i - 'r
t p » .- - , ; ^
■ P » i:a ;;< T .r3 . . p-J He?Ci)í
D in t v r i a t D a i » U Dc;«| g ^ T « O n « í: . .' ' O M t
O p tlo n E « p lic U --------------------. '---------------------
P u b U e J lPP 43 9 ya U a ít; 'ííld W I» * ,. i , ^ ;
In.p lem ent a S y a c e s ¿ ■i' ■
P u b---
l i c Sub
---Sy----
s te B _\aiW4W
Ot
Wtth ÍPP
Jiv íla t t a c a - . C e c I n c '^
A w r ia tD a c a P e c lo d o , t'j o * » / U lr a * x « *
•S c a c t B a c - 1
End U ic l)
End Sub
P u b l i c 9ub S y a t n Oni . ' i n . i i u i »-■
H lt h APP
I t .C lo a e > ,C c ( I n d lc a t a iV a lú e (JLvr l a t r a t H l Then
■ luy A t C lo s * , 1

i ■i
i-;s riíA T i-:t;iA s i>i-; i n v k i ^s i ó n fO N v is u a l c i i a í í t

luiiíir donde csic succdc. I:n los gráílcos siguientes podemos ver:
- cómo queil.iii los otros ires módulos, doiule se rellejim una serie do
procesos intcmos que van vinculando y ensnniblando las parles;
- Uis resultados que produce el sistema
Piibl i c SuiD S y g t e m _ 0 n 5 e t P a r a n i e c e r 3 (ParamArray
P a r a w L i s t O As V a r i a n c )
' I I Pia’ rüneterL'í lü i': i - 5 i l 1 i o n
A v F l a c D a ta P e r i o d o = ParaiiiL isc (1)
AvFlat.Dac.aOr i g e n D a c o s = P arainL iat (2)
' P.arajnet e r s i n i t l a l i z a t l o i i ! *
E n d Sub

P u b l i c Sub S y 3 t e m _ 0 n C a l c u l a t e R a n g e í B y V a l S t a r c B a r
As Long, ByVal f i n a l B a r As Long)
Dinn 1 As Long
i = A P P .S t a c t B a r
I f S c a r c B a r > i Then
í = S c a r tB a i:
End I f
U h i l e Not APP. S h o u l d T e r m i n a t e And i <= F i n a l B a r
APP. C u r r e n tB a r = i
S y 3 te m _ 0 n C a lcu la ceB a r i
i = i + 1
Uend '
End Sub
P r ív a t e Su b 5y5U sccA ppInstence_0nC onnection(B yV alA pplication
As SysUserApp, ByVal H T D ilI n s t As O b j e c t , Custoint) As V a r i a n t)
S e t APP = A p p l i c a t i o n
E n d Sub

S B E X 3 5 P U JS
F'LüS IMiAdiJ 5 H t7 A 8 023.0 M 8 043.0 m 8 dlD.O C 8 621.0 P ^

f tv
9 400.0
2 7 )
9 300,(

ÍO 16<0 24Jq4;01______ 10 45 1 2 05 1 3 25 14 45
4 < t ' nN~Hoi^1 IH o in ? / Ttf \ J<l J 2i

162
t;S I'IMTK(lIAS ÍJIi INVKKSIÓN CON VISUAt- Cl lART _________ ___

Nombre. Fiat
Tipo. Seguimiento de Tendencia
Idea.Relación entre campos de la barra con el valor de un indicador, en
este caso. Media móvil aplanada
Indicadores. Avl'lat
Vnríahics. AvFlatDataPcriodo, que ostenta cl valor de la longitud de
barras con las que hacer cl cálculo de la M edia m óvil;
AvFlatDataOrigcnDatos, que remite al campo de la barra sobre el que
hará referencia la Media
Funciones. GetlndicatorValue y Getlndicatorldcntificr
B arra Inicio.O
Órdenes. Compra y Venta
Puntos E n trad a. Al cierre cuando el campo cierre de la barra esté por
encima o por debajo del valor de la Media móvil
Puntos Salida. Igual que en los puntos de entrada

SISTEMA PERM ANENCIA


Este sistema en su estructura básica suele ser utilizado como ejemplo
sencillo en la iniciación de este tipo de programación por reunir pocos
componentes y tener una comprensión fácil. Lo vamos a emplear para ir
apreciando, diversos aspectos que nos iremos encontrando al ir completando
cada módulo, y añadiremos algunos elementos que producirán mejoras en su
rendimiento. La idea parte de la presunción de existencia de una tendencia
como Inferencia de las relaciones comparativas entre algunos aspectos de los
datos del campo de las barras del gráfico.
Vamos a comparar, por ejemplo el cierre actual, con otro dato de la barra
anterior, por ejemplo la máxima. Una vez que se genere una situación de cierre
por encima de la máxima anterior, se dará orden de comprar al cierre de esa
barra y para cerrar largo lo que se utilizará será un criterio de permanencia
durante un número de barras que será una cantidad a optimizar en nuestra
mejora de parámetros. Para fijar en principio que se produzca esa estancia en
el ncgocio habrá que emplear la función GetBarsSinccEntry, que es la que nos
devuelve el valor que queremos saber(número de barras que han pasado desde
entrada en negocio). Por supuesto, al ser unos requisitos poco exigentes, el
número de negocios será elevado y probablemente poco exitosos, l\)r ello.

163
ESTRATEGÍAS DE INVERSIÓN CON VISUAL CMART

tenemos que acostumbrarnos a proteger nuestras posiciones con stops de


posibles pérdiJas, por lo que habrá que añadir también un seguimiento con
alguna función representativa conio (jetLowestData.
Así que nos colocamos en la opción Sistemas y scleccionanios Crear
sistema con Visual Basic, Después de la clásica petición de nombre para el
catálogo y el archivo, nos encontramos con el área de trabajo de VBA, donde
los módulos están separados por líneas continuas. Todo está preparado.
Nos \ amos a la sección Poramctcrs. Colocamos el cursor al final de la
primera de las expresiones que lleva este nombre y le damos a Enter para
habilitar un espacio donde poder situar las variables que quiero declarar como
parámetro, para ser optimizadas después. La primera variable que vamos a
declarar será llamada n, y como hemos explicado anteriormente, tiene como
función portar el valor del número de barras que queremos que se permanezca
en el negocio en que entremos. Empezamos a escribir la expresión Dini, que es
la que debe preceder en este módulo a las distintas herramientas que vayamos
a usar en el sistema( variables, indicadores, funciones, etc,.). Por tanto,
escribimos Dim n as. En el momento en que damos al espaciador tras poner la
palabra as, se despliega un cuadro con las distintas posibilidades que hay de
aplicación de formato para la variable.
|(Cenc(aJ) |(DecUr«1ionm)

’ I , f';iro;i.rrüt.r
M id n as I
’ A¥gType __
O p tio ft ^ Boolean
Pu blic
ií^i?5í'¿5coileclion
la c e O
i P CompresionRange
With A l Z - ,
Currency
^ \'iP O a la W e n t if ie r
End 5uL ................. -
P u b l i c Sub Sy3 ten>_ 0nC «lc ulateBei r (ByVal Bar Aa Long)
U l t h APP
Cnd Wlth
Cnd Sub

Elegimos Long, que es un fomiato numérico apropiado, y tras set'ialarlo


en esc cuiulro, con doble click, o también ct>n Tabuhidor, lo incorporamos a!
texto. Le damos un valor inicial, en este caso 5, precTedido de una comilla. Asi
que la declaración de esta variable quedaría como Dim n as Long ‘5. Hacemos
lo mismo con el periodo de la función GetLowest, que queremos que también
sea variable parámetro, pero esta vez tenemos que saber cómo declararla, no
hay ayuda para ello: Dim GetLowestDataLcngth as (aquí vuelve a salir el
cuadro de tipos de formato) Long *10. Y ahora con el otro contenido de esta

164

i,
KSTRATEGIAS DE INVERSION CON VISUAL CHART

función, que es el campo de la barra sobre el que calcular la función: Dim


(iciLowesiDalatPrice as Price (este es otro formato, naturalmente no se pone
c! numérico, porque va referido al campo correspondiente- máxima, mínima,
cierre, etc..), se añade la comilla ‘ y el campo inicial que queremos, por
ejemplo, la mínima, PriceLow.

' i i Paraitietec3
Dim n As Long '5
Dim G etL o u estD ataL en gth As Long '10
Dim G e tl-Q u e stD a ta tP r ic e As P r i c e 'P r ice L ow
' P acainetecs ! !
Opción E x p l l c í t
P u b l i c APP As SysUsecApp
Iitiplements System ______________________________

Como no hay más variables parámetro, ahora pasaría a escribir el resto


de elementos a usar junto a la expresión Option Explicit, pero no hay ninguna
otra variable, asi es que pasaríamos a! módulo de OnlnitCalcidate pulsando la
tecla Enter, en donde para dar valores de comienzo solo tendría como objeto a
Harra Inicio, que en VBA es la función StaríBar, y la igualaremos al periodo
de bú.squeda de la función GetLowest para dejar pasar ese espacio temporal
antes de comenzar los cálculos.

En esta sección, debajo de la expresión With APP marcamos un punto


y se despliega otro cuadro en donde aparecen todas las funciones
disponibles, de donde elegimos StarlBar.

P u b l i c Suto S y s t e m _ O n I n i t C a l c u i a c e ()
l í i t h APP
.S ta
E n c |^ ShouldTerminale -d
StandardDevíalion

, Time
1^ TímeToMinutcs
i ^Volume
cff WofstSetles “
1------- :--------------------------------------------------------------- 1

r m j i i c SulD 3 y 3 t e i t i _ 0 n I m c C « l c u l f i t e o
W it h APP
.S c a r c B s r - G etL ow estD ataL ength
End « i t h
End Suta

Por último nos queda cumplimentar el código, el eje directriz del


sistema, y esto lo haremos en la unidad OnCalculatcBur, debajo también de la

165
KSTKATEC.IAS Dlí INVERSIÓN CON VISUAL CMART

expresión With APP. Cada vez que marque uri punto se abrirá el cuadro de
funciones para usar la que necesitemos en ese momento. Rmpezanios
señalando un espacio de tabulador para comenzar la redacción de estü
condición, que aqui, en VBA, em plea unos térm inos concrelos
ir.....Then.... Lise, End If, etc.., como hemos visto en el sislcma anterior.
La condición es:
Si el cierre es mayor que la máxima de ayer.... If .Cióse > .High (I)
Entonces..... Thcn
Compra 1 unidad (contrato, acción, etc .) ai c ie r r e .... Buy AíCloscJ
Comenzamos a redactarlo y nos damos cuenta de que cada vez que ponemos
un punto se despliega una ayuda, pero también pasa cuando iniciamos un
paréntesis después de una palabra de función, recordándonos los ténninos que
debe contener.
En los siguientes ejemplos eso es lo que sucede con High, donde se nos
informa en negrita que lo que debe figurar a continuación es el número de
barra al que hace referencia la función (BarsAgo):

P u b l i c Sub S y 3 t e m _ 0 n C a lc u l a t e B a r ( B y V a l Bar As Long)


iJith APP
I f . C i ó s e > .H ig h (
H ig h íB a ^ y A s fo A s iíV J S f], [W e ;)M e /-/ií3 tia 1 a lc fe n tifie r= D a ta )) As-
End U ith D o u b le _____________________________________________________________________
E n d ,S^Jb________________________________________________________________________________________

Y ahora con Buy, donde podemos apreciar la orientación sobre las


especificaciones: tipo de orden, n“ de contratos, precio (en el caso de órdenes
en stop y limitadas), etiqueta:

P u b l i c Sub S y 3 t e i n _ 0 n C a l c u l a t e B a r {ByVal Bar A s Long)


U i t h APP
I f . C i ó s e > . H i g h ( l ) Then
. Buy
BuyiJ Type A s T r a ile T y iie = A tS to |i], As Long = 1 j, [Pnce
D oi;t>/el. [ L a b e M s S jrjjijíi. D a ta ld e n tifie r = D a ta ))

End U i t h
End Sub

166
_____________________ KSTRATIvGiAS Ü í; INVÍ-:RS)6N CON VISUAL CÜAKT______________________

Cuando vamos a proceder a identificar el tipo de orden, nos da a elegir


cnlrc el catálogo de las mismas:

P u b l i c Sub S y s t e m _ O n C a l c u l a t e B a r ( B y V a l Bar As Long)


U i t h APP
I f . C i ó s e > . H i g h ( l ) Then
.B uy At
B Q j |f^('{ij'f,T!fTf?T^le T y p e == A tS to p ], IC o n frs c fs y ís Long= 1], [Pnce
End U i t h AtLimit 'A$Stnng]. \!cSerit>fierAsD a t a l d e n t i f i e r = Data[)
___ _ ' Q AtMarket
P u b l i c Sub ( 3 A t S i o p t P a r e u n e t e r s (P araioArray P a r a n iL i s t ()
‘ ¡i FauajíleLgL j n u lr r r i ~a t i o n

Al terminar de expresar la primera condición, que lleva aparejada la


orden de entrada en el negocio, tenemos que cerrar la primera expresión If con
la de End If, esto es muy inipotlante, porque si no la ponemos, al compilar
dará error. La mayoría de los problemas que pueden surgir en la compilación
serán por temas de sintaxis adecuada de instrucciones.

I£ .C ió se > .H ig h (l) Then


.B uy A t C l o s e , 1
End I f

Y ahora viene la segunda sección, encargada de la salida, que se puede


transcribir así:
“Si el número de barras que han transcurrido hasta la barra actual es
igual al valor de la variable n U f GetBarsSinceEníiy(0)=n)
Entonces (Then)
Cierra largo la posición del contrato que hemos comprado, al cierre
(. ExitLong A (Clase, l)
Y si no se produce esta circunstancia {Ehe)
Cierra la posición a largo en stop ( ExiiLong AtStop. ¡ ) en los valores
í]ue nos proporciona la función GetLowcst y que sirven de seguimiento
proicctor en tanto no transcurre el número de barras expresado.

If . G e t B a r s S i n c e E n t r y (0) = n Then
.E x itL o iig A tC lo s e , 1
E lse
.E x itL o n g A tS to p , 1, . G e c L o w e s c (D a ta , G e tL o w e s tD a c a c P r ic e ,
G e t L o u e a t D a ta L e n g c h )

End I f

167
\ ESTRATEGIAS DE INVERSIÓN CON VISUAI. CHART

O bscn eiiios que en el caso de las funciones que obtienen datos, como es
el caso aqui ilc CíetLowest. Iiay que poner sus parámetros entre paréntesis.
Y ya tendríamos el sistema, que a continuación tendríamos que com
y registrar con la opción del menú Debug, Puhlish. Lo insertamos en un
gráfico para ver los resultados y verificamos su funcionamiento, actividad
primordial para realizar un seguim iento desde el comienzo sobre el
cumplimiento o no de las restricciones que hemos impuesto. Después pasamos
a optim izar el parámetro de las barras de permanencia, con la opción
correspondiente en el menú de Sistemas (Optimizar parámetros del sistema) y
a continuación aplicamos el mejor que haya salido. En principio ya sabemos
con qué valor funciona mejor. Pero hay que recordar que no basta con una
muestra reducida en el tiempo y espacio para llegar a obtener conclusiones
válidas.
Para terminar de introducir una última mejora, que podría ser saber sobre
qué barra previa (en el sistema tal como ha quedado se compara con la
anterior) seria más efectiva esa confrontación, bastaría con crear una variable
que asumiera ese número, declarándola en el módulo de parámetros con h
e.vpresión Dim. Podriamos llamarla X, y así, tras dimensionarla en formato
numérico y poner un número inicial, sustituiríamos en el código la expresión
(1) por (X);
If Cióse > .High (1) pasaría a ser If .Cióse > .Htgh (X)
Los parámetros utilizados en la aplicación de este sistema en el gráfico
son;
n = 9; X = 6; GetLowestDataLength = 12

* IB E A 3 5 P L U S - IfitiiO iíSin ih u tO í H: 17 34 A 8 6 I 3 B M: 8 843.0 ro: 8.810.0 C: 8 821,0 I


a 450,0
o
LMii
D
L A j j /'
\0 1 -H
l Wi

Ú
T- 8.400.0
L«l;a

t
Ett! nrgocio se liquida cwí el ^
8.350.0
de prutección

O li n o 1 1 : 20 12 10 13 00 13 50 14 40 15 30
H < t ' MsTAHnia l«l

I6K

' S.
ESTRATEGIAS DE INVERSIÓN CON VISUAL CMART

Podemos apreciar que de los cinco negocios que se ven completos,


-cuiitro llevan a termino su permanencia marcada por la variable n, y uno de
ellos, marcado con una elipse, liquida al tocar el punto de protección
dclerminado por el valor de GetLowest de esa barra.

Nombre. Permanencia
Tipo. Seguimiento de Tendencia
Id ea. Relación comparativa entre campos de determinadas barras y
pcnnancncia en negocio un periodo de tiempo prefijado
Variables, n, que toma el valor del número de barras de permanencia;
X, que se encarga de la asignación del número de barras previas sobre la
que efectuar la comparación de campos; GelLowestDataLength, que
representa la longitud en la que buscar este punto representativo;
GetLowestDatatPrice, que ostenta el campo de la barra sobre el que
calcular el valor de la función GetLowest
Funciones. GetLowest y GclBarsSinceEntry
B arra Inicio. El valor de GelLowestDataLength
O rdenes. Compra y Cerrar Largo
Puntos E ntrada. Al cierre cuando el campo cierre de la barra actual esté
por encima del campo máxima de la barra señalada por la variable X
Puntos S alida. Al cierre cuando haya pasado un número de barras
determinado de permanencia o con stop de protección en los valores que
devuefve la función GetLowest

BUCLES

- Sistema For Ncxt


- Sistema Alcista/Bajista
Siguiendo con las relaciones entre valores del campo de la barra
buscando algún modelo o patrón que sirva de señalización, vamos a ver ahora
tíos sistemas que se basan para sus cálculos en la utilización en el código de
hueles encadenados del tipo Desde..Hasta (For.N ext en VBA), con los que se
buscarán puntos de entrada y salida natural dcl negocio, a la que podremos
aíViidir alguna fórmula de protección o stop loss. Us importan le dominar este
mecanismo y vamos a ver su utilización de dos formas distintas, comparando

169
KSTKATKOIAS niC 1NVI’;KSK'>N c o n VISU.M, CIlAK r

ckuos de distintas barras en el primer caso y datos de la misma bcirra.en el


segiindo.

ISISTKMA FO K N EX T
La idea es conectar ios cierres de cada barra con las máximas de caclj
barra anterior pero añadimos una confirmación temporal y pedimos que si-
compruebe que sean mayores los primeros que las segundas un número ilc
\eces consecutivas determinado para generar una señal de compra y para !a
orden de salida del negocio podemos emplear el caso contrario, que se rc]iit.in
varias \ cees seguidas un cieiTC por debajo de la mínima anterior.
Por ejemplo, suponiendo que los valores que ponemos son 3 y 2
respectivamente, éste seria el modelo visual que buscamos:

.-TJ -L i

2 v e c e s cierre
3 v eces consecutivas rnenof que
cierte m a y o r q u e m ín im a anterior
m á x i m a anterior

Pasamos entonces al primer módulo del proyecto. Pondremos como


parámetros (siempre con la expresión Dim) NAlza, que será la variable que
recogerá el número hasta donde debe llegar la variable X contador inicial dJ
número de casos que se deben dar, y también pondremos otra variable, NBaja.
que indicará el número hasta donde llegará X pero referido a la serie df
mínimas, y los dos parámetros de la función GetLovvest, que son tPricc >
Length, de los que ya conocemos ampliamente su misión.

‘ I , f ataínetecs
Dim NA lz a As D o u b le '3
t i r o As D o u b l e ’ 2

Cinn G e c L o w e s t D a t a t P r i c e As P n c e 'í'L'iceLow
I)arn G e t L o u e a t D a t a L e n c f t h As D ou lile ' JO
’rntaneteta ' ’
Ciim C o n ttr o l As B o o l e a n
liiiti C o n t r o l B A3 B o o l e a n
Diin X A3 D o u b le
Op ciori E x p l i c i c
f- u t i l i c APP As S y sU se rA pp
I n i p l e m e n ts S y s t e m

170
RSTIMTRCmS Dlv INVKRSIÚN CON VISUAL CHART

En el resto de variables declararemos a X. de la que ya hemos explicado


su función, y una variable Control A y otra Control B, de tipo boolcan,
\ortkidcro o falso, que serán las que tomarán la información que se obtenga de
K)s hueles de búsqueda de las condiciones.
Pasamos al módulo de dar valores iniciales a los otros elementos a
emplear que no se considerarán parámetros optim izables, y asi, primero
pondremos Control por ejemplo en la posición Truc (Verdadero), X lo
iniciamos en O representando la indicación de la barra actual en la que el
cálculo comienza a hacerse, y por último Startlíar (Barralnicio) en el valor que
tciiua NAIza más Nlíaja con objeto de dejar pasar unas barras de desahogo
para empezar a efectuar la búsqueda. Siempre que se exprese una función, hay
que recordar poner el que es su señal identificativa, excepto en el módulo
uncial.
P u b l i c Sub S y s t e r o _ O n I n i t C a l c u l a c e C
U i c h APP
C o n t r o l = Tcue
C o n c r o l B - True
X • O
. S c a r c B a r ■ N A lz a + N Baja
End W ith
End. Sub___________________________________

Y ahora pasamos ya al código, que representa la parte más compleja. En


L-sic caso, vamos a utilizar dos bucles del tipo “Desde...Hasta”, que en VBA se
iiiiMibran con las expresiones For...Next. Su característica más clara es que
Nahcmos el número de veces que se comprobará la condición antes de que se
real ice, y la rcHejamos en su variable contador. En el primer huele buscamos
las /unas donde se de la condición requerida de existencia de NAlza veces en
que el cierre sea mayor a la máxima anterior. Para ello usamos una estructura
que debes visualizar minuciosamente y entenderla a fondo pues se usará en
muchos sistemas. Si en cada pasada hasta la terminación del contador no se
‘Luí las condiciones, la variable Control tomará el valor de False (Falso) y el
cálculo saldrá del bucle, pasando a otro lugar dei sistema, y en Su caso, al
cálculo siguiente.
Por partes. El primer bucle comienza con la variable Control con el valor
Jo Truc. Después el For establece que desde O hasta el valor de NAlza, que
hcnu)s lijado en 3, por tanto desde O hasta } \ cces comprueba que el cieñe sea
tiicnor que la máxima anterior (X+1). SÍ se da esta condición. Control toma el
valor de False y el cálculo sale del bucle. SÍ no es asi, es porque se está dando
circunstancia que buscamos, y la expresión Next X hace que siga el
contador en una nueva pasada, donde se vuelve a com probar lo mismo.

171
ESTRATEGIAS I)R INVERSION CON VISUAL CHART

Cuando se tcnninan las vcccs que pide el bucle For Next, si sigue Conlro!
valiendo True, pasa a la condición si^íuicnlc donde se ordena conipr;tr 3I
cierre.

C o n tro l " True


For X - O To NAlsa
I f . C i ó s e ( X ) < .H ig h (X + 1) Then
C o n tro l “ False
End I f
N e xt X
l í C o n t r o l • Tr ue Then
•Buy A t C l o s e , 1
End I£

El segundo bucle tiene la misma estructura. El For indica desde O ha>.ij


el valor de la variable NBaja, que liemos empezado en 2, asi que desde O li;isla
2 veces busca que la niinima de la barra en curso sea mayor que la anterior Si
se diera esto, ConlroIB. que habla empezado como True, tomaria el valor de
False y el bucle se terminarla sin tomar ninguna medida operativa. Si no
sucede esto, siguen las vueltas hasta que se terminan y si ControlÜ si^iut
siendo True,(señal de que se han dado las minimas más bajas una que otri
consecutivas), entonces se da orden de cerrar la posición que habla a largo, o
sea, de compra, también al cierre. En este subsistema de salida se añaJí
también la liquidación protectora en stop en el valor que proporciona U
función GetLowest.

C o n t r o l s “ True
For X - O To NBsJ a
I t . C lo a e ( X ) > .Low(X + 1) Then
C o n t r o l B ■ Folse
End I£
N ext X
I£ C o n t r o l B “ T r u e The n
.ExitL onij A tC lo se , 1
Else
. E x i t L o n g A t S t o p , 1, . G e t L o u e s t ( D a t a , G e c L o w e s t D a t a t P r i c e ,
G etL ouestD ataL ength)
End I f

Hay que tener la siguiente prevención a la hora de asignar valores a l»i


variables de repetición de situaciones. Como el bucle lo comenzamos con rf
contador O para que compare la barra O, o sea la ^actual, en primer lugar.«
produce un pequeño desajuste: si ponemos por ejemplo 3, el bucle buscarí ;
cuatro repeticiones, pues entra también el 0. Es por eso que siguiendo cond
ejemplo que habíamos puesto, 3 veces cierre mayor que máxima al alza y 2 J
veces mínima menor que mínima a la baja, los valores de NAlza y NBajI’J
deberían ser respectivamente 2 y 1 para obviar tal hecho.

172
ESTRATEGIAS DE INVF.RSlON CON VISUAL CHART

» BaN K JN TER ' Fin tf« <Jc< 1 d l i l H 23 50 A 3Q.10 M 30.0) m 38.00 C 30.Sa P . I6' V

mz*‘ 2 o ■ 30.00
«^■1 Ltqukbciónporstorde
prultcción «n G«LoiMe$t de 10
btfrn ,n
28.00

26,00

24.00

7?nn
Feb 'Mar
vaiio; I * I Jj

Nombre. For Ncxt


Tipo. Rcconocimicnto de Patrones
Idea. Relación comparativa entre campos de cícrrc de unas barras con
campos de máximas y mínimas de otras, buscando una repetición de
situaciones durante un número determinado de veces
Variables. X, contador; NAlza y NBaja, que toman el número de veces
que se debe repetir el modelo al alza o a la baja; Control, de tipo
boolean, derivada del bucle de cálculo
Funciones. GetLowest
Barra Inicio. NAlza+NBaja
Órdenes. Compra y Cerrar Largo
Puntos Entrada. Al cierre cuando se produzca la repetición de situación
buscada(cierre mayor que máxima anterior)
Puntos Salida. Al cierre cuando se produzca la repetición de situación
buscada (cierre menor que mínima anterior)
Otros Elem entos. Utilización de bucles Fon.Next

173

4 '
( ( , { i i f ^ ( ( i f f ( t f < ^ f f ^ ^ ^ ^
K S T R A T E G JA S D E IN V R R S ir tN C O N V IS U A L C H A R T

SISTEM A ALC ISTA /BA JISTA

Aprovechando la creación de un esludio que muestra las barras en las


que el cierre está por encima de la apertura de un color y de otro cuando se da
la circunstancia contraria, no esturia de más diseñar un sistema sobre esa base.
Las implicaciones alcistas o bajistas se derivan de la óbservación que nos ha
proporcionado el estudio.
Aquí vemos én color oscuro las barras que cumplen la condición de
tener un cierre superior a su apertura, y de color más claro las que lo tienen
inferior.

Como parámetros declararemos las variables llamadas N y NB, que


serán las que indicarán el valor del número de veces que queremos que se
repita una determinada circunstancia, por ejemplo, efectuar una compra .si ,'ic
repite cuatro veces seguidas la situación d e barra con cierre por encima de su
apertura. Las expresamos con nombres distintos para que independientemente
puedan tener diferentes valores según la optiniización para la situación alcista
y para la bajista. Otros elementos o herramientas serán dos variables Cotilrol.
de tipo boolean, y utui variable que ltamarenu)s i, que es uii contador para lits
bucles.

' i ; P araineters
Ditn N As D o u b l e ' 3
Dim NB As D o u b l e •3
' P a r a in e t e r a ‘ !
Ditn c o n c r o l As B o o l e a n ' B o o l e a n
Ditti c o n t r o l B As B o o l e a n ' B o o l e a n
Dim i As D o u b l e ' D o u b l e
O ption E x p l i c i t
P u b l i c APP As S y sU se r A p p
I m p le m e n t s S y s t e i n

En cuanto a las inicializaciones del módulo OnInitCalculate, tenemos


la de las dos variables Control a True, o sea, a Cierto, la del contador en O y la
de StartBar asociándola al número que represente en cada momento la variable

174
< ( f ( ( i f f * r ( r r r r f f r ^ r r r r

____________________ ESTRATEGIAS DE INVERStóN CON VISUAL CHART____________________ .

N+NB por ejemplo, con objeto de que se deje pasar un número suficiente de
bnrras para cl cálculo.

P u b l i c Sub 3 y s t e i n _ 0 n I n l t C a l c u l a t e ()
U i t h APP
c o n t r o l ■ True
c o n c r o l B ■ True
,1 - 0
, S t « r t B a r ■ N + NB
End V i t h
End Sub

Por lo que hace al código, se utilizarán dos bucles For ext. El primero
se áeslinará a comprobar en un número de pasadas que se fijan con un
contador en la variable i hasta el valor que tenga la variable N, que la situación
de cierre mayor que la apertura en la barra se da en N barras. Cuando esto
suceda la variable control será cierta, con lo que pasará a darse la orden de
compra, “Buy” al cierre de un contrato. Si no se diera el caso, la variable
control tomará el valor de falso y saldrá del bucle, yéndose al siguiente, en
donde de fomia totalmente simétrica comprueba en un número de pasadas que
van desde i hasta NB, que el cierre es menor en la barra que la apertura en un
número NB de veces. Si se produce la situación controlB será cierto y se dará
orden de cerrar largo “ExitLong” al cierre.
P u b l i c 3uh S y a t e m _ O n C a l c u l a t e B a c ( B y V a l Bac As Long]
U i t h APP
c o n t r o l ■ True
r o e i - O To N
12 . C i ú 3 e ( i ) < . O p e n ( i ) Then
c o n c ro l ■ Falae
End l£
N ext 1
I£ c o n t r o l ■ Tru e Then
. Buy A t C l o s e , 1
End l í
c o n t r o l B “ True
F o t 1 - O To NB
lí . C l o s e d ) > . O p e n ( i ) Then
c o n tro lB “ F a lse
End 12
Next 1
I f c o n c r o l B ■ T ru e Then
.E xitL on g A tC lo se, 1
End I f
End U i t h
End Sub

Hay que tener en cuenta que como el cálculo se hace cotejando cada
barra consigo misma comenzando desde O, si el valor de N o de NB es por

175
ESTRATEGIAS DE INVERSIÓN CON VISUAL CHART

ejemplo 3, vcrifieará que se cumple 4 veces la condición, y si el valor es 1, lo


vcrillcará 2 veces.
En el siguiente gráfico podemos observar el funcionamiento dd
sistema con valores de 2 para N y NB y para un mejor seguimienlo tia\
insertado un estudio que nos pemiite ver de distinto color las barras según hs
características: que aquí vienen al caso.
ETREFOM CA
► T ELEFO M IC A - Fin dt dpj 1 tfpji H: 2 350 A 13,05 M H / » m 13.91 C. 14.2J F e .,C )V .3 1 *
D
íPta
3,00

3 ,
D
LM:i tn 7,50
a;
.¿ y
7,00

S ep
M] <]> ! H\ HowT A X v a iio t ¿ l i l 2Í

Nombre. Alcista/Bajista
Tipo. Reconocimiento de Patrones
Idea. Relación comparativa entre campos de cierre y apertura de uní
misma barra, buscando una repetición de situaciones (cierre mayor quf
apertura) durante un número detenninado de veces
Variables. N y NB, que representan el número de veces que se dfW
repetir la situación o modelo, en el primer caso para la compra y en el
segundo para cerrar largo
B arra Inicio. N+NB
Órdenes. Compra y Cerrar Largo
Puntos E ntrada. Al cierre cuando se produzca la repetición de situacitw
buscada (cierre mayor que apertura en la misma barra)
Puntos Salida. Al cierre cuando se produzca la repetición de situació#
buscada (cierre menor que apertura en la misma barra)
O tros Elementos. Utilización de bucles For..Next

176
ESTRATEGIAS DE INVERSIÓN CON VISUAL CMART

IMSTEMA ESCUDO

Como un escudo protector. Así va envolviendo el indicador parabólico


a la cotización. La idea central consiste en el seguimiento que hace del
movimiento de los precios desde un alejamiento inicial en el emplazamiento
Je pivots significativos hasta un acercam iento según los límites que
establezcamos en virtud de una aceleración progresiva. El parabólico puede
ser ascendente o descendente, y la línea cambia de uno a otro sentido cuando
|j mínima de la barra en el primer caso, o la máxirna de la barra en el segundo,
sobrepasa al indicador.

Utilizaremos el indicador parabólico para dar señal de compra si la


cotización lo iguala y liquidaremos sobre el valor de una variable Techo
teniendo ?n cuenta el descuento de otro indicador, el de volatilidad
ii TrueRange (ATR).
Como podemos ver, hemos señalado como variables parámetro en
primer lugar NUM, que será un coericiente multiplicador; a continuación los

' , , P n ra itie c e ts
Din MUH As D oub le ' 3
Dim P a r a b o l í c D t t t a C o e £ _ A c e l e i : « c í ó n As Doubie
Din P a ra b o líc D a c a T o p e _ A F As D ouh le '4
'P a r a m e t e t s •'
Dím VP As Double ToiüDle
Ditn Tech o As D oub le ' Doiü^le
Dlm VATR As Double '[>ouble
Dím P a t a b o l i c D a t a As D ouble
Dím AvTcucRangeDaca As Double
O pc ió n E x p l l c i c
P u b l i c APP As SyaUserApp
Iinpleinencs Syscern

177
f t ( i f i ( f I ( f t

FSTK-ATKC.IAS DF. JNVF.K.SIÚN CON VISUA1, <'l lAlíT

dos parámetros optim izables dcl indicador, que son el coeficiciH c. de


acclcración y cl topo o valor máximo do dicha acclcración expresados en las
variables ParabolicData Coef_AceIeración y ParabolicDataTope_AF.
Después se declaran explícitamente el resto de las variables c
indicadores que van a intervenir en el sistema:
- VP, que es la variable que recogerá el valor del indicador Parabólico
- VATR, que hace la misma función con el indicador de volatilidad
ATR
- Techo, que se irá identificando con las máximas consecutivas que se
vayan produciendo
- AvTrueRange, que es el indicador que calcula una media móvil de
las diferencias entre cierres de barras anteriores con rangos de máximas y
mínimas de otras barras que le siguen, señalando así la volatilidad dcl mercado
- ParabolicData
El segundo módulo del sistema en VBA lo constituye el de las
inicializaciones de las variables y el de la identificación de indicadores en esie
caso:

P u b l i c Sub S y 9 t e n i _ 0 n l n l t c a l c u l t t c e (]
H i t h APP . X
VP - O
Techo • O
VATR - O
P a r a b o l i c D a t a - . G e t l n d i c a t o r l d e n c l f l e r ( P a c a b o l i c , Data,
P a c a b o l ic D a t a C o e £ _ A c e 1 e r a c i ó n , P a r a b o l ic D a t a T o p e _ ir )
AvTruePangeData •• . G « x .I n c li c a c o c I c le n t l£ le r (AvTrueRange, D ata, n:
■ScartBar - O
tn d With
End S u b

Recordad que con la función Getlndicatorldentifier se crean los datos


dcl indicador que le servirán como distintivo. En este caso AvTrueRange
presenta entre paréntesis su código, la serie sobre la que se calculará - por
d e fe c ta D ata, que representa al gráfico que esté activo- y el
AvTrueRangeDataPeriodo, que en vez de expresarlo así, para lo cual
habríam os tenido que d ec lararlo an teriorm ente, lo reflejam os
numéricamente, 14, porque tomamos como fijo ese período de barras sobre el
que se calcula.
En cuanto al Parabólico, se anota su código, la serte y los dos
parámetros de los que ya hemos hablado.

178
( f ( t ( (

RSTRATKCtAS DR INVERSION CON VISUAL CÍIART

Superados en la programación estos dos primeros escollos, nos


adentramos en el corazón del sistema, que es el código. Aquí colocaremos
tanto las condiciones que nos llevarán a determinar la entrada en el negocio
correspondiente como la señal de salida para limitar el riesgo en la operación
dejando correr el posible beneficio siguiéndolo con stops que serán fijados por
la conjunción de la variable Techo con el indicador ATR.
En primer lugár colocamos una asignación en sentencia del valor de los
indicadores Parabólico y ATR a las variables VP y VATR, en este último caso
con el añadido de multiplicarlo por un coeficiente optimizable, para señalar
después un stop de salida más o menos ceñido.

P u b l i c Su b S y 3 t e r n _ 0 n C a l c u l a t e B a i : í B y V a i B a c As L o n g )
¥ í t h APP
VP - . G e t I n d i c a c o r V a l u e { P a r a b o l i c D a t a )
VATR - . G e t I n d i c a t o r V a l u e ( A v T r u e R a n g e D a t a ) * NUH

E! criterio de entrada será el de estar la barra en el campo de la máxima


por debajo o como mucho igual que el valor del Parabólico, y eso será la señal
para generar una orden de compra en stop en el mismo valor del Parabólico.
Como se puede ver, cuando la orden es en stop, (ras el tipo de orden hay que
poner la cantidad de contratos o unidades y el precio a que se quiere comprar,
que puede ser susútuido por una variable como en el caso presente (VP), o
por una fórmula más compleja. A continuación se podría añadir alguna
etiqueta, pero aquí no es preciso.

lí . H í g h < - VP Then
.B u y A t S t o p , 1 , VP
End I£

Por último la sección supervisora de los riesgos que se pueden tomar,


determinando cuándo liquidaremos la compra, o sea, cuándo cerraremos la
posición a largo. En ella echaremos mano de la tan socorrida función
GetMarketPosition, que devuelve un número que señala el signo del negocio
en que nos encontramos (1 es comprado) y así estableceremos que si en efecto
la compra está hecha, primero hay que comprobar el número de barras
transcurridas (función GetBarsSinceEntry) y si ese número es distinto de O, o
sea, ya ha pasado alguna barra, entonces si la máxima de la barra es superior al
valor de la variable Techo, ésta se actualiza en forma ordinaria con el de la
máxima. Si no hubiera transcurrido ninguna barra, se pondria el valor de
Techo en la máxima como actualización extraordinaria con objeto de
rcubicarla en ese momento. Por último se coloca la fórmula para liquidar la

179
RSTRATÍCC.IAS DE INVERSION CON VISUAL CHART

posición, que será cerrar largo (ExitLong) en el stop de seguimiento que.viene


dispuesto por Techo-VATR.

lí . O e c M a r k e c P o s i t i o n ( O ) - 1 Then
I£ . G e t B a c e S i n c e E n c r y (0) o O Then
I f . H i g h >■ T ec ho Then
Techo " .H ig h
End I f
E lse
Techo “ .Klgh
End If
.E x lc L o n g A tStop, 1, T ec ho - VATR
End If
End With
End Sub

STE L E FO M C A HBQ
13.01 f 21,41

20,00
1
* .

16,00

16,00
,_o «
TF.ÍJD'—
0,60
¿OH-
'0 1 ___^_______________________T e b Mar
M| »]í X How 2 X v atio » jf H o 1 <I J 2J

Nombre. Escudo
Tipo. Seguimiento de Tendencia
Id e a . Relación comparativa entre cotización y valor del indicador ^
Parabólico
Indicadores. Parabolic y AvTrucRange
Variables. Num,mulíiplicador;ParabolicDataCoef_Acclcrac¡on y Para-
bol icDataTopc A F, que son parámetros del indicador usado, sirviendo
para medir la cantidad y rapidez dcl acercamiento del indicador desde ■
puntos representativos hasta la barra de precios; VP y VATR, que
representan los valores de los indicadores; Techo, que toma el valor dcl
punto de referencia para salida de negocio
ESTRATEGIAS DE rNVERSIÓN CON VISUAL CHART

Funciones. GctMarketPosition, GetBarsSinceEntry, GctIndicatorValue


y Gctlndicatorldcnlifler
B arra Inicio.O
Ordenes. Compra y Cerrar Largo
Puntos E n trad a. En stop si máxima de la barra está por debajo o es
igual que el valor del Indicador Parabólico
Puntos Salida. En stop en la fórmula Techo -VATR

MI'DIAS SOBRE OSC ILA D O R ES


- Sistcina SKSD Estocástico
- Sistema Medias RSI

SISTEMA SKSD ESTO CASTICO

El Estocástico es un oscilador que se debe a George Lañe, que lo


(icsarrolló a finales de los 50 y que, partiendo de la presunción de que los
cierres de las barras suelen estar más cerca de sus máximas cuando hay una
fuerte tendencia alcista, y que se aproximan más a sus mínimas cuando existe
una poderosa tendencia bajista, intenta medir el momento del mercado al
cninparar el precio de cierre de una barra con la media del rango niáxima­
ní ininia de las de un periodo previo determinado.

TELEFONICA- Fin d* díj 1 dÍH H: 23 SO A; 12.<M M: 12.71. m: 1 2 ^ C 12.70 P V 3: ><

20,00

A 18,00

16.00
Siochjf1ic_TEf MC SK 24.40 SO: 24.94 BjrxtJSuf 80.00 BjndjW 20,00 P -154 ..Qx
TUÜ.TJU

0.00
'peb W May
HhlHHfowTlvaMoinTQljJ
Generalmente aparece representado a través de dos lineas de datos, una
es la principal, que relaciona el cierre actual co alas máximas y minimas de un
periodo dado, y otra es una media móvil de amortiguamiento sobre la primera.

181
_____ r:srK’An-;('JAS DK in v i ; k’sk ‘)N c o n v is u a i , (; h a k i;________ ________ ____ ICSTIMI'F'XIIAS [)!■: INVÍ'J<SIÓN f:f)N y iS (JA I-ritA K T __________________

Intenta sijznillcar la dirección de las cotizaciones, y la oscilación se produce en referencia en la representación dcl oscilador (por defecto 20 y 80): el tipo de
litia yaina i|iie va ile O a 100 ^encraltneiUe, con bandas scnalaila.s en 20 y SO idcntillcador de precio en la barra, pudiendo escoger cualquier campo,
como reí'erencia. Bueno, ésta es la idea. Vamos a utilizar e! indicador referidos a los GetlligbcstData y GetLowestData; el periodo en el que buscar
lístocáslieo basándonos en las señales que proporcione un cruce de medias estos valores (en principio se señalan 10 barras); las variables NA y NB, que
sobre él mismo, l;is medias exponenciales SK y S[), cjue atiiortiguan la repicsentan las cifras por debajo o por encima de la cual debe hacerse el ctuce
lluctiiación brusca dcl oscilador. Por tanto, vamos a emplear las dos lineas de de lineas (en principio 20 y 80); y dos variables porcentaje para lu fórmula de
datos del indicador, la linca 1 que es el SK y la linea 2, que es el SD. salida de los negocios, que son PorcentajeLargo y PorcentajeCorto, con un
Compraremos solo cuando se den ciertas condiciones, que son el momento en valor inicial de 1.
que SK corte a SD al alza y además se pide que cuando esto se produzca, el Por supuesto hay que declarar asimismo al indicador, con un tipo de
cruce se de por debajo de una cantidad determinada, que será optiniizable. Se data numérico Long por ejemplo. En realidad muchos de estos parámetros se
cerrará largo, o sea, se liquidará la posición, cuando la cotización se sitúe por pueden desactivar porque no es prácticamente necesario su mejora, pero
debajo de los (¡etLoweslData. Para realizar una venia y su correspondienic hueno, no está de más tenerlos a disposición.
cerrar ei>rto, se procederá a la inversa, es decir, se hará primero cuando la linea
I corle hacia abajo a la linea 2 y esto lo haga por encima de cierto nivel, y En el siguiente módulo hay que realizar la identificación del indicador
después se sigue la cotización con los (ietlligheslData para liquidar en caso a usar y todos sus contenidos adicionales. En este caso, con la e.xpresion
preciso. (iellndicatorldentincr llevamos a cabo tal labor, señalando entre paréntesis el
nombre del indicador, la serie sobre la que se aplica, sus lineas, el periodo de
Como siempre hay que tener claros desde el comienzo las variables, cálculo, el tipo de media que se le va a aplicar para construir esas lineas, y las
indicadores u otras herramientas que vamos a emplear, pues se empieza Bandas de representación gráfica. Por supuesto inicializamos también !a
completando este módulo inicial. Así que situamos todos los patfmietros a
función StartBar.
optimizar en el sistema, que en este caso son bastantes, a saber;
P u b l i c Sub S y 3 t e i t i _ 0 n I n j . t C a l c u i a t e O
U i t l i APP
r'iin S c o c h a s c i c r n t a P e c l o c i o Aa Long '14
[“im S c o c h a s t i c T a c a S k i s Long ‘ í S t o c h a s t l c D a t a “ . G e t I n d l c a c o r I d e n t l í l e r ( S t o c h a s t i c . Daca,
Dim S c o c h a s c icDoc a H e d i a Aa Long ' AvgEx[ioiieiic l í i l S t o c h a s t i c r a t a P e r i o d o , S to c h a s tic T a ta S K , S to c h a s tic C 'a ta S d ,
['im Sc otrhasc i c I i a t a B a n d a S u p e t i o r As D oubie ’ S to ch aac icD ataH ed ia, S to c h a s t icT ataP aiid íiS u p erlo r,
Dim S t o c h a s t i c D a t a B a t i d n l n í e r l o r Aa D ouble ' S co ch ascicD ataB an d aln ferio r)
Ditn C e c L o u e s t D a t a t P n c c As P n c e ' P r i c e L o w
Dim C e t L o u e s t D a t a L e n g c h As Long ' 1 0 •S tartB ar ■ O
Dim S c o c h a s t i c D a t a S d Aa D o u b le '3
D iin HA A s r t o u b l e ■2 0
Eiid W ith
['im NB As [>outile ’ SG
Eiid Sub________ ________________________________________________________ _
['in> P o r c e n t a j e L a c g o As Doijtole ’ l
Dirn G e t H i g h e s t D a c a t P c i c e As P n c e ' PriceHigh
r>im G e t H i g h e s c D a t a L e n g c h As Long 10
El núcleo central, el código del sistem a que dirige todas las
Dim P o t c e n c a j e C o t c o As ü o u b l e ’ 1 operaciones, dividido en dos partes; las condiciones de entrada en los negocios
’ Parajtieters M y las de salida de los mismos. Vayamos poco a poco;
Dim S c o c h a s t i c D a t a Aa Long
O ption E x p l i c í t
Pu to l ic APP As S y s ü s e r A p p Transcripción: “ SÍ el valor del indicador Estocástico en la barra 1, o
Itíip le inen ts S v a te m ____________________ sea, la anterior a la actual y referido a la línea 1. era menor que el \ alor del
El periodo de los datos del Estocástico, sobre el que se obtienen los indicador Estocástico también de la barra l pero comparándolo con la línea 2 "
máximos y minimos. Comenzamos con 14, el que tiene por defecto; el periodo “Y el valor dcl Estocástico en la barra O, o sea la actual, referido a la
de media móvil de Sk, en principio 3; el tipo de media con la que se quiere
lineal, es mayor que el valor del Estocástico en la barra O referido a la linea 2”
trabajar, pudiendo elegirse entre exponencial, simple y aplanada(aqui hemos
elegido la primera); los valores de las Bandas superior e inferior que sirven de

182 IK.l

1
ICS'I RATKGIAS DK INVICKSION CON VISUAL CIIART

“Y además el valor dcl Eslocástico en lá barra O y referido a la lúica 1


se encuentra por debajo de la variable NA, cntunccs...”
“Compra al cierre un contrato”

f'uJjlic Sub Systern_O nC alculateBar (DyVal Bar As Long)


U it h APP
I f . G e t I n d i c a t o r V a l u e ( S t o c h a a t i c D a t a , 1, 1) <
. C e t I n d i c a c o r V a l u e ( S t o c h a s c l c D a t a , 1, 2) And
, C e t I n d i c a t o r V a l u e ( S t o c h a s c i c D a t a , O, 1) >
. G e t l n d i c a c o r V a l u e ( S t o c h a s t í c D a t a , O, 2) And
. G e t l n d i c a c o r V a l u e ( S t o c h a s c i c D a t a , O, 1) < NA Then
.Buy A t C lo s e , 1

“Y si no se produce esta triple circunstancia”


“Comprueba que el valor del Estocástico en la barra 1 y de la línea 1 es
mayor que el del otro Estocástico en la barra I y referido a la línea 2"
“Y en la barra actual, o sea, la O, el Estocástico de la línea 1 esta por
debajo de la línea 2”
“Y la linea 1 en la barra O está por encima dcl valor representado en h
variable NB”
“ Entonces”
“Vende al cierre un contrato” - i

Else
l í . G e t l n d ic a t o r V a l u e ( S t o c h a a t i c D a t o , 1. 1) >
. G e t I n d i c a t o t V a l u e ( S t o c h a s t í c D a t a , 1, 2) And
. C e t I n d i c a t o r V a l u e ( S t o c h a s t í c D a t a , 0, 1) <
. G e t I n d i c a t o r V a l u e ( S t o c h a s t í c D a t a , 0, 2) And
. G e t I n d i c a t o r V a l u e ( S t o c h a s t í c D a t a , 0, 1) > NB Then
. S e l l A tC lo s e, 1
End I f
End I f

Sigue el código, una vez creadas las condiciones y órdenes par»


comprar y vender, con las que suponen cerrar esas posiciones. Así, se utiliza b
función GetMarketPosition para identificar en un momento dado cuál es li
situación y canalizar hacia la orden oportuna el cálculo.
“Si GMP de la barra O es igual a 1, situación de estar con negocio de
compra abierto, entonces orden de cerrar largo (ExitLong) en stop, ! contrato.
en el punto determinado por el valor de los GetLoweslData del periodo |
estipulado menos él mismo, multiplicado por el Porcentaje de Salida a Largo y
partido por 100” %

184
KSTIMTICdlAS Dlí INVRKSIÓN CON VISUAL CHAKT

End II
I I .C e tM ac k e cP oslclo n lO ) - 1 Then
. E x i t L o n g AtScop , 1, , O e tL o w e s t{ D a ta , C e t L o w e s t D a t a t P r i c e ,
CecLovestD ataLength) - .G e tL o u e s t(D a ta , G etL o w eatD acatP tice,
G e cL o w e s tD a ta L e n g t h ) • P o c c e n t a ^ c L a r g o / 100
C ls e
l í .G ecK arkeC Po9ic lo n(0) ■ - 1 Thín
• E x i t S h o c t AtScop, 1, . C e t H i g h e s t ( P a c a ,
G e t H l g h c s t D a t a t P r i c e , C e tH ig h e s tD a ta L e n g th ) ♦
. G e c H lg h e s c (D a ta , G e c H l g h e a t t a t a t P c l e e ,
GetHiighestDataLengch) • P o r c e n t a j e C o c t o / 100

Cnd I£
tnd : i
End U ic h
End 3ub

“ Y si no es ese el caso, comprueba que GetMarketPosition es igual a -


1. es decir, que hay un negocio de venta abierto, y entonces da orden de cerrar
corto (ExitShort) en stop, 1 contrato, en el punto dctenninado por la fónnula
Jcl valor de los GetHighesiDala menos él mismo m ulliplicado por el
l\>rccntajc de Cerrar Corto partido por 100”

B ís lE 3 t
» TELEFONlCi^ .r ii1 i t t 1 dÍJ1 N :23 S9 A: 12.44 M 12.7 1 m: 12.28 C 127C1 p e.3J V, ; 3
... - / " ' í ■6.50

LB m
ñ 0
■6,00

J
r? . ■5 50
StochJftic^l EF M : £K J 24.B4 SindjSup j8 0 .0 0 GjndjInI 20.ÍW Pl 535.5'S j^ a ü
l ■lUU.UU

□ V /w -v •vi • 2440J
11 A '/ 1I-W J
1 ‘Mar 'Abr 'Mav |

Nombre. SKSD
Tipo. Seguimiento de Tendencia
Idea. Cruce de medias internas (líneas de datos) sobre un oscilador
Estocástico
Indicadores. Stochastic

185
« I I <

i:s i K'ATIÍC.IAS DI-; INVKIÍSION CON VISUAL CilAKT

N'ariablcs.Lo.s diversos parániclros dcl indicador: StocluisticD.iia


iVriodo (longitud de cálculo), SlocliasticDataMcdia (tipo de media
móvil a emplear), StoehasticDataBandaSuperior y liandalnferiur
(/unas de seguimiento gráfico), StochasticDataSk y Sd (que son las dos
lineas de dalos del indicador, medias móviles); (¡eil lighcst \
GetLowcst DatatPrice y Lcngth (campo de la barra y longitud en que
buscar estos valores para ambas funciones); NA y NB, relerencias pi>r
encima o debajo de las cuales se debe producir eT cruce de niedi:h
m óviles; PorcentajeLargo y PorccntajeCorlo, coeficientes nuil
tipiicadores
Funciones. GetlndicatorValuc,GctIndicatorIdcntifier,GclMarkcHVi-
tion, GctHighest y GctLowestData
B arra Inicio. O
Órdenes. Compra y Cerrar Largo; Venta y Cerrar Corlo
Puntos Entradii. Al cierre cuando se produzca el corle de alcisia lic
una media a otra por debajo dcl valor de la variable NA, o cuando se Jl'
el corte bajista por debajo del valor de la variable NB
Puntos Salida. En stop cuando la cotización sobrepase los puntos Je
protección determinados por las funciones GclLovvcst y GctUidk*'!
según sea compra o \ cnta la posición en vigor

ISISTEMA MEDIAS RSI


Volvemos al cruce de medias como señal de seguimiento de tendcncii
pero en este caso aplicadas sobre el oscilador RSl y no sobre la cotización
Son medias móviles de distinto tipo y periodo, una es simple y otra pondcraJi
una es de plazo largo y otra de plazo corto, pero podrían ser de cualquier otii
clase. Para obtener los puntos concretos de entrada y salida utilizaremos Ijí
funciones GetHigheslData y GelLowestData, que nos proporcionan los valorrt
mayores de una serie, los primeros los fijaremos sobre las máximas y lot
segundos sobre las minimas.
En la sección de parámetros aparecen los de los diversos indicadores »
funciones a emplear: periodo y origen de datos de las dos medias móviles
(datas del tipo numérico el primero y tipo price el segundo), longitud y campa
de la barra sobre el que se calcula en cuanto a las funciones (numérico y pncf
igual que en el caso anterior). Después viene la declaración de indicadores ^
otras variables: medias móviles por un lado, y variables Up y Down, por otm> ^
que serán las que señalarán los puntos operativos al asignarse en ellas

JX6
RSTHATKGIAS DR INVKRSiÓN CON VISUAL CMART

vjlorcs devueltos en el cálculo del programa sobre las funciones (recordemos


el anclaje de variables que hemos practicado en PDV)

, Parainetecs
Dim A v S i r n p l e R S I D a t a P e t i o d o As Long ‘ ICi
Ditn A v S i i r i p l e R S l D a c a O r i g e n D a t o s As P r i c e ‘
Dim A v l í e l g h t e d R S I P a t a P e r i o d o As Long 'SO
Pira A v U e i g h t e d R S I D a t a O r i g e n D a c o s As P n c e '
Dxni G e t H i g h e a t D a t a t P r l c e As P r i c e ‘ P r i c e H i g h
Dim G e c H l g h e s c D a t a L e n g t h As Lo ng ' 1 0
Iiim G e c L o u e s t p a c a c P r i c e As P r i c e ' í r i c e L o u
Dim G e c L o u e s c D a t a L e n g t h As Long ' 1 0
' Pacaiueters ' '
Dim Up As Double 'Doubie
Dim Down As D o u b l e ' D o u b l e
Dim B S I D a t a As Lo ng
Dim A v S i m p l e P S I D a t a As Long
Ditn A v U e i g h c e d R S I D a t a As Long
O ption E x p l i c i t
P u b l i c APP As S y s U se c A p p
I m p l e m e n t s Sysceiti___________________________________

En el módulo de inicializacioncs primero ponemos a O tanto las dos


variables Up y Down para que recojan el valor de GetHigliestData y
(lotLowestData desde el comienzo, como StartBar, y en cuanto a los
ulcntificadores de los indicadores tienen que expresarse dentro de un
p.ircnlesis sus diversos parámetros. Fijémonos bien en sus características,
purque se repetirán muclio en los distintos sistemas. De lodas foniias, una
pa]ucña ayuda se va desplegando indicando los valores que deben reflejarse.
I n el identificador del RSI figura el nombre, la serie de datos por defecto, el
periodo sobre el que se obtiene (14) y los valores de las bandas superior (70) e
interior (30). En las medias aparece el nombre, la serie sobre la que \ a referida
(en este caso el RSI), y los parámetros de periodo o longitud en que buscar y el
‘Tigcn de los datos.
P u b l i c Suta S y 3 t e m _ 0 n I n i t C « l c u l a t e O
With APP
Up - O
Ooun “ O

RSIDaca ” . G e t l n d l c a t o c l d e n t i í l e r ( R S I , D a ta , H , 7G, 30)

AvSiinplePSIDaca - .G et I n d i c a t o r I d e m l í le c ( AvS itnple, R SID ata ,


A vS ím ple B SIData Peciodo , AvSittipleRS IDataOr íg e n P a c o s)

AvUelgttcedRSIDaca “ . G e t I n d i c a t o r I d e n c i í l e c (A vU ci ghte d, PS ID ata


A vüe ig hce dR SID a ta Pe rl odQ , AvW elgh te dR SI Da ta Orig enDat os)

•StactB ac - O
tn d With
tn d Sub

187
ESTRATEGIAS DE INVERSIÓN CON VISUAL CHART

Y ahora vamos ya a! código. No solo basta con que se produ


situación de estar la media rápida por encima de la media lenta, sino que
además queremos que la orden se genere en el mismo momento del cruce, y
para ello tenemos que recurrir a una fórmula estándar, ya vista en diversas
ocasiones, que es la de señalar iios condiciones: que primero compruebo el
valor superior de la media simple en relación a la ponderada, y que además en
la barra anterior la situación fuera la opuesta. Cuando todo esto se da, en una
sentencia asignamos á Up el valor de los GetllighestData sobre las máximas a
buscar en el periodo señalado. Así se comprará en stop en el valor do la
variable Up . Idéntico proceso se sigue con la situación de venta, indicando
primero la circunstancia de estar la media rápida por debajo de la lenta )
además en la barra anterior la situación contraria. A partir de ello se asigna a la
variable Down el valor de los GetLowestData y se da orden de vender en el
precio de la variable.
Hay que observar cómo se refiere a la barra actual y a la anterior:
.GeihídicatorValue (AvSinipleRSIData) indica la barra actual pues no
hay ningún número que marque otro momento
.GetIndicatorValue (AvSimpleRSIData, l.I ) indica con usos número
dos cosas. El primer número 1 marca la barra 1, que es la anterior a la
corriente, y el segundo número 1 marca la línea del indicador, que en este caso
es la primera porque solo hay una, pero si pensamos en otros indicadores
como el Estocástico, veremos que pueden aparecer datos de distintas lineas.
P u lj iic Sub S y s te in ^ O n C a lc u la te B a r ( B y V a i Bar As Long)
tflth JLPP

tt . G e c l n d l c a c o r V a l u e (A.vSltnple}^IData] > . C e c I n d l c a t o c V a i u e
(X vV elghte dR S ID ata) Then
I f . C e c I n d i c a c o r V a l u e ( A v S i m p l a R S I D a t a , 1, 1) <
. G e t l t i c t i c a t o r V a l u e (AvUe I g h t r d R S l D a t a , 1, 1) Then
Up ” . G e t H í g h e s t ( D o t a , G e t H i o h e s t D a t a c P t i c e ,
G e tH ig h e s tD a to L e n g th )
End I I
.Buy JlcStop, 1, Up
Else
I t . G e t I n d i c « t o c V a l u e ( A v S l » p l e B 3 I D a t a , 1, 1) >
. G e t I n d i c a t o r V a l u e ( A v U e í g h t e d R S I D a t a , 1, 1) Then
Doun - . G etLowesC (Caca, G e t L o w e s c D a t a t P r i c e ,
G etL o w est D acaL en gth ) .
End I f
• S e l l A tS to p , 1, Down
End l i
tn d H i t h
End Sut) _________ ____ ^_______________

188
ESTRATEGIAS DE INVERSIÓN CON VISUAL CUART

En las condiciones aparecen los clásicos términos If...Then..Else, que


representan !a realización de la acción si se cumple la restricción, siguiendo un
camino, o si no se cumple, siguiendo otro.
Podemos apreciar en el gráfico tres zonas señaladas con una elipse. En
ellas se ha producido el corte de medias en la penúltima barra de la zona
seleccionada, con lo que busca en el periodo de 10 barras establecido el punto
más alto (en el caso de compra) o el más bajo (en el caso de venta) para
señalar el stop de entrada, algo que como sucede en el prim er caso
seleccionado, deberá esperar un poco, pero que se puede ver cómo se da en el
precio marcado por los GetHighestData y los GetLowestData.

> TU0ACEP(- fin d t dij 1 d'iJí H: 23 58 A 1,34 M: 1,38 m: Í.34 C: 1,35 P 1 /ií V. 141 70« f j . P . »<

1.20

77.7S B jndjS up:70A I Bjndilnf 30.00 P ;C4.00 ..a s


1UU.UU
■ÍTÓ!^

0,00
’d Íc ' oí 'feb ^Maf 'May 'jun ^
I<1tJ llfTjüÍQÍa_n vaiioi /Hoill Jji

Nombre. Medias RSI


Tipo. Seguimiento de Tendencia
Idea. Cruce de medias (externas) sobre un oscilador RSI
Indicadores. RSI, AvSimpleRSI y AvWeightedRSI
Variables. AvSimpleRSlDataPeriodo y AvWeightcdRSlDataPeriodo
(núm ero de barras sobre las que c a lc u lar las m edias);
AvSiniplcRSlDataOrigcnDatos y A\ WcighlcdRSl DataOrigcnDalos
(campo de la barra sobre el que hacer el cálculo); GctHighest y
GetLowestDatatPrice y Length (en ambos casos campo sobre el que
buscar los valores mayores y menores, y extensión en la que hacer esa
búsqueda); Up y Down, que recogen c| valor de los Getllighc.st o
GctLowest en el momento del cruce de medias

is^)

t i
' *

r.siv/vrFX U A s nr. in v e r s ió n c o n v is u a l c h a k t K STRA TIC C IA S I)R IN V E R S IÓ N C O N V ISU A I. C IIA R T

Funciones. GclIndicatorValuc, GctHighcst y GclLowcst formato numérico Double de “0.5” . Sobre Option Explicit el resto de
elementos a emplear, como son BandaSuperior y Bandainfcrior, donde se
B ;ura Inicio, O
recogerán las fórmulas de cálculo que producen la creación de nuevas Bandas,
Ó rdenes. Compra y Venta y que se concretarían en .High + .High * PorcentajeBanda / 100 en uno de los
casos y .Low - .Low ♦ PorcentajeBanda / 100 en el otro.
Puntos entrada. Ü!ii stop cii las variables Up y Down
Después viene la sección de inicialización» en el módulo
Puntos Salida. Igual
OnInitCalculate, donde pondrem os a O StartBar, BandaSuperior y
Handalnfcrior.
SfSTEMA BANDAS CONTINUAS P u b l i c Sub S y 3 t e m _ 0 n I n i c C a i c u l a t e O
U i t h APP
La idea que sustenta este sistema es la siguiente: si nos situamos
Band aSu perior “ O
menlalniente en la primera barra, a partir de su máxiina y mínima fornianios B a n d a l n f e r i o r •» O
añadiéndoles o quitándoles una cantidad, unas bandas, que permanecen .S ta rtB a r ■ O
inalterables como puntos de entrada al alza y a la baja hasta que se produce End W ith
una ruptura de ellas por el cierre de la cotización. En ese momento se ejecuta End Sub
una de las órdenes, y se vuelven a trazar las nuevas bandas, que cumplen el Y ya queda lo más importante, el código de actuación, las condiciones
mismo cometido. Es un movimiento continuo donde siempre se van generando woperaciones a realizar.
zonas de operación. El modo de casar órdenes será el de Acumular siempre
para que se vayan haciendo las órdenes conforme se rompan las distintas Lo primero será indicar que si la barra que está en cálculo es la
bandas, pudiendo producir un escalamiento de posiciones acopiativo. primera, a partir de ahí mismo queremos que se establezcan las Bandas
Superior e Inferior. Esto lo haremos con la función CurrentBar, que devuelve
precisamente el valor del número de orden de la barra en cálculo. Por tanto,
Banda
“Si CuirentBar es igual a O, o sea, si es la primera barra, entonces procede a la
A ,
asignación en sentencia de la fómiula correspondiente de fonnación de bandas
Banda
con la variable concreta (BandaSuperior o Bandalnferior)”.
P u b l i c Sul3 S y 3 C e m _ 0 n C a l c u l a c e 6 a c (ByVal Bac As Long]
B anda B an da U í t h APP
* l í . C u r r e n t B a r ■ O Th en
B a n d a S u p e r i o r " . H i g h + . H i g h * P o r c e n t a j e B a n d a / 100
B a n d a l n f e r i o r ■ ,Low - .L o « » P o r c e n t a j e B a n d a / 100
Banda
End I f
Banda I £ . C i ó s e >“ B a n d a S u p e r i o r Th en
.B u y A t C l o s e , 1
B a n d a S u p e r i o r •• . H i g h + . H i g h • P o r c e n t a j e B a n d a / 100
En ias variables a optimizar declararemos como parámetro la dcl B a n d a l n f e r i o r . “ .Low - .Low • P o r c e n t a j e B a n d a f 100
porcentaje, que llamaremos PorcentajeBanda, y le damos un valor inicial en End I£

' I j P.arsuiieters If . C l o a e <” B a n d a l n f e r i o r Th en


Dim P o r c e n t a j e B a n d a As D o u b le ' 0 . 5 . S e l l A tC lose, 1
' P a r a it ie te r s ! í B a n d a S u p e r i o r - . H i g h + . H i g h • P o r c e n t a j e B a n d a / ICO
B a n d a l n f e r i o r ■ .Low - .Low • P o r c e n t a j e B a n d a / 100
Dím B a n d a S u p e r i o r As D o u b le 'D o u b l e
End If
Dim B a n d a l n f e r i o r As D o u b le 'D o u b l e
O ption E x p l i c i t End M ith
P u b l i c APP A3 S y s U se r A p p End Sub
I n ip le m e n t s' S y s t e m _______________________

190 191
R STK A TF.G IA S D E IN V R R S lO N C O N V ISU A L C H A R T

La sentencia irá debajo de esta condición, y a partir de esta primera


estructura, se desarrolla el resto, comprobando la posición de los cierrcs
respecto a las Bandas, y dando orden de comprar o vender según el caso, asi
como nueva asignación de valor a Bandas tras cada operación. Las compras y
ventas (Buy y Sel!)se efectuarán al'cierre.

Hasta seis compras seguidas se llegan a realizar en la aplicación dcl


sistema en este periodo temporal reflejado en el gráfico, produciéndose en una
tendencia alcista la ruptura de las Bandas Superiores que se van creando. Todo
termina cuando se produce lo contrario, la ruptura a la baja de la Banda
Inferior, que da lugar a una venta que liquida todas las posiciones a largo y
que abre una posición a corto.

Nombre. Bandas Continuas


Tipo. Seguimiento de Tendencia
Idea. Ruptura de bandas formadas a partir de las máximas y mínimas en
movimiento continuo
Variables. BandaSuperior y Bandainferior, que toman los valores de las
bandas que se van formando; PorcentajeBanda, que es un coeficiente
multiplicador
Funciones. CurrentBar
B arra Inicio. O
Ordenes. Compra y Venta

192
ESTRATRCilAS DB INVERSIÓN CON VISUAL CHART

Puntos E n trad a. Al cicrrc al ser el campo de la barra cícrrc mayor o


¡gual que el valor de la BandaSuperior o menor o igual que el valor de
la Bandalnferior según sea compra o venta
Puntos Salida. Del mismo modo
O tros Elementos. Método de casar órdenes Acumular Siempre.

Los sipuientes sistemas presentan mayor complejidad técnica. Han sido


cedidos para su comentario explicativo en este libro por el departamento de
análisis de AGMercados, que se ha encargado de programarlos basándose en
las ideas originales de distintos autores. Así los sistemas W iácRangcD ay
(Barra Volátil en nuestro texto) y Rtm Day se fundamentan en sus homónimos
presentados por Jack Schwager en “Technical A nalysis”, el sistema
TiirdeSoupPlus fue presentado por Lawrence Connors y Linda Bradford en el
libro “Street Smarts” , y el sistema Dirección está basado en ideas de J. Welles
Wilder vertida en el libro “Nuevos conceptos sobre sistemas técnicos de
operación** y en otras aportaciones sobre combinaciones de los indicadores
dircccionales con los de volatilidad obra de Dcrek Gipson, que se pueden ver
en el libro “Connors on advanced trading strategies*’, de Lawrence Connors.
Sobre algunos de ellos se han introducido diversas modificaciones con objeto
de adaptarlos para una mejor comprensión de conceptos o buscando una
mejora de su rendimiento.

SISTEMA BARRA VOLA TIL (W IP E RANGE DAY)

m
» TELEfONICA-Fin d* aU 1 4 !» H: 23 59 A: 13.0'S M: 14.45 m: 13,gi C: 14.24 f w:
-N x j

A ,/'\ ■15,00

InH' \
En lo$ cuatro casos
el rango de la barra
es superior «1 vakx
de ATR‘2
/
•13.00
■■■’ J t.jí 0.41 1- ' - n *
^ a .4 Íl
1
•0.30
■Ü2Q

H h U U im o i» ü lv a n o t/T C J ^ _J iJ

193
> , ')

K S T K A l'l'X '.lA S i ) K I N V I - iK S l ñ N CON V I S U A ! . (.'M A N I'

l ’ l concepto Ikísc de esto sistema ya se lia Irahajiuio antcriormcnlc y es


el de la volatilidad y su indicador principal, Av I rueRange, que viene a medir
la amplitud de las barras teniendo en cuenta la iníluencia del cierre anterior, A
partir de su valor y de multiplicarlo por un coericiente para una barra en
concreto, estableceremos la comparación entre este número y el que se deriva
de la diferencia entre máxima y mínima de esa misma barra. Si es mayor e^tc
último rango, se considerará a esa barra como Barra Volátil, y se lijarán unitN
stops al al/a y a la baja que serán señalados por los CíelllighestData y por lus
GetLowestData rc.speclivíimcnte.
Y coíiio queremtis trabajar con un llltro temporal tras prínUicirsc la
señal, la forma de indicarlo en el código será eoloeaiulo la condición desde un
punto de vista futuro y examinando hacia atrás un número de barr.is
delerminado, que optimizaremos con una variable que llamaremos n.
Comenzamos. í:n el primer módulo, como siempre, los parámetros
entre sus expresiones características, y el resto de variables, funciones,
indicadores, sobre Option Explicit,
Como optimizabics figuran las variables AvTrucRangcDataPeriodo, c»-
decir, periodo de volatilidad, que representa al número de barra j a considcr;ir
para hacer sus cálculos sobre la media que representa; Multiplicador, que es d
coeJlciente por el que se amplifica; n, o número de barras hacia atrás en que se
hará la comparación, y Periodo, que representa la longitud de los Gctlüghesi \
GetLowestData,

' , , P:ti:aii«eteL-3
I)im M u l c i p l í c a d o t As D o ubie ‘ 1
Dim n >s í o u b i e ’ 3
Dim P e r i o d o As D o u b le ' IG
tiir A v T r u e R a n g e D a t a P e r i o d o As D ouble
' F'aL-.a;:i'¡r.er3 ' ’
Lirfi S t o p A l z a As li o u b l e 't'ovü-ile
Vini S c o p B ^ j a Aa L o i i h l c *I'ori)■Je
^JIn C e t H i g h e s c D ^ t f i t P t r l c e Aa P r í c e ' ?11C^
Diin G e t L o w e s t í i a t o t P r l c e As P c i c e ' I'L ic f;
ÍMfo CetLour'.'ít[/rttnU/'nijth As Pniihlr ' t'r.Mt.l''
t i r o G e c H i g h e s t l í a c a L e n g t h As l i ü u b le 'D on íili
Díw C o n d i c i o n As B o o l e a n 'Boolt-íafi
Diir A v T c ue R a nge D ata As Long
O ption E z p l i c i c ,
P ' j b l i c APP As Sy sU aerApp
InnaleTuents S y a te tn _____________________________

En el resto d e declaraciones, aparecen Data del AvTrueRangc,


Stop A Iza y StopBaja, que representan los puntos de entrada en lo s negocio!.
GetHighestData y GctLowcstData en sus parámetros de identifieador de

194
1 ’ t , I. > . ' ' ^ > 1 ^' ) 1 . 1

lO ST K A TK O lA S I )( í IN V K R S lí'JN CO N V IS U A L C IIA f íT

precios y de longitud donde buscar, y Condición, de tipo boolcan, que señalará


lüs lases en que la condición principal está operativa.
Pasando a! siguiente módulo, lleganios a las inicializacioncs' donde se
itlcnlifica al indicador AvTrucRange, se asigna a SlopAlza 9999 y SíopBaja O
para evitar entrar en ellos sin que se cumpla el requisito preciso, puesto que
será después de pasar por la restricción cuando adquieran sus valores, como
\cremos en el código; Precio de la máxima y de la mínima respcctivanienie
p;ira identificar el campo de la barra que emplearán los GetllighcstData y
(ictLowes(í)ata, así ct)mo ja longitud de cálculo, la variable Condición se
inicia en l alse para que cuando se den las circunslancias esperadas tome el
\alor de Truc, y por último no nos olvidemos nunca de StartBar, que en este
caso se asignará el valor que tenga la variable Periodo más el \ alor de la
longitud de cálculo del indicador.

P u b l i c Sub 3 y 3 c e m _ 0 n l n i t c « l c u l a t « O
U i t h APP
S c o p A l : a - 999?9
StopB aja - O
G e tH ig h e a tD a ta tP rlc e - P riceH igh
G e t L o u e s c D a t t t t P r i c c - P ciC eLo«
G etL oyeatC ataL ength - Peciodo
CecH lgheacD acaL ength - P e rio d o
C o n dícion " f a l s e
A vTrutf Pa nge D ata " . C e c I n d i c a t o r I d e n c i / i e r ( AvTr
A v T c u e P a n g e D a ta P e r lo d o )
. S t a r t B a r - P eclodo + A vTruePangeD atoPerlodo
End U i t h
5ub___________________________________________________

En el código vamos a fijamos bien en el mecanismo de cómo desde la


barra prcspnte se pide en la condición que en un número de barras atrás se
produzca la situación concreta expresada.

P r í v a t e Sub O p e c a c L a c g o C o c t o ()
ü i c h APP

If . G e t H a c k e t P o a i t l o n (0) “ O Thc n

l í . H l g h ( n ) - ,L o u ( n ) > . C et I i K l l c a t O i V a l u é J A v T n i r K a i i o < ? t ' ' ' i n '


* M u l t i p l i c a d o r The n
C o n d i c l o n - Tcue
ScopA lza " . G e tH lg h e s t( D a ta , C e t H i g h e s t D a t a t P r i c e ,
CetH ightfatD ataL ength)
ScopB aja - .G etL ow eat(D ata, C e t L o u e s tD a to tP t ic e ,
C etLouestD acaL ength)
End l í

Significa esta primera parte que a partir de la condición sine qua non de
^tar el sistema en situación de fuera del mercado, se verifica si la ditercncia

J95
ESTRATEGIAS DE INVERSIÓN CON VISUAL CIIART

entre la máxima de la barra cuyo número viene asignado a la variable n.y la


mínima de esa misma barra es mayor que el valor del indicador ATR en (;sa
barra multiplicada por un coeficiente. Si es así, entonces se establece un precio
de entrada en negocio en sendos stops llamados StopAlza adjudicándole lo
ijuc valgan ios GctilighestDatíi, y Slopliaja, identificado con con ios
GctLowestData. Además la variable de control Condición toma el valor de
Truc (verdadero).
Por lo tanto, una vez que ha pasado ese lapso para entrar a dar las
órdenes, conformando un retardo típico de confmnación, se pide además que
haya ruptura de los stops. Así, se da mandato de compra o de venta siempre
que se de la primera condición (cierre de la barra actual por encima o por
debajo respectivamente de la variable StopAlza y de SlopUaja) y la segunda
restricción de que la variable Condición sea Verdadera, físta cambia si se
produce la operación con objeto de que pueda volver a producirse el
reconocimiento inicial.

If . c i ó s e > S t o p A l z a And C o n d i c i o n = True Then


•Buy A t C l o s e , 1
C on dicion ■ F a ls e
End I f
I f . C i ó s e < ScopBaJa And C o n d i c i o n ~ Tcue Then
. S e l l A cC lose, 1
C on dicion • F a ls e
End I f

La segunda parte del código se dedica a la protección de la posición


colocando unos stops loss de protección en caso de que la cotización se mueva
en contra de nuestros intereses, y así se cerrará largo o corto teniendo en
cuenta el seguimiento que harán tanto los GetLowestData como los
GetHighestData. Esta parte será operativa solo cuando haya un negocio
abierto, ya que la instrucción Else del siguiente código complementa como
alternativa a aquella primera condición fundamental que vimos de estar fuera
de mercado para realizar la revisión retrospectiva de rangos.

Else ‘
II .G ecn ack ecP o3lcion (0) - i Then
.ExitLong AtStop, 1, .GetLouesc (Data, Q etL ovestD atatP clce,
GetLouestDataLength)
End I f
I f .GetHaEketPosition(O) ■ - 1 Then
.E x it S h o r t AtStop, 1, .G e tH ighe st(D ata,
G etH igh e stD ata tP cic e, GetHighestDataLength)
End I£
End I f ' .

196

V A ^ í V t ^ ( i W , ( l A 'V V '( •( -1 'i 'í < '•< ■< ''• ' ( .(


ESTRATEGIAS DE INVERSIÓN CON VISUAL CIIART

Siempre es momento de introducir novedades y mejoras, y en este


caso, sobre la estructura base diseñada, se añaden ios parámetros y
procedimientos precisos para que el usuario pueda decidir entre trabajar con el
programa cerrando a Fin de Día, ai tcnninar ia sesión, para no dejar negocios
abiertos (muy útil para trabajar en intradiario por ejemplo) o no, y también
para decidir entre operar a largo solo, a corto solo, o a corto y largo al mismo
tiempo. _ ,
El primer añadido vendrá en los parámetros, donde se sitúan dos
variables llamadas FinDia y LargoCorto, iniciándolas las dos a O, y
suponiendo en el primer caso 1 igual a cerrar al fin de la sesión del día y O
seguir con el negocio abierto si es preciso; y en el segundo caso, un O
significará operar largo-corlo, un i operar largo y un - I operar corto.

Dita F l n D l a As I n t e g e c 'O
Dltn L a c g o C o c to As I n t e g e r

Sobre Option Explicit también se declarará otra variable que no es


optimizable, y que se utilizará para guardar valores relacionados con este
nuevo formato. Se trata de MiCierre, que será la encargada de recogcr*el \ alor
de la hora de terminación del mercado. Por ello, en el siguiente módulo se
inicializa en las 17,35. Pero el formato de la variable Date donde se toma
aparece con todas'las cifras seguidas: 1735.
Y ahora hay que situar en la sección del código diversos elementos. En
primer lugar una estructura de control llamada Select Case, donde se va a
verificar una sola vez ai principio el valor que se ha dado a las \ ariables de las
que hemos hablado para decidir las distintas opciones de trabajo.
Select Case LargoCorto
Case O
OperarLargoCorto
Case 1
Operar Largo
Case -1
Operar Corto
End Select

En efecto, hay tres “Ca.se”, teniendo dos procedimientos Prívate Sub el


primero, llamados Control Entrada y OperarLargoCorto; uno el segtmdo.
llamado OperarLargo; y uno el tercero llamado OperarCorto. A ellos se liega
según el número que al insertar el sistem a hayamos puesto en estos
parámetros. Después desde aquí se desvia hacia el lugar correspondiente la
ejecución del cálculo.

l<>7

'(, ■< - r 'C •( ■( .( '.i .( , í A . ( , ( , c .(, , c , ( , ( í C . c .c .c


) i , )'0 i ) I ) > ) . ) '1. 1. ) : ) , )i )I i ^ f ).

E S T R A T E G IA S DF. IN V E R S tÓ N C O N V IS U A L C H A R T

Por encima y debajo de esta unidad se colocan unas condiciones


referidas al análisis del coinieii/o y lln .de la jornada, y cuyos términos
explicaremos a continuación:

If . D a t e > . D a t e ( l ) Then
H i C i e r r e =■ . T í n i e ( l )
End I£

“Si el valor de la fecha de la barra actual es mayor que el valor de la


fecha de la barra anterior (algo que sucede en la primera barra del día),
cnlonccs la variable MiCicrre loma el valor de la hora de la barra anterior (que
ya sabemos que será 1735)”.
I f F i n D i a = 1 And .Tim e » H i C i e r r e Then
.E x itL o n g A tC lo s e , 1
. E x it S h o c t A tC lo se, 1
End I f

“Si ponemos un 1 en el parámetro FinDia y además la hora de la barra


actual coincide con el valor de MiCierre, que ya hemos visto anteriormente
que tomaba el valor i 735 (Esto solo va a suceder en la última barra del día)
entonces se da orden de cerrar largo o corto., según la situación en que se esté,
al cierre”.
Ahora vienen desarrolladas cada una de las ri{tinas a las que dirige ol
cálculo la estructura de control de Select Case. Recordemos que si se marcaba
P r í v a t e Sub O p e r a c L a r g o ()
U i t h XPP

I f . G e t H a r k e t P o s i t l o n ( O ) - 0 Then
I f . H í g h ( n ) - .L o « ( n ) > . G e t I n d i c a t o c V a l u e ( A v T c u e R a n g e D a t a , n)
* W u i t i p l i c a d o r Then
C o n d icio n • True
StopA lza - .O etK lg h esc(D a ta, O e tH lg h estD ata cP cic e,
C etH ighestD ataL ength)
End I f
I f . C i ó s e > S t o p A l z a And C o n d i c i o n - T r u e Then
.Buy A t C l o s e , 1
C ondicion ■ F a lse
End I f

Else
I f . G e t H a r k e t P o s l t i o n í O ) - 1 Then
. E x i t L o n g A t S t o p , 1, • G e t L o w e s t ( D a t a , G e t L o w e s t D a t a t P r i c e .
G etL ovestD ataL ength)
End I f
End I f
End U i t h
End Sub

198
) )I ), ) ' '' o < V ) ) . V ^ n n ■' “I ' "i ") ■ V )

ESTRATECilAS DE INVERSIÓN CON VISUAL CIIAKT

el parám etro con un O se bifurcaba a la Prívate Sub llam ada


()|KiiirL:iigoC’orto. Tocia la sección que hemos visto en el código principal
anteriorinente seria la vigente cuando en el parámetro LargoCorto se señale un
O.Si se señala un I. se pasa a hacer funcionar la Prívate Sub OperarLargo. que
es exactamente igual en parle del código, y cambia solo a la hora de dar
órdenes. Donde antes se decía vender, ahora dirá salir largo (lixitLong).
Y en caso de poner un - I en el parámetro inicial en LargoCorto, se
derivaría la acción a la Prívate Sub OperarCorto, donde todo es como en la
anterior, pero cambiando la condición de situación dcl cierre respecto a
(iciLowestData , la orden de compra por la de venta y la de cerrar largo por la
de cerrar corto (ExitShort).

P r í v a t e Sub O p e r a c C o c t o O
U ic h APP
l í .G e tH a rk e tP o slc lo n lO ) O Then

If . H i g h ( n ) - .L o v ( n ) •C etlndicatocV alue(A vT rueP angeD aca, n


* H u l t i p l l c a d o c Then
C o n d l c l o n • Truc
S c op B aja • . C e t L o u e s t ( D a c a , C e c L o w e s c D a t a t P r i c e ,
GecLowescDataLength)
In d I f
I f . C i ó s e < Sc opB aja And C o n d l c l o n - Ttue Then
. S e l l A tC lose, 1
C ondlclon ■ F alse
End I f
Else
II
. G e t n a r k e t P o s l t l o n ( O ) - - 1 Then
. E x l t S h o c c A c sc o p , 1, . G e c H l g h e s c ( D a c a ,
G e t H l g h e s c D a c a c P r l c e , G e cH lg h e s c D a c a L e n g c h )
End I f
Enil I f
End U lc h
End Sub

La representación sobre el gráfico dcl funcionamiento del sistema con


liquidación a Fin de Día y Operar Largo y Corto queda así:
En color oscuro aparecen las barras Volátiles formadas con
multiplicador 1 sobre las que se referencian las órdenes de compra y venta.
Las líneas horizontales que forman una banda superior y otra inferior son los
stops formados por los GetHíghest y GetLowest de 10 barras.
Podemos observar dos negocios a lo largo de la sesión en los que se
entra ( C el de compra y V el de venta) al traspasarse en el cierre los stops
establecidos. Como podemos apreciar, la compra se produce con un mayor
periodo de espera debido a que los precios se mueven un tiempo en una gama
interior, siendo la venta llevada a cabo de fonna más rápida. En ambos casos.

199
KSTKATI'C.IAS D K INVERSION CON VISUAL CHART

tal como está previsto, se liquidan posiciones en cuanto se llega a los puntos
de protección.

► IBEXJ5 PLUS • Inliídii 5 minuto» H: 17 34 A; 7 132,0 U 7,180,0 m: 7,150,0 C. 7.171,0 P : K m

,L*
Líüi
10 900,
-I
A V
f tA
J, 10 050,

10 800

) 09 25 i m ) 5 1 0 5 0 11 30 1 2 10 1 2 5 0 1 3 3 0 14,10 14 50 15:30 16:10 16 50


H < > »la 1 t Hoja ? / vaiiot \ I « l J

Nomhrc. BarraVolatil
'l ipo. Reconocimiento de Patrones
Idea.Relación comparativa entre rangos de las barras
Indicadores. AvTrueRange
Variables. M ultiplicador, coeficiente amplificador; n, número de
barras atrás con quien comparar la barra actual; Periodo, extensión en
que buscar los valores GetHighest y GetLowest; AvTrueRange
DataPeriodo, longitud de cálculo del indicador; StopAlza y StopBaja.
representando los puntos de entrada en los negocios; Condición,
variable de tipo boolean, para controlar las acciones; DatatPricc y
Length de las funciones GetHighest y GetLowest, en las que se colocan
el campo de la barra y la longitud en que buscar; FinDia, para decidir si
se liquidan los negocios al cierre de la sesión o se dejan abiertos:
LargoCorto, para decidir el tipo de operaciones a realizar; MiCierrc,
que recoge el valor de la hora de terminación del mercado
Funciones. GetMarketPosition, GetHighest, GetLowest
B arra Inicio. Periodo + AvTrueRangeDataPeriodo
Órdenes. Compra, Venta, Cerrar Largo y Cerrar Corto

200

♦ I l
ESTRATEGIAS DE INVERSION CON VISUAL CHART

Puntos E n trad a. Según el tipo de operación elegido, al cierre si el


precio de cierre está por encima o por debajo de las variable StopAlza
y StopBaja y el control de la variable Condición lo permite
Puntos Salida. Distintas posibilidades; AI cierre de la sesión si hay
negocio abierto si así se ha elegido en la variable correspondiente; en
stop en los puntos de protección determinados por los valores de las
funciones GeíHighest y GetLowest
O tros Elem entos. Estructuras de control Seleet Case para decidir si
operar a largo, a corto o de las dos formas a la vez; Posibilidad de
cerrar negocios abiertos al fin de la sesión

SISTEMA T U R TLE SOUP PLUS


Se trata de un sistema que actúa en antitendencia intentando
aprovechar las frecuentes pseudomipturas de puntos críticos que se vuelven a
cdiilinuación de una pequeña transgresión. Así, ésta se tomaría como señal de
intervención en el mercado. Se busca obtener beneficios rápidos y salir para
esperar otra oportunidad. Por ello los stops de salida serán ceñidos. El Tipo do
patrón o figura que se bu.sca es el de repetición de intentos de traspasar
soportes o resistencias anteriores, identificados com o los puntos
MaximoAnterior y MínimoAnterior respectivamente.
Las retilas que seguirá el sistema son éstas:
- Para comprar.
La condición es que el cierre actual sea igual o inferior a la mínima del
punto crítico MínimoAnterior, el cual debe haber ocurrido antes de un número
lie barras determinado.

201
( )• 1 ) < h ) f '# í ' ( ' ( ' ‘ . ) , } } t I } , ) I ^ ^ r ^ f t ^ I ) ■

\
[__________________________ E S T R A T E G IA S D E IN V E R S IO N CO N V IS U A L C H A R T ______________________

Las órdenes a partir de esta condición son de tres tipos: una de compra
en stop en el punto MínimoAnterior más’ un filtro de seguridad, otra Oc
protección si se ha producido la compra para cortar posibles pérdidas en seco y
otra que representa la salida nalural al abrirse una operación de sitiiio
contrario. Por ejemplo, en este gráfico, sviponicndo un valor de al menos Id
para el número de barras entre los dos picos, se daria la condición, pin.'»,
observemos que la mínima de i MínimoAnterior ha sido superada a la baja pi>r
el cierre de la última barra del rectángulo señalado.
- Píj/v vcmicr.
La condición es que el cierre actual sea igual o superior a la máxima
del punto critico MáxinioAntcrior, el cual debe haber ocurrido antes de un
número detenninado de barras. Las órdenes a partir de esta condición son di:
tres tipos; una de venta en stop en el punto MáximoAntcrior menos un filtro de
seguridad, otra de protección si se ha producido la venta para cortar posibles
perdidas en seco y otra que representa la salida natural al abrirse una operación
de signo contrario.
Aquí se da la condición de venta, suponiendo también al monos dic;
barras como separación de puntos máximos, pues como se puede .queciar, en
la barra penúltima del rectángulo el cierre es superior a la máxima del puiiio
MáximoAntcrior.

Como siempre, de la idea a la realidad hay un trecho, y ahora hay que


programar esto. Para encontrar los puntos MáximoAntcrior y MínimoAnterior
se utiliza la función GetNthHighest, que obtiene el mayor ordinal de la serie
de datos en un periodo determinado, sobre un campo de la barra concreto y el
valor del ordinal que se pida, el primero de la serie, el segundo, etc.
Para todas las demás operaciones hay que emprear unos bucles, aunque
en esta ocasión son del tipo “ Mientras*’, que en VÍ)A se expresan con la
fórmula While .. Wend, pues con ellos comprobaremos el cumplimiento de las
condiciones necesarias para emitir las órdenes.
En la sección Parámetros pondremos en principio Periodo, que esc!
número de barras hacia atrás en las que biíscar el valor del ordinal

202
) . >i )

ESTRATEGIAS DE INVERSION CON VISUAL CHART

correspondiente; Sesiones, que es e! número de barras que debe haber entre los
punios máximos o mínimos de referencia para la ruptura; Ticks, que es el filtro
para el emplazamiento de los stops y que se expresa en puntos; FinDia y
i aruoCorto, con objeto de poder decidir cerrar operaciones al fuial de la
sesión y escoger el tipo de las mismas; nBarrasLiquida, que como veremos
ilcspiics, servirá para fijar un número de barras de permanencia en el negocio.

' i i Pacarcieters
D in F i n D i a As I n t e g e r 'O
Dim L a r g o C o r t o As I n t e g e r 'O .

Diifl n B a r r a s L i q u i d a As I n t e g e r
Diiti P e r i o d o As D o u b le '¿O
Dirti S e s i o n e s As D o u b le '4
Dinri T i c k s As D o u b le '5
' P a ra r n e ter a M

El campo de la declaración de variables, funciones, etc., que se refleja


a continuación sobre Option Explicit está bastante cargado, a saber;
Diro HaxAnt As D o u b le ' D o u b l e
Dim HinAnc As Dotjble ‘ DouJile
Dim b A l z a As B o o i e a n ' B o o l e a n
Diiti bB a 1a Aa B o o i e a n ' B o o l e a n

MaxAnt y MinAnt son las variables que representan el valor de los


mayores ordinales en las máximas y en las mínimas respectivamente. bAlza y
Miaja son variables control de tipo boolean, true o false, de las que se derivará
si la situación es la que exige la condición o no.

Dim G e tN th L o u e s c D a t a t P r i c e As P t i c e ' P r i c e
Dim G e t N t h H i g h e s t D a t a t P r i c e As P r i c e ' P n c e
Dim G etNthLowescDataLengch As Double 'D o u b le
Dim G ecN th H lg hescD a taL ength As Double 'D o u b le
Dim G etN th H igh estD a ca N th As Double 'D o u b le
Diiti GetNthLowestDacaNch As Double 'D ouble
Dim G e c H ig h e s t D a t a t P r i c e As P n c e ' P r i c e
Dim G e tH ig h e s t D a t a L e n g t h As Dou ble 'D oub le
Dim G e t L o u e a t D a t a t P t i c e As P r i c e ' P n c e
Dim G e tL o u e s tD a ta L e n g th As Double 'Double

Aqui se reflejan todos los contenidos adicionales de las funciones


í'clNthliighesl y GetNlliLowest por un lado, y Gctlligliest y GetLowest por
otro, es decir, el tipo Price para señalar el campo de la barra en el que se
calcularán los datos, la longitud en la que buscar, y el número de ordinal a
localizar. Los cuatro dimensionamientos referidos a los GetMighoslData y

203
\ IsS T R A T R G IA S D E IN V R R S IÓ N C O N V ISU A L C IIA R T

(íctLowcstData se emplearán para asegurar que los puntos nuevos máximos


que se foniian son acieniás los mayores ile un periodo concreto.

|P lw 1 As I n t e g e r ' In teaer |

Esta variable es un contador que se utilizará en los bucles para señalar


las pasadas que se vayan haciendo.

Diin Hin As D o u b le ‘ D o u b le
Diiii Hax As P o ii b l e ' D oiible

listas dos variables tomarán el valor de la máxima y de la mínima de las


barras en curso para fijar los stops de prolcccióti.
Y la variable MiCierre es la que tomará el valor de la hor
terminación del mercado.
Dim H i C i e r r e As I n t e g e r

El siguiente módulo es el de las inicializaciones, que queda asi: Se


identifican con el valor de la variable parámetro Periodo tanto la longitud Jo
barras en que buscar el mayor ordinal, como la longitud de los mayores
valores de la serie GetHighestData y GetLowestData, y tambiéti la función
StartBar, para que deje pasar el número de barras correspondiente a un buen
proceso del cálculo. El 2 de GctNth en Highest y en Lowest hace referencia al
número de ordinal cuyo valor buscar.

HaxAnt - 99999
HinAnt « D
b A lz a ■ F a l s e
bB aja • f a l s e
1 - O
G e t N th L o u e st D a t a t P r le e - 2
G e tN th H ig h e s t D a t a tP r i c e - 1
GecNthLowestDataLength “ P er io d o
GetNthHigheatDataLen gch « P er io d o
G etN thH ig hestDataNth - 2
GetNthLowestDataNth ■ 2

G etH ighestDacaLengch » P er io d o
G etLou estD ataLen gth ■ P er io d o
G e t H ig h e a c D a t a t P r ic e - 1
G e tL o u e s t D a t a t P r l c e - 2
Hin ■ O
Max - 99999
. S t a r t B a r ■ P e r io d o
H iC ierre - 1 7 3 5

204

I i
E S T R A T R O IA S DK IN V E R S IO N C O N V IS U A L C JIA R T

Recordemos que en esta función se tiene en cuenta la barra actual. Son


iniportüiUcs tambicn los valores de los DatatPrice, I para los precios referidos
*a las máximas y 2 para los precios referidos a las mínimas.
La estructura del código es sencilla. Se parte de dos bucles de búsqueda
que comprobarán si los puntos MaxAnt y MinAnt son respectivamente más
altos o más bajos que un número dctcnninado de barras que hay entre ellos y
la barra actual que cumple la condición de cerrar por encima o por debajo de
ellos. Del resultado de control que nos den. en forma de Truc o False, se
derivarán las órdenes de cynipra y de venta. í;sto formaria una sección
uulcpendicnte por la que el cálculo debe pasar, y se conecta con oira sección
que dirige y controla las liquidaciones de los negocios comprobando en que
situación de mercado nos encontramos y emitiendo la orden de salida
correspondiente.
Paso previo a la ejecución de los bucles, es la asignación por medio de
unasentencia, que llamaríamos en PDV, del valor que se obtenga de los
CjotNth a las variables MaxAnt y MinAnt, y también el colocar a Cierto (True)
el valor de las variables de control. Asimismo el contador se inicia en 1 para
que se vaya comparando MaxAnt con las barras intermedias empezando por la
previa a la actual.

bAIzek “ True
b B a ja • True
HaxAnt - . G e t N th H i g h e s t ( D a t a , G e t N c h H ig h e st D o ta N t h ,
G e t N t h H ig h e 3 t D a t a t P r ic e ^ C e c N th H ig h e stD a ta L e n g th )
MinAnt « . G e t N th L o w e s t( D a t a , G etN th L ouestD acaN ch ,
G e t N t h L o u e s t D a t a t P r i c e , G etN th L o w estD a ta L en gth )
i - 1

ni Rucie l queda asi, incluyendo una condición inicial doble: Que el


cierre no solo sea igual o esté por cncinia de MaxAnt, sino que además la
máxima de la barra actual se erija en el valor más alto en el periodo que se
scfutle:
I£ . C i ó s e >“ KaxAnc And . C e t H i g h e a t ( D a t a , G e c H i g h e s t D a t a c P r í c e ,
O e tH ig h e s c D a ta L e n g c h ) - .H i g h Then
U h i l e 1 <- S e s i o n e s And b B a j a
I£ HaxAnt <- . H i g h ( i ) Then
bBaJa - T alse
1 -1 + 1
Else
i - 1 + 1
End I f
Uend
Else
bBaja ■ F a ls e
End I f

205

4 i
). ). )

ESTRATEGIAS DE INVERSIÓN CON VISUAL CHART

Dentro del bucle como es normal se pone el signo contrario de Jo que


estamos buscando. Asi se dice que si MaxAnt es menor o igual que la máxima
de las barras intermedias que se determinen, la variable de control bBaja será
Falsa y el cálculo saldrá inmediatamente del bucle. Lo que buscamos es lo
contrario, que sea mayor, por eso si se produce lo que queremos, seguirá
haciendo las pasadas que el contador le indica: Mientras que la variable i (vale
en principio 1) sea menor o igual que el número de la variable Sesiones(las
barras intermedias) seguirá. Para que no se quede estancado, al final del bucle
aparece la fórmula i = i+l.
El Bucle 2 comienza también con condición doble: Que el cierre sea
igual o esté por debajo del punto MinAnt y que además la mínima de la ban^
actual se erija en el menor valor del periodo señalado. El mecanismo es
idéntico al anterior:
I f . c i ó s e <■ HinA nt And . G e t L o w e a c ( D a t a , G e t L o w e s t D a t a t P r i c e .
G e c L o u e s t D a t a L e n g t h ) ■ .L ov T he n
i • 1
U h i l e i <« S e s i o n e s And b A l r a • Tcue
I f HinAnt > • .L o w ( í) Then
bA lza - F a ls e
i - i + 1
Else
1 - i + 1
End I£
Uend %
Else
bA lza - T alse
End I f

Por último, las órdenes de compra y venta y las liquidaciones en caso de


estar dentro de mercado:
Si del bucle sale el resultado bAlza como cierto, entonces identifica a la
variable Min con la mínima de esa barra y da una orden en stop de venta en el
punto que marca el valor de MaxAnt menos el valor de la variable Ticks.

I£ b A lz a Then
H in - .L oh
•Buy A tS to p , 1, (MínXnt + T ic k s)
E lse
I f bB a ja Then
Hax - .Higb
• S e l l A tS to p , 1, (MaxAnt - T ick s)
End I£
End I f

206

J
),.) )■ ) ) ) ) J J - )

ESTRATEGIAS DE INVERSIÓN CON VISUAL CHART

Si no sale del bucle el resultado de bAlza cierto, entonces busca en el


otro bucle y verifica que el valor de bBaja sea cierto. Si es así, la variable Max
toma el valor de la máxima de la barra actual y se da uná orden de compra en
el punto señalado por el valor de MinAnt menos Ticks.
Se preguntarán que para qué queremos las variables Max y Min. Esto
\ icne ahora. Es para las salidas de los negocios:

It .G e cH a c Ic etP o sitio n - 1 Then


.E x it L o n g A tS to p , 1, (Hin - T ic k s)
E lse
I f .G e t H a r k e e P o s lc lo n - - 1 Then
. E x í t S h o r t A tS t o p , 1, (Max + T ic k s)
End l í
End I f

Con la función GetMarketPosition se comprueba si el negocio es


compra o es venta. y según sea el sentido, se da una orden de cerrar la posición
a largo (ExitLong en el caso de compra) o de cerrar la posición a corto
(íixitShort en el caso de una venta) y se da en el punto que señalan las
variables Max más Ticks y Min menos Ticks. En ambos casos las variables
habían quedado “ancladas” en su valor con referencia al momento en que se
validaron. Asi que este tipo de salidas se haría teniendo en cuenta las mínimas
o máximas de las barras en que se dio la orden de entrada en stop.
De esta manera tendríamos ya temiinado el sistema. Pero al igual que en
ejemplos anteriores, añadiremos las posibilidades de cerrar las posiciones al
finalizar la sesión del día, sin dejar abierto ningún negocio, y también la de
poder seleccionar si queremos operar solo a largo, solo a corto o de las dos
formas al mismo tiempo. Para ello necesitamos las mismas rutinas que ya
hemos visto:

If . D a t e > . D a t e ( l ) Then
H iC ie r r e “ .T im e ( l)
End I f

Si la Fecha de la barra actual es mayor que la Fecha de la barra anterior


(cosa que sucede en la primera barra del día), entonces la variable MiCierre
recoge el valor de la hora de la última barra anterior, que es 1730.

I f F in D i a - 1 And .Time - H i C ie r r e Then


.E x it L o n g A t C lo s e , 1
. E x i t S h o r t A t C lo s e , 1
End I f

207
K STÍM TirilAS OR INVi^RSIÓN ('()N VISUAL Cl lART

CiKindo FinDia pnránictro tenga el valor I y además la hora do la barra


actual coincida con la que guarda MiCicrre (algo que se producirá en la última
barra), se da orden de cerrar cualquier posición a corto o a largo al cierre de la
sesión.
Para dirigir la forma de perar, el sentido de los negocios, se precisa
como en anteriores ocasiones, una estructura de control Case, que bifurcará el
cálculo al Procedimiento rivatc Sub oportuno:
S e l e c t Case Larg oC orto
Case O
O perarLargoC orto
Case 1
O perarLargo
Case - 1
O peracCorto
End S e l e c t

Aquí podemos ver diferentes resultados en función de la opción elegida;

PLUS mingloi H. 17 34 A 8 623.0 M 6 m 0 610 0 C P v >0


9 550,U
CASEO

-9 500.C

ji.4 f
■9450,0

H /v -9400.0

'02/D6fl)1 10 35 12 00 ^13 10 ^

IB E J t» FLUS M l d i i 3 minutM H I I 34 A S ÍÍ3 X ) M 8 «43,0 m 0 810 O C:«e2 1J> P

CASE1 K

A 9450.0

9.400.0

'J 1 0 14 30 1550 '02/Q6flJ1 10 35 «2 00 ^13 20 ^


hh: hC H SD hoí<?1iJ

208 .4
KS I IMTICOIAS DK INVRKSiON CON VISUAL CIIART

IDC09 PLUJ ' lnl»«i«9 mmulol H «7 }4 A M 8 64)0 tn »«<0.0 C 80319 ^ P -

>9 550,0
CASE -1

,i4 / '
r 'i* 9 4ÍO.fJ

1310 14 30
hHͻINOSi !Xhoh.2JV[
1550 '02/OBÍOI 1035’ ’uod' ’l32fl
J J
Aún se le puede añadir un nuevo elemento. A todo lo anterior se le une
la posibilidad de decidir que después de un número de barras desde que el
negocio se lia empezado, número que se fijaría en los parámetros iniciales, se
liquide sin más, sin tener que esperar en muchos casos a que se llegara al stop
de protección. Necesitamos poner en Parámetros una variable a la que
llamaremos nBarrasLiquida, y entre las estructuras de control inicial
prccódigo, incrustar las condiciones que lo determinen:

I£ nBarrasLiquid a o O And , G etBarsS inceEntry « nBarrasLiquid a Then


.ExltLong A tC io se, 1
.E x ic S h o rt AcClose, 1
End I f

aB saa
* IBEX35 PLUS - In lu d íjS minutoí H: 17:34 A: 8 923.0 M: 6 043.0 n c e OtO.O C 8 Í2 1 .0 P e .« .Q *

1-^^ [-8 250,0

« ni
IfcJ
,1 8 200,0

IV II'
... 8 150,0
■1
17 00 26/07/01 09 55 10 55 11 55

“Si la variable nBarrasLiquida tiene un valor distinto de O y además la


función GetBarsSinceEntry tiene el mismo valor que la variable anterior (esta
función devolvía el valor del número de barras transcurridas desde la entrada

20 9

< i t > I i • 4 I I I 1
I C S T I Í A T I C C I A S D i ; I N V I ’;iCSI(')N ( ’ O N V I S U A L C I I A K T

cii ncgocio), ciitonccs cierra largo la posición si es de compra, un contrato, o


cierra corto la posición si es de venta, un ctnitrato”. l-.n el gráfico podcnu)s ver
una venta y una compra cjuc se resuelven ambas con este tnélodo, con un valur
en este caso üe 10 barras transcurridas sin que se haya producidt) otro tipo de
ticsenlace.

Noml>rc. Turtle Soup I*lus


Tipo. Sistema de Anti rendencia
idea. Pscudorrupturas de soportes y resislencias.
Variables. Periodo, núincro de barras hacia atrás en que buscar el valor
de los puntos máximos y mínimos Anteriores, que se reflejarán en
MaxAnt y MinAnt; Sesiones, número de barras que debe haber etitrc
los puntos máximos o mínimos de referencia para la ruptura; Ticks.
filtro que se añade a los stops; bAlza y bBaja, de tipo boolcan, pnra
controlar situaciones; GetNthllighest y GetNthLowcst en sus distintos
contenidos adicionales de tPrice y Length para señalar el campo de b
barra y la longitud donde buscar el valor del ordinal que se pida: i.
contador para bucles; Min y Max, usados para fijar los stops de
protección, tomando en esos casos el valor de la mínima y máxima de
la barra en cuestión; G eillighest y GetLowcst en sus contenÍLlos
adicionales de tPrice y Length, referidos a la búsqueda de valores
máximos o mínimos que aseguren el carácter de extremos de'los
nuevos puntos m áxim os o m ínim os en el periodo dado.
nBarrasLiquida, número de bauas tras las que se liquida el negocio en
activo: FinDia, para decidir si dejar posiciones abiertas al terminar h
sesión o no; MiCierre, que recoge el valor de la hora de cierre;
LargoCorto, que loma los valores que indicarán el tipo de operaciones
a realizar
runciones. GetNthHighest,GetNthLowcst,GetHighest,GetLowcst,Ciet-
líarsSinccEntry
B arra Inicio. Periodo
Órdenes. Compra y Venta; Cerrar Largo y Cerrar Corto
Puntos E ntrada. En stop compra en el punto'señalado por la variable
MinAnt más Ticks; venta también en stop en el punto señalado por la
variable MaxAnt menos Ticks
Puntos Salídü. Cerrar largo y corto al cierre si se elige la opción df
liquidar tras una permanencia en el negocio marcada por el valor de la

210
\ í 1 \ 1 ^ í ^ \ > V ^ ^ ^ \ \ > > > > )

__________________________ F.ST íM T F.C ilA S [)F. IN V E R S IÓ N CON V I S U A I. Cl lA K T __________________________

variable nBarrasLiquida; en stop en las variables Min y Max menos o


más según cl caso Ticks
O tros Elementos. Ulilizaeión de bucles VVhile ... Wend. Posibilidad de
decidir entre liquidar negocios al fin de la sesión o no, y si hacer
operaciones a largo, a corto o de las dos formas al niismo tiempo.
Estructuras de control SclectCase

SISTEMA RUN DAY

Los conceptos en los que se basa este sistema son cl de la ruptura de


una gama de precios a partir de la identificación de determinados valores
comparativos entre campos de la barra, lo cual constituye una preseñal, que se
deberá ver confirmada, y este es cl segundo concepto, por cl paso de un
número determinado de barras a continuación. Es un sistema bastante versátil
y adaptable. La barra objeto de consideración será llamada barra Run Day, y
deber reunir unas caracteristicas concretas, a saber;

Up Run Day será una barra alcista cuando su máxima sea mayor que
el de n barras anteriores y al mismo tiempo sea también mayor que la mínima
de n barras posteriores.

Down Run Day será una barra bajista cuando su minima sea menor
que la mínima de n barras anteriores y su máxima sea mayor que la máxima de
n barras posteriores.

211
K S I'K A T W IIA S I)K INV EslíSIÓ N ( 'f ) N V ISU A l- C IIA K T

A piiriir do cslc tipo cspccial de harrn se fabrica el sistema. Primero,


conu) siempre, las variables oplim i/abies, qiic llatnareiiuts Anteriores y
Posteriores, rcpresentajido a las barras a comparar a uno y otro lado de la barra
Run Da y; tambiéti NRiindays, que representa el número de barras Rundays
que han de ser superadas por el cierre actual para comprar o vender.

' ¡ I Fa r a iiie te i-s


Diin A n t e r i o r e s As D o u b le
Diin P o s t e r i o r e s As D o u b le
D i » NRundays As D ou b le
' F 'araiiieters ! !

Después aparecen otras variables a declarar, y aquí se incluye una


novedad , que son los arrays, un grupo de elementos que se van almacenando
de forma sccuenciada en una especie de matriz, cada uno con uti número
identificativo en el índice, y de cuyos valores se sirven los cálculos en
determinados momentos. Pueden ser fijos o dinámicos(cambian su tamaño
conforme se desarrolla el cálculo). Estos últimos son declarados poniendo el
nombre y unos paréntesis vacíos. En nuestro sistema son dos y se llamarán
RDBarUp y RDHarDown. Vemos también entre los parámetros unu variable
eonlailor, Z, y dos variables donde se guardarán los valores de las máximas o
de las mínimas de las barras Rundays para hacer cálculos en el código.

Dirn Z As P o u b l e
Dim PDBarUpO As D o u b le
Dim RDBarDounO As D ou b le
Dim HayorKunday As D o u b le
Dim H enorRunday As D o u b le
O ption E x p l í c i t
P u b l i c APP As SysU se r A p p
I in p le m e n t s S y s t e m

Módulo de inicialización. Una novedad con respecto a lo que hemos


visto hasta ahora es la expresión ReDim para los dos arrays y un bucle
contador.
Public Sub System _O nInitCalcula te()
U i t h APP
PeLim PIiBatOp ( N P u n d a y s + 1)
PeDíRi RDBarDown (H R unda ys + 1)
F o r 2 - 1 To N R u n d a y s + 1
RDBarUp(Z) - O
RDBarDown(Z) • O
Nexc Z
End U i t h
End Sub . ____ _______

212
ICS'I RATICOIAS Í)K INVr.RS[6N C’ííN VISUAL CJIART

Con RcDini se cstabiccc un espacio de alniacenamicnto para las


variables de un array dinámico, en esle caso RDHarUp y FU)íiarI)(íwn.
asignándole el número que representa NRundays + I. Se le suma este I para
que Jio haya problemas con el espacio disponible. Después, en un bucle
contador, inicializa cada uno de los campos del array a O para que tengan un
valor asignado. Si por ejemplo NRundays fuera 2, se darían tres pasadas
(desde Z=1 hasta NRundays+1, o sea, 3) haciendo esta operación inicia!.
Y ahora viene lo más importante, el código. Aquí se establecen las
reglas del sistema. Se pedirq que el cierre de la barra actual esté por encima de
la máxima de un número de Rundays anteriores detemiinado, y además que el
último haya sido alcista para ordenar una compra. Se pedirá que el cierre de la
barra actual esté por debajo de la minima de un número detenninado de
Rundays anteriores y que además el último haya sido bajista para dar orden de
venta. Esto parece sencillo, pero ¿cómo obtenemos los datos precisos para
saber el número de barras hacia atrás en que ocurrieron los NRundays y ver
cuál es alcista o bajista?. Pues con Procedimientos del tipo Sub y del tipo
j unción, donde unas rutinas calcularán y guardarán los valores que pedimos.

P u b l i c Sxib S y s t e i n _ O n C a l c u l a t e B a c (B yV al Dac As Long)


U i t h APP
C a l i GuardaRunDay
C a l i MayorHenorRundoya
I £ - C l o a e > MayorRunday And RDBarUpíl ) < R D Ba cD oun (l) Then
.B u y A t C l o s e
End I£

If . C i ó s e < Henor Runday And RDBarDown(l) < R D Ba rU p( l) Then


. S e l l A tC lose
Ejid I£
End With
End Siib

Como podemos apreciar, al comienzo del código se han situado dos


estructuras Cali, que controlarán a los Procedimientos de cálculo, que se
colocarán después y que llamarán a sus subordinados para utilizar ios datos
requeridos.
Los Procedimientos Sub son éstos:
El primero al que se llama es el nombrado como GuardaRunDay, en
donde la labor que se hace es calcular el número de barras hacía atrás en que
ocurrieron los NRundays y los va almacenando en los campos o posiciones del
array, quedando el más reciente Run Day en el campo 1, en el 2 el segundo y
así sucesivamente. Pero para poder iiaccr esta labor, tiene que tomar datos de
dos Public Functions de cálculo llamadas RunDayDown y RunDayUp, que

213
l < > ♦

E S T R A T E G IA S D E IN V E R S IÓ N C O N V ISU A L C H A R T

devolverán valores do tipo booican, como Truc o Falsc, para que sirvan de
eontioi al verificar si en la barra actual lidy Run Day bajista o si liay Run Day
alcista:

PuJDlic F u n c t i o n RunDayDown() As B o o l e a n
U i t h APP
RunDayDown “ T r u c
F o r Z = 1 To A n t e n o t e s
I f . L o w ( P o s t e r i o r e s ) > . Low ( Z + P o s t e r i o r e s ) Then
RunDayDovn - F a l s e
End I f
Hext Z
F o r 2 “ O To P o s t e r i o r e s - l
I f . H ig h tZ ) > . H i g h ( P o s t e r i o r e s ) T h e n
RunDayDoun “ F a l s e
End I£
Next Z
End Wich
End f u n c t i o n

P u J í l i t F u n c t i o n RunDayUpO As B o o l e a n
U i t h APP
RunPayUp - T r u e
F o t Z - 1 To A n t e r i o r e s
If . H ig h (P o sterio res) . H i g h ( P o s t e r i o r e s + Z) Then
RunDayUp « F a l s e
t
End I t
Nexc 2
F o r 2 ” O To P o s t e r i o r e s - 1
l í .Lo u(Z) < . L o v ( P o s t e r l o r e s Then
RunDayUp - F a l s e
End I f
Ne xt 2
End U i t h
End F u n c t i o n

Y la rutina principal, que es probablemente la más coinplicatia para


en te líder, de modo que haremos uso de los ejemplos y p orm enor iza re ni os. La
L-siruclura es doble, cxaminniulo y aetuali/aiuln la posición tle los anteriores
Kinulays sc^ün sean bajistas (JíunJ)ayl)owii),almacenándolos en un array, o
aicislas{KunI)ayUp), alniaccnátidolos en otro.
C<»nÍL‘n /a pidiendo )a condición que si desde la barra actual
detectamos en el espacio que examinamos con el valor de la variable
Posteriores un RimDayDown, se proceda a liacer la siguiente operación;
Imaginemos que NRundays es 2. t n el dimensionamiento del array se colocó
como tal la fórmula NRundays + 1.

214
ESTRATEGIAS DE INVERSIÓN CON VISUAL CHART

P u b i i c Sub G u a r d a R u n li a y O
ü i t h APP
I f RunDayDown Th en
f o c Z - N R un day s To 2 S t e p - 1
RDBarDown(Z) " RPBarDown(Z - I I + 1
Next Z
PDBacDownJ1) - P o s t e r i o r e s
E lse
r o e E - 1 To NRund ay s
RDBarDown{Z) - PDBarDown(Z) + 1
Nexc Z
End I£
I f RunDayUp Th en
F o r Z ■ N R und ay s To 2 S t e p - 1
RDBarUp(Z) - RDBarUplZ - 1) + 1
Next Z
PD B a rlf p ( l) « P o s t e r i o r e s
E ise
r o e Z - 1 To NRundays
RDBacUp(Z) - RDBacUp(Z) + 1
Next Z
End 11
End WLth
End Sub

Si ponemos por ejemplo un valor 2 para NRundays, el array tendrá tres


posiciones que indicarán cada una el número de barras respecto a la presente
que se ha dado el Run Day. Asi, en el array que aparece a continuación
leñemos tres posiciones y en cada una un número de barras, situándose lo más
rocíente en el primer espacio y así respectivamente:

Posición 1 Posición 2 Posición 3

10

I'or Z = NRuiuktys To 2 Stcp 1.l:stc es el contador dcl bucle, en el que


exatiiiiiará dcstic la posición del array dclcnnin;ula por-el v;ilor tic
NRundays, en el caso que hemos puesto pv>r ejeni}ilo, desde la tercera ptisición
hasla llegar a la posición 2 yendo hacia atrás de uno en unoíStcp - 1). y hará lo
tjue a continuación indica la senlencia RDItaiDown (Z) KDMarDowii (Z-l)
^ 1, que es que en la tercera posición, que era el Kun Day inás lejano , se
ponga ahora el valor que había en la segunda posición sumándole uno. que es
la barra que transcurre respecto a la situación anterior. Lo misinu se hace con
la segunda posición, en la que ahora se coloca el valor que habla en la primera
sumándole uno.

215
ICS I RATICGIAR DI', INVKIÍSIÓN CON VISUAL CIIART

Estamos viendo cómo se van actualizando los números de barras


transcurridos al aparcccr un nuevo Run Day, desapareciendo el último que
había y dando cabida al nuevo.

E l*? v ilor, í’H í'l nutiií'fo de


Posición 1 P n tK tó n 2 PosicuSn 3 b itiai qijp Ivibi^í li^nscutiuJo (jf-sde
fju? ■ip ití'rio el l«?rcet Pundjy hs^lj
10 f/se rrmrn^'ritri, clcjvf
fj i'o :i \i fiu*^vi coloc irion

£ / nuevo A ífs lo s valorr-^ se ha su m a rjo un íi barra m á s y


RunDay fJí-j'jri pa so al úllirrio R u fid a y sp arírcido, que lo m a ré
toma et I.J p o s ic ió n 1
vafor de fa
variable
Posteriores

Nos queda comprobar cómo aparece el valor del nuevo Run Day en la
primera posición, que por supuesto es la más cercana. Esto lo hace tras el
bucle, que, recordemos, terminaba en la posición 2. Debajo aparece esta otra
sentencia: RDBarDown (1) = Posteriores, que quiere decir que en la posición
1 se situará el valor que tenga la variable Posteriores, pues estamos verificando
la existencia de esos Run Day desde la barra actual habia atrás por el valor de
esa variable. Aqui podemos verlo con mayor claridad;
Si al analizar desde la barra actual la correspondiente a Posteriores, no
apareciera allí ningún Run Day..
Else
For Z = 1 to NRundays
RDBarDown (Z) = RDBarDown (Z) + I
Next Z
Entonces lo que se haría en el array es simplemente, yendo esta vez en
orden desde la primera a la tercera posición (no como en el procedimiento
anterior, que se hacía en el sentido contrario), aumentar en uno el valor de
cada número de barras almacenado, sin variar la ubicación.El segundo
Procedimiento al que se llama tiene por nombre MayorMenorRundays, y en él
lo que se realiza es un bucle de tantas pasadas como NRundays se pida que
haya para comparar la máxima y la mínima de las barras siguientes al último
Run Day con la de los dos últimos Run Days, el mayor y el menor, algo que se
necesita para la condición central.

216
RSTRATICGIAS DR tNVRRSlÓN CON VISUAL CHART

P ublic Svüj HayotMenotRundays n


Uith APP
H ayorR unday ■ O
M e n o r R u n d a y - 99999
F o r 2 - 1 To N R u n d a y s
I f . H i g h (RDBatrUp ( Z ) ) > H a y o c R u n d o y T h e n
H ayocRunday - ,H lgh(R D B arU p(2 ))
En d I f
I f .L otf (PCiBarDown ( 2 ) ) < M e n o r P u n d a y T h e n
H e n o rR u n d ay - ,Low (R D BatD ow n(Z ))
End I f
Next Z
End V ith
End 5ub

El parámetro NRundays permite definir el tempo de opcratividad, pues


si exigimos que hayan pasado entre 1 y 2 Run Days, habrá mas señales, y se
podrá trabajar a plazo más corto, mientras que conforme vayamos aumentando
cl número, las señales serán más escasas ante las crecientes exigencias.

a«NKINTCft FiP|<|t 4ii 1 M A 10 M m » 9 0 C ^ d 0 . . V i M

jV -tf — - -H
/
Cierre f t a debaio de k
ifVMrtade2Kindeys 9.50
a r l e r a e i » e( Jltno n
Oerrtf)oretrun»ikit’tÁx>in»4e'¡Kutiíi*r* Mfítt
♦ •rteriocei y el lík i» t t «lcn)a

Nombre. Run Day


Tipo. Reconocimiento de Patrones
Id e a . Ruptura de gama de precios a partir de la identificación de
determinado modelo de barra y confirmación mediante un filtro
temporal. Por tanto, preseñal y confirmación temporal de condición
Variables. Anteriores y Posteriores, que representan el número de
barras que a uno y otro lado del modelo Run Day debo haber;
NRundays, que es el número de modelos que deben darse para dar la
orden de entrada en negocio; 2, contador de bucle; RDBarUp ( ) y
RDBarDown {), que son arrays que almacenan datos; Mayor Runday y
MenorRunday, que guardan cl valor mayor o menor de las máximas y

217

í f ) ) I I
i':s iR .v i'r.C iiA S OI-: iN V F k s i( ') N c o n v í s m a i . c h a k ’t

miniinas que i|ucci;i tras comparar a los Kun t)ays i|uc se pitin qiio haya
para dar las órdenes
líarra Inicio. Anteriores M*oslcriorcs
Oi derics. C’onipra y Veiil-a
IMintüs Entruda. Compra al cicrrc cuando el campo cicrrc de la barra
actual esté por encima de la máxima de un número de Run Hays
anteriores y el último haya sido alcista; \enta ai cierre cuando el campo
cierre de la barra actual esté por debajo de la mínima de un número de
Run Days anteriores y el último haya sido bajista
Puntos Salida. Igual, pues se cierran nuituamentc
O tros elementos. Utilización de bucles For.N ext. Uso de arrays,
variables de alm acenam iento de datos que pueden ser fijos o
dinámicos. Estiijcluras de tipo Cali que llaman a procedimientos Public
Sub para efectuar determinados cálculos, que a su vez se sirven do
Public Functions como subrutinas de cálculo

SISTEMA DIRECCION
Rn este último sistema vamos a indicar un m étodo m ixto de
elaboración en cuanto a plataformas de diseño se reriere. Se trata de hacer una
parte en PDV, la que establece ios parámetros y declara el resto de variables,
indicadores, funciones, así como la de inicializaciones, con objeto de evitar
pesadas labores en VBA, ai eslabiccer de principio muchos elementos c
idenlificar ios indicadores con sus características adicionales, todo ello de más
fácil representación con el asistente del cuadro de herramientas en la primera
plataforma.
.Después de explicitar todos estos componentes de las dos primeras
secciones, al compilar en PDV se liace una transcripción de ios mismos a
lenguaje VBA, que será sobre la que terminaremos de hacer el trabajo,
añadiendo en los dos primeros módulos otros datos que corresponden con
rutinas* y a propias de este segundo lengLiaje. asi como el resto del programa, el
código. Aunque éste último también se puede confeccionar del mismo modo y
completarlo después, en el caso que nos ocupa lo haromos directamente.
El ícnia central de este sistema es la existencia de un indicador como el
ADX, compuesto a partir de los datos de otros dos osciladores, el índice DI
positivo y el índice DI negativo, que intenta medir la cantidad de movimiento
direccional que hay en un inomemo dado en un mercado y su evolución
temporal. Asi se estima que cuando hay Valores de ADX superiores a 20 o 25,

218

J
R ñ T R A T K C tA S D B IN V E R S IÓ N C O N V ISU A I. C H A R T

prciloniinn la dircccionalidad de cualquier tipo en esc tramo (ascendente o


dcsccndeiilc), mientras cjuc si los valores están por debajo, se está inarcaiulo
una zona de eongeslión, donde no liay direccionalidad dominante.
Combinando el ADX con valores también por encima de determinado
nivel del ATR (AvTrucRange), que es un indicador que mide la volatilidad,
podemos tener una visión clara de la tendencia y de los síntomas de
movimiento más rápido o lento que pueda seguir la linca de precios.
Esta base general será el filtro que deteniiinará en última instancia la
operatividad pudiendo desactivarse si no se entra dentro de los parámetros,
pero para el timing concreto, para la señal de actuación que actúe como
desencadenante utilizaremos la sei'ial que nos proporcione el cruce de unas
medias móviles sobre los indicadores DI+ y DI-, que hará según el sentido en
que se produzcan que se efectúen órdenes de compra o de venta. Añadiremos
además la posibilidad de elegir un retardo, número de barras a partir del cruce
en el que se comprobará la activación general y se emitirán las órdenes.
Así que nos ponemos manos a la obra. Nos situamos en el entorno PDV
y reflejamos todos estos recursos (indicadores y variables).

0 (_ J Indicadoies
: &] ♦ A D X O afa
0 ♦ D IN egativeD ala
; B ♦ DiPosi^iveData
i a % A vTtueR an geD ata
i s % A vE xponentiólO 1PosiliveD ata
% A vE xponentiaID IN egativeD afa
i ®
Aquí vemos los diferentes indicadores que vamos a usar: ADX, ATR,
DI+, DI-, y las dos medias móviles exponenciales sobre éstos últimos. De
lodos ellos hemos activado los parámetros de las medias solamente, en sus
expresiones de origen de datos y periodo. Los demás se identifican con sus
características estándar.
Periodo: el de la media móvil exponencial (opiimizable).
V a lo r lia n d a A D X : el v a lo r q u e se c o m p a r a r á c o n el del in d ic a d o r
(opiimizable).

ValorATR: el valor que se comparará con el indicador (opiimizable).


Retardo: señala la barra sobre la que se colocará el stop de entrada a
partir del cruce de las líneas DI (optimizable).

219

L.
K S T K A T K C IA S IV'. IN V K K S lO N C O N V’IS H A I. t'M A K I'

V«iabl«
♦ Pefodo
• VdloíBandáADX
iti ValwATR
w * Rdaido
E Max

E Av£ xponentlalDINegahveDataOiigenOatos
2 *
Ticks
5: ♦ bCtuce
K * A vE xponenMDI P o : il< v e D á iá O iig e n D afoj
í £ * AvE xponenlidIDINcgativcDaídPeiiodo

B ♦ AvE x p o n e n l i d D I P o í t i v e D a t a P t i i o d o
15 GelHigheílDaiatPiice
B ♦ GetHighcitDataLefigih
K GetLowcíiDataiPíice
0 GetLow:tDaiaLengih
Itj bEniiar
H UlimoCfuce
W % Contadof

Max: variable que tomará el valor de los GctMighcsiData. Min:


variable que tomará el valor de los GeiLowestData. *

AvExponcntialDIPositiveDataOriizcnDatos: Campo de la barra sobre el


que se calculará la media, al igual que su homónimo para DINegativc.
AvExponentialDiPositiveDataPeriodo: Longitud que se utilizará para
calcular la media sobre DI+, al igual que la que se empleará para DI-. La
identificamos con la variable periodo.
Ticks: Porcentaje que se aplica al máximo y mínimo de la barra para
situar los stops.
Contador: variable que servirá para ir recogiendo el número de barras
que van pasando.
UltimoCruce: señalizador del tipo de cruce, alcista o bajista.
GctHiphestDataPrice: al igual que su homónima para las mínimas, es el
campo de la barra sobre el que se buscarán los valores más destacados
*
GetHiphestDataLcnght: al igual que para las mínimas, longitud o
número de barras en las que buscará estos valores,
bf-ntrar: variable boolean que señalará la combinación operativa ADX
+ ATR por encima de los valores de referencia.

220
K S T fM T F .O IA S I ) K I N V r.R S í6 N C O N V ISU A I. C H A R T

Cuando compilamos, aparece generado el mismo sistema en VBA. Si


jluira nos trasladamos a esta última plataforma, observaremos que aparecen
‘expresiones nuevas. Por ejemplo, todas las variables parámetro se encuentran
riHÍcailas por las expresiones ‘¡¡PDV Parameters, y el resto se enmarcan con
PDV declarations, m ientras que los térm inos que ya conocemos
h.ibitualmentc en VBA están vacíos. Ahora podemos ahí añadir otras variables
elementos que ya vayan relacionados con rutinas tipicas de este lenguaje.
\^i, entre ¡¡Parameters colocaremos las variables FinDia para decidir si se
(.jiiicre cerrar posiciones al terminar la sesión o dejarlas abiertas y LargoCorto,
p.ira decidir si se quiere actuar solo a largo, solo a corto, o en ambos sentidos a
la ve/.. También añadiremos sobre Optipn Explicit la variable MiCierrc,
necesaria cotno hemos visto en sistemas anteriores para identificar la hora
final de sesión.

í'cicíuti^tecs
I)lm F i n D i a A» I n t e g f e r ‘ O
L s c g o C o c t o As I n t e g e c 'O
' ParcuiicieEs ' '
' , , f'tiV pareupctícs
Dlm P e r i o d o As D o u b le ’ 3
Dito VaiocBandaADX As Doufale ' 2 0
Dim ValocATR As D o u b le '2
Dltn F e c a r d o As D ouble ' 1
Dim A v E x p o n e n c i a l D I N e g a c l v e D a t a O r l g e n D a c o s As P e l e e ' P n c e
Dltn T i c k a As D oub le ' 0 . 0 1
Dim A v E x p o n e n C x a l D I P o a l t i v e D a t a O c i g e n D a t o s Ks P e l e e ' P c i c *
Dito G e t f í i g h e a t D a t a t P c i c e As P t l c e ‘
Dim G e t L o w e s c D a t a t P c i c e As P r i c e '
' F’tiV p a c a n i e t e c ; ' ' ____ _____ _____ _____ ______________ _______

Si quisiéramos dejarlo todo en formato VBA, lo que tendríamos que


hacer es eliminar las expresiones que remiten a PDV, y poner las variables
parámetro dentro de los términos correspondientes en este lenguaje. Se podría
eliminar asimismo Const Data as Long = O, puesto que ya está declarada
como constante la serie de datos.
El segundo módulo se ha creado también en base a los valores de inicio
que hemos realizado al declarar los diversos componentes en el entorno PDV,
y tan solo añadiremos el valor de la variable MiCierrc, que pondremos en
1735 de principio.
Como podemos ver, la redacción es prolija y ha sido más fácil su
elaboración de esta fonna.
Estos serían la continuación del primer módulo y el de ÍnicialÍ7ac¡oncs
(módulo Public Sub System OnInitCalculate).

221
i-:s iK 'A r K ( iiA s DI-; iN V i':k>sir)N c o n v i s u a l i - i i a k t

' , , t lV ■J ct .:,r j o t i 3
[■lln H t X a ? l ’ú ' Ü j l e ' ! • ' i lh i' '

I'ini Min A3 I ' oui í l e ' [ ’Oiü.'ie


t i m b C r u c e As E o o l e a n ’ L o o l t r x n
Tim A v E x p o n e n t l a i D I N e g a c i v e D a c a P e c i o d o Aa D o u h l e 'D oh Jj I í
Iiirn A v E x p o n e n t i a l D I P o s í c i v e t i a c a P e i : i o d o Aa P o u b l e 'D c í Ij I í
Diiti G e t H i g h e s t D a t a L e n g c h As t i o u b l e ' loiO jle
tiirn G e t L o u e 3 t r < a c a L e r g c h As D o u b l e ’ V o 'jijlc
I'iw b E r i t r a r As B o o l e a n ‘ E j c l e s n
I»iin U l t i r í i o C r u c e As I ' o u h l e ' [ ' C i i l ' l e
I’iin C o n t a d o r As E^o^J^le ' ['o'jJjJe
Cciri3t I / a t a t.s Long = O
l'irn AI»^tI>atn Long
l»itn I>I N e g a t iveL>at«i As Long
iJim D l P o a i t l v e u a t a As Lon g
Lirr) A v T c u c P iin y c D a ta As Loug
Vitii A vE xpone ii t i a l D I P o s i t i v e t a c a As Long
r'iiii A v E x p o n e n t l a l P I N e r j ^ c i v A L a c a As Long
’Í'I'V iJec- l .u' cit; io \i3 ' '
[’ itii H i C i e c r e As I n c e o ^ r
C 'p tio n E x p i i c i t
p i i b l i c APP As S y s U s e r A p p
Iinplenients S ystem

,, f l ' 7 ii ii c l í t l 1 iori5
Max *= O
Min - O
bCLuce • F a l s e
A vE xponentialD IN egotlveD ataPeriodO “ P e rio d o '
A vE xponentialD IP ositlveC aC aP eriodo ■ P eriodo
C etH ig h estra ta L e n g th “ R etardo
G e tL o u e siD a ta L e n g th ■ R ecardo
U l t i r r o C r u c e - -1
C ontador " O
ALXData - . C e t l n d i c a t o r I d e n c i f l e r ( ADX, D a t a , H , 20 )
D I H e g a c i v e D a t a - . C e c I n d í c a t o r I d e n t i f l e r ( D I N e g a t i v e . D a t a , 14, ZO)
D l P o s i t i v e r a t a = . G e t I n d i e a c o r I d e n t i f l e r ( D I P o s i t i v e , D a t a , 14, 20)
A vT r u e P a n g e D a ta « . G e t l n d i c a t o r l d e n t í f í e r ( A v T r u e R a n g e , D a t a , 14)
A v E xponentialD IP ositiveD ata - . G e t I n d i c a t o r I d e n t i l i e r
(A v E x p o r i e n t l a l , DIPos í t i v e D a t a , A v E x p o n e n t l a l D I P o s í c i v e D a t a P e r i o d o
A vE xpo nent l a l D I P o s I t i v e D a c a O r i g e n l j a t o s )
A v E xponentiftlD IN egativetíaca " . C e t I n d í c a t o r I d e n t l f i e r
(A vE xp onentlal, D IN eg ativeD ata, A vExponentlolD IN egatIveD ataP eriodo,
'AvExponent l a l t i I I J e g a t í v e D ataO r íg e n I> a to s )
•ScartB ar « O
t'1'7 1 li i t 1 =111: iori3 ' '
K i C i e r r e - 173S

Nos adcnírainos ya en el núcleo del sistema: su código. Para faciliiar su


comprensión es preciso hablar de la esiruclura que presenta, para no vernos

222
> > > > > > >

r.SI IM M 'íílAS t>K INVKKSIÓN C(iN VISUAL TI lART

ahniinaclos por los múlMpIcs aspectos que se van sucediendo.La e stru c tu ra


ipic va a a presentar es la siguiente:
1. Rutina para cerrar al final de la sesión si se ha elegido el valor 1 en el
parámetro l-inDia.
- Instrucción Select Case LargoCorto donde según los valores que se
pongan: O para operar a largo y a corto; 1 para operar a largo y -I para operar
a corto, se desviará la acción a la subrutina Private Sub correspondiente.
2. Una vez que nos enconlranios en la opción elegida, el esquema será:
- Banderas de comprobación: la primera determina si es un cruce al
o a la baja y la segunda vcriílca la combinación operativa ADX + ATK.
- Instrucción Select Case Keiardo, di>ndo hahrá ircs posibilidades; O,
que signillca sin rctaido, ejecución en la misma barra; I. que supone dar la
orden en stop para hi barra sigLiiente; y Case l-lse, que es la manera de decir
onos valores distintos a O y I, que deja pasar el número de barras que se
e>tipule antes de poner el stop de entrada

Rutina inicial del código.


Como podemos ver. en primer lugar se pone la fómiula que hace que
cii la primera barra (puesto que es en ella cuando se da la condición de que la
lecha sea mayor que la de de la barra anterior ) la \ ariable MiCierre tome el
\alor de la hora de finalización de la sesión anterior. Esto se hace de esta
manera en vez de colocar directamente el valor de MiCierre funcionando con

' , , PI'V c o d e
' PI'V cocl e ' !

If .D a t e > . D a t e ( l ) Then
H iC ie rre - .T lm e(l)
En d I£

S e l e c t Case L argoC orto


Case O
O p erarL argoC orto
C aae l '
O perarLairgo
C aae -1
O perarC orto
Encl S e l e c t

I£ r i n D i a ■ 1 And . T im e ” M i C i e r r e T h e n
■ E x ic L o n g X t C l o s e , 1
.E x ic S h o rt A tC lase, 1
End I I

::3
KSTKATIÍGIAS DK INVERSION CON VISUAL CMART

1730. porque cuando hubiera que realizar tests del sistema sobre una base de
dalos Iiistóiica, en la que las horas de IniTli/ución fueron distintas a la actual,
se producirían problemas y desajustes por tal motivo.
La instrucción S e le c t.C a se de nombre LargoCorto deriva la
continuación del flujo a los procedimientos que correspondan según el valor
elegido, y por último la rutina de órdenes de cerrar posiciones en caso de
FinDia = I.
Examinemos a continuación el Case O del Select inicial, que nos manda
al procedimiento Prívate Sub OperarLargoCorto,
En principio están las dos banderas de verificación. En la primera se
pide como condición que el valor de la media exponencial de.DI+ estuviera en
la barra anterior por debajo del de la de DI- y en cambio en la barra actual la
situación sea la contraria, señal de que ha habido un cruce. Si es alcista, en una
sentencia debajo de la condición se asigna el valor de 1 a la variable
UltimoCruce y el contador se inicia a 0. Si es bajista la sentencia asignará a
UltimoCruce el valor de 0. Lo demás es similar.
En la segunda bandera se comprueba si la combinación operativa de
estar tanto ADX como ATR por encima de unos parámetros concretos, es
verdadera y en ese caso se valora bEntrar, señal primaria de conexión dcl
sistema, como True y si no, se asigna el valor de False.
t

I£ . C e t l n d l c a c o r V a l u e { A v E x p o n e n c l e i l P I P o s í t i v e D a t a , 1, 1) <
. C e t I n c l l c a t o r V a l u e t A v E x p o n e n t í a l D I N e g a t i v e D a t a , 1, 1) And
. C e t l n d l c a t o t V a i u e ( A v E x p o n e n t l a l D I P o a l t i v e D a t a ) >■
. C e c I n d i c a t o r V a l u e ( A v E x p o n e n c l a l D I N e g a c i v e D a c a ) Then

m tlB oC ruce • C ru c e a l a l z a .
C o n ta d o r - O
Else
I f . G e t l n d i c a t o c V a l u e ( X v E x p o n e n t l a l D I P o s l t i v e D a t a , 1, 1) :
. G e t l n d i c a t o r V a l u e ( A v E x p o n e n t l a l D I N e g a t i v e D a c a , 1, 1) And
. G e t l n d l c a t o r V a l u e ( A v E x p o n e n t i a l D I P o s í c t v e D a c a ) <■
. C e c I n d l c a t o r V a l u e ( A v E x p o n e n c i a I D I N e g a c i v e D a t a ) Then

U lt im o C ru c e • O 'C r u c e a l a b a j a
concador - O
End I f
ttiá I£
. G e tI ndic a to rV a lu eC A D X D ata ) > ValorBandaAPX And
. C e t I n d í c a t o c V a l u e ( A v T r u e F a n g e D a t a ) > ValorATR Then
b E n t r a r • True
Else
b E n tra r - Talse
End I f

224

-
■ir
RSTRATtíCilAS ÜK INVKRSIÓN CON VISUAI. CHART

Seguimos en el mismo Prívate Sub y aparece otra instrucción Select


Cuse ahora referida a Retardo, presentando las opciones Case O, Case 1 y Case
nise, que recoge todas las demás posibilidades diferentes de las dos primeras.

S e l e c t Ca9 c Receicdo

Case O
I f b E n t r« c Then
l í UUlmoCruce • 1 And .G etH ark ecP osl C lo n <> 1 Then
.Buy AtC lose, 1
C ls e
l í OlclmoCEuce - O And . C e tH a r k e tP o a ltá o n <> -1 Then
. S e l l AcCloae, 1
Cnd I t
End l í
Eis e
I f . C e tK s c k e c P o s i tlo n • 1 And UltimoCruce “ O Then
.ExicLong AtCloae, 1
E l9 e
I£ .CecnarKect>09telan - -1 And UltirooCruce - 1 Then
•CxltS hocc AtC iaae, 1
End t í
End I f
' End I f

Case O Retardo. Explicación.

En la situación de seleccionar O, lo primero que hace el código es pedir


comprobación de conexión operativa, que es proporcionada por la variable
blíntrar igualada a Truc.
C ase 1
lí b E n t r a c Then
l í U l t i m o C r u c e ■ 1 And . G e t R a r k e c P o a l t i o n o 1 Then
• B u y A t S c o p , 1 , . K i g h + ( . H i g h » T i c k a / 100)
E lse
I f U l t i m o C r u c e ■ O And , G e t M a c ) c e t P o s i c i o n <> - 1 T h e n
. S e l l A t S t o p , l , .Low - (.L ow • T l O t s / 100)
End I t
End I f
E lse
I £ . G e c H a r k e t P o s l t l o n - 1 And U l t i m o C r u c e ■ O T h e n
■ E x l t L o n g A t S t o p , 1, .Low - ( . L o « • T i c k s / 100)
E lse
I f . G e t H a r k e t P o a i t i o n » - 1 And U l t I r r o C r u c e ” 1 T h e n
. E x i t S h o r t A t S t o p , 1, . H i g h + ( . H i g h » T i c K s / 100)
End I t
En d I£
Enct 1£

Si ponemos solo bEntrar significa lo mismo, así que a partir de que


esto se dé, pasa a comprobar si ha habido un cruce. Si se ha dado y es alcista y

225

i- i' i
1 I l « t

KSlKAil'XWAS 0E-: INVllRSlON T dN VISUAI. CItART

además no leñemos ninguna posición en el mercado (GetMarkcl Pos ilion) a


iaryo, se yenera una orden de compra al cierre de esa misma barra. Si el criicc
es bajista, se pionera orden de venta al cierre. Si la combinación operativa no
está activa, es decir, si bHntrar no es verdadera, enloiices lo que se emite es
orden de .salir de la posición a largo o a corlo en que se este, al cierre.

Cdse J Reíanlo. ExpUcación.


Cuando se selecciona Case 1, se está pidiendo que se deje un retardo de
una barra para emitir la orden, lo cual soluciona el sistema poniendo la orden
en stop, que como sabemos, en Visual Chart se da para su ejecución en !,i
batra siguiente. La estructura es la misma pero cambian los puntos de entradu
y salida. Si en el caso anterior eran al cierre de la barra, ahora será en siop
utilizando fórmulas conocidas sobre la máxima y la mínima de la baiTa en que
se da la combinación operativa, y si no se entra en el negocio, la orden se \ :i
mantem'endo tomando la máxima y mínima de la barra que en ese mouicnto
sea la actual o sea, la barra 0.
Ya solo queda el último caso, el que representa parámetros distintos de
O o I para el retardo, y por ello se debe comenzar incrementando el contadi>r,
para comenzar a compararlo con la variable Retardo, siendo también las
órdenes en stop. Pero ahora vuelven a cambiar los puntos elegidos, ya que se
utilizarán los Getllighest y GetLowest del periodo de barras que se marquen
con Retardo, Se asignarán esos valores en las variablA Max y Min, que serán
Jas que aparecerán en las fómiulas a tal efecto.
Case El.se Retardo. Explicación.
En el periodo de tiempo que transcurre desde el último cruce que se dé
hasta el valor que tenga la variable Retardo, se toman como stops anclados
Max y Min, que representan los mayores o menores valores de las funciones
G etllighest y GetLowest. A partir de ese momento se comprueba b
combinación ATR-ADX. Si es correcta, está operativa, se establece una orden
en stop, que será de compra si el último cruce ha sido alcista y no hay posición
abierta en ese sentido, o será de venta si el último cruce fue en sentido bajisla
Max 4 (Max * Ticks / 100) en el primer caso y Min - (Min * Ticks / 100) en el
segiituio.
Si después de entrar en un negocio, se produce un cruce contrario, entra
en Juego el Retardo, y al transcurrir ese plazo, se da orden de cerrar las
posiciones, basándose en las mismas fórmulas.

226
\ i

KSTRATKGIAS HE INVERSION CON VISUAL CIIART

Case E l s e
C o n ta d o r ■ C on ta d o r + 1
I f C o n ta d o r <» P e t a r d o Then
B«x ■ . G e t H i g h e s t ( t ' a t a , G e c H i g h e a t l i a t a t P c i c e , f e t a r d o )
Min - . G e t L o u e s t ( D o t a , G e t L o u s s t D a t a t P r i c í , P e ta r d o )
Ene) IC
l í faZncrar And C o n ta d o r >■ P e t a r d o Then
I f U lt im o C ru c e » 1 And . C e t B a r k e t P o s i t i o n <> 1 Then
..B uy A tS to p , 1, Wax + (Hax » TicKs / 100)
Else
l í U ltim oC ru ce ■ O And . G e t H a r k e t P o s i c i a n o -1 Then
• S e l l A tS to p , 1, ílin - (Kin * T i c k a / lOG)
End I f
Cnd I f
Cl9e
l í C o n ta d o r >• R e t a r d o Then
I f . C e t H a r j t e t P o s i t i o n ■ 1 And U ltlm o C ru c e • O Then
• ExicLong A tS to p, l , í!in - (Km * T i c k s / 100)
Eise
I f . G e t S a c k e t P o s i t í o n - -1 And U ltim c C cuc e - l Then
. E x i t S h o c t A tS to p, 1, Hax + (Kax * Tic:k3 / 100)
End I f
End I£
End I f
End I f

Comprendiendo bien toda esta rutina del Prívate Sub OperarLargoCorto,


es n'icíl entender las de operar a largo solo y operar a corto solo, donde se
hacen los cambios necesarios para que se den las órdenes en el sentido
enunciado. Por ello no vamos a reflejarlas aquí gráficamente, sino que
remitimos, como en el resto de sistemas y demás estrategias, al Anexo II,
donde se puede obtener el desarrollo pormenorizado de todos ellos.
En el gráfico de la página siguiente podemos apreciar dos negocios
completos y el comienzo de otro, que responden a operar largo y corto y
rolardo 1. En cada barra lo primordial es examinar la operatividad de la
coinbinación ADX-ATR y si se produce, entonces busca hacia atrás al último
cruce para ver de qué tipo es, y en virtud de ello emite la orden
correspondiente (en este caso en stop para la barra siguiente, retardo 1)

Nombre, Dirección
Tipo. Seguimiento de Tendencia
Idea. Detección de direecionalidad predominante combinada con la
volatilidad del mercado
Indicadores. ADX, D IN cgativc y D IPositive, A vTrucRangc,
AvExponentialDIPositive y AvExponentialDÍNcgatíve

22 7
(■:STk’ATI-;C.IA.S Dív I N V I C K S I Ú N C O N V I S U A L C f lA K T

> IB E U 5 PLUS ■Ih lii^ ií 5 minuto» M, 17 34 A 8 023,0 M B 643.0 m -8 610.0 C: 8 621.0 F e ■ , a *


L«;i
d' •“ 9 0 00,n

fi'''

8 950,r

! 900.0
*
C
1

0 8 5 0 ,0

-I--------1 1--------1
5 16
1e. 35
35 ' 23/nc/O
; 3/'n c /o i' 1110' 12 4 o ' 14 15 15 5 0
H' >' Hllojí» 2/v ^ l« J
' 1■ ;7 ,e f l . l i . U A t ■■ 2 fiO 1 ■ ' * ,D »

■2 0 ,0

. - , - r ,, , , , I v , f .1 - : ■■ 15,3 < " I-.


---------— _______

M f. 25.1 B t n i t C'IPo:i(ií« 20.0 1 -i


TinT

;> h - ' 't I ; lri. ) 26,0 BJ^dJ_DlN«jjti.* 20.0 I -ti

V arlublcs. Periodo, longitud de cálculo de la media móvil exponencial;


ValorBandaADX, el valor que se comparará con su indicador; ValorATR,
el valor que se comparará con su indicador; Retardo, señala la barra sobre
la que se pondrá el stop de entrada; Max y Min, que toman el valor de 1«
Ge*tHighc.st y de los GctLowestData; AvExponentialDlPositiveData
OrigenDatos y AvExponentialDINegative DataOrigcnDatos, campo de la
barra sobre el que se calculará la media; AvEx^onentialDlPositiveDüü
Periodo y AvExponcntialDINegativcDataPeriodo, longitud en la que se
calculará la media; Ticks, porcentaje aplicado a los stops; Contador,
número de barras que van pasando desde que se da la condición del cruce;
UltimoCruce, que indica el tipo de cruce que se ha producido, si alcista©
bajista; bEntrar. variable que señala la combinación operativa ADX+ATR

228
ESI (MTlCOrAS DK INVfCKSIÓN CON VI.StMI. Í.'MAKT

por cncima de los valores de referencia; G etH ighestD atatPricc y


(iclLowcslDaialPrice, campo de la barra sobre el que se buscarán estos
puntos mayores y menores en un periodo dado, que será el que vendrá
delerminado por las siguientes variables: G ctUighcstDataLenijth y
CjctLowestDalaLength; FinDia, para decidir si dejar posiciones abiertas al
terminar la sesión o no; MiCicrre, que recoge eí valor de la hora de cierre;
LargoCorto, que toma los valores que indicarán el tipo de operaciones a
realizar
runcioncs. GetMarketPosition , GetHighcst , GetLowest , y Get Jndi-
catorValue
R:irra Inicio.O
Ó rdenes. Compra y Venta; Cerrar Largo y Cerrar Corto
l*uii(os K ntrad:i. Diversos casos según Retardo señalado. Case 0;
C'ompra al cienc de la barra en la que se da la comhinación operativa
ADX +ATR si el último cruce lia sido alcista; venta lo mismo pero solo si
el último cruce ha sido bajista; Case 1; Compra en stop dando la orden en
la barra donde se da la combinación operativa y dependiendo del tipo de
cruce, sobre la fórmula señalada por la máxima de la barra más un
porcentaje o la minima de la barra menos un porcentaje. Case Else;
Compra en stop dando la orden en la barra operativa y utiliza sendos stops
anclados tras pasar el retardo después del cruce, en Jos que incorpora los
valores de GetHighcst y GetLowest en el periodo de retardo (Max y Min
respectivamente): Max + (Max * Ticks / 100) ó Min - (Min * Ticks /
100)
Punios Salida. Case 0: Al cierre si no se da la combinación operativa.
Case 1: En stop cuando no haya combinación operativa, utilizando las
máximas y mínimas de la barra. Case Else; Si no hay operatividad, pero
ha transcurrido en el contador el tiempo de retardo, la salida se da en stop
teniendo en cuenta los valores de las funciones GetHijzhcst y GetLowest
ilcl periodo que marca ese retardo con la clásica fómiula que ya licjnos
visto, usando Max o Min como variables referenciadoras.
O tros elementos. Método mixto de elaboración. Dos tipos de Estructuras
Select Case: uno para controlar los tipos de operaciones a realizar, y otro
para controlar el Retardo filtro temporal de aplicación de las órdenes.
Posibilidad de decidir entre liquidar negocios al fm de la sesión o no, y si
hacer operaciones a largo, a corto o de las dos formas al mismo tieinpo.

229
( t I ( t

l i S l k A ll'J C I A S ÜIC IN V I-;KS I(')N CUN V IS U A H H A R T

PK IN C IPA K FS E L E M E N T O S QUE HAN A PA R E C ID O E^


SIS I KMAS MJA
/ ■ ' n / u i o / i i ’.' i:

(íc tliu iic a to rk lc n líllc r

GctIndicatorValuc
CuiTciulíar
CiciNllil lighcst
GclNiIiLowcsl
, Date
(k'tMarkctPosition
GcinarsSinccEntry
GcíHíglicst
GctLowcst
Time
Indicadores:
Parabólico %
Estücástico
ADX
AvTrueRangc (ATR)
Medias móviles; AvSimplc,AvWci|’hled yAvFlat.
RSI
í)l+, DI-
Variahles:
De Control (tipo boolean): True / False
Coiiuidor
Porcentaje
Arrays
Asignación de variables a otra variable
Teclio y suelo

230
KSTNA TI-X IIAS D K IN V K K S lO N C O N V ISU A L C H A K T

Otros:
i lÁ)S
Anchijos (le slops
[: si niel liras de control Sclcct Case
Public Sub ( ) adicionales, Private Sub ( ) y Public Function ( )
Estructura Cali
Bandera
Fórmulas para señalar nuinientos exactos de cruces de indicadores
ííucles

Kl.KMlíNTOS Y SISTEM AS DONDE APARECEN.


a) Funciones
Función Getindicatoridentifier. Fsta función se utiliza para crear la
serie de datos que corresponde a un indicador {asignando su valor a una
\;iriable previamente deUnida en el módulo inicial) y obtener un identificador
dcl mismo (en el procedimiento OnlnitCalculate)
-Fiat
- Escudo
-SK SD
- MediasRSI
- Barra Volátil
- Dirección
Función GetlndicatorValue. Su misión es proporcionar el valor de un
indicador y está asociada a la función anterior, sin la cual no sería operati\ a. Si
la anterior aparece en los dos primeros módulos, ésta lo hace en el
procedimiento central de cálculo.
- Fiat
- Escudo
-SK SD
- MediasRSI
- Barra Volátil
- Dirección

: .i l
r;s T i,’A 'i'r;riiA s r iK i n v e r s i ó n ( ' o n v i s u a i , ( 'I I a r t

Función CiitrcntBar. Nos retoma en su búsqueda cuál es el númcto de


orden que tiene la barra actual o barra donde se están efectuando los cómputos
en ese momento
- BandasContinuas
Función GetNthHiuhest. Se usa para saber el valor del mayor ordinal
que determinemos en una serie de datos y en una extensión de barras precisa

- Turtle Soup Plus


Función GctNthLowest. Se usa para saber el valor del menor ordinal
que determinemos en una serie de datos y en una extensión de barras precisa

- Turtle Soup Plus


Función Date. Extrae de cada barra la fecha en que se ha producido,
que va incluida en formato numérico del tipo AAAAMMi>D. Se suele Incluir
en rutinas de sistemas que tienen la posibilidad de cerrar operaciones al fin de
la sesión.
- Barra Volátil
- Turtle Soup Plus
- Dirección
1
Función GetMarketPosition. informa de la situación que tiene el
sistema en referencia al mercado en cada momento, pudiendo devolver los
valores O si se está inactivo, en espera de invertir, 1 si hay una posición de
compra abierta o - 1 si hay una posición de venta abierta
- Escudo
-SK SD
- Barra Volátil
- Turtle Soup Plus
- Dirección
Función GetBarsSinccEntrv. Esta función se emplea para conocer el
número de barras que han transcurrido desde que se abrió una posición
determinada
- Pennanencia
- Escudo

232
rCSTíMTIvCJlAS n í í INVÍvMSIÓN CON VISUAL CUART

Función GctHighcst. Se utiliza para saber el valor mayor de un campo


determinado considerando un número concreto de barras hacia atrás desde la
presente
- Barra Volátil
- SKSD
- Dirección
- McdiasRSI
- Turtle Soup Plus
Función GetLowest. Realiza el mismo cometido que su homónima
anterior pero en este caso referida a! valor menor de la serie de datos
- Barra Volátil
-SK SD
- Dirección
- Permanencia
- For Next
- Medias RSI
- Turtle Soup Plus
Función Time. Devuelve el valor horario que va incluido en cada barra
y que se refleja en la hora de finalización del periodo temporal que resume la
barra. Al igual que Date tiene intima conexión con rutinas que establecen
opciones de (malizar posiciones a termino de sesión
- Barra Volátil
- Turtle Soup Plus
- Dirección
b) Indicadores
Parabólico. Generado a partir de la búsqueda de pívots significativos,
gráfjcamcnte se muestra como líneas que desde un alejamiento inicial y en
función de coeficientcs de aceleración y topos del mismo, se aproximan a la
curva de precios progresivamente ya sea en sentido ascendente o descendente,
invirticndo su posición cuando son rebasadas por las máximas o minimas de
las barras activas
- Escudo

233
K S l K A T I 'X ilA S D E I N V K I ^ SI( )N C O N V I S U A I . C l IA K T_

I'su>c;íst¡co. I-stc indicador pretende medir cl moinenlo del merendó a


p.irlir (le la ci>inparaeión de los precios de cierre de las h.irras con la n)edi;i del
rango de nia\iinas-niiiilinas de las barras de un periodo previo determinado

-SKSI)
ADX. Es un indicador de movimiento dircccional de mercado, que
intenta medir la cantidad de! mismo en un tramo determinado de la linea de
precios. Utiliza datos de otros dos índices, el DI Positivo y el DI Neua!i\o,
obteniendo un promedio de ambos.
- Dirección
AvJ’_rueRangcXAJR),fls un indicador de volatilidad, que va reali/aiuli)
la media de una serie de valores de las barras, midiendo la amplitud tic l.i>
mismas teniendo en cuenta la inlluencia del cierre de cada barra anterior.
- F.seiido
- liana Volátil
- Dirección
Nledias mi’n des. listos indicadores se suelen emplear para repu^entjr
en un grát'ico el precio medio de un \a lo r en un determinado periodo
tiempo. Se las considera buenas seguitloras de tendencia. Las hay de dixerNi"
tipos: simple, ponderada, exponencial, aplanada, etc..,
- Fiat
- Medias RSl
- Dirección
RSl (k elaliv e Strength Index).ílste indicador pretende medir cl
comportamiento interno de un valor en cuanto al tamaño de las subidas \
bajadas que experimenta, que son las que compara conformando una lin;j
oscilatoria que puede señalar periodos de sobreeompra o sobreventa.
- Medias RSl
DI Positivo/ DI Negativo. Señalan en su oscilación alrededor de ufü
linea intermedia zonas de congestión en los mercadas con ausencia »k
dirección clara o zonas de predominio de direccionalidad ascendente y
descendente respectivamente. A partir de sus datos se configura el indicaA¡<
ADX, del que ya lieinos hablado anleriormcnte.
- Dirección -

234
K S T K A 'l'W .lA S IMi IN V IO íS lO N C O N V IS IJA I, C'MAKT

c) yaríabU’s
[)c conlrol (tipo hciolciiiQ.Las vnriabics así definidas pcrmilcn jiiiardar
\ah)rcs solo con dos expresiones: verdadero y falso, con lo que se consiiiuyen
en \criticadoras de situaciones concretas que llevan a poner en marcha las
acciones perlinenlcs asociadas.
- For Nexl
- Alcisla/Bajista
- Barra Volátil
- Turtle Soup Plus
- Run Day
- Dirección
Variable Contador. Con csle tipo espccinco de variable se pueden
[irctendcr objetivos muy distintos: congelar ciertas operaciones en tanto no
iranscurra un periodo que se concretará en condición, o repetición de una
iiMrucción en un bucle. Es por tanto también un control de situaciones.
- Dirección
- Run Day
- Alcista/üajísta
• For Next
Variable Porcentaic. Generalmente suponen espacios de seguridad, ya
filtros de confirmación de movimientos o señales de finalización de los
nii'.mos. estreclfanienle relacionadas con los stops de precios, sobre los que
'‘'iL'tcn calcular, añadiendo o restando la cantidad correspondiente.
-SK SD
- Bandas Continuas
- Dirección
Arrnys. Son espacios de almacenamiento de variables que coinciden en
tipo de data, donde éstas se sitúan de fonna secuenciada teniendo cada una
numero identincativo. Los arrays pueden ser fijos, si se declara su tamaño
'i<'‘de el principio, o dinámicos, si el tamaño varia según se desarrolla el
pft'grama
- Run Day

2.15
ESTKATRGIAS DB INVKRSiON CON VISUAL CMART

Asipnación de variables a otra variable. Es un mecanismo corricntc en


los sistemas guardar valores que serán usados en el momento conveniente
mediante la envoltura de una variable, pero se puede a su vez emplear como
valor otra variable, en muchos casos para sitnpliflcar el acceso a la misma.
- Escudo
- Medias RSI
- Bandas Continuas
- Barra Volátil
- Run Day
- Turtie Soup Plus
- Dirección
d) Otros
A ndale de stops. Con objeto de establecer puntos concretos de entrada
o salida en un negocio sin que se vayan actualizando y por tanto cambiando Je
ubicación, es preciso recurrir a este recurso, que fija de manera permanente
tales stops
- Medias RSI
- Barra Volátil
Select Case. Es un tipo de estructura de control, que comprueba el
valor que a la variable que representa en su nombre se le ha dado al comenzar
el programa a funcionar con objeto de desviar hacia el procedimiento
correspondiente la ejecución de los cálculos
- Barra Volátil
Turtle Soup Plus
- Dirección
Public Subf ) adicionales. Prívate Sub f ) v Public Funetion ( ).Son
forma;? de organizar el código de un sistema de forma que lo complejo se
divida en unidades manejables. La catalogación de Public hace que se pueda
acceder desde cualquier otro procedimiento en todos los módulos, mientras
que el tipo Prívate solo es accesible en el módulo en el que ha sido
declaradoípor ejemplo cuando separamos en el código operar largo de operar
corto o de ambos al mismo tiempo).Sirven para llaipar a aplicaciones o nitinas
que desarrollan una misión determinada

2.16
ESTRATEGIAS DK INVKRSlON CON VISUAL CIIART

- Run Day
- Turtic Soup P!us
- Dirección
- Barra Volátil
C ali. Estructura de control que se utiliza para llam ar a los
procedimientos subordinados
- Run Day
Bandera. Así llamamos a una sección de código, independizada del
resto,' que se ocupa preferentemente de veriUcar el cum plim iento de
determinadas condiciones para su uso como restricción añadida o como
actúalizador o fijador de stops.
- Barra Volátil
’ Turtle Soup Plus
“ Run Day
- Dirección
Fórmulas para señalar momentos exactos de cruces de indicadores. Su
utilidad es innegable y soluciona problemas inmediatos en la redacción del
código de un sistema con objeto de acotar drásticamente momentos concretos,
(icneralmente se sirve de las distintas líneas de los indicadores y del valor
temporal de la barra.
- Medias RSI
-SK SD
Bucles. Son estructuras de búsqueda reiterativa que generan la
repetición de unas instrucciones determinadas durante un número de \ eccs ya
establecido o mientras se produzca cierta condición. En el asistente VBA la
dcuominación de los dos tipos es: For...Next y While..Wend
- For Next
Alcista/Bajista
Turtle Soup Plus
Run Day

237
rS T K A T K G lA S DF, IN V E R S IO N C O N V ISU A L C H A R T

HKCURSOS I)K USO rU A C l ICO KN KL M AM CJü DKL KNTORNO


\B \

h oycctos abiertos.
Para desplazarnos a través de distintos sistemas abiertos en VBA con
los que se está trabajando, hay que tener a la vista la pantalla de proyectos, que
se despliega a la izquierda del entorno de trabajo. Para que apare/cj
seleccionamos en el menú View, la opción Project Explorer.
Cuantió queramos pasar de uno a otro hay que situarse en esa panlallj
recién surgida sobre el renglón con la expresión thisSystem del sistema que
queremos usar, señalarlo y después marcar en el icono de la izquierda de ítK
tres que hay en la parte superior de la pantalla. A la derecha podemos apreciar
entonces que ha cambiado el proyecto visualizado.
¿Y cómo cerrar perni:men temen te estos proyectos? Pues situándose
también en thisSyslein. marcando con el botón derecho y escogiendo la opción
Cióse Projcct. Un mensaje te pregunta si quieres salvar los cambios.

cr> Eh L* V» »tlom
’» j-H i í e n -n •' I, ■k,-4|p
srrT.'^ jr r u>
ora D I p
litt, P en -.^ d ^iu p 1* :'0 'ii'i€ I
I >ir ia I*oL±jle
t'i»> lodclE^cvn ks I'OLiblF
^ SISIDtRiC01(C: A Lva. Fcr )odoCt'dvn Í3

^
LUttConwir»»
lic n v o n l (CAkrtta
ti» Ai Pricc fti:t
txm O e d o v e s t i c e kí P t i c e
C « i:L c w stlia (A L e n 9t h As toiifole í o i i J^
l>\im As l'O 'ü.le
k - w »IH i..igrO ^I (t
O. AI'P A& SyqU.'^^r Ipp
rnif . m ^y?r.^A )
í j í . i K : <á, 3 y '»em _f n IiiK C 'M c ijli» ,íf O
Wl» h l í P
I II [( J r r - r c ir - H u jh
«>1 L í>-kt .ilF'i J.'F * í>iiveLo«
ivl.eu'jr h • 10

Copia de datos y creación de fichero de trabajo.


Para proceder a la copia de datos dentro del entorno VBA al diseñar un
sistema, simplemente se selecciona al elemento o bloque, se pulsa la
combinación Ctrl+C y en el lugar donde queramos ponerlo pulsamos Ctrl+V.
Existen también unos iconos representativos tanto de copiar como de cortar y
después la opción Paste (pegar) hace el resto.

238
ESTRATKGÍAS DE ÍNVERSI6 N CON VISUAL CHAKT

Si se trata de pasar unos datos a otro fichero, por si fo queremos usar


como copia de trabajo o solo un grupo de elementos que se van a repetir, lo
i)ue se hace es en primer lugar tener abierto un proyecto en blanco. Nos
>iiuiimos en el sistema original, seleccionamos todo io que necesitemos y
pulsamos Ctrl+C. Entonces nos vamos a la pantalla de proyectos, nos situamos
en tliisSystem del nuevo proyecto, pulsamos el icono de arriba a la izquierda
p.ira metemos en el código y con Ctrl+V Ío pegamos.

EX

^ f «I Q <C:\Arctwy»»

^ Iftto cI (C;\Af<hivo«

^ UvíiConnírtí

fs iiH C SuL J y sc ^ íw ^ -.n rn it


« i t h A P P
S to c h A jtic D ttC » ■ .O f f tl n d i tocídeniiti^riStocn
,3 in tt f ^ r • O
In<l Uitb
SM
b
P^liC Su/j SY^Kem^OnC^tculmi^ •c í*tr /L3 L>
y t^ h Á Pf
I t .T l« * < IM S Cr .r im 9 MiS n.en

U sía (le fu n d o n e s disponible.


Estamos elaborando un sistema en el entorno VBA y no recordamos el
nombre de las funciones que necesitamos. Poniendo un en cualquier parte
del módulo donde tengamos la expresión APP, se desplegará un cuadro con
todas las que hay disponibles.
jontiacakuiM»
Iti.t»k^n^íii *
yijlí 9v3t<?8r«_^0n[íiitC»lcu l«t • (J
h Ji?P
ín.íirrttrrl-l^nt írí»>-i (
ín< ^CI05*
Currintó*!
CurrfntCOntfKtí l i a t e B a r (ftv V ftl iJ Long]
Cun^ntEnhr»!
> 14^5 Tti^h
^D»teCub^trac1 i3C0Ch«9t
OCiifLOfig _
If .O c t I r d i c « c r V « L u e ( S c o c tia a t
.Sell AtClcae, 1
Iná I f

Proceso de depuración de estrategias.


A menudo sucede que cuando verificamos sobre el gráfico un sistema
(o un indicador, estudio, etc..) que acabamos de diseñar, apreciamos algún
desajuste con lo que esperábamos a ira\ cs de las condiciones establecidas. No

2.Í9
RS'l kATKGIAR DR INVICKSIÚN C(1N VISUAI.CHAKT

cumple las rcsiriccioncs. Puede ser algún fallo en la definición dcl cóilijio.
Podemos supervisar esto realizando un -proceso que llamamos depuración,
para lo cual en primer lugar editamos en pantalla el sistema en cuestión
Tenicndolo ante nosotros, señalamos unos puntos de interrupción o ruptura
donde queremos que se pare el cálculo euanilo se inserte la estrategia despucN
en un gráfico. ¿Cómo se señalan esos puntos? De dos maneras;
- O pulsando con el cursor en la banda izquierda de color gris que ha>
junto al texto en la fila que queremos seleccionar como referencia.
- O situando el cursor en la línea en cuestión y a continuación pulsar la
tecla F9.

P u b U c S 1J 3 3 y 5 t e n v _ O n J n i t C a l E u l « t e ( I
B i t h *PP
AvriacI'SCa • .O ec I n d l c a c o c t d e n c I f l e i I A v r i m , Oata ,
* v r i s t t’B t n P e t i o d o , * v f l a t t i B C a ú r i g e t i P a c o s )
.StaitBat • O
End Wi t h
Ind Suh
P u í J l i c 3ub S y s c e B i O n C a J c u l B t e S a r ( B yV al Bat *3 L ona )
U i r h >PP____________ "

. Bu y i i C l o s e , i
Clac
• S e ll A cC lose, 1

Uith
trid 3>ih
P u b l i c Sulj S y s t e m O n S í t P a c a m e t e c a [PacainAt c a y P a t a m L i a t
• , , P .1 .ri. t c i M . n i '< l 1 : i r 1..11
i v r i B C t a t a P e t i o a o - P a ra m L is c H I
i v r i a c r a i a O r i j f n í a t o s - P a ia m L ls tl! )

Ahora pulsamos sobre el icono de Run Project, que es éste:

. Ya está preparado el módulo en modo Debug. Nos trasladamos i


Visual Chart e insertamos el sistema de la forma habitual. Cuando empie?aa
hacer los cálculos procesando, se detiene y vuelve al editor de VBA, a loí
puntos de interrupción, donde queda iluminado de amarillo el primero de ellos,
apareciendo una flecha también amarilla sobre el punto de la izquierda a!
margen.
Aqui podemos desplazarnos de una línea a otra con la tecla F8, y en
cada una situando el cursor junto a las variables aparece una pequeña ventana
con el valor que tienen en ese momento del cálculo. Con esto logramos ií
viendo esos valores, hacer las correspondientes operaciones y comprobar $¡
hay algún error que haga que no se ejecute como pensamos. Como podéis ver,

24Ü

« I ( < < \ \ ♦ >


F,STRATF.C;iAS DF. INVERSIÓN CON VISUAI. CMART

es similar a la función que se realiza sobre el gráfico con las líneas


Mipcrvisoras y el inspector de cotizaciones.
P u b l i c 3ub S y s t e m ^ O n C a l c u l a t e B a c ( B y V a l Bar Xs Long)
U i t h APP
|j ||||l £ .C lo s c > .G e c I n d lc s ^ o r V a lu e ( J iv r ia tD a ^ a ) Tben
. Buy A t C l o s e , 1
Else
. S e l i A tC ioae, 1

Pero hay otra manera de seguir los datos numéricos para ver tau\btén el
\alor,de las funciones, y es activando desde View la opción VVatch Window.

9ét4f7
C'pt 1 DaMun
P u t o li . l* « P o « íiiio C lrttS ^ A '» r^

Vlttt {3 WMom OrH«


.t i < i e c ( A v r l a t , r*ta ,
■'r 1 nr«to9t
.SCkt
End CtrtK
Ehd 3 . , ■ ■ -■
Pubi
uith Cff «
V a t w r (* v r i«t e «ta l T te a

rCi wauinwt I n

Cuando pulsamos, se despliega en la parte inferior una pantalla de


seguimiento donde debemos incorporar los elementos que queremos obser\ar.
Ahora seleccionamos en el menú Debug la opción Add Watch.

j p Eb t<*> BM iTMrt frmÉt ^ !«gk tt*


!©*■■• O ■ P M » ' -■'>

•St. ttdc
tn d « . t h
• O
■ « Ir f»
tn d 3ub *3 9 «iD t/ O W * »ít^
?u«>Ilc 3«ib O I M tft
»irh *?p
0 | lC .<lamr > .C ri
.í'iv uiriojf I. '
, í » l l H C lo ;

ii------ 1 04»Mt«n
»iw |vi>^ 3

241
( I ( ( / f » '

[• S T Iv 'A T F .C ilA S IW . IN V K K S IÓ N C O N V I S U A L C I I A R i'

\ln esto ciniilro ele cliálo¡zo escribimos la expresión que queremos seguir
con I;i extensión a! cumien/o. lis muy importante situar correctamente el
procedimiento en el que se hacen los cálculos de esa expresión, en este caso.■
OnC'alculateliar. Damos a OK y ya la hemos incoiporailo.

í ’ú Me il/’jJ. Ciyít-iTi^'jn'ralCulAt eííac IByV^I Bar Xa Longl


Vit APP
.cióse > .GvtlodtcaLorVQlur CAvrJatD«it«) Tbea
-Fuy At'Hose, 1
rii J l t '. l c s e , 1

Eri-.l '■■ih
P u tiiic aiit> Syaicai Qri5e t p a c « ^ c í c 5 (T A v^iA rray Pacaí«*Li5t U ii» V n r ia n ti

31 .d___t

nt.ly

Después de hacer esta labor tantas veces como sea necesario hasta
incorporar todos aquellos elementos que deseemos verificar, con la tecla I S
hemos dicho que seguimos el cálculo línea a línea y con la tecla F5 el cálciilu
va hasta el siguiente punto de interrupción. Se puede saber también en que
barra estamos comprobando el cálculo si atiadimos app.currentbar.
Una vez que hayamos procedido a la comprobación, si se detecta d
error, se subsana en la sección correspondiente, pero antes hay que abandonar
el modo Depuración, siguiendo los pasos al revés. Primero cerramos el cuadro
de Watch pulsando la X de la parte superior derecha. Después volvemos a
pulsar el icono de Run Projcct, con lo que se eliminan los puntos de
interrupción.

Sintaxis de ¡a fnnción ¡dentificador de un intlicador.


La función Getlndicatorldentifier se emplea para crear la serie de datos
de un indicador determinado y proceder a su identificación a través de una
serie de variables, que se constituyen en sus parámetros. Cuando estamos
haciendo esta labor por ejemplo en un sistema diseñado en V B A , no vamos a
encontrar estas características ya expresadas, sino que son distintas según ci
indicador de que se Irate. Por ello, aquí dejaremos e.specificada la sintaxi.s de
los indicadores más usados, de forma que sirva de guia rápida para su
descripción. El indicador ha tenido que ser prcviatnente declarado como
variable y después, en el módulo O nlnitCalculate, se procede a su
identificación.

242
KSTRATl'XílAS 1)K INVKRSIÓN CXJN VISUAL C IIA fa

MACIi['ata " . Gec I n d i c Q t o r I d e n t i E i e r (HACD, L a ta ,


IIACPCacaPeriodoME_l, nACl»DataPer ioclon£_2 , í1ACt(DataPeciodoME_3IG
HACPC'aca0cigenDato3, MACDDataValor Banda)
3t o c h í i S t i c P a t a = . G e t l n d i c a t o t l c l e n t i f l e r ( S t o c l i a s t i c , D ata,
g t o c h a s t i c D a ta P e r i o d o , S c o c h a s t i c D & t a S k , S c o c h a s t icl>ata 3d ,
S cochasticD ataM edla, S to c h a stic D a ta B a n d a S u p e r io r ,
S co ch a stícD a to B a n d a ln fer i o r )
= .G et I n d i c a t o r I d e n t í f i e r (ADX, D a ta, ADZDataPer i o d o ,
ADXDataValorBanda)
AvTruePanqePata =■ . G e t l n d i c a t o r l d e n t i f l e r (AvTrueftange, D ata,
AvTcuePangeDataPec iodo)
DllJeaa t i v e P a t a «= . C e t i n d i c a t o r Id e n t i f l e r (DINegac í v e . D ata,
D l N e ^ a t í v e D a t a P e r l o d o , D I N e g a tiv e lia c a V a lo rE a n d a )
r i P o s í t l y e P a t a » . G e t l n d i c a t o c l d e n t i f i e r ( D l P o s i t i v e . D ata,
t ' I P o s í t í v e D a t a P e r i o d o , D I P o s it i v e D a t a V a l o c B a n d a )
AvS in iplep ata ” . G e c i n d i c a t o r I d e n t i f l e r (AvSirople, D ata,
AvSiin pleDataPec i o d o , A vS im p le D a taO u ige n l'atos)
P o r a h o l i c D a t a = . G e t l n d a c a c o c l d e n t i f l e r (P a L 'ab o lic, D ata,
P a t : a b o l i c D a c a C o e f _ A c e l e r a c i ó n , P a r a b o li c D a t a T o p e AF)
P SID ata = . G e t l n d i c a t o r l d e n t i f i e r ( R S I , D ata, R S I D a t a P e r i o d o ,
P S ID a ta B a n d a S u p e r lo c , R S I D a t a B a n d a I n f e r l o r )________________ ______

Visualización del código ajustada a ¡a pantalla.


En muchas ocasiones sucede que cuando estamos observando el
código de un sistema o estrategia en VBA, no entra dentro de la pantalla todo
oí código, y tcneníos que movemos con la baira de dcsplazaiiiienlo.
Para conseguir tener en la misma pantalla todo el código, podemos
cortar algunas de las lineas y pasar todo esa parte que queda fuera al renglón
siguiente. Para ello:

l A ñ a d i m o s el carácter _ antes de los términos que \ amos a \ ariar de


posición

2.- Pulsamos la tecla espaciadora y después cntcr.

De esta manera se puede seguir el curso de las reglas del sistema con
mayor facilidad y claridad.

243
E S T K A T IX '.IA S DE: IN V E R S IÓ N C'ON V ISU A L CM A RT

CREACION DE ESTUDIOS E INDICADOEÍES

K s I i k Ho : A l c i s ( a / I ) ; i i í s t a

Se suele toiiuir eii ocüsioncs la relación entre el cierre y lu apertura de


lu misma barra como scfial de que si el primero os superior al segundo tiene
carácter alcista, y si se da lo contrario, valor bajista.
Es muy scncilIo hacer iin pequeño estudio que pinte las barras do
distinto color siguiendo este criterio. No necesitamos variables, tan solo
inicial i/ar SlartBar y pasar al código directamenle.

' I , Pi)L-ciiiietcu^
' rrn-fiiio-tera ' '
Piitolic APP As DrwUserApp
Implements Study
P i i b l i c S u b S t u d y _ O n I n i t C a l c u l a t e ()
U i t h APP
.S t a r t B a r = O
End U ith
End Siib

Como podemos apreciar en los dos primeros módulos dcl Estudio, han
cambiado algunas expresiones, como DrwUserApp en vez de SysUserApp.
Implemenls Study en ve/ de Implcments System, o Sludy_OnlnÍlCalculate en
vez de System OninitCalculate.
El código consiste básicamente en lo siguiente: condición + orden di‘
pintar la barra (PaintBar) especificando sus propiedades.
P u b l i c Sub S t i i d y _ O n C a l c u l a t e B a r (ByVal Bac As Long)
y i t h APP
I f . C i ó s e >= .O pe n The n
. P a i n c B a t .O p e n , . H l g h , .Low, . G l o s e , RGB(0, O, 2 5 5 ) , O, 1, O

Si el valor del cierre de la barra actual es mayor o igual que el valor de


la apertura en la misma barra, entonces pinta la barra en los siguientes lugares;
aperlura, máxima, mínima y cierre, con la mezcla de colores que proporciona
la función R(iU (Kedtíreenlilue) en la proporción O de Red, O de Green y 2í'5.
que es el máximo, de Blue. Por tanto, esta baira de cariKier alcista se pinta de
color azul. Y además esto se hace referido a la linea O (a veces hay varias
lincas de datos), con un ancho I (prueben a variar este dígito y observen los
resultados) y sobre la barra O, o sea, la actual. Por supuesto todas estas
funciones - .Paintbar, .Open, .High, .Low, Cióse - se escriben con el punto
idcntificador antecediéndolas.

244
E S T R A T K G IA S D K IN V E R S IÓ N C O N V IS U A L C H A R T

El valor de cualquier color se describe como una mezcla de los tres


colores antes mencionndos. El color se define com o.un conjunto de tres
v;ii iahies de tipo integer (RXí.U) y por tanto con rango entre O y 255.

Color Red Creen V«lu« Blue Vdlue


O O O
Blue O O 255
Green O O
Cyan o■ 255 255
Rfd ;s5 O, O
Magenta Í5S O 255
Yellow :ss :s5 O
White 155 ?S5 255

Un valor de O indicarla una total ausencia dcl componente al que se


rcnere, mientras que un valor de 255 indica la máxima intensidad del
componente en cuestión. El valor que exceda de 255 asume ser 255.:
Sigue el código señalando lo que se hace cuando la condición no se
cumple:

Else
• P a l n t B a c .Open, .H ig h , -Low, .C ióse, RGB(25S, O, 0)< O, 1, O
End l í
End t f i t h
End SulD

Si el cierre no es superior a la apertura, se da orden pintar la barra en los


puntos señalados a tal efecto: apertura, máxima, mínima y cierre, con la
mezcla RGB en la proporción 255 de Red , O de Creen y O de Blue. por lo
tanto se pintará esta barra bajista de color rojo.

L 245
I I í ( ^ '

r S l RATKGÍAS D F 1N\T.RSIÓN CON V'ISl.’AI, CHART

r.Ntn(iio : K S l
1:11 c s ic c siu d io lo que s e prclontlc \ isu;ili/ar e s la c \ o lu c ió n do !;i>
ha ñ a s se gú n la siiiuicióii de RSI i.]iic hay en ese inoiiiento. Se pintarán de tirj
colo r las harras t¡ne eonesjioiidan a nn \ alor por eiicinia de una handa sii|ici ior
de 70. de olro c olo r las t|iic re lie jan un RSI por (.lehajo de la handa inferior ilc
30 y de olro colo r la situación ilcntro de una gam a media entre am has haiulas.

C’on objeto ilc t|iic el usuario pueda variar estas hamias, se ponen estos
a sp ectos c o m o parámetros, creaiulo d o s variables que recogerán e s o s valores
Tatnhién será nicjorahle el periotio del c á le n l o del KSl, A s i m i s m o cii el
sigiiieiUc caj>itulo se ticciara mía \aiial>le llamada V i í S I , dontie se asiyii.it.i
más ailel.mlc lo qnc vale el indicador.

• , , I II' II-,■-r
D u ii F a i i c i s ^ u p e r i c i L - k s ro iiM e '7 0
fin í F a iid a ln íe rio c k5 T o iib le ': c
Tim P S I [ > a t a P e c i o d o roiüjle ' H
■f s:- - ''
r'Un VESI As r o u b l e T' i i . üí l e
Tiiii P S i r a t a B a n d a S u p e c i o r As Doi i bl e ' I 'O V l l .- i l i - i

I' iir P S I D a t a B a n d a l z j í e r i o r As Poiitole ' 1‘OIÜj 1>=


I’lin PSl[>ac«i As Lo n g
P u b l i c APP As ^ r u U 3 e r A p p
Iii'Plem&nt3 S t i i d y ________________________

A continuación el m ó d u lo de inicializacion cs, don d e pued e destacar l.i


exten sión del idcntillcador del indicador, pu es entre paréntesis debe rellejar el
n o m b re del m i s m o , la serie s o b re la que se c a lc u la y otros p a r á iT i e t r o '»
adicionales.
PuJi l i c Sijb S t u d y _ O n I n i c C a V c u l a c e o
U i t h APP
PS I t ' a t at:í»rirjfiSijfiec l o r - 70
P 3 I I > a c a E s n d a I n í e r l o r - 30
VP.'I - O
P3 I [ i a t a - . Giít Irid i c a t o t I d r n t 1 f I r r I P!j I , RS I L a t a p e r l e d o ,
PS I [ ' at aBandaSupet : l o r , PS I t i a c a B a n d a l n f e r l o r )
■StartBar - O
End « ith
Erid Svili

Por ú ltim o el c ó d i g o , d o n d e se e m p i e z a c o n una se n t e n c ia que


establece la igualdad entre la variíible V R S l co n el valor'del indicador. A partir
de aqni se pide que V R S l esté por e n c im a de Banda Superior para dar la orden
de pintar los distintos c am p os de la barra de azul (RG R 0,0 ,2 55).

Si no se lia la primera c o iu ü c ió n . se pasa a exam in ar si está por debajo


de Banda Inferior, lo que supondría pintarlo de verde, y si no está en ninguno

2 4 ()

i
iCKTKATF.CilAS n K IN V RK SlO N C O N V IS U A L C H A R T

ele estos casos la piulará tic rojo. 1:1 resultado de su aplicación nos muestra a
primera vista las situaciones de RSl sobrecomprado, sobrcvendido. neutral,
por si se pueden extraer algunas consecuencias. Insertamos debajo del
urálico la linca del oscilador para que se pueda apreciar la corrección del
csUidio.

Estiiclio; B arras Run Dav


Una barra Run Day es aquella que reúne ciertas características que
¡ihora describiremos y que puede considerarse como punto a partir del cual
podría establecerse una ruptura en la gama de precios. Puede ser por tanto de
connotación alcista y bajista. Para considerar la barra Run Day como alcista es
preciso que su máxima sea mayor que la de una serie de barras anteriores pero
también cuya mínima sea menor que las mínimas de una serie de barras
posteriores. lil sentido bajista viene dado por las condiciones contrarias a
éstas: la mínima tiene que ser menor que las mínimas de determinado número
de barras anteriores, y su máxima mayor que la máxima de unas barras
siguientes. Partiendo de esta idea, vamos a confeccionar un estudio que nos
\isualice esas barras y podamos apreciar si puede ser útil esta idea.

' i I p . a r ¿ ii ii e t ; 'r L ‘ 3

Tiin A n t e r i o r e s As r>o\ible '


Dim P o s t e r i o r e s As D oiible
' Faraiiiecetit ‘ '
Piiii Z As I n c e g e r
O ption E x p l i c i t
P u b l i c APP PL-ulI^eLApp
Tinpleinen ts S t u d y

247
K S I NATl'X '.IAS DI-; IN V K K S IÚ N C O N VJSUAI< C IIA K T

Vamos a poner como parámetros esc número’dcl que hemos hablüdo a


uno y olro lado de la barra Run l)ay. Los llamaremos Anteriores y Posteriores,
y no tiene que ser evidentemente el mismo en uno y olro lado. También
declararemos una variable contador, por ejemplo Z.
En el módulo OnInitCalculatc no es preciso señalar nada, así que
pasamos al siguiente, que es OnCalculateBar, donde aparece una estructura a
base de un cuerpo central en la que va el código con las órdenes, y dos
instrucciones especiales, como si fueran pequeñas unidades de cálculo a las
que se llamará para solicitar unos datos con los que funcionar. Son Public
Fimctions, y en ellas se hará un proceso previo para verificar la existencia en
la barra actual de Run Day bajista o Run Day alcista.
Primero veamos el núcleo central del código;
P ii b l íC Siib S c u iJ y _ O n C « lc u l a c e B a r (ByVal Bar As Long)
U ic h APP

I f P u n D o y A l c i s t a Then
. P a i n e Bar . O p e n ( P o s e e r l o r e s ) , . H i g h í P o s c e t i o c e s ) ,
. Lov ( P o s t e r i o r e s ) , . C i ó s e ( P o s e e r l o r e s ) , P<;B(0, O, 2 5 5 ) ,
D, 3, P o s t e r i o r e s
Els e
I f P u n D a y E a j l a t a Th e n
.P n in tB ac . O p e n ( P o s t e e i o r e a ) , . H i g h ( P o s t e e l o t e s ) ,
. L o w ( P o s t e r i o r e s ) , . Cióse ( P o s t e r i o r e s ) , RGB(25S, O, O),
0. 3, P o s t e r l o c e s
End I f
End :í - »
Erid « i t h
End Sub

En esencia, este código expresa que si el programa ha verificado la


existencia de un Run Day alcista (dato que como hemos dicho antes procedo
de la posterior Public Function), se pinte esa barra en la apertura, en la
máxima, en la mínima y en el cierre con la mezcla RGB, es decir, red-green-
blue en la proporción 0,0,255, con lo que se pinta totalmente de azul, y
referido a la linea O, con 3 de ancho o grosor y sobre la barra cuyo valor
ostenta la variable Posteriores. Si no se da la condición, pasa a comprobar si
hay Run Day bajista en esa barra, y si es así da la misma orden pero ahora la
proporción es 255,0,0, con lo que se pinta totalmente de rojo, manteniendo las
demás características.
Como hemos dicho, existen dos Public Functions nominadas
respectivamente RunDayBajista y RunDayAIcista, de tipo boolean, o sea que
obtendrá un resultado de Cierto o Falso, que es lo que llevarán al código, que
tienen como misión hacer unos bucles For Next para localizar las barras Run
Day en cada sentido.

248
K S T K A T I'X ílA S 1)K IN V K K S IÓ N C f JN V ISU A L C lIA R T

Esta es la primera:

P u b l i c F u n c t i o n R u n D a y A l c i a t a () Aa B o o l e a n
U i t h APP
P u n D a y A l c í 3 t a <■ T r u c
Foc Z “ X To A n t e r i o r e s
I I . H i g h ( P o s t e r i o r e s ) < - . H i g h ( P o 3 t e c i o c « s + 2) Then
B unD ayA lcista > F a ls e
E x it F u n ctio n
End I £
Next Z
F o r Z ■ O To P o s t e r i o r e s - 1
I £ .L ow (Z ) <" . L o u ( P o s t e r i o r e s ) T h e n
R u n D ayA icisca ■ F a l s e
E x it F u n ctio n
End I £
Next Z
End W i t h
End F u n c t i o n ____

Aparcccii dos bucles l'or Ncxt en cadena pnra coinproliar los requisitos
que se le piden a este tipo de barra. Primero la de tipo bajista. Primer bucle:
Empieza RunDayBajista teniendo el valor de True, y si lo sigue manteniendo
después de los cálculos, es señal de identificación positiva. Desde Z, que es
una variable contador, con valor 1 hasta lo que valga la variable Anteriores (en
principio 2 según lo que le pusimos en el valor inicial en la sección
Parámetros), o sea, dos veces comprueba primero que la mínima de
Posteriores, es decir, que la mínima de hace dos barras sea menor que la
niinima de Z + Posleriores, o sea , que la mínima de hace tres barras. Esto lo
hace en la primera pasada. Si ya entonces no se diera el resultado esperado,
RunDayBajista toma el valor de False y se da orden de salir de la función.
Si la condición se da, continúa la segunda pasada (Ncxt Z), donde se
comprueba que la mínima de hace dos barras (este dato sí está anclado, como
es lógico, pues es la barra objeto de análisis como posible Run Day) es menor
que la de Z, que ahora vale 2 + Posteriores, por tanto, se comprueba que es
V menor que la de hace cuatro barras. Así que en esencia, toma una barra y la
compara con sus dos barras precedentes en cuanto a las mínimas. Si después
de esta segunda pasada el resultado es False, se ordena la salida de la Función,
y si es True, se hace el segundo bucle For Ne.\t. Aquí los \ alores del contador
son desde O hasta Posteriores-!, es decir, hasta 1, pues Posteriores tenia un
valor inicia! de 2.¿Por qué lia cambiado aquí el contador? Porque en el primer
bucle el cálculo se hacia desde la barra actual mirando dos atrás, donde se
creía podía estar la barra Run, y situándose allí comprobaba a su vez las
mínimas de las dos anteriores a ella. Pero ahora es distinto. Desde la barra

2-49
i s i k \ I i ; ( , l . \ s IM'. 11 iN \ isu,M , c n A K r

nciiKil lo que so liacc es coniprobnr his nuíximns suya y la anterior en relación


a la posible barra Kiin. Por eso el contador es desde O hasta l(barra aedial y
antciior).
Scgiiinios. La ¡n iinera pasada eonipiiieba que la máxima de la barra cti
curso es nuMior que la máxima anlerior. Si no se da esto, KiniDayliajisla toma
el valor de Halse y se ordena salir de la {'uiiciún. Si el resultado es de Trik'.
hace la segunda pasada y mira si la máxima de hace mía barra es menor que l;i
de hace dos barras. Si después ile ello, la veri 11cae ión es positiva, c!
conlrohulor RuiiDayllaJisla (recorclemos, de tipo boolean) queda con el \ ali>r
de Truc (C'icrio) y asi lo lleva ai cálculo central.
Parece complicado, pero si se \ a paso a paso y obser\aiulo sobre el
gráfico, todo \ a esclareciéndose.
La segunda Public Function es la de Runday Alcista, y no necesita otra
explicación porque sigue el mismo esquema que la que acabamos de
examinar. Asi aparece :
íutl:c P u n r a r B a j i s t a () As E o o l e a n
M iih AFP
P u r i D a y B a j i s t a ■ Tc ue ^
f c c 2 = 1 To A n t e r i o r e s
l í . Ldu ( P o s t e e l o t e s ) >- + Posteriores) Th«n
Punl'ayBajista » False
Exit Fu nc tio n
Eri'i l í
Ilíxt Z
For Z » O To P o s t e r i o r e s - 1
l í . H i g h (Z ) >“ . H i g h l P o s t e r i o c e s ) Then
Pu nD«yBa]is ta “ F a l s e
Exi c Fu r i o t i o n
End IX
Ilexr. Z
Ei.^j Hi r h
Kii'I F' ilJfMíjn

- |n |. |
» ih [ ' 35 ^ (Ti»Au1oS H 17 ^4 A d M 0 D m ^ iC 6 10 f '- P . "

/ i ';r jft

k /lili II

1
II * I »r n ,1 ) K‘>n I

250

J
KSTKA TKC IIAS niO INVI’J í S I ^ N C O N V ISU A L ( ‘flA H T

\ BA. INDICADORES

Indiciidor; Pan<alla.
Vamos a diseñar un indicador con ires lincas. Nos basaremos en la idea
lie combinar una media móvil, por ejemplo exponencial, con bandas paralelas
que marque el ATR o índice de volatilidad al sumarlo a la anterior Iras
nuilliplicarlo por un porccnlajc.
En primer lugar declaramos los indicadores auxiliares uiili/ados y sus
parámetros. Dejamos como (iarámelro en la media móvil el origen de los
(.latos, con objeto de elegir el campo de la barra que se preliera. y en cuanto al
número de barras en que buscar, será asignada a la \ ariablo Longitud. En el
caso del ATR la asignación se hará en la variable Periodo. Otros elementos
serán: Cocncicntc, que es un itiultiplicador, PS y Pl, bandas superior e
inlcrior, AVE, valor de la media móvil exponencial, y VATR, \alo r del
indicador AvTrucRange.
' I , f ai
L o n g i t u d As I io u b i e ' 1 0
Dim A v E x p o n e n t i a l D n t a O c i g e n r ' a t o s Xs P r i
r i t n P e r i o d o As T o u b l e ’ 10
tiitn C o e f i c i e n t e JLs D oubie ' l . S
' Fai; ''
Liw PS As t o u b l e
Pim PI A3 Iio u b le 'r 'O 'ü j le
Pin VATR As Doiible 't'Oiü;ile
Tim AVE As rio u h l« ’ lo'.ü. l e
Diw A v E x p o n e n t l a l D a t a P e c i o d o As hD 'jh le ' í
Dim A v T c u e R a n g e D ataP ec i o d o A3 D oub ie ' !• vld^l■í
Ditn A v E x p o n e n t i a l D a t a As l o n g
Ditn A v T r u e R a n g e P a t a Aa Long
O p c ió n E x p l i c i t
P t i h l i c APP A.3 OscUsecApp
Iitii'1^iiK'lif Iinl Icílt or
l!n el segundo módulo las iniciali/aciones y procedim ientos de
ideiitincación de las caracterislicas de los indicadores empleados:
P i ± / l i c Sijiy I n d i c a t o r _ O n I í í i t C a i c u l a t e ( )
Wi t h APP
AvExpone ntia irac aPe cio do • Longitud
AvTr uePang«t' at«Peelodo “ P e r i o d o
A v E x p o n e r i t i o l D a t a - . G e t I n d i c a t o r I d e n t i f l e c ( AvE> ;pon enc i a 1, r a t n,
A v E z p o n e n t l a l I / a t a P e r i o d o , A vE xp ct ten r. i s i g ’f-nt íkt: o j )
A v T r u e P a n g e t a ta " . G e t l n d i c a c o r I d e n t i f l e r (A vItui^Ping-;.
AvTrueP'^MCt'íti'ít'ír^r lo d o )
• O
Et.d Uir.h
EtKl S'Ab

L 251

mé^
r .s r iv V A 'iid iA S Di-: i n v i -:i ¿ s k ‘) n <'»»n v i s m a i . í ' i i a Iv'T

Y pasiinios al código, en doiulc coiiicnzainos líacicrulo en una scnic


una serie tic asignaciones a variables represenlativas y a contimiaeión el
cstablceiniienU) dcl valor de eaila linea del indieailor Pantalla; línea 1...PS;
linea 2....A VE; linea 3 ...Pl

P i i t i i i c Sni> I n d i c a t o r _ O n C a i c u l a t e B a r (B yV a i Bar As Long)


U i c h APP
AVE ■ . C e t I n d i c a t o r V a l u e ( A v E x p o n e n t i o i r n t a )
VATR " . G e t I n d i c a t o t V n l u e ( A v T r u e P n n g e D a c a )
r s * AVE + VATR * C o e f i c i e n t e
PI ■ AVE - VATR • C o e f i c i e n t e
. S e t I nrJ i c a t o r V a l u e P3
. S e t I n d i c a t o r V a l u e AVE, 2
. 5eC IndiC atocV alúe P l, 3
Er.fl W i t h
End Sub

Aplicado sobre un gráfico, eí efecto que produce es el siguiente:

...^ xj

95 Feb,'Mar Abr Mar


N < »^ H o t a Z X v f t r i o t jT R o N I _

Indicador: Doble Suelo.

Vamos a comentar el indicador llamado Doble Suelo, que intenta


localizar zonas donde se de esta ilgura tan importante en el análisis técnico.
Se eoniien/a tlinieiisionamio tres variables parámetro (ine se potirán
oplitni/ar después, y que son Binras (hace referencia a un número de barras,
que en principio señala como 3. que debe tener a cada lado el pívot
correspomliente para ser earaeteri/ado como tal). Inclinación (para coniparar
la diferencia entre el valor de los dos puntos mínimos del doble suelo con
objeto de que no estén demasiado separados en altura en el gráfico) y n, que

252

A
K S K ^ M K O IA S I)K IN V R IÍS IÚ N C O N V IS IJA I, ( ’ IIA K T

será la variable que emplearemos para detertninar el número de barras que


debe haber en medio de los dos puntos jnínimos.

' I , Pareünetecs
Ditn Barras As Double ' "J
Dlm I n c l i n a c i ó n As Double
Dim n As Double '5
' Parfuitetecs ' '
Diin P1 As Douhle
Dlm As Double
Diio PlUp As Povible
Diín X Aa Do'Able
Dim P I n f e t l o r As Double
Oiwi P Sup ecior As Double
O ption E x p l i c i t
P u b l i c APP As OscUserApp
Iitip 1ementa I n d i c a t o t

Después el resto de las variables, que servirán para asignarles


determinados valores a lo largo del código.
P i ü j l i c Sub I n d i c a c o c _ O n C a l c u l a t e B e i i : (B yV al B a r Xs LoikjI
U i t h APP

Pl U p - . C e t S w l n g H l g h G a c ( D a t a , 1, P r i c e L o w , B a r c a s , C a r r a s • 10)
P1 ■ . G e c S m n g L o w B a r ( D a t a , 1, P r i c e L o w , B a r r a s , B a r c a s * 10)
P2 ■ . G e t S w i n g L o u B a r ( D a t a , 2 , P r i c e L o w , B a r r a s , B a r r a s • 10)
P S u p e r io r - .H igh(P lU p)

Comienzan las asignaciones:

- P l ‘ y P2 serán los valores que nos devuelva la función


íietSwiiiiíI.owHar relcridos al campo de las miiiinias. Nos dará el número de
barras, contando desde la actual, que hace que se ha encontrado al primer pivot
con la mínima más baja y al segundo pivot mínimo respectivamente, pivots
con las características antes comentadas de tener a los lados el número de
barras que indica la variable del mismo nombre, y habiendo sido buscados en
una longitud que determina la formula Barras*lí).
- PlU p será el valor que nos devuelva la función (letSuinglU chR ar
también siíbre el campo de las mínimas, pero en osle caso lo que busca es un
pívt)t que tenga la mayor mínima y esté situailo entre U>s otros dos. Las demás
caraeieríslicas adicionales, renejadas en su función entre paréntesis. si>n las
mismas que las de P1 y P2(anchura en laterales y periodo de búsqueda).

253

) ) í ) ) i ) ) ) ) > )
( I ( ( f ( i I

K S TK A TiX '.IA S DI'; INVi:iv’St<')N t '( )N V ISU A L C IIA K T

- PSuporior toma el vnlor tic la Máxima (lllgh) de P lU p p


posk'i iiirincnlc trazar en su horizontal una Ifnoa. lista es por ejemplo una ilc
las formas do la figura que estamos buscando.

Alu)ia cnconlramos en priinei’ lut^ar tres eoiuliciinies en eascaila, qiii.'


van reslrinuicniio Nueesi\ ainenie la fisonomía ilel iloble suelo.
l í F'l <:■ H u n v a l u í Ati'J P2 <> N’i l IV a iu e Aii .1 PlUti o N u l l V a l u e
l í P1 < PlUp And PlUp < P2 Then
I f A b s í - L o u ( P l ) - . L o u ( P ’ )) < I n c l i n a c i ó n Then

Primero se pide que P l, P2 y PlU p sean difcriíiites de Nuil Valué. Os


decir, de resultado Nulo, para que existan los tres a la vez ya que si no, no hay
figura.

A continuación se le pide un orden concreto, que Pl esté antes que


P) Up y que Pl Up este antes de P2.

l\)r último se examina el valor absoluto de la diferencia del precio de


las mínimas de los puntos Pl y P2 con respecto a la cantidad (jue hemos lljaiK»
en la variable Inclinación para que no haya una desigualdad muy acusada. Hs
muy difícil hallar la perfección con dos picos mínimos iguales, así que hay que
dar cierto margen para considerar cl doble suelo. Lo de valor absoluto es p.ira
que salga un resultado positivo, aunque cl primero sea menor que el segundo.
Continuando con el código, ahora viene el núcleo central del mismo. Si
se van cumpliendo las anteriores cotuiíciones, aluna se da una vuelta de tuerca
más al pedir que cnlrc atiibos puntos mhiirnos haya un número de barras
iniermcdias que nosotros decidiremos con el valor que asignemos a la variable
n. ( If P2'P1 < n). A partir de aqui se trata de decidir cuál de ambos puntosos
el que consideraremos como Interior y eso se logrará comparando las iiúninias

254

J
R S T R A T K d lA S D R IN V F.R SIÓ N C O N V IS U A I, í 'l lAKT

c!c cada una de sus barras. Así, si el valor de la mínima del punto P1 es inferior
;il de la mínima del punto P2, entonces se considera como PInfcrior al primero,
y si no es así, al segundo. Con ello se prepara el terreno para establecer la
onien de pintar con la referencia opormna.
Para dar esta orden, hay que formular un bucle que va desde Pl menos
Barras, para que se dibuje desde los laterales del pivot. (Imaginemos que Pi se
Iki encontrado por la función de búsqueda en la barra 40 hacia atrás, desde la
presente; pues seria desde la 40 menos Barras, variable a la que pusimos de
principio valor 3, por tanto, desde la barra 37 contando hacia atrás desde la
;)etital)hasla P2 más [Jarras, por el mismo motivo (Si P2 estaba en la barra 44.
pues 44 más Barras, que vale 3, será hasta la barra 47), y que comprueba en
este espacio que el valor de la mínima de esas barras por la que se efectúa el
recorrido sea m enor que el valor de la máxima dcl punto P lU p.
estahleeiéndose el valor del indicador {Set IndicatorValue) en ese caso en la
iniiiiina de cada barra, que asi se van uniendo -podremos apreciarlo en rojo-, y
im piiUaiuIo aquellas en que suceda lo eonliario. Al ini^uio tiempo, la fuiiei^Mi
SeihuiieatorValue establece que pasandv> por el Punto Inferior se dibuje una
linea recta en horizonlal -la vercujos verde- y que pasando por (*untoSuperior
se trace otra línea recta hori/ontal -la visuali/arenios en a/ul-.
II P2 - Pl •: n Th-rri
II .L o w ( P l) < .Low(P2) Then
P l n í e c i o c ■ .Lou(Pi)
El?e
P l n f e r i O E - .Lou(P, -)
End I f
Toe X ■ P l - B a r c a s To P2 + BAirras
I f .L o u ( x ) < . H ig U ( Pl U p) Th«n
. S e t I n d i c n t o r V a l u e .Lqw(x)« 1, x
Er.d I f
. S e t I n d i c a t o c V Ó l u e P I n f e c i o r , 2, x
. S e t l n d i c n t o c V a l u e P S u p e r i o c , 3, x
Next X
E Isff
, Setlriciicat ocVal'ie NullValue, 1
. Sec Iiid icí iCQ cV ald e HullValue, 2
• fet liulicat oLVnlue NuUV«liie,
End l í
End lí
End I£
En<1 I f
End U ich
End Siib
ya de principio, cuando formulamos la condición de w

(lilsc), cntoiiccs lo que dice la función SetlndieatorValue es que no se


establezca ningún valor para cada una de las tres líneas del indicador, hecho
que recoge la variable NullValue.

L. 255
K S T K A I I'C .IA S IJI-; IN V K K S IÓ N C O N V IS U A L C H A R T

Lo Único que queda ya es cerrar adecuadamente los dislintos If que-han


ido apareciendo con sus correspondiente End If, así como Public Sub y Wiih
APP con End Sub y End With.
Así quedarla el indicador señalado en la misma zona que antes
habíamos visto en un grállco con los puntos P l, PlU p y P2;
GBfXKPUS
IBEXJSPLUS. IntudiíSm inutei M %7 M A ». 152.0 M 7 100.0 m: 7 150X» C: 7 171.0 P 8 * .D »
•e<20,0

B 400.0

epao.o

8 360,0

9 340.0

O 12 <P 13 30 ^ , 1420 15 10 1600 16:50


II 1 ►H\ Hoijl ii HolaZ/T M Jj

Indicador; Fuerza Relativa.


El siguiente Indicador se llama Fuerza Relativa. Pretende reflejar ki
diferencia de comportamiento de la cotización de una empresa individual con
la evolución de un índice, y el resultado aparece en un gráfico. A partir dcl
establecimiento del valor porcentual de la variación de cada uno de los cierros
respecto al anterior {labor que se calcula para ambos objetos), se determina b
diferencia y se representa.

Como variables se emplean:


a) Parámetros.
- Códigoindice, a la que le asignamos un formato de tipo de data
String, o sea, guarda valores de cadenas o caracteres, en este caso el número
de código que tiene el Índice en el controlador intemo(vamos en principio a
referirnos al Ibex35, 010096.IBEX , pero se puede cambiar poniendo.aqui el
que corresponda).
- Fechalnicial, también con el mismo formato, con la fecha desde la
que comienzan los datos.

256

t I
ESTRATEGIAS DE INVERSIÓN CON VISUAL CIIAKT

- Período, con tipo de data numérico Double y en principio valor 15,


representando el número de barras acurriuladas sobre las que se hace el cálculo
lie una vez.
b) Otros elementos.
- FechaFinal, donde se coloca una fecha avanzada que no limite el
desarrollo dcl cálculo.
- VPlnd, que representa el valor porcentual dcl Indice en una barra
d;ida.
- VPEmp, lo mismo pero referido a la empresa.
- Indice, que representa al símbolo del índice objeto de cálculo y sus
características internas.
- X, como contador.
- TipoSimbolo, uno de los componentes dcl símbolo Indice.
- Compresión, lo mismo que el anterior.

' , i P«i: «ft)eters


Dlm C o d i g o l n d l c e As S c r l n g 0 1 0 0 9 6 . IBEX
Diip F e c h a l n l c l a l As S c c i n g 1 5/10/1990
D in P e r i o d o As D o u b le ' 1 5
'P a ra u n e te rs ' í
D in F e c h a r i n a l Aa S c r i n g
D in V P In d As Doulale
D in VPCnp As D ouble
Dlm I n d i c e As Long
D in X As D o u b le
D in T i p o S l i r b o l o As Long
D in C o t n p r e s i o n Aa Long
O ption E x p llc ic
P u b l i c APP As O scU ser App
Inplem enca I n d tc a c o r

Pasando al módulo de inicialízación, indicamos el valor de la fecha


»íinal, la información que se obtiene para la variable TipoSimbolo a partir de la
función G e t S y m b o l I n f o sobre la e m p r esa individual (unidad de c o m p r e s i ó n y
serie de datos), la información asimismo sobre la variable Compresión
también de la empresa concreta (tipo de barra de compresión y serie de datos),
y el identificador del símbolo Indice con la función GetSymbolldentifier,
donde se especifican todos sus rasgos, que son: el código del símbolo, la
unidad de compresión, el tipo de compresión - en estos dos casos los iguala
con los de la empresa- y las fechas inicial y fmal. Por último, iniciamos
StartBar en 16 porque como el periodo que va a meter en el mismo proceso de

257
FSTKA TW '.IAS l>r, 1NVF.KS1(')N CON VISUA l. C IIA R T

cálculo es los valores de 15 barras, se precisa al menos ese número de barras


para qiic se pueda operar ciícienlenienle.

r < i b l i c S'úi I n d l c « t o r _ O n I n i i C « X c u l o t e o
H l t h APP
fe c h a F in a i - "Q l/0 1 /2 0 2 0 "
Tipos inb olo ■ .GetSynibolInfo (SblCompcesion, Dato)
CoKipceaion ■ .GetSyittoolInfo(SbiBarCompre3lon, Data)
In dice ■ .G e tS y m b o ild e n tif1 e r (C o d ig o ln d ic e , Corn^resion,
TipoSitttoolo, F e c h a l n i c l a l , FechaFlnal)
.S ta rtB o c ■ 16
End ttich
End Sub

Y ya que tenemos todos estos datos perfilados y organiz


correctamente, viene el momento de crear el código que dirigirá la acción
correspondiente, y que tiene esta estructura: sentencia de asignación, bucle de
cálculo, condición y orden de establecer valor del indicador.
Partimos de una sentencia en la que las variables VPInd y VPEnip
comienzan teniendo valor O, para pasar a realizar un bucle For Next desdo O
hasta Periodo-1, que es la fórmula que se utiliza para indicar el núitiero exacto
de Periodo pues se comienza desde O para expresar la barra en curso. En este
bucle lo que se calcula es la sumatoria del valor de VPlnd con el valor
derivado de restar del cierre de la barra el d éla anterior, multiplicarlo por den
y dividirlo entre el primer cierre. Así durante las pasadas que indica c!
contador X. Se repite la misma operación con VEmp, y obtenemos en h>
variables el valor porcentual de cada uno para 15 barras.

P u b l i c Sub I n d i c a t o c _ O n C a l c u l a t e B a r ( B y V a l B a r Aa Long]
U i t h APP
V P In d
VPEmp
Foc X O To P e r i o d o - 1
VPInd V P In d + ( . C l o s e ( x , Indice) - .C lo se(x + 1, Indice))
• 100 .C ió se(X , In d ic e )
VPEmp - VPEmp + ( , G l o s e (x) - .C ióse ( X + 1)) • 100 / .Close(x)
Next X

La condición que a continuación aparece simplemente pide que tanto cl


valor porcentual del Indice como el del la empresa sean distintos de O, y eso
implicará seguidamente el establecimiento de los mismos y la representación ¿
de su diferencia en el gráfico. Añadimos además una señal O de referencia
sobre la que oscilará el indicador, representando la linea 2 del mismo
(recordemos que un indicador puede tener hasta diez líneas de datos). :j

258
t * t t ) > ‘ > > I > > > )' I » t > i \ >) \ í )

R S T R A T K O rA S D E IN V E R S IÓ N C O N V IS U A L C H A R T

- I£ VPInd <> 0 And VPEmp <> 0 Then


. S e c i n d i c a c o c v a l u e VPEtnp - .VPInd
.S e tln d ic a to r V a lu e 0, 2
End I£
End ü l t h
End Sub

Cuando insertamos el indicador en el gráfico de una empresa concreta,


debemos interpretarlo en valores por encima de O como mejor comportamiento
de los resultados de la einpresa y con valores por debajo de O mejor
comportamiento de los resultados del índice.

'llS /x /
• ACERAUA - « 4i<f H 23«g A 13,72 M i 3 ^ m U.38 C 13,40 P I5.Í4 V -CJ

12,00

‘■Si |»| 10,00

8.00

6,00

f U E R Z A R ^ C R M C L if t« J l -O.BO «-QH
.'U.UJ
-1 ^
- 20,0 0

'Oct

PR IN C IP A L E S E L E M E N T O S Q U E HAN A P A R E C ID O EN LOS
ESTUDIOS E IN D IC AD O R ES C O N FEC C IO N A D O S EN VBA Y QUE
NO HAN ESTADO PRESENTES EN LOS SIST E ^L \S

Funciones:
- GclSymbolIdentifier
- GetSymbolInfo
- Abs
SetlndicatorValue

25 9
E S T R A T K G IA S DF. IN V E R S IÓ N C O N V ISU A L C H A R T

ELEM ENTOS Y ESTUDIOS O INDICADORES DONDE APARECEN.

Función GctSvmboltdentifier. Se utiliza para obtener datos referentes a


un símbolo que no va a estar insertado en pantalla junto con la estrategia
correspondiente. Este símbolo, para constituirse en fuente de datos, tiene que
haber sido declarado como variable, y será después en OnlnitCalculate domlc
se le asignará la función. Sus parámetros son : el código del simbolo, la unidad
de compresión y las fechas inicial y fina!.
Indicador Fuerza Relativa

Función GetSvmbolInfo. Se emplea para proporcionar información


concreta sobre algún parámetro interno de un símbolo
Indicador Fuerza Relativa

Función Abs. Es una de las funciones matemáticas disponible solo en


VBA, y retoma el valor absoluto de un número, sin tener en cuenta los signos
negativos
Indicador Doble Suelo ,

Función SetíndicatorValue. Se utiliza para establecer el valor de un


indicador en una barra concreta y el número de línea de datos que deseamos se
le de.
Indicador Doble Suelo
Indicador Fuerza Relativa
Indicador Pantalla

CUESTIONARIO.
Si después de este paseo por VBA has obtenido un buen
aprovechamiento, no tendrás ningún problema en contestar correctamcnie
cslas preguntas sobre diseño de sistemas. De todas maneras, cada vez que
releas todo lo anterior cada vez comprenderá mejor todo lo relacionado con la
elaboración de códigos en csla Plataforma.

260
ESTRATEGIAS DE INVERSIÓN CON VISUAL CHART

Ejercicio if Aquí hay un error al declarar las variables. ¿Cuál es?.

■i i P a ra in e te ts
C e c H i g h e s t D s t t t c P r t c e As P e l e e ’ P r i c e H j . g h
G e c H i g h e s t D a t o L e n o t h As L o n g ' 10
C e t L o w e s c D a t a t P r l c e As P r l c e ' P r i c e L o w
G e t L o w e a t D o t a L e n g t h As L o n g '10
B a n d a s As D o u b l e ’ D o u b l e
B a n d a l As D o u b l e ' D o u b l e
' P a t a m e t e r a !!
O p tio n E x p iig ic
P u b l i c APP As S y s U s e r A p p
Im p lem e n ts S y stem

Ejcrcicio 2| ¿Cuáles son los módulos del entorno VBA en que


podemos actuar como usuarios cuando diseñamos una estrategia?

ü OnCalculateRange
Q OnlnitCalculate
L1 Paramcters/Option Explicit
G OnCalculateBar
Q OnSetParamcters
Q OnConnection

Ejercicio 3| ¿Cuál de estas palabras no designa un tipo de Data en


VBA?
- Boolean
- Ititcgcr
- Static
- Long
- Decimal.

Ejercicio 4] Une las expresiones que signifiquen lo mismo:

PDV VBA

Orden Limitada AtMarket


Orden de Mercado AtStop
Orden al Cierre AtClosc
Orden en Stop AtLimit

261
i V k ^ \ ^ \ \ * ' ' ' ' * '

K S I R A TK U IA S O l i IN V F .R S lrtN C O N V ISU A L C H A R T

Ejercicio 5| La función que conocíamos en PDV como Barra Inicio,


con cuál se corresponde en VBA?:
.Buy
.Stnrtííar
.Opcn.

lEjercicio ^ Explica el signiñcado de ésta condición doble:

I f . G etln d ic a to r V a lu e (A v E x p o n en tia llD a ta ) >


- G e t l n d i c a t o c V a l u e ( A v E x p o n e n c i a l D a c a ) And
. G e t I n d i c a t o r V a l u e ( A v E x p o n e n t i a l l D a t a , 1, 1) • <
. G e t l n d í c a c o r V a l u e ( A v E xp o n e n tia lD a ca,^ 1 , 1)

E jc r c ic ío ^ ¿Que cicm enlo falta en esta rutina del código para que
dentro de la granuítica de Visual Híisic sea correclii?
lf.Closc>.M igIi(l)Tlien
.BuyAtClose, I.

Ejercicio §j ¿Qué diferencia hay entre las funciones .GetSwingHigh y


■GetSwingHighBar?. - %

lE jercicio^ ¿De qué color se ha dibujado esta barra a partir de esta


orden de pintar en un estudio?

.PaintBar .Open, .High, .Low, .Cióse, RGB (255,0,0)-

Ejercicio 10| ¿Qué significan O, 1 y -1 en esta estructura?.

Select Case LargoCorto


Case O
OpcrarLargoCorto
Case 1
Operar Largo
Case -1
Operar Corto
End Select

262
__________ RSTRATFOIAS HE INVERSIÓN CON VISUAL CIIART

Ejercicio TTj Explica el significado de esta rutina en un sistema


inlradiario.

If . D a t e > . D a t e ( l ) Then
H iC ie c r e - .T iro e(l)
End I I

I f F i n D i a ■ 1 And .T ím e ■ H í C l e r c e Then
.E x ltL o n g A cC lose, 1
.E x itS h o r t A tC lo se, 1
End I f

lE jcrcicio Í2| ¿Qué dem ento falta en esta rutina de estructura de


bucle? ¿Que ocurre en su funcionamiento (al como está?.

C o n t r o l “ Tcue
For X - O To N A lz a
I f . C i ó s e ( X ) < . H i g h ( X + 1) Then
C ontrol - F a lse
End I f
i ' ~ ..... n
I f C o n t r o l ■ T ruc Then
•Buy A t C l o a e , 1
End I f

lEjercIcio T3| ¿Se pueden declarar las variables en el primer módulo


de la programación en VBA por debajo de la expresión Option Explicit?¿Para
qtié sirve la expresión?.

Ejercicio 14| ¿Qué diferencia iiay entre estas tres formas de declarar
variables?

[Pim SCompra, SVenca, HediaRaplda, HediaLenta As Double TQu b l g |

Dim SCompra Aa D o u b le 'Doi,ible


Dlm S V e n t a As D o u b le ' D o u b l e
D in K e d la R a p l d a As D o u b l e ' D o u b l e
Dim H e d l a L e n t a As D o u b le ' D o u b l e

263
E S T R A T E G IA S D E IN V E R S IÓ N C O N V ISU A L C H A R T

Dim SCompca As Double, SVenca As Double, HediaRapida As Double<


üe d ia L e n ta As Couble 'Double

Ejercicio ¿Qué diferencia de operativa tienen en Visual Chart estos


dos tipos de órdenes?
.Buy AtClose
■Buy A tM arket.

Ejercicio Tq ¿Qué función utilizarías para obtener el número de barras


transcurridas desde que comenzó el negocio?.

Ejercicio ¿Cuál de estas variables es un array?


Dim Z as Double
Dim RDBarUp ( ) as Double
Dim Color as String,

¡Ejercicio Explica el significado de esta instrucción:

.PaintBar .Open, .High, .Low, .Cióse, RGB (0,0,255), O, 1, 0.

Ejercicio 19| Aquí tienes el código de una estrategia en VBA. ¿Es un


indicador, un sistema o un estudio?

' , 1 Po ra n v et er s
' Pacaiiiecers ' '
P u b l i c APP i 9 DtHUserJLpi)
Implem»nts Study
P u b l i c Sub Scudy O n l n l t C o l c u l a c e ()
V i t h APP
.S cac tfiar • 0
En-a « i t h
End Sub
P u b l i c Sub S t u d y _ O n C a l c u l a t e B a r ( B y V a l Bac Áa Long)
V i t h APP *
l í . C l o a e > - .Open Then
. P a i n t B a c .Op en, . H l g h , .Lou< .Cl09e< RCB(0, Q, 255), 0< 1, 0
Else
. P a in tB a r .OpeO/ .High, .Lüw, .Ció se , RGB(2SS, 0, 0 ) , 0, 1, 0
£nd l£
End Uich
End Sub

264
ESTRATEGIAS DE ÍNVERSIÓN CON VtSUAL CHART

Ejercicio 2Ó| ¿Qué opciones del menú Debug se emplean para compilar
el proyecto?.

Ejercicio 21[ ¿Para qué utilizamos la función SetlndicatorValue en


este indicador?

I f VPIn d o o And VPEmp <> O Then


. S e t l n d l c a t o c V a l u e VPEmp - VPInd
. S e c I n d l c a t ^ o r V a l u e O, 2
End I I

RESPUESTAS AL CU ESTIO N A RIO

Respuesta 1

No se ha utilizado la expresión Dim para declarar las variables, y esto es


imprescindible.

Respuesta 2.

Q OnCalculateRange
H QnInitCalcuUte
B Parametcrs/Option Expücit
H OnCalculateBar
□ OnSctparameters
□ OnConnectton

[Respuesta 3
Static no es un tipo de data. Las variables pueden ser declaradas en uno
^ de los siguientes tipos de data: boolean, byte, intcgcr, long, currency, singlo,
double, date, string, object o variant.

Respuesta 4

Orden Limitada Atl^íarket


Orden de Mercad AtStop
Orden at Cierre AtClose
Orden en Stop AtLimit

265

i ' ¡ i ■ i
t t ) \ t

F S T R A r iX . lA S HF. (N V 'E R S iO N C O N VISlf/M . C H A R T

R esp u esta^
La función correspondiente en VBA a la de Barra Inicio de PDV es
.StartBar.
iRcspiicsía q
Es una condición que quiere expresar la restricción del moinento en
que se ha producido el cruce de las medias indicadas y solo ese momcnlo. l’ar.i
ello se utiliza esta fórmula que viene a señalar primero que en la barra actual
una media está por encima de la otra, y segundo, que en Ja barra anterior lj
situación era la contraria. En la primera parte, los valores de los indicadores
no especifican el momento temporal, y por defecto eso representa la baria
actual del cálculo, mientras que los números 1,1 se rencrcn a la barra 1 que ts
la anterior a la actual, y a la linea 1 del indicador.

R esp u esta^
Falta cerrar la rutina con la expresión End If.

¡R espuesta^
GetSwingHigh es una función que busca un pívot representativo en un
periodo dado con las características de tener igual número de barriis
delim itadoras a ambos lados, y devuelve e ltv a lo r de ese pí\ot.
GetSvvingHigliBar devuelve el número de barras hacia atrás en que se ha
encontrado el pivot.
R esp u esta^
De color rojo.
Respuesta 10
Es una estructura de organización central de las diversas rutinas y
procedimientos. Al insertar el sistema, se pide un número para la opción
LargoCorto, que ha sido declarada como variable parámetro, y según el
número que se ponga se bifurcará el cálculo a unos procesos o a otros. En este
caso O sería operar a largo y a corto, 1 sería operar solo a largo, y -1 operar
solo a corto.
Respuesta II
Previamente se ha declarado como parámetro la variable FinDia, la
cual si se le asigna un I quiere decir que la intención es cerrar los negocios al
fin de la sesión del día y no dejar ninguno abierto. También hay una variable

266
^ \ \ \

E S T R A T E C .fA S D E IN V K R S írtN C O N V IS U A L C H A R T

llamada MiCierre, Después de este preámbulo, diremos que’la rutina viene a


rcllcjar en primer lugar que si el valor de Dale o sea de la fecha que aparece en
cada barra, en este caso referido a la actual, es mayor que la fecha de la barra
anterior, y eso solo se dará en la primera barra de la sesión, que es donde
cambia ia fecha, pues en todas las demás sigue poniendo igual fecha, entonces
la variable MiCierre recogerá el valor del campo Time (Tiempo), o sea, la
hora, de ia barra anterior, por tanto 1730 en el fonnato que se presenta. Así
llegamos al final a que cuando coincide que la variable parámetro FinDIa fue
dimensionada con un 1 y además el valor de MiCierre (recordemos, 1730)
coincide con el valor de la hora de la barra,(lo que sucederá en la última del
día), se da orden de cerrar todos los negocios abiertos, sean compras o sean
ventas.
¡Respuesta 12
Falta este elemento indispensable en la sintaxis de un bucle, donde se
comienza con un Por y se acaba con un Next: Next X. Si omitimos esc
termino, el cálculo no prosigue, el proceso queda estancado, pues no damos la
(trdcn de aumentar el contador.
Respuesta 13j
Sí, siempre que nos movamos dentro del prim er módulo. Option
Explicit obliga a declarar las variable de forma explícita, pero puedes hacerlo
por encima o por debajo. Lo que sucede es que visualmentc está más claro de
la primera forma, que es la que verás en todos los sistemas del libro. Todas las
variables son en principio declaradas explícitamente como de tipo Variant,
' 1¡ Paranececs ' 1 1 rarai«.«ters
, D l n N l l s a As D ou ble ‘ 3 Dlm MAlza As D ou b le '3
Ditn NBajat As D ou ble '2 Dlni NBaJa As D o u bl e '2
' P a r a n e t e E S (' ' PorameCíCJ ' '
Pitn C o n t r o l As B o o le a n Option E x p l i c i t
Dlm C o n t r o l e As B o o le a n Dim C o n e c o l As B o o l e a n
Vita X As D ou b le Din C o n t r o l s As B o o le a n
Option C x p llc lc Din X As Do uble
P u b l i c APP As SysUserApp P u b l i c APP As SysUsecApp
Znplein en ta S v s t e n I m p l e m e n ts S y st e m

pero consumen de esta manera más recursos de memoria que si lo haces


asignándole un tipo propio específico. Por tanto, al obligar Option Explicit a
hacer esta labor, se reducen los problemas de conflictos de nombres o de
errores por mezclas de letras.

Respuesta 14¡
En el primer procedimiento se han declarado independientemente las
variables con un data de tipo numérico Double. En el segundo procedimiento.

L 267
K S T K A T K G IA S U K IN V E R S IÓ N C O N V ISU A L C U A K T

las tres primeras variables de la fila son declaradas como tipo Variant (cl que
utili/a por dereclo) al omitir a continuación de cada una cl tipo concreto,
mientras que la última si ha sido declarada como Double. En el últijno
procedimiento, los efectos son los mismos que en cl primero, todas se dcclar;in
dcl tipo Double.
Respuesta 15
En .Buy AtClose se ejecuta la orden en la misma barra si h \
condiciones requeridas se cumplen, mientras que en .Buy AtMarkct en las
mismas circunstancias siempre se ejecuta en la apertura de la barra siguiente.
Respuesta
La función que se utiliza para ello es .GetBarsSinceEntry.
[Respuesta 17
La variable que lleva un paréntesis.
Respuesta 18
Da orden de colorear una barra en los distintos campos de la niisiiu
con la paleta de colores RGB en la proporción (0,0,255), o sea, a/til.
representando a la linea O, con un ancho de valor 1 y en la barra O, o sea Ij
actual.

Respuesta
Es un estudio, lo que podemos apreciar en distintas expresiones que
emplean ese término, como Implements Study, o Public Sub Study, Public
APP as DrwUserApp.
Respuesta 20
Son las opciones Publish, que empleas directamente para compilar, y
Compile, que utilizas cuando la anterior te proporciona mensaje de error, para
que informe dcl mismo y señale dónde se encuentra.
Respuesta 21
Para establecer el valor de dos lincas dcl indicador: la primera refleja li
diferencia entre dos variables y así se irá señalando a lo largo de un periodo
determinado, y la segunda establece el valor de una banda O alrededor de U
cual se moverá como oscilador la linca 1

268
B S T fW ECHAS [)!■: INVERSIÓN CDN VISUAL CIIART

GLOSARIO DE TERMINOS

Acc¿o*te^ Títulos que representan una parte proporcional dcl capital


social de una empresa. Su adquisición conlleva por un lado ser partícipe de la
sociedad correspondiente, y también poder recibir una cantidad de dinero
proveniente del beneficio posible que pueda tener la empresa en su actl\ idad
(si la Junta general lo ha decidido asi), y que son los dividendos, cuya
rentabilidad es estimada por muchos inversores al proceder a su compra.
Es un activo que sirv'e de referencia o en función
lie cuyas características se define y se sigue la contratación de determinados
productos, como los derivados.
/¡Híiíettdenoia (S iU e m a ). Un sistema automático de antitendencia,
grosso modo, es aquel que tiene en su idea motriz la actuación de sus
operaciones en sentido contrario al desarrollo que la cotización va llevando,
(ieneralmente se asocia con temas como bandas de fluctuación, rebotes en
resistencias y soportes, etc.
Afud(utccuH¿e*íÍa. Consiste en un procedimiento de participación en el
mercado en.el que no es necesario utilizar para tomar una posición el depositar
el importe completo del costo de la operación, sino solo una parte del mismo.
May apalancamiento en las operaciones a crédito, en los contratos de opciones
y futuros, etc.
Holia. Institución de los sistemas financieros, que se constituye en un
mercado especializado donde se intercambian activos y valores de variado
orden; acciones, títulos de renta fija, obligaciones, opciones, futuros, etc.
La primera Bolsa surgió en el siglo XV, concretamente en 1460 en
Amberes. En España hubo que esperar a 1831, cuando se abrió la de Madrid.
Actualmente hay en nuestro pa ís cuatro B o l s a s , que s o n las de Madrid,
Barcelona, Valencia y Bilbao, las c u a ic s se cncueiiiraii inierconccíadas desde
1995 por una plataforma técnica de contratación electrónica llamada S.I.B.E.,
donde se negocian casi todas las acciones del mercado, y a cuyo ordenador
central se dirigen todas las órdenes desde los intermediarios. Es lo que

269
t i I \ t » \ I I \ I k t t t t , t

F.ST K A T K C ÍA S niC IN V K R S iO N C O N V !S U A t. CM AKT

coiuKcnios como Mcrcado continuo. La contratación en el mismo tiene lugar


entre las 9:00 y la 17:30 horas, con un periinlo de ajuste inicial entre las S:d()y
las 9:00.
Son contratos a plazo de compra-venta, negociados en un
mercado bursátil organizado llamado de productos derivados, y que obligan a
compradores y vendedores. El objeto del contrato es un activo, un valor, un
índice, etc. que se constituye así en Subyacente de la operación. Por ejemplo,
en España es el Ibex 35, del que hablaremos a continuación. La cotización de
los contratos va en estrecha relación con el Subyacente y se negocia entre los
plazos establecidos, puesto que hay un compromiso de compra o de venta en
una fecha futura de vencimiento, en la que obligatoriamente se ejecuta a un
precio fijado la operación acordada. Al negociarse diariamente, se puede cerrjr
en cualquier momento del periodo el contrato suscrito con una operación lio
signo contrario. Por ejemplo, hemos comprado un contrato del subyacenlc
Ibex .^5 y no qcteremos mantener el compromiso hasta la fecha final, fín to iic e s
vendemos un contrato y si hay contrapartida, queda cancelado, con c!
beneficio o pérdiila que se derive de la diferencia del precio de cotización
Para este tipo de actuación hay que aportar unas garantías económicas.
También en acciones se puede trabajar con futuros, aunque en esto>
momentos la operativa en la bolsa española está reducida a las empresas
BBVA, BSCH, Endosa, Repsol y Telefónica, siendo las unidades negociadas
un contrato que representa unas 100 acciones.
¡Indice huMÓiil. Cálculo que refleja la evolución temporal de los
precios de un mercado a partir del estudio estadístico del comportamiento ¿c
una selección de títulos representativos que en el cotizan.
Entre los índices bursátiles más conocidos cabe citar:
- IBEX 35 en España. También el IGBM (Indice General de la Bolsa
de Madrid)
El Ibex 35 es un índice selectivo, como lo son todos los Indices
bursátiles, ponderado por capitalización, y que mide la evolución de 35 valorci
del mercado continuo de la Bolsa Española caracterizados por su mayor
liquidez. Es la referencia o subyacente en el que se basan los contratos de
opciones y futuros.

270
'l ) ) t ^ )

líS T K A T F .G IA S D E I N V E R S I Ó N C O N V IS U A L C IIA R T

En cl momento de redactar estas líneas, está compuesto por las


siguientes empresas;

ACCIONA ACERALIA ACERINOX ACESA


ACS ALTADIS AMADEU3 BANKJNTER
BBVA BANCO POPULAR B3CH CARREFOUR
CO RPFA LBA EHDESA FCC GAMESA
GAS NATURAL G PICKINGPACK 0 DRAGADOS G, FERROVIAL
IBERDROLA INDRA NH HOTELES PRISA
RED ELECTRICA REP30L. SOGECABLE SOLMELIA
TELEFONICA TELEF MOVILES TELEPIZZA . TERRA NETW^.
TPI UNION PENOSA ZELTIA

- DOW JONES , S&P 500 en EEUU.


-N lK K C Ien Japón.
- CAC 40 (Compagnie des Agents de Change) en Francia.
- DAX 30 (Deutsche Aktien Index) XETRA en Alemania.
- FTSE 100 (Financial Times Stock Exehange) en Inglaterra.
- EURO STOXX 50, índice selectivo de las 50 sociedades con mayor
ponderación de las'distintas Bolsas europeas.
- MIB 30 en Italia.
- AEX (Amsterdam Exehange Index) en Holanda.
- SMI (Swiss Market Index) en Suiza.

9*tÍe^uHed¿a/Ua¿^ Representan la conexión o enlace entre las posiciones


de los distintos inversores y la contratación en la Bolsa, y esta labor de
mediación la realizan las Sociedades de Valores (pueden actuar no solo por
cuenta de los demás, sino también para ellas mismas) y las Agencias de
Valores (solo por cuenta ajena).
Sociedad que gestiona operaciones sobre productos
derivados, como opciones y futuros. En ella se encuentran agrupadas tanto
MEFF RV (M eff Renta Variable), con sede en Madrid y que se ocupa de
opciones y futuros sobre índices y acciones, como MEFF RF (M eff Renta
Fija), con sede en Barcelona y que se ocupa de opciones y futuros sobre
activos de renta fija o tipos de interés.

L 271
ESTRA T EC JIA S DF. IN V E R S IÓ N C O N V ISU A L C H A R T

M ercada P'Uma/U(^ ÍIs aquel en el que las operaciones de tonvi de


acciones o de obligaciones se lleva a cabo entre la empresa que los emite y el
inversor que los adquiere, pero no en la negociación enlrc inversores.
M^^cado■ SecuH-da^M.'Mw este mercado ya sí se lleva a cabo la
negociación de los tituios antes emitidos y adquiridos, pero entre accionistas
directamente y ya regulados en el precio por la influencia de la oferta y b
demanda. En España están reconocidos: el mercado de la Bolsa de Valores ■
acciones, renta fija- organizado por las Sociedades Rectoras de Madrid.
Barcelona, Bilbao y Valencia; el mercado de Productos Derivados -futuros y
opciones- organizado por la Sociedad MEFF; y el mercado de Deuda Pública
Anotada -bonos, letras dcl tesoro- organizado por el Banco de España.
Ófiencc¿04ie4. acA<éd¿Ía (co*ftpAa ^ ueata). Existe esta modalidad
operativa en nuestra Bolsa a través de mediadores que trabajen con Banco\al,
banco especializado que realiza el préstamo necesario para poder actuar. Se
puede de esta manera comprar o vender acciones de valores del Ibex 35 con
una inmovilización pequeña de nuestro capital, puesto que solo hay que
desembolsar como garantía un 35% de total de la operación, mientras que la
inversión se realiza con el triple de dinero. Hay un tratamiento diferenciado
para las compras y las ventas.
Compras. Bancoval hace un préstamo real de dinero por el 65% de la
operación, por el que cobra unos intereses. Eí 35% restante se deja en depóSiio
como garantía, y si la cotización va en contra de la posición adoptada en más
de un 10%, se piden garantías adicionales. El plazo para la cancelación en un
vencimiento inicial varía según se realice la operación en la primera quincena
dcl mes o en la segunda quincena, siendo en el primer caso final de esc mes. y
en el segundo final del mes siguiente, pudiéndose prorrogar por dos veces.
Ventas. En este caso no hay préstamo de dinero, sino de valores, de
títulos. Depende de la existencia de la cantidad que se solicite de los mismos y
también se pone un 35% como garantía, aunque en este caso se la retribuye, si
bien con un interés pequeño. Los plazos son iguales que en el caso anterior, y
también se piden garantías complementarias si la cotización evoluciona en
más de un 10% en contra de la posición.
En uno y otro caso, se termina liquidando el negocio por realización de
una operación de signo contrario, tras lo cual se procede a cuantifícar los
beneficios o pérdidas experimentados, se devuelve la garantía y se aplican lu
comisiones y los intereses.

272
ESTKATKCilAS DE INVKKSÍÓN CON VISUAL Cf ÍAKT

Ofia^aiiua i*t¿tad¿aA¿a, Hacc rcfcrcncia este termino a los negocios


que se abren y cierran dentro de una misma sesión, compras y ventas a lo largo
liel periodo que se refleja en el gráfico con barras de 5 minutos, 15 minutos,
10 mimitos, ctc., siempre con temporalidad que representa situaciones dentro
lie un dia concreto.
O pciones Ai igual que los futuros, son contratos u operaciones a plazo
que se negocian en el mercado de productos derivados, pero que a diferencia
de los primeros, no obligan a comprador y vendedor, sino que solo otorga el
derecho de com prar o vender un determ inado activo en una fecha de
vencimiento futura y con un precio que ya se ha establecido anteriormente,
l-xistcn dos tipos de opciones: las de compra, llamadas calis y las de venta,
llaiiiadas puts.
d)fd¿m4fGcih*t. Proceso de análisis de determinados parámetros que
permite conocer cuáles son los que dan mejores resultados en un periodo de
tiempo determinado de cara a una estrategia concreta.
P¿ué4tíUta. Es la idea motora de los inversores, pues es el beneficio o
rentabilidad que se obtiene en una operación.
Po¿¿c¿6*t aíUe/Ua. Se habla de posición abierta cuando el negocio en
activo aún no se há cerrado, o cuando en futuros y en opciones aún no ha
llegado la fecha de vencimiento.
PoUc4Ó*i a ía A ^ . Esta expresión hace referencia a la que se deriva de
una compra.
; Po¿ic4¿*i a Esta expresión hace referencia a la que se deriva de
^ una venta.
^ ¡levita ^¿ja. Se adquieren unos titulos que suponen prestamos a
I empresas y organismos públicos, incluido el mismo Estado, a cambio de unos
I iniereses en un determinado tramo temporal. Por tanto, el interés que se
\ obtiene es fijo, preestablecido, de ah i el nombre de este conccpto.
Al contrario que los títulos del apartado anterior, en
este caso la retribución que se pueda obtener por su adquisición depende de
Ví factores variables, como la que se deriva del juego de la oferta y la demanda
« en un mercado organizado, o también de la posibilidad de que si la empresa en
M. cuestión ha conseguido beneficios y decide repartirlos entre sus accionistas, se
pueda alcanzar vía dividendos.

273

^ i
t I k « I >

i-:si t c \i ( : ( ; iA s n iv i n v I'.Iv' s i ú n i ' d n v i s u a l c ' i i a n t

(le.i¿ite*ic¿cí. ZtMia de precios en un grállco donde existe m;iyor


concentración de oí'erla que de demanda y estabiliza tciuporaliJíenlc h
tendencia alcista de la cur\a de cotización.
Indicación de que ha habido un moviniienlo coíi
aceleración en la subida de precios, estinuindose probable en esos niveles un.i
reacción de signo contrario.
Bo¿^eoñ*Ua. Indicación de que ha habido un movimiento con
acelcracióii en la bajada de precios, estimándose probable en esos niveles uiu
leacción de signo contrario.
S<^pMÍc. Zona de precios en un grállco en la que hay una tuavi'r
concentración de demanda que de olería y eslabili/a Icmporalinenie l.i
tendencia bajista de la cur\a de la coti/ación.

SpiU . Se habla de Split cuando una empresa aumenta su número tU-


acciones pero no hay un auíiieiito paralelo en el capital social de la misma. Asi
que caila acción se subdivide en un número determinado cuyo precio es nl;l^
pequeño.
Siop^. Precios limite señalailos para entrar en un ne¿:t>eio o salir de el

*7c*tdc*tc¿a (S¿iie4na.y Sistema automático que basa sus eslraletíiü^


en oper.iciones que van en consonancia con la linea princí(íal que sigue b
coti/ación o precio de los \ alores, por tanto compra cuando hay ima tendcnci.i
alcista o \ ende cuando hay una tendencia bajista.
V aia iiü d a A . Este termino hace referencia a las fluctuaciones u
oscilaciones que los precias presentan, a la mayor o menor rapidez con que \ j
cambiando y en suma, el carácter del mercado, más tranquilo o más nervioso

L 274
<. < , i , 1 i i ^ i i i í ) ( ^ í i ^ ' )

i'; s T iM T K ( ;iA s n r . i n v k r s i ó n c o n v i s u a l c h a r t

ANEXO I.

UN MODELO DE PROTOCOLO
DE EVALUACIÓN DE SISTEMAS

275
' i
ESI KATEGIAS DE tNVERSiON CON VISUAL CMART

En este apartado se da a conocer de forma práctica un protocolo de


evaluación de sistemas donde se reflejan algunos aspectos de la metodología
que utiliza un grupo de gestores de capital e inversión para que se pueda
apreciar cómo desde bases profesionales no se elige ninguno de estos temas
con ligereza sino ponderando muy bien las posibilidades. Se empica para ello
la ayuda del programa Visual Chart. Por su sencillez y claridad puede ser
usado fácilmente por el lector que así lo desee o utilizar alguna de sus ideas.
En general encontramos dos tipos de protocolo diferentes: uno es el
referido a sistemas para .actuación en barras de registro de datos con
temporalidad intradiaria (aquí se enmarcan los Futuros) y otro es referido a
temporalidad diaria o superior (aquí se enmarcan las acciones).

PROTOCOLO DE E V A LU A C IÓ N D E S IS T E M A S C 0 \ ’ A P L IC A C IÓ S
¡STRAD IARIA.
Fase J. Selección de Sis lentas.
- Elección del tipo de barra tem poral de registro de datos.
OPTIMIZADOR DE VISUAL CHART.
- Aplicación de un Test de Evaluación. OPTIMIZADOR DE VISUAL
CHART.
- Anotación de datos y Puntuación. HOJAS DE CÁLCULO
INTI-RCONIZCTA[)AS.
Fase 2. Selección Je variables.
- Localización de zonas óptimas. OPTIM IZADOR DE VISUAL
CHART.
- Datos Estadísticos. HOJAS DE CÁLCULO.
- Evaluación y Puntuación. HOJAS DE CÁLCULO

PROTOCOLO D E E V A LU A C IÓ N D E S IS T E M A S C O .\ A P L IC A C IÓ .\
PIARIA O DE TIEMPO MA YOR,
Fase /. Selección de Sistemas.
- Aplicación de un Test de Evaluación. OPTIMIZADOR DE VISUAL
CHART.
- A notación de datos y Puntuación. HOJAS DE CÁLCULO
INTERCONECTADAS

277

\ » t í i . ♦. i . I . <- i ■ i i ^ i ¡ ■ i í i í i í *
I ' f f ( ( f i ( i i ^ 1 t ( f i f ^ f ^ • * * * ^

___________________________ r .s T K .M 'i x ii A s ni-: in v ic k s iO n c o n v is u a l c i i a k t ______________

EVAI.UACIÓN DE SISTKMAS CON APLICACIÓN INTRADIAHIA

[í-'asc I. Sclcccióii de Sistemas


El primer paso consiste en decidir el tipo de barra con e! que se va a
trabajar, porque aquí se está hablando do un histórico amplio y íuleniás
intradiario. Este modelo va referido al futuro del Ibex 35 y se puede aplicar a
mercados y valores similares. Estamos liablando de un histórico concreto. Ibc.\
35 desde 1993 Iiasta 2000 como objeto de estudio. Por tanto se comicn/a por
evaluar el tipo de tiempo de la barra que registra los datos intradiarios. Se
toman como parámetros los periodos típicos que engloban normalmente todo
el campo de utilización, por ejemplo, 5 minutos, 15 minutos, 30, 60, 90 y 120,
Con ellos se va a hacer un proceso de mejoramiento sobre un primer canípo
acotado, el que va de 1998 a 2000. Esto está diseñado de esta forma porque
son tres años en que se producen diferentes temas estructurales: el 9X
representa una “textura” claramente direccional, el 99 todo lo contrario y el
2000 intermedio, con lo que hay un campo variado y rico en matices.
Se pasa al optimizador en Visual Chart y se establece un número
detemiinado de pasadas de búsqueda de combinaciones (variable por el tiempo
que se necesita, por la cantidad de precisión que se requiera, etc.) que al menos
debería ser entre 50 y 200. Se hace el análisis, anotando los resultados de
ganancias y series de pé'rdidas de cada tipo de barra y se selecciona el más
adecuado. »
El sigil ieme paso es aplicar, con el tipo de barra elegido y con las
diversas variables que intervengan en la estrategia, un Test especifico en el
que se hará una prueba interna u Optimización, y una prueba externa. Se
obtendrá una puntuación a partir clel mismo que llevará a una clasificación de
los sistemas. Este Test optimiza teniendo en cuenta los últimos años de la base
de datos del histórico y lleva a cabo dos tipos de prueba: Interna y Externa.
a) PRUEBA INTERNA.
Con ella se optimiza plenamente el bloque que va del año 1998 al
2000, los tres últimos años, y se pretende obtener el resultado de la máxima
ganancia y la serie de perdidas que se producen en esc periodo, con el objetivo
de reflejar el potencial máximo que tiene el sistema. Hay sistemas cuyo
potencial de acumulación ya de entrada no da de si lo necesario, con lo que se
establece una diferenciación. Eso es lo primero que se va buscando.
La optimización se hace con la técnica de realizar acotaciones
sucesivas, siempre por algoritmos gcíiéticos, salvo que los casos sean
pequeños, y entonces se podría hacer por búsqueda lineal, que sería lo ideal.

278
( i , , , / é f i f f << f ' '

__________________________ R ST k A T I- X llA S D R IN V R H S IÓ N C'f)N V I S I ÍA L C H A K T __________________________

pero lo normal es que haya miles, a veces millones de posibles iteraciones o


conibinacioncs en cuanlo se hable de varios parámetros c incluso según el
campo de actuación en cada uno de ellos. Por tanto, hay que recurrir a algún
principio de selección, y ese es el sentido de las acotaciones.
La primera se lleva a cabo tomando el ámbito de máximos que tiene
cada uno de los parámetros y estableciendo un espacio de mo\ imiento lo más
amplio posible. Se deja correr la actuación del algoritmo un número
suficientemente alto de veces, y cuando llega a fin, se escogen los diez
primeros resultados, haciendo un primer apartado. Pongamos un caso práctico.
Se trata de medias móviles, le hemos indicado que busque los mejores
resultados con las medias entre 5 y 150. Cuando el programa hace 200 bucles
de búsqueda, aparecen unos resultados. De los 10 mejores que aparecen,
miramos cuál es el que tiene un número de media menor -30-, y miramos el
m ayor-120-.
Entonces se aborda una segunda optimización con el espectro que va
de 30 hasta 120 y se descartan los demás periodos. Con cada parámetro se
acotan y se va seleccionando. Imaginemos que ahora los mejores resultados
están entre 40 y 80. Se toma esa zona y con ellos se lleva a cabo la tercera
acotación, tras la que se quedará seleccionado un juego de valores del
parámetro por ejemplo, entre 50 y 70.
Esta zona será en principio la elegida, y dentro de ella hay diversos
valores.
Así, se ha ido descendiendo desde lo más general hasta ima cierta
individualización. Cuando termina la optimización, estos resultados sirven
para anotai; la ganancia máxima y serie de pérdidas, de donde se deriva el
potencial, que es la ganancia máxima partida por serie de perdidas. Los datos
que aqui se aportan siempre hacen referencia a anualidades, son datos
ainializados. Nunca hablamos de sumatoria de datos, eso será después en otro
análisis. Lo que aquí se habla es de individualizar anualmente los periodos.
h) PRUEBA EXTERNA.
Se toman los años 1996 y 1997 y se optimiza por los mismos criterios
de las tres aproximaciones; se hace lo mismo con los años 97 y 98 , volviendo
a anotar los parámetros de la mejor optimización, y con los años 98 y 99. Con
los parámetros obtenidos de los años 96 y ^)7 se ven las ganancias ijue se
obtendrían aplicándolos en el año 98, y además de las ganancias, serie de
pérdidas y potencial, se anotan otros datos estadísticos básicos, como son la
1'labilidad, el PRK (relación entre el número de negocios positivos y sus
ganancias medias con el número de negocios negativos y su perdida media),

279
V EST R A T K C ’. IA S Ü E IN V K K S IÓ N C O N V ISU A L C IIA K T

iiuiicc pi>si(ivos-nc¿iativos (cocicnlc ciilrc la ganancia media de los negocio»


positivos y la perdida media de los negativos), y el número de negocios
anualizndos. Esta aplicación en el año 98 se hace por tanto a la ciega con la
optiniizaeion del 96 y 97. Con ia optimización del 97 y 98 vemos el ano 99, y
con la del 98-99 vemos el año 2000. Por tanto liemos vuelto a ver estos tres
años pero en prueba externa ya, con su correspondiente optimización, y
además tenemos estos tres at'ios optimizados por completo. Estos datos nos
sirv en para obtener lo que llamamos el índice de acople. El Indice de acople es
el cociente entre la ganancia de optimización del año 98 al 2000, y lo que seria
la ganancia de prueba externa del 98 al 2000. Por ejemplo, si la ganancia
anualizada es del 50%, pero en prueba externa obtiene un 15%, se aprecia una
diferencia entre un buen resultado y un mal resultado. La fórmula no es el
simple cociente, es el porcentaje de diferencia que hay, seria 50 - 15 * 100 /50,
saidria 70%. Si te dice 70%, te está indicando que el sistema se acopla en un
70%. Por tanto, de lo que te diga una optimización solo te puedes creer un
30%. El resto es acople y tendrías que descartarlo. Éste es un tema esencial,
que se ignora, y no se tiene en cuenta.
El tercer paso es en consecuencia, la anotación de datos tras las pruebas
realizadas. Al terminar con el Test hemos evaluado el potencial que da de ia
prueba interna, la estadística, los resultados en prueba externa y el acople y
con estos datos se otorga una puntuación con la que ya se puede realizar una
comparativa de la calidad de los sistemas. *
La puntuación proviene de unos criterios reflejados en una Hoja de
cálculo de referencia, a la que están conectadas las de cada sistema. Al ir
colocando en estas lo obtenido por cada uno en los distintos conceptos,
autom áticam ente se genera la puntuación, siguiendo una ponderación
predeterminada.
Uiía vez heclio el proceso, aportan sus datos a una hoja de resumen en
la tiue queda un panel de resultados. Si se necesita cambiar el criterio de
valoración de los sistemas, solo canibiando en la hoja de referencia los
criterios, ya repercute en lo demús. Todo queda asi interconectado de forma
eficaz y operativa.
HOJA Í)E REFERENCIA.
Hay cuatro cuadros, uno para cada concepto:
- Optimización/Prueba interna. Va buscando el potencial máxim
sistema. Un buen sistema debe generar recursos suficientes para obtener altos
rendimientos.

280
ICSTIMTWÍIAS Drí INVKKSIÓN CON VISUAI- CHAKT

- Prueba externa. Indica !a capacidad que tiene el sistema y la


consistencia que tiene al ver sí dados unos parámeJros continúan siendo
buenos en el siguiente histórico.
- El nivel de Acople relaciona la optimización con la prueba extema.
- Los datos estadísticos evalúan diversos datos que aportan elementos
de valoración adicionales.

O p tírn iíd c ió n CxIernA A c o p le


M, .M , 1 . F-*
Anu»fc 65.0 10,0 S5.0 55,0 5.0 50.0 100.0
Scíie: • 10,0 40,0 30,0 17,5 50,0 32,S
Prtenc: 6,5 1,0 5.5 3,1 1.0 2.1

D dtos e s ta d ís tic o s

Anu«U
Serie; j
Potenc:
fiab: ■ 55,0 20,0 35.0
PRR: 2,3 1.0 1.3
Posilleg; 3,5 1.0 1.5
H eqoc: tso.o 650,0 500,0

Se parle de fijar unos criterios, que no son absolutos, y han sido


colocados después de probar con muchos sistemas y ver los resultados
extremos que suelen producirse. Si vemos, por ejemplo, el cuadro I, de
optimización o prueba inferna, observamos que para la ganancia anual se
establecen una gama de valores entre 65 y 10. A un sistema que obtenga un
65% se le daría un 10, nota máxima, y a otro que obtenga un 10% se le daría
un O, nota mínima. Esto supone un entorno de 55 puntos porcentuales en
donde se suele mover el sistema. Desde este controlador se puede realizar las
modificaciones que se quiera. Por ejemplo, en la .segunda fila de este cu.ulro
está el dato de la serie de pérdidas. Si se quiere ser más exigente ai valorar un
sistema, en vez de entre un 10% como nota máxima y un 40% como nota
miiiimn, se podría pensar que esta banda es demasiado como perdidas y
api otarla más; pues se puede poner por ejemplo entre 5 y 20, con lo que las
prestaciones requeridas al sistema son mucho mayores.
Lo cierto es que en cuanto se cambien los criterios en esta hoja,
repercute en todas las demás. El potencial se calcula también igual con sus
valores establecidos como máximo y mínimo.

281
I ( f ( f f ^ ( I i ( f i i f i f

KSTRA TF.G l.AS [ IF IN V 'l^R SlÓ N C O N V'ISUAI. C H A K T

l:ii el siuuicntc cuadro, los resultados de ia pruoha externa,


encontramos la misma estructura: porcentaje máximo, que correspondería a
una nota de 10; porcentaje nn'nimo, que corresponde a una puntuación de O, y
diferencia porcentual de ámbitos.
El cuadro tercero se deriva de los anteriores. Representa cl índice de
acople, que so forma con la fórmula; (Ganancia de la prueba interna -
Ganancia de la prueba externa) * 100 y todo ello dividido entre el resultado de
ganancia de la prueba interna.
Por último los datos estadísticos se anotan en sus distintos apartados en
el cuadro 4. que repite solo a título comparativo en sus tres primeros conceptos
los del cuadro I y les añade a continuación otros aspectos básicos que son los
que se valoran aquí.
HOJA INDIVIDUAL DE RESULTADOS PARA UN SISTEMA EN
CONCRETO
Ahora vemos los resultados obtenidos individualmente por un sistema
"A" relativos al Test de Evaluación:
01>I . 98 DD 1x1 98 DO Acó )|R
1 ^ n ■- i ; (1 ■ (1 ■
A nu«l: 65.0 4 ? ,í 3.1 55,0 7,6 0.2 84 ,C 1.6
Sene; 10.0 1 9,: 2,1 17.5 2^1 ?.1
iP o ie n c: 6,5 2.? 9.1 3,1 0,7 0.0

Externa - SBIHI To(dl


ij R.t 1 rir Opt: 0,3
lAnu«l: :a,7 ■19,7 13.8 7,6 Acop: O.S
iseiie: 13.0 35,7 32.7 27,1 Exier: 1.1
iPoIcne: 2.2 .0.6 0,4 0,7 ts tid : O.S
IFiAb: 30,2 33,3 34 ,ü 55,0 32.5 0,í
iPRit 1,7 1,1 1,5 2,3 l.í 1,2
|Po* Hcg: 2.7 1.6 2,1 2.5 2,1 3.t
'necjoc: 413,0 264.0 287,0 150,0 321,? 0.f

Podemos apreciar la presencia de los cuatro cuadros que recogen los


aspectos a evaluar más uno anexo con los resultados totales.
Hay una doble ponderación:
- una ponderación general que tiene respecto al total cada cuadro.
- una ponderación particular dentro de cada cuadro de cada uno de sus
aspectos.
Hay una ponderación general, como acabamos de decir, en la que si
miramos los resultados del cuadro llamado Total, corresponde a Optimización

282
E S T R A T E G IA S D E IN V E R S IO N C O N V IS U A L C H A R T

el 15% (0,9 puntos viene de multiplicar por 0,15 el resultado de la suma de los
j)untos obtenidos en el cuadro I), a Acople el 30% (0,5 puntos viene de
multiplicar por 0,3 el resultado obtenido en puntos en el cuadro 3), a Externa
el 45%, la nota a la que más importancia se le da (1,1 puntos es el resultado de
multiplicar por 0,45 la suma de los puntos obtenidos en el cuadro 2), y a
Estadísticos el 10% (0,5 puntos es el resultado de multiplicar por 0,1 la suma
de los puntos obtenidos en el cuadro 4). Por tanto, cuando se habían sumado
los totales parciales de cada cuadro, se m ultiplicaron por el porcentaje
correspondiente y se llegó a la puntuación final

T o ta l
1
O p t: 0 .9
A cop; 0,5
E x íe r: 1.1
E s ta d : 0 .5

Pero además hay una ponderación particular, que sería el peso que le
damos dentro de los cuadros individuales a cada uno de sus aspectos. Lo
analizaremos detalladamente.
Cuadro 1.
Este es el cuadro de Optimización.

O pt - 9 8 0 0

L . l vT fio -:
A n u a l: 6 5 .0 4 7 ,5 3 ,1
S e r ie : 1 0 ,0 1 9 ,2 2,1
P o le n c : 6 ,5 2 ,5 0 .7

En el se disponen tres conceptos: Ganancia Anual, Serio de Pérdidas y


Potencial, que tienen en su aportación a su suma de puntos peso distinto:
Ganancia Anual el 45%, Serie de Pérdidas el 30% y Potencial el 25”o.Vanios a
examinar la calificación que figura alli. ¿De dónde sale exactamente la
puntuación de 3,1 puntos para la ganancia anual? Pues de una foniiula que hay
que desgranar: al tanto por ciento que ha obtenido el sistema en ese criterio:
47,5, le restamos lo que en la hoja de referencia figuraba como ámbito mínimo
para valorar en este concepto, que era 10 y lo multiplicamos por 100. Por tanto
47,5 - 10 = 37,5 y 37,5 * 100 = 3750. Ahora, se divide entre la diferencia en la
gama que también había en la hoja de referencia, que era 55, con lo que da
68,18, el cual dividido finalmente entre 10 da 6,818. que multiplicado por
0,45, que es lo que le corresponde de la ponderación del primer cuadro a este
primer concepto de los tres que hay. pues se obtiene una puntuación de 3,1,
que se anota en su casillero correspondiente.

28 3
\ i:S T K A T i:i'.IA S D R IN V K K S lO N C O N V ISU A L C 'IIA R T

C on cl resto de puntu;ic¡ón se va procediendo de lo misma forma hasta


llegar a completar cl marco cstahiecido. I’or cjcniplo, cl dato de 2.1 punios
para la serio de pérdidas procede de la fonnula de tomar cl tatito por ciento que
obtiene cl sistema, que es 19,2 para a continuación restarle en términos
absolutos cl dato de ámbito inininio de h hoja de referencia,.que es 40, con lo
que queda 20,8 que multiplicado por 100 da 2080. Este número se divide
entre la diferencia de puntos de la gama que había en la hoja de referencia, que
era 30 y obtenemos 69.3 Ya solo queda multiplicailo por 0,3 y con cl
redondeo se llega a la cantidad expresada al principio.
En cuanto a la puntuación 0,7 de la fila Potencial, sale de la misma
fórmula, es decir, primero se resta de lo que ha obtenido cl sistema, que es 2,5
lo que se señala en la hoja de referencia como mínimo, que es I , y da 1,5, que
se multiplica por 100 = 150. Dividimos ahora 150 entre la diícrcnciu dcl
porcentaje del ámbito máximo mínimo que aparece también en la hoja de
referencia (5.5) y obtenemos 27,2 Ahora se divide entre 10, con lo que queda
2,7, que multiplicado por el porcentaje que le corresponde en el peso de ese
cuadro 1, que es 0,25, da 0,68, que redondeado nos proporciona su puntuación
final.
Cuadro 2.
En cl cuadro segundo, cl de la Prueba Externa, el peso de los conceptos
es cl mismo. Por lo tanto, la explicación es la misma que para el cuadro l.

Esrt - 9 8 jt)0
R.--t 1 s -r. r t r ,:
5 5 .0 7 .6 0 ,2
1 7 ,5 27,1 2,1
0 ,7 0 ,0

Cuadro 3.
En el cuadro 3 se pone de manifiesto el Acople.

A c o p le
Sv: 1 Flo:
8 4 ,o l 1,6

Encontramos primero un índice de 84%, que se ha sacado de la


relación Ganancia vs. Serie de perdidas, con la .siguiente operación: Ganancia
dcl sistema (47,5) menos Serie de perdidas (7,6) multiplicado por 100 y
dividido entre la ganancia del sísteina de nuevo (47,5). Quiere decir por tanto,
que el 84% de la ganancia de la prueba interna no ha sido capaz de mantenerla
en la prueba externa.

284
K S T R A T D G IA S D K IN V K R S IO N C O N V IS U A L C M A R T

Cuadro 4.
lili el ciuitlro 4, el tic los cI íj I o s estad ísi icos, Finbilidad “coti/a’*yl 2Ü%,
PRR al 35%, Indice Posiiivos/Ncgativos al 35% y Número do ncnocios al
10%.

Nos estamos fijando en la parte de abajo del cuadro, pues !a de arriba


son los datos de la prueba externa en cada uno de los tres años examinados.
Así que si miramos en los dalos estadísticos propiamente dichos,
vemos que Fiabilidad saca 0,7 puntos, que procede de primero restar de 32,5 ,
que es lo que ha obtenido el sistema, 20 que es el ámbito mínimo de la hoja de
referencia para la Fiabilidad, y da 12,5.

E x t e r n a - 3 8 t l0
lio ■ji'j ri Fvt 1 •r F'.'V
A n u a l; 2 8 .7 -1 9 .7 1 3 ,6 7 ,6
S e r ie : 1 3 ,0 3 5 ,7 3 2 ,7 2 7 ,t
P o te n c : 2 ,2 -0 ,6 0,4 07
F la b : 3 0 ,2 3 3 ,3 3 4 ,0 5 5 ,0 3 2 ,5 0.7
PR R : 1 ,7 1.1 1 ,5 2 ,3 1 ,4 1 ,2
P o s íle g : 2 ,7 1 .6 2,1 2 ,5 2.1 2 .6
M cgoc; 4 1 3 ,0 2 6 4 ,0 2 8 7 ,0 1 5 0 ,0 3 2 1 ,3 0 .7

Ahora lo multiplicam os por 100 = 1250, que dividido entre la


diferencia que expresaba la hoja fuente, que era 35, da 35,9 , el cual dividido
otra vez entre 10 da 3,59.
Se le multiplica por el porcentaje que le corresponde en su cuadro, 0,2
y por fin sale 0,7.
Asi sigue el proceso con los otros conceptos, multiplicando siempre al
fuial por el porcentaje de peso correspondiente.
Esta explicación es necesaria porque como hemos dicho antcriomiente.
son criterios personales los que se establecen y hay que conocer en
profundidad el proceso para entender bien lo que se busca y qué aspectos se
consideran más importantes en !a evaluación que realiza el Test.
HOJA RESUMEN DE RESULTADOS.
Con todos estos datos, se pasa a la hoja resumen c.le resultados por
sistem as, donde podem os com pararlos perfectamente. En la siguiente
ilustración podemos ver este cuadro para 10 sistemas evaluados y ordenadlos
ya en función de los resultados.
Con esta perspectiva tenemos una primera aproximación a la calidad de
los sistemas, pues podemos saber a golpe de vista cuáles son dignos de

285
\ ICSTKATKC'.IAS n i '. INV IvN SIÓ N l'O N V ISU A I. t'M A IvT

sclcccionarsc por sus logros y cuáles no. l.o yiic se hace, pues, en csia prinTura
fase, que es ei Test de livaluaeión, es fijar ya los sistemas que vamos a iilili/ar
en nuestra operativa inversora.

i Hombre I I 1M01 1 opt 1 A có j Ext 1 Est 1II A n u 1 Ser 1 Pot 1

Cdíetero C .l 1.4 t.4 2.7 O.f 64.2 11,3 5,7


Ruptura de Pivot c .l 0.8 1.8 2.9 0.6 47.1 22.2 2.1
RetrocesosJC 5.3 D,e 1.6 2,4 o.e 51.3 24.3 2.1
Run Ody 0,5 1,5 2,1 o.f 41.2 30.7 1,3
V‘/ídc Range Day 4.7 1.2 1,1 1.9 0,5 47.0 9,5 4.9
R e tro ce so s 4.S 0.9 M 1.9 0.4 50,4 (8.9 2,7
ISuprem #.3 0.8 O.S t.7 O.í 43.5 17.7 2.5
Móvil aplanada 3.E 0,2 1.3 1.3 0,6 :e,7 4S.2 O.e
V V e in s te in 2.9 OS 0.5 l.t O.í 47.5 19.2 2.5
Ruptura de Bandas ?.9 O.'t 0.3 1.0 0.5 29.1 30.1 0.9

¡ Hom bre I! 1A col 1 A nu 1 S e r ¡ Pot 1riab 1 PRR 1 P H ( HG

Cafetero 54.0 29,5 19.4 i,e 42,0 1.6 2,0 103,3


Ruptura de Piuot 40.6 23,0 21.6 2.6 35,3 1,7 2,5 643,0
R etroce so sJC 4S.7 27,3 21.9 1.5 37,1 1,5 1.9 198,3
Run Day 51.6 19.9 22.8 1,7 41,9 1,7 2.1 190,7
.V/ide Range Day 84.8 16,5 18.6 1.3 Í6,4 1,5 1.8 59,3
R e tro ce so s 5J.4 23,5 23,4 f,l 33.9 1,4 1.7 i ^ S .O

iSuprem 68,8 13.6 20.9 1,3 20,3 2,2 3,0 53,1


'M ouil aplanada 57.7 11,3 25,3 0,8 25,0 2.3 3,0 30.7
|We¡nsteín 84,0 7.6 27.1 0,7’ 32,5 y* 2,t 321,3
Ruptura de Oar>das $9.4 6.6 28,4 0.5 3e,4 1,5 1,G 103,4

Pero aún no sabemos cuál es el valor de los parámetros concreto con el


que trabajará el sistema, ya que eso será labor de la segunda fase del
Protoeolo, que es el Proceso de Selección de Variables.

FA'Al,DACIÓN DE SISTEMAS CON A PU C A C IO N INTRADIARIA.

Fase 2. Selección de Variables


a / LocaUziición de zonas óptimas.
Una vez visto que ei sistema es bueno, se llega al moinento de decidir
las variables que se van a utilizar. Se busca la calidad de los valores de los
parámetros que se van a emplear. Con ayuda del optimizador de Visual Cbart
se hace un análisis en la base de datos, en el histórico que se tiene, en este
caso, del 93 al 2000, y se comprueba el comportamiento de los valores de los
parámetros después de haber establecido en ellos un campo lógico en su
ámbito de valores. Este ámbito previamente ha sido dividido en partes iguales.
K S T ÍM I i;r,IAS DI-: IN V K K S IÓ N C D N V IS U A t- C :ilA « T

Aquí tenemos como ejemplo un sisícma con un solo parámetro. El


iimbilo dcl parámclro (en este caso se llama Barras, pero no tiene nada que ver
con el tipo de barra temporal como fonna de ver el gráfico, lo cual ya se había
elegido al comenzar todo el protocolo) va desde 1 a 35. Podía ser cualquier
otro. Medias, Porcentaje, etc. Lo primero que se hace, pues, es elegir de I a 35
diez o doce valores separados más o menos a la misma disiancia; 1. 2, 5, 8, II,
14, etc. El primer y segundo tramo van más unidos porque es un espacio más
sensible.

B a rra j G .A ñ o 1 S e r i e I P o te ri 1 D esu

1 1 6 7 ,9 1 5 ,9 4 ,3
2 2 6 8 ,2 1 8 ,6 3 ,7 0 ,4
3 5 6 8 ,0 1 9 ,3 3 ,5 0 .3
4 8 6 6 ,7 2 0 ,6 3 ,2 1 .9
S 11 6 3 ,3 2 2 ,4 2 ,8 5 .4
6 14 6 6 .3 2 2 ,8 2 ,9 4 ,5
7 17 6 6 .6 1 2 ,2 5 .5 0 ,5
8 20 6 9 .9 1 1 ,2 6 .2 4 ,7
9 23 6 6 .3 13,1 5.1 5 ,4
10 26 65.1 1 0 ,5 6 ,2 1 .8
n 29 6 1 ,9 1 2 ,3 5 ,0 5 ,2
35 5 8 ,0 1 3 ,6 4 ,3

DATOS DE GANANCIA.
Se anotan dos conceptos al hacer una pasada analítica por la base de
datos o histórico; el primero es la ganancia que obtiene cada valor (67,9 %
6S,2% 6S% etc.) que se relleja en la primeia columna G año, y esos datos se
pasan a un grátlco para que de modo visual se aprecie su efecto.
V ESTRATEGIAS DE INVERSION CON VISUAL CliART

una más pcnnancntc redondeada y otra con un pico. En el resto dcl espectro se.
produce un dccaiiuienio. lis un paradigma de sistema sólido, con buenos
resultados en el espectro del parámetro representadas por las secciones 1, 2, 3
y también el pico en la sección 8.

DATOS DE SERIES DE PERDIDAS.

Un segundo aspecto a tener en cuenm son las series de perdidas


máximas, en la columna Serie, para cada uno de esas secciones del porániclro
que estamos analizando. Se pasa también a un gráfico y apreciamos cómo esta
serie máxima comienza a aumentar progresivamente hasta*quc de pronto decac*
bruscamente y ya se mantiene pegada a la banda entre un 10 y 12%, lo cual
viene a ser un resultado bueno, y coincide con la segunda parte del estudio de
Jas ganancias.

DATOS DEL POTENCIAL

288

^ ^ X >
ESTRATEGIAS DE INVERSIÓN CON VISUAL CIIART

Con estos dos datos, tan íntimamente relacionados, hay que hacer una
valoración a la hora de decidirse por una zona u otra. No solo hay que pensar
en las ganancias sino también (y quizás sobre todo) en la serie de pérdidas a
afrontar. Por ello, de su interconexión se extrae el concepto de Potencial.
Potencial sería el cociente entre ganancia anualizada y máxima serie de
perdidas. El primer factor se puede multiplicar por un coeficiente, lo cual no
afecta a los resultados finales, a su proporcionalidad, ya que siguen siendo más
o menos parejos.
Podemos observar que cuando la ganancia se mantiene constante, en la
medida en que aumenta la serie de pérdidas, el potencial va disminuyendo.
Esto te indica en qué zona es mejor trabajar, al señalar las mejores relaciones
entre las ganancias y las series de pérdidas. El óptimo se encuentra en los
picos que apreciamos a la derecha del gráfico, que es donde se encuentran las
mayores ganancias combinadas con las menores series de pérdidas.
Así, con estos tres elementos podemos intuir por dónde va a ir el
proceso de selección: A ganancias parecidas, debe prevalecer la serie de
pérdidas.
Se aprecian dos buenas zonas, que corresponderían al entorno de los
valores 20 y 26 del parámetro Barra
May otro dato junto a los tres conceptos analizados, y es el que aparece
en la columna Desee, donde se obtiene el valor absoluto de la diferencia en
porcentaje de variación entre el dato de un valor del parámetro y el del que le
precede. En la medida en que la distancia que hay entre un dato y otro sea
pequeña eso es positivo. Te indica que hay homogeneidad en los resultados.

b / Ordenación de dalos base.


LocaÜzada las zonas óptimas teniendo en cuenta ct Potencial y la
homogeneidad, se pasa a colocar las bases de datos obtenidas de forma
ordenada, para después seleccionar los valores estadisticos y puntuarlos.
En los cuadros que seguidamente se ofrecen aparece en primer lugar la
ganancia porcentual por meses en todo el periodo analizado de cada una de las
variantes y ordenada de forma temporal, desde enero de 1993 hasta dicictnbre
de 2000. Es la materia prima de la que vamos a extraer todo lo demás.

289
V EST R A T D C llA S D E IN V E R S IÓ N C O N V ISU A L C IIA R T

T;imbicn so puede ver un resumen de esos mismos dnlos pero ya en


punios y ;iurup;idüs de forma anual.

A5 1 ... 1 • :1 f 1 ; . r f ,7 .:\
- i - í — r • « n
♦n»9J ♦.142 •.11) «,♦70 • ,tn •.IÍ7 • .tíí

líb-93 *.01» ♦.•TT • •♦7 •.•57 • ,* U •,•1) •,••*

rri»t-33
abf 93 f.OO» •Cí.iirt' M 27 •.* 2 i •.0*1 • •*•

m»5-S3 M í* *.*M •,*T» «,QT4

|un-93 -.v „:r .rt .,1, o ,.;.

jul-93 • ,0i1 •.0fZ •.•4 i •,*44 •>•)* •.0Í2 •.Olí •.*4*

igo-93 *.n« M M •,149 t.n i •,12» 9.U * •.U* •.o * • ,121


5 fp « t.H f •,1T i •,O I •J24 •.111 M J* •.!)• •.<2*

oct-93 • .« • •,1*1 • >*« •,•*4 •> M

noi/-93 •.o u •.«•7 r r .,; ♦,*1* " >17


d.c 93 •,*2T •.•4 i *,*5*
írií3 4 M M *.031 *.692 «,942 •.«M •,•44 •,M í d.oíi •.*«2 ».*)7

l í b 94 «,»4( •.•22 • .« 2 • .01* •.«1* 0,*1*

rriit 94 • .14( • ,n * •,127 t.iíf • ,1 M •,tJO • .1í* «,121

*bt-94 •,U « • ,1 M •.I7i •,1T> •,171 • J il •,n * •J«

m aj-9» M M -M 2' •«•1t •> u •.•01 *.*•1

|un-94 M TI M>7 •,fT t • .« n • ,H » •,•»• •.»•» •.**4 •*•1* • •Ti


M-94 «.012 M M •.•fti •,01» •,^H •^•0* •.••7 •.**t
*go9« t.n r M 37 M U •.12» •.12* •,11J •,1«) •.•*4 *.*«1

ífp 9 4 .» r.i5 -V-W •.••1 •,*•1 \V11 ‘ 0,' t? •.*2*

o cl 94 • . lo i • .P fl •,14> « ,n i *.«*« *.*o *.**) 0,013

nov 94 M I i M Z) M )4 • .04» *,»4t • .* H •*652 «,0f2 0.*12 •.o u

d.c-94 i. m M>( • ,0 )t •.«12 •,*)3 •.dí3 •,*1* •,*2« 0.*1T

Observamos por ejemplo que hay valores que en un año determinado


tienen incluso ganancia negativa, mientras que otros se perfilan en el total
como líderes, con resultados por encima de 54.000 puntos.

Añoí B2 11 0^5 1 B:8 i1 1 B 14 i B:tn 1 0^2» 1 B:23 1 B26 1 B:23 M»di«


$3 7770 7710 6íeo S500 s uo S610 6790 6180 «010 7290 6697
94 79&0 «190 6170 7760 7470 7620 7760 T230 6S20 TOZO 7.SÍ2
95 4340 4570 4ft30 5200 5340 5290 55A0 55*0 5400 5071
»6' 5640 54&0 5360 5120 *950 4960 i 750 4220 4490' 4230 4420
57 tt eío l£6«0 t£WO 12060 n 7íO 12610 IJO'ÍO 114.20 11300 12049
38 MtW 12220 I25ft0 12.770 12100 11«70 11190 (0370 «790 11357
99 3000 1370 320 ■210 -&0 «10 720 130 590 170 682
0 i 090 3Ato Í6Í0 2A20 3560 3A30 5520 5650 SÍOO S590 4204
T o t *1: 54 t :>c f* :70 53210 A^ttO 51070 51 5*910 Sí 640 50780 Sí 592
6«29 fc?9e 6&51 6£33 63&4 649» 6664 6534 6605 634» 6574

Y por último un resumen del año 93 al 97 y dcl 98 al 00.

93 37 37 630 3» JÍO 3« 040 3S070 3 4 ÍÍ0 35240 )7 200 35 300 36 2(0 35 230 36 314
98 00 17 000 15 W 15 170 14 740 16 250 16 740 17710 16 470 16 560 15 550 16273
M »di* ; W 5no 1017 4 410 54 (7 5 560 5 401 ■5 617 5 520 S 163 5 424

2 ‘JO
E S T R A T E G IA S D E IN V E R S IÓ N C O N V IS U A L C H A R T

También se colocan los datos ordenados en vez de seguir un criterio


temporal, siguiendo un criterio de peores resultados a mejores resultados,
también mensualmcnte, de mayores pérdidas en el mes correspondiente a
mayores ganancias, para lodo el periodo estudiado. Esto ser\ira de base a
posteriores cálculos, como los muy importantes de la Puntuación Inversa o el
Perccntil, que analizaremos a continuación.

c/Extracción de datos por conceptos.


Entramos en la tercera parte del proceso. Recordemos: primero
Localización de zonas óptimas, segundp Ordenación de datos base sobre los
valores de esas zonas, y ahora Extracción de los datos correspondientes a una
serie de Conceptos fundamentales que determinarán la puntuación fu ial. sobre
la que elegir al valor “titular” que se usará en el Sistema. Se anotan tanto en un
periodo largo, 93-00, como en un periodo corto, 98-00.
C o n c r p lo 33-00 B_í?. 1 B :S 1 B t 1 B :1 l 1 8 :1 4 1 B : Í 7 [ B :2 Q ] 6 23 1 T B 2)
M fjo i; 17 tj 11: 5 t 9 10 7 15 9 11.2
P * o i: ■iO , - .í' •í ' -5 ■4 •« •TC.)
'" i 'i
SO S! 4S0 400 4S0' 510 4S0 445
P *te rn < (l- 10: ■85,0 . ■140,0 .19n,0: ■IfS.O •ÍOO.O ‘ •i : d.o •1^50 •1SÍ.0 -irvo líOO
M f s * s r n P « id : -15 ■13 i •I»; •17 ;o ■ ■17 ■17 •:ü ■13 1,'
P u n lu « In v r i: 111 M 7Í a« 100 •e í 43 85 Í3.2
P o n d fi* d < : 4« 51 53 46 45 48 4< 44 44 37 46.6

Los dos primeros Conceptos que aparecen son los de Mejor/Peor.


Supone comprobar el número de veces que en cada mes ha quedado eí valor
de la variable el mejor en cuanto a resultados respecto a la gama estudiada y
también el número de veces que ha quedado el peor. Tanto en estos como en
los demás criterios, la puntuación viene determinada por la comparativa con
sus compañeros. Si ha quedado en Mejor el primero, recibe un punto; si ha
quedado el último en Peor (claro, aquí el sentido es el opuesto) recibe un
punto. Los demás lugares se van puntuando en proporción al rango que se
establece.

Mediana no hace referencia a la media sino al valor intermedio de los


96 meses, donde se coloca el mes que ha hecho el 50%. Se observan los
resultados de esc mes en cada uno de los valores y se Ies da una puiUuneión
por su posición en la gama. Por ejemplo, en el valor del parámetro nominado
como B:2 hay 525 en el periodo 93-2000, lo cual es un dato muy alto y eso es
bueno porque quiere decir que el resultado del SQ% está por encima.
Percenlil ¡O sería situarse en el cuadro de ordenación de resultados de
los valores de los parámetros de meses malos a meses buenos y buscar el mes
que hace el 10%, viendo cuánto ganó, h'l sentido es t,}ue cuando llegas a esie
\

1 :•)!
V KSriMI I'X’i lA S l)K IN V K K S IO N C-QN v is u m . c^h a k t

linio yn se han descartado los diez peores nej^ocios. í-ntonces niirando )a


posición en esUi tila de cada resultado, se lo valora en porcciilaje, que va a
indicar en ia medida que esté mas bajo que es mucho más seguro, que tiene
menos capacidad de perder.
\ícscs en pérdida, durante cuántos meses ha estado en perdidas de los
96 objeto de estudio.
Media ponderada. Cada mes calcula el rango perccntil para cada uno
de los valores según cómo hayan quedado en esc lapso de tiempo. A
continuación se suman todos esos datos y da como efecto la puntuación de la
media ponderada.
Pnníuación inversa. Este es un Concepto muy interesante. Nos
situamos en el cuadro de ordenación inversa, por serie de pérdidas. Los
resultados n ú s negativos aparecen al principio, y se van multiplicando por un
coeficientc que representa al número de meses y empezando en orden
descendente desde 96, con lo que tendrán gran trabajo al tener ya un valor
muy alto negativo desde el principio, recuperar después al sumar con los
demás resultados que sean positivos.
Aquí aparecen en el cuadro los datos ya m ultiplicados por el
cocncicnte de la derecha.

in i -)i»i «i:i t \k '*>*1


I ao .i» , , y.*iT t.« * I,-*'
v;i* <éié •*>». -MI* 'Jhí** i.»í» -í.'íí '■
***■
i;»» -í :** í O.íf» tMi UT* l.U* 1.U1
• ».) •*;? -I ‘iM* í *?■ 'í,*'*' -i.Ti* -1,14*
• •¿I \h » »!»• tn \ -I -I,»*; -i.M -v rtí
»,•!> -tí"» I.M» -1.*TÍ
»»*• -M . ♦,>* -í *.ÍT% » I,.».' 1,1»» »,T«? t ,í<
--It *-11 I .:n K.)U !>>■ í tn » i.í« í v ^ 'i
•Mí «Mi .^%é% *;é .1 m í *J» -í -;*
• -.'I*
.«41$ .«««I .«>«4 «.il» -*♦11 •*.*»♦ -♦.»)* *»,T4T
► ♦,**: Mtí *,;i* *«: *>«♦ i,*<» *7^»
• MI

«,iM ■•.flív *,m -o*»


•JI2 ■•.-rf MM 70
• MI OTT MTÍ un
»>»! *.-»* k)*4 *.»>l ♦,!« i) l»
MT* *>M •.iTí «,m *,)T* OH »,)« on
■III ».tN «iü ».»l» «Jll

Los meses con mejores resultados no podrán equilibrar el total por la


ponderación fuertemente penalizadora que supone esta puntuación inversa. Asi
que cuanto más se saque en la puntuación inversa en positivo, querrá decir que

292

V V t
rCS I'RA I'KC.IAS Dlí INVKkSIÓN ( ’ON VISUM, C'1!M<T

los resultados buenos han podido más que los malos. U na puntuación inversa
tic l i s IVciitc a oira tic 79 presupone que el seguiulo prcsetil;i irregularidad y
periodos de fuertes pérdidas, mientras que el primero ha salido con bien
predominando lo positivo.

Por cada uno de estos Conccplos se otorga un punto si se obtiene el


valor máximo y O si es el valor mínimo, quedando puntuados los términos
intermedios en proporción. AI final se obtiene una suma total que ya es el
criterio definitivo para elegir al mejor valor, al valor con el que nos jugaremos
nuestro dinero en la aplicación del sistema. Aquí aparece la puntuación final
de los valores de nuestro ejemplo en los dos periodos establecidos;
B:I I B:5 I B« I B:ll I B:I4 I B:1T [ I B:21 I 8 :? t I B:2> M»di«
V iIM n r n 93 00 s.7a 4.77 «.00 Í.22 l.« l J.#« 5,<4 1,55 íií
y ^ l M r n 98 0 0 5,55 3M t . i3 l.* I Í8 « 5,au J .J f } J1

El primero, el que se maniricsta en la primera casilla :2, es el más


equilibrado de todos, en diferentes periodos, seguido por :20.
Cuando la labor implica más parámetros (recordemos que aquí solo se
iba a examinar uno) se realiza un procedimiento más compiejo, anclando
algunos de ellos y haciendo variaciones en los otros, volviendo a recombinar,
etc.

E V A L U A C I O N D E S I S T E M A S C O N A P L I C A C I Ó N D I A R I A O DE
TIEMPO MAYOR

Fase l. Selección de Sistemas.

Para el análisis de los resultados sobre acciones se cuenta con una base
de datos histórica del tipo fin de día, más reducida en algunos casos en cuanto
al número de registros. Se estudia un sistema aplicándolo en un conjunto de
diez empresas. La selección de las mismas se ha hecho teniendo en cuenta el
; criterio de la represenlatividad, pues hay empresas de los distintos sectores:
I tecnológicas, construcción, bancos, comunicaciones, varios, etc. Se ha elegido
I en este caso a Acerinox, Altadis, Amper, BBVA, Dragados, Endesa, Repsol,
í Telefónica, Vallehermoso y Viscofán.
Como en el protocolo intradiario, se dispone de una Hoja de referencia
principal, a la que se remitirán los distintos resultados para calcular la
puntuación. Es ésta:

293
( ( i ( i i f I t i f ( ( ( ( i f < f I ( c i i r r r r r r r

E S T R A T K G IA S P E IN V E R S IÓ N C O N V IS U A L C H A R T E S T R A T E G IA S Ü E IN V K K S IÓ N C O N V ISU A L C H A Í<T

CAJADRO^PE ANOTACIÓN DE RESULTADOS D E X ^ H ^ J ^ 3 A


EXTERNA Y CUADRO DE PUNTUACI?)N.
Acüpl(? El segundo paso consiste en aplicar una prueba extema para el periodo
Anual; 40.0 5,0 3 5 .0
It 98-00, con el mejor juego de valores de parámetros recogidos en la prueba
S D ííe : 20.0 70.0 $0.0 125.0
P o íe n c : 2 ,0 _____0,5 1 .5 interna del periodo 90-97, Se anotan también la ganancia anual, la serie de
pérdidas, el potencial y además una serie de datos estadi.sticos, como son la
fiabilidad, el PRR, el índice de negocios positivos/negativos y el número de
D a to s e s t a d íst ic o s negocios. Al igual que en el apartado anterior, de acuerdo con las referencias
víi 'j? 0 1 1 Min FIO: se procede a calificar a la media que se obtiene,de las diez empresas según la
Anual; 20,0 0,0 20.0 ponderación particular de cada aspecto analizado.
S erie: 25.0 80,0 55,0
Potenc: 2,0 0,5 1.5
Fiab: 50,0 20,0 30,0 1 A-t 1 1 ci. . 1 C-v, j . 1 1 1 ’ 1
2.0 0,5 1.5 [Anutl:
PRR;
jSciic:
P osH e g: 2,5 1,0 1.5
;P<rteoe;
H egoc: 8,0 30,0 22.0 f Kb:
!p RR:
En ella se fijan los criterios de los distintos conceptos que enmarcan Ip oslleg:
iHrqoc:
tres pruebas: la prueba interna u optimización para el periodo 90-97, la prueba
externa para el periodo 98-00, y el cálculo del índice de acople para el periodo Extern* )8tlO
Rrf 1 S y . Ptom
98-00. ¡Anujl: 20,0
|Sen«: 25,0-
Potenc: 2,0
CUADRO DE ANOTACIÓN DE RESULTADOS DE LA PRUEBA fiíb; £0.0
PRR: 2.0
INTERNA Y CUADRO DE PUNTUACIÓN * [pos'Meg; 2.5
Weqgc: 0.0
Primero se lleva a cabo una Optimización o prueba interna, en este
caso para todas las empresas elegidas, sobre el periodo 90-97, apuntando en
las distintas filas los resultados sobre ganancia, serie de pérdidas y potencial. CUADRO DE RESULTADOS DEL INDICE DE ACOPLE Y
Tras hacer la media, se sitúa el dato en la columna correspondiente, y se CUADRO DE PUNTUACIÓN
calcula a partir de ahi la puntuación que corresponde según su ponderación
parlicular. Más adelante explicitarcmos las fórmulas empicadas para los
Ya tenemos la optimización del periodo 90-97 y la aplicación de la
cálculos, sobre un ejemplo concreto. prueba externa al periodo 98-00. Queda comprobar el acople que se obtiene, y
para ello es preciso hacer una optimización interna de este último periodo, con
objeto de comparar las ganancias de prueba interna y extema.

A n u il: E -t. => [ t -1 Én1 j --1' r-.i ,,


Sene: ■ñmiál: I
P o trn e ;

0|i <i«nn jAr


Op - iO Hf
Rftf 1 Sy* P to » MiíiJ T Acple it . is
Anu«t: 40.0
Seiie: 20,0
Potenc*. 2.0 Veamos ahora sobre la hoja de calificación de un sistema concreto al

i
que llamaremos “A '\ cómo se llega a la puntuación de cada aspecto.

294 295
V B S TK A TK C .IA S D E IN V E R S IÓ N C O N V ISU A L C H A R T

1 - 1 1-- ^ 1j ■ 1 1 :'l
|Ar>u«l; 71.e «.0 2 0 ,0 94.9 44,4 46,0 22,1 43,3 50,4 71,7
|Seiie: 1<7 i*.* 33,4 <2.8 15.9 9.4 21,6 11,2 104,8 32,9
■F o t e n e ; 9,8 t,6 14,6 4.4 5,6 9,8 2,0 7,8 1,0 4.4

- 1 ' .1 i' 1 1 • • .
^Anu4l: 59,8 28,5 89,1 48,8 . 52,3 29,9 i 35,7 70,5 27,2 69,9

1: 1 1H r. , 1 1. - 1 r
.Anu«l: 23.3 ■7,9 e,s 6,8 *3,9 2,2 9.9 20,0 -23,5 -10,:
.S m e ; 49.2 B4,3 44,2 52,5 31,2 21,9 30.4 32,2 61.7 69,9
IPol Rnc: 0,9 0.0 0.4 0,3 0.9 0.2 0.6 1,2 0.0 o.c
¡f« b : 42,9 28,6 57,1 33,3 37,5 57.1 25,0 60,0 20,0 50,0
¡PRR; 2 ,0 1,1 1 ,3 1 ,« 1 ,9 1 .0 2 ,9 1 ,9 0 ,2 0 ,7

Pos;1leti: 2 .3 1.8 1 ,1 2 ,5 2 ,4 0 .9 5 .0 1 ,6 0 .5 07
H egoc: 2 .9 3,0 2 ,9 5 ,3 7 ,0 3,0 3,5 2 ,3 2 ,2 27

íx le r n a 98 00
Reí 1 Sys Pío»
AnudI; 20,0 4,3 1,0
Setic: 25,0 4S,e 1,5
■SO 97 Polenc: 2.0 0,5 0.0
- Fúb:
Ref t S y . Pío» 50,0 41,2 1.4
|Anuit 40,0 73,2 4,5 PRR; 2,0 1,5 2,1
^Serie: 20,0 34.1 2.2 Po9Veq: 2,5 1,9 ZM
P o te n c : 2,0 6.1 2.5 Heqoc: 8,0 3,5 0.9

ToN)
Opt: 1,4
O p .9 8 D O tA c r> p lc l Acop; 1,0
M e d 1 A cple P ío * Eirtcr: 1,1
¡Evalu*ción: | 4,1|
51: 91,6 3.1 Est«d;

Cuadro 1. Optimización 90-97


La ganancia anual tiene una puntuación de 4,5. Esto se ha obtenido dcl
siguiente modo: A lo que obtiene el sistema (73.2) se le resta el mínimo
corrcspondicnlc de este ámbito que figura en la hoja de referencia (5), y esto
da 68,2. Ahora se multiplica por 100, por tanto, 6820. Se divide entre la
diferencia que hay entre el máximo y mínimo de la hojas de referencia (35), y
da 194.8. Se divide entre 10 y se redondea. Queda 19.5. A esta cantidad le
corresponde un 10 en ei rango establecido, y si multiplicamos 10 por la
ponderación particular de ganancia anual, que es 0,45 , obtenemos 4,5.
En el caso de serie de pérdidas, hay que restar del mínimo dcl ámbito
de referencia (70) lo que ha conseguido el sistema (34,1). Queda 35,9. Se
redondea y multiplica por 100, Son 3600. Ahora se divide entre la diferencia

296
E S T R A T E G IA S D E IN V K H S IÓ N C O N V IS U A L C H A K T

de máximo y mínimo de referencia (50). Sale 72, que al multiplicarse por su


ponderación particular 0,3 da los 2,2 puntos finales.
En cuanto a potencial, la fórmula es la misma que para la ganancia
anual. Se llega a 37,3. En el rango le corresponde un 10, que multiplicado por
0,25 de ponderación, da los 2,5 puntos que aparecen.
Cuadro 2. Externa 98-00
Hay que diferenciar en este cuadro dos partes, la superior, que abarca
los tres primeros componentes (anual, serie y,potencial), y la inferior, que
rccoge los datos estadishcos. Puntúan en el cuadro final independientemente.
Para la ganancia anual hay que calcular la media del sistema (4,3) y
restarle el mínimo de referencia (O).Se multiplica por 10 y se divide entre la
diferencia de puntos del máximo y mínimo (20). Sale 2,15, y ahora se
multiplica por su ponderación en este cuadro, que es 0,45.Obtenemos
redondeando la cantidad de 1 punto.
Para la serie de pérdidas se loma el mínimo del ámbito de referencia
(70) y se le resta lo que saca el sistema (45,8).A continuación se multiplica por
10 y se divide entre la diferencia de máximo y mínimo (50), con lo que
tenemos 4,84. Ahora se multiplica por su ponderación, que es 0,3 y con el
redondeo queda 1,5,
A la puntuación del potencial se llega restando de lo que obtiene el
sistema (0,5) el mínimo de referencia (0,5). Se multiplica por 10, se divide
entre la diferencia de máximo y mínimo base (0), y por último se multiplica
por su coeficiente de ponderación, que es 0,25. El resultado final es 0.
Pa/a la Fiabilidad se parte de lo conseguido por el sistema (41,5) a lo
que se resta el mínimo de referencia (20), se multiplica por 10 y se divide
cnire la diferencia de máximo y mínimo (30). Queda 7, que mulliplicado por
su ponderación 0,2 da origen a 1,4 punios.
Con respecto a PRR y al índice positivos/negativos, se hace
exactamente igual que en el caso anterior, el del aparíndo l-iabilidad. Sus
ponderaciones respectivas son en ambos casos 0,35.
Negocios exige un pequeño cambio. Se trata de tomar en primer lugar
el mínimo base (30) al que deducimos la calificación del sistema (3,5).Lo
muliiplicamos por 10 y dividimos entre el mínimo base de nuevo. Al final
tenemos 6, que multiplicado por su coeficiente de ponderación, que es 0,1 da
lugar a 0,9.
K S T IM 'I KC.IAS niC I N V h k S lÓ N C O N V ISU A I, C'HAKT

Cunciro 3. Acople 98-00.


1 lay un paso previo, que es el do obtener a parlir ile la media de las 10
empresas, (que es 51.1). la punluación de acople, listo se consigue con la
íorniula: media de acople (5 M ) menos.ganancia anual exíerna (4,3) por 100 y
dividido entre la media de acople. Se llega a los 91,6 que .se aprecia en el
cuadro en su casilla correspondiente. A parlir de aquí ya sí se puede efectuar el
siguiente cálculo, que consiste en tomar los puntos de la hoja de referencia
para este apartado (125) y se le resta lo anterior (91,6). F.l resultado se divide
entre 10, y queda al i'inal con 3.3 puntos.
Cuadro 4. Puntuación total.

Tnfal
Opt: 1.4
A co p: 1.0
Eirter: 1.1
Estdd: 0.7

La ponderación general es: optimización 15%, acople 30%, prueba


externa 45% y datos estadísticos 10%.
Como sumando todos los puntos del cuadro 1 tenemos 9,2, lo
multiplicamos por 0.15 y obtenemos 1,4,
t
Como sumando todos los punios del cuadro 2 en su parte superior
tenemos 2,5, lo multiplicamos por 0,45 y obtenemos 1,1. En esc mismo
cuadro, pero en su parte inferior, la zona de los datos estadísticos, tenemos 66,
que al multiplicarse por 0,10 y redondeando, queda en 0,7.
Como en el cuadro 3 tenemos la puntuación directa de 3,3, la
multiplicamos por 0,30 y obtenemos redondeando un 1,
Una vez que se realiza esta labor con los posibles sistemas candidatos,
se refleja en un cuadro resumen el resultado de todas las puntuaciones.
Con estos dalos estamos valorando una serie de sistemas que buscamos
sean fundamentalmente sólidos en sus resultados generales en el conjunto de
las distintas empresas, que demuestren una calidad y homogeneidad avalables.
A parlir de este punto existen dos líneas de actuación, dos opciones posibles
entre las que deberá decidir el inversor al aplicar el sistema en lo que se refiere
a la selección de variables;
a) Optimizar individualmente el juego de valores de parámetros, en la
suposición de que se adaptará mejor a cada empresa, generando quizás mayor

29X

J .
F-ST R A T l’.CilAS |)F . IN V E R S IO N C O N V IS U A L C M A RT

ganancia, pero como contrapartida puede tener menos consistencia cuando


nuevas circunstancias influyan en el mercado.
b) Utilizar unos valores medios del parámetro correspondiente a partir
de los resultados individuales y actuar con ellos en todas las empresas. La
ganancia potencial sera menor pero probablemente al tener más robustez
actuará más sólidamente ante variaciones de todo tipo

H o m b re M01 O pl Acó E xf Est A n u I S e r | Pof


W íd e R d n g e D a y 6.1 1,5 1.6 33,8 24.2
R u n D ay S.8 yz 1,7 30.3 32,4
R u p t u r a d e B ^ r td a s 5.4 t.o 1.9 277 38.8
W e in s t e i n 4 .7 1.4 t.O 37.3 26,1
C a fe te ro 4 .1 1.4 «,0 73.2 34. (
S tM e d ia 3.f 1.4 0.8 43.7 33.2
R u p t u r a d e P iu o t Z.7 0,7 0.7 24.0 45,7
M ó v il a p la n a d a 2.2 1.4 0,0 38.3 31.3

H o m b re Acó A n u 1 S e r 1 P o t 1 F ia b ( P R R f P 'M " T HG


W id e R a n g e O a y 71,6 11.0 45.4 1,0 41.4 1.9 2.2 5.5
R u n O ay 68.8 tl.2 43,5 1,0 38,7 2,0 2.6 7.4
R u p tu ra d e B a n d a s 62.6 9.4 49.0 0.9 39,6 1.8 2,2 8.1
W e in s t e i n $0.0 3.4 4 >.3 0.8 28. t 2,1 3.5 6.8
C a fe te ro 31.6 4.3 45.8 0.5 41,2 1.5 1.9 3.5
S t M e d ia 99,5 0.2 5 39 0,3 36,0 1.2 1.5 8,8
R u p t u r a d e P iv o f 101,1 ■0.2 50,1 0.7 3r.4 1.4 1.3 7.8
M ó v il a p la n a d a 154.4 _ •8,6 68.3 0.5 17,2 2.1 4.6 10,5

Como se ha podido comprobar, elegir un sistema y un valor preciso


para sus variables es un trabajo muy laborioso, y el inversor debe saber que es
una decisión muy importante, dándole la importancia que merece.

299
E S T R A T E G IA S D E IN V E R S IÓ N C O N V IS U A L C H A R T

ANEXO II.

DESARROLLO DE LOS SISTEMAS Y


DEMÁS ESTRATEGIAS
COMENTADOS EN ESTE LIBRO
( ( ( i t t i I f < < <
, < í r ' < I f ' ' ' ♦ ' ‘
___________________________ K S T K A T ÍC (;i/\S D t; INVIChlSlÚN C O N V IS U A L C H A R T

PDV
S u imta M tiia MooU

Í0 3
V E S T R A T E G IA S D E IN V E R S IÓ N C Ü N V ISU A L C i lA R T

304
E S T R A T E G IA S D E IN V E R S IÓ N C O N V IS U A L C H A R T

SuUmaQ\»tem

3ü5
i:sTKArKc.;iAS nr. i n v i;r s ió n c o n v is i ia i . c iia r t

Siifwma Bandal

306
E S T R A T E G IA S D E IN V K K S lO N C O N V ISU A L CM A RT

SüUmaPiooÜ

307
V E S T R A T E G IA S D E IN V E R S IÓ N C O N V ISU A L C H A K T

Suimna Qoni»etiU«oi.

308
E S T R A T E C IA S d e IN V IC R SlrtN C O N V IS U A L C H A R T

S ü itma SaiidaÁ’
\ ívSTKA'l KC.ÍAS Dh: IN V K K S IÓ N C O N V ISU A l. C H A R T

S iittma ^iuotuaoiÓH

310
: 1

E S T R A T E G IA S D E IN V E R S IÓ N CON V IS l'A L

SuU m akSS

311
\ E S T R A T E G IA S D E INVI í R S IO N C O N V ISU A L C H A R T

S u tmma

312
E S T R A T E O tA S D K IN V R R S IÓ N C O N V IS U A L C H A R T

Sutwma Acumulación
V
) 1 \ I 1

E S T R A T E G IA S D E IN V E R S IÓ N C O N V ISU A L C H A R T

M .ixim;

1 le c h o -M a x im a |

C om pra 1 !5top Suelo +


lndlcador(AvTruí íR ang eD ala>‘ porc

Venta 1 Stop
techo-lndicador(AvT ru eR a ngeD ata)‘ porc

314
E S T R A T E G IA S D E IN V E R S IÓ N C O N V ISU A L C H A R T

S u ir n ta C lp ^

315
KSTKM INCH AS O lí IN V K R S IO N C O N V IS U M , t'H A K T

^fínÁlm P^ttOÍtA

PaintBar

316
P,STK A TK ('.IA S D K IN V E R S IÓ N C O N V ISU A L C M A R T

Z U éJio, Safu Jm JstJa M JU a M io il

£¿¿44^40: M*teiíta Pi4toli

317

> » > 1 i I ) t I i ) 1 ) ) ) 1 > ) ) / ) j )


I t I I I t ) I I t k I I I

F,.STI\'A’ri-:<.',I \S I)K INVr,K’SI(')N CON VISUAI. CHAKT

CaÍmíL o. C u> i\u CoH¿acéMuo4.

318
KS IRAl KOIAS IMCINVFCKStON CON VISUAI- CMART

CUttdky ValémfH

319
ESTRATEGIAS DE INVERSIÓN CON VISUAL CHART

y*Jjoado^M m íiaÁfotd4oi^4iM aÁfm iÍaÁfi»U

Indicador(AvExponentialAvExponentialData)
E S T R A T E G IA S D E IN V E R S IÓ N C O N V IS U A L C H A R T

^Mdí00d0^Pit>0ÍiSMp4/Ü0>»U

321
V V ^

K S i U : \ n - r . r \ s i^K in v r k s u '>n c o n v is u a i. c iia ic t

Snáloado^ P iuitl

322
i . > ^

R STR /\TF.(V IA S [)R INVF.jv’ S I r t CHART

¡)H ¿ioad9\ Q^tio» d» M m iial con A U fda

323
F .S T R M IX ilA S D K IN V E R S IÓ N C O N V IS U A L C H A R T

VBA
Siiimma ^Hai

' 1 I Parametets
Dim A v F l a t D a t a P e r i o d o As D o u b l e *30
Dim A v F l a t D a t a O r i g e n D a t o s As P c i c e
P a r a i T i e t e r s !!
Dim f t v F l d t D a t a As D o u b l e
Option E x p l ic it
P u b l i c APP As S y s ’J s e r A p p
Irple.T.ersts S y s t e m

P u b l i c Sub S y s t e m _ O n I n i t C a l c u l a t e { )
W i t h APP •
AvFlatDatd = .G e t I n d i c a t o r I d e n t i f i e r ( A v F l a t , Data, _
AvFlatDataPeriodo, AvFlatDataOrigenDatos)
■StartBar = 0
End W i t h

P u b l i c S u b 5 y s t e m _ 0 n C a l c u l a t e B a r ( B y V a l B a r As Long)
Wj r h APP
I f . C l o s o > . G e t I n d i c a t o r V a l u e < A v F l a t D a t a ) Th e n
. Bu y A t C l o s t , 1
Else
. S e l l ACClose, 1
End I f
End Witfi
En d S j b l

P u b l i c Su b S y s t e m _ O n S e t P a r a m e t e r s ( P a r a m A r r a y P a r a m L i s t O As V a r i a n t )
’ ii Para m e te rs i n i t i a l i z a t i o n
AvFlatDataPeriodo = ParamList(l)
AvFlatDataOrigenDatos = ParamList(2)
' P a r a m e t e r s i n i t i a l i z a t i o n !!
En d S u b

P u b l i c Sub S y s t e m O n C a l c u l a t e R a n g e ( ByVa l S t a r t B a r As Lo n g , By Va l
F i n a l B a r As Long)
Dim i As Lo ng
i = APP.StartBar
I f S t a r t B a r >■ i T h e n
i = StartBar
End I f
W h i l e N o t A P P . S h o u l d T e r m i n a t e And i <= F i n a l B a r
APP.CurrentB ar = i
System_OnCalculateBar i
1 - i + 1
Wend
End Eub
P r í v a t e S u b S y s U s e r A p p I n s t a n c e _ O n C o n n e c t i o n ( B y V a 1 A p p l i c a t i o n As |
3 y 5 U s e r A p p , Ey V a l M T D l l I n s t As O b j e c t , C u s t o m O A s . V a r i a n t ) 3
S.ct APP = A p p l i c a t i o n i
Fr. 1 , I

324

1
E S T R A T E G IA S D E IN V E R S IÓ N C O N V IS U A L C H A R T

£ut»ma

' \ \ Parameters
Dim n As L c n g ’ 5
Dim G e t L o w e s t D a t a L e n g t h As L o n g *10
Dim G e t L o w e s t D a t a t P r i c e As P r i c e ’ P r i c e L o w
Dim X As Lo ng ’ 1
■ P a r a m e t e r s !!
Option E x p lic it
P u b l i c APP As S y s U s e r A p p
Implements System

P u b l i c Sub S y s t e m _ O n I n i t C a l c u l a t e ()
W i t h APP
. S t a r t B a r - G etLowestD ataLength
End Wi t h
End Su b

P u b l i c S u b S y s t e m _ O n C a l c u l a t e B a í : {ByVal B a r As Lo ng)
W i t h APP
I f . C i ó s e > . H i g h( X ) Then
. Buy A t C J o s e , 1
End I f
I f . G e t B a r s S i n c e E n t r y ( O) - n T h e n
-ExitLong A tC lose, 1
Else
• E x i t L o n g A t S t o p , 1, . G e t L o w e s t ( D a t a , G e t L o w e s t D a t a t P r i c e ,
GetLowestDataLength)

End I f
End W i t h
End S u b

P u b l i c Sub S y s t e m _ O n S e t P a r a m e t e r s ( P a r a m A r r a y P a r a m L i s t O As V a r i a n t ]
' i¡ P a r a m e t e r s i n i t i a l i z a t i o n
n = ParamList(l)
G etLowestD ataLength * Param L ist(2)
G etLow estD atatPrice - ParamList(3)
X = P a r a m L i s t (4)
' P a r a m e t e r s i n i t l a 1 i z a t i o n !!
End S u b

P u b l i c S u b S y s t e m j O n C a l c u l a t e R a n g e I B y V a l S t a r t B a r As L o n g , ByVal
F i n a l B a r As Long)
Dim i As Long
i = APP.StartBar
I£ S t a r t B a r > i Then
i = StartBar
End I f
W h i l e N o t APP. S h o u l d T e r m i n a t e And i <»= F i n a l B a r
APP.CurrentBar = i
System O n C alc u la te B a r i
i = i + 1
Wend

32 5

) I ^ )i > > ) 1 > ) * ) ) i ) ) J i ) > > J ^ I ) ^


(CSTKATEC'.IAS IIR INVKRSIÓN CON VISUAI, CHAKT

Fnií oiib

Sub o y G ’J n o i A j 'p l R ;'.t a iic e _ O n C o n iH 'C t i o n ( l'y V a 1 A f'p 11 c.it i o n Aí


oyr.(-' 5crA[-p. ByVal M T D l l I n s n As O b j e c t , CustomO A;s V a r i a n t )
r-ot ñ PP ^ A p p l i L ' a t i o n
F,;.J ÍSiib

S iiirn m a ^h ^fiti

’¡i Paran-, oters


Diir, r.’A l z a As D o u b l e ' 3
Dim NBa;]a As D o u b l e ' 2
Dim G c i L c w e s t D a t a t P r i c e As P r i c e ' P r i c e L p w
C í m G e t L o w e s t r a t a L e r . g t h As D o u b l e ' 10
' P a r a m e t e r s II
Dim C o n t r o l As B o o J e a n
Dim C o n t r o l B As B o o l e a n
Dim X As D o u b l e
O p ile n E > - . p lic it
Public APP As S y s Uí i e r Ap p
I r.j-i e m r ' n t s Sysct'-m

P u b l i c S u b S y s t e m _ O n I n i t C a 1 c u l a t e ()
Wi r h APP
C ontrol = True
C o n t r o l ü = True
X - O
. r:t i r t Ba r = I J A l ; a - U Ba j a
Er . á Wi t h
Eri'J Sub

F j b J i c C .:b C ' / í ' - . ' i n ^ O r - C a l c . i l a t e B a r (ByVa l B a r As Lc n ^ )


Wir.í-, APP
C c n tio l = True
P o r X = O To í J Al za
I f . C l o = L'(X> < . H i g h í X + 11 Th e n
Cor.ttol = P alse
End l í ’
tio xt X
If C ^ - n t c o l =-- T r u e The-n
■Buy A t C l o s e , 1
End I f
C o n t r o l B = Truft
F o r X = O To !;fcd]a
If .Clcfe(X) Lo-^'(X + 1) T h e n
CcntrclB = False
Fnci I f
tJexL X
I f C o n t r o l B = T r u e Then
•ExitLong AtC lose, 1
Else
• E x i t L c n g A t S t o p , 1, . G e t L o w e s t ( D a t a , G e t L o w e s t D a t a t P r i c e,
G e t L c h C s t Da t a L e n g t h )

326

1
» . I . k i ^ , ) 1 ■) ' ^ ^ ^ ^ ^ ^ ^

_______________________RSTKATF.GJAS DK INVÍCRSIÓN CON VISUAL CífAKT______________________

Eiid I f
F .n d W it h
Kiut nub
P u b l i c Su b S y s t c - m O n G e t P a r a n i e t e r í : ( P a r a m A r r a y P ü r a . n Li s t () As V a r i a n t )
’ ¡¡ P a r a n i t í t e r s i n i t i a l i z a t i o n
N A l z a = P a r a m L i s t (1)
N ñ a j a ■ P a r a m L i s t (2)
G e t L o w e s t D a t a t P r i c e - P a r a m L i s t (3)
G e t L o w e s t D a t a L e n q t h = P a r a i r L i s t (4)
' P a r a m e t e r s i n i t i a l i z a c i o n ¡J
En d Su b

Public Sub S y s t e m _ O n C a l c u l a t e R a n g e { B y V a l StartB ar As Long, ByVal


F i n a l B a r As Lonq)
Dim i As Long
i = APP.StartBar
I f S t a r t B a r > i Then
i » StartBar
End I f
W h i l e N o t A P P . S h o u l d T e r m i n a t e And i <= F i n a l B a r
APP.CurrentB ac • i
System_OnCalculateBar i
i " i + 1
Wend
End Sub

Prívate Sub S y s U s o r A p p I n s t a n c G _ O n C o n n e c t i o n (ByV a1 A p p l i c a t i o n As


S y s U s e r A p p , ByVa l M T D l l l n s t As O b j e c t , C u s t o m O As V a r i a n t )
S e t APP = A p p l i c a t i o n
End S u b

S ü iama AloUiaJBa^Uta
' ¡ ¡ Parameters
5 i m N As Doi 4bl e ' 3
Dim MR As D o u b l e ' 3
■ P a r a m e t e r s !!
Dim c o n t r o l As B o o l e a n ’ B o o l e a n
Dim c o n t r o l a As B o o l e a n ' B o o l e a n
Dim i As D o u b l e ‘ D o u b l e
Opción E x p l i c i t
P u b l i c APP As S y s U s e r A p p
Iii;plements Systom

P u b l i c Sub S y s t e m _ O n I n i t C a l c u l a t e
W i t h APP
c o n tro l = True
c o n t r o l e » True
i •= O
.StartB ar = N NB
En d W i t h

327
K S T R A T E G IA S DIv IN V E R S IO N C O N V ISU A L C H A H T

End Su b

P u b l i c Sub S y s t e i n _ O n C d l c u l a t e B d r ( B y V a i B a r As L o n g )
W i t h APP
r o n t t o l = True
F o r i - O To N
I f . C l o s e í i ) < . O p e n ( i ) Then
c o n tro l = False
End I f
Next i
I f c o n t r o l = T r u e Then
■Buy A t C l o s e , 1
En d I f
c o n tro lB = True
F o r i = O T o NB
If. C l o s e ( i ) > .Open(i) Then
controlB = False
En d I f
Ne xt i
I f c o n t r o l B = T r u e Th e n
.ExitLong AtClose, 1
End I f
End Wi t h
End Sub

P u b l i c Sub S y s t e m _ O n S e t P a r a m e t e r s ( P a r a m A r r a y P a r a m L i s t O As V a r i a n t í
’ í ¡ Parameters i n i t i a l i z a t i o n
N = P a r a m L i s e (1)
NB = P a r a r X i s t (2)
' P a r a m e t e r s i n i t i a l i z a t i o n !! - »
End S u b

P u b l i c Sub S y s t e m _ O n C a l c u l a t e R ¿ i n g e ( B y V a l S t a r t B a r As L o n g , By Val
F i n a l B a r As Long)
Dim í As Lon g
i «= A P P . S t a r t B a r
I f S t a r t B a r > i Then
i = StartBar
End I f
W h i l e N o t ’ A P P . S h o u l d T e r m i n a t e An d i <= F i n a l B a r
APP.CurrentBar = i
5ystem_0nCalculateUar i
i ■= i + 1
Wend
End Gub ’

p r í v a t e S u b S y s U s e r A p p I n s t a n c e _ O n C o n n e c t i o n ( B y V a l A p p l i c a t i o n As
S y s U s e r A p p , B y V a l M T D l l I n s t As O b j e c t , C u s t o m O As V a r i a n t )
S e t APP = A p p l i c a t i o n
End S u b

328
ESTRATEGIAS Ü E INVERSION CON VISUAL CHAK-f

F/ítft(nn
' ¡i P a r a m e t e r s
Dim NUM As D o u b l e ’ 3
Dim P a r a b o l i c D a t a C o e f _ A c e l e r a c i 6 n As D o u b l e
Dim P a r a b o l i c D a t a T o p e _ A F As D o u b l e ’ 4
' P a r a m e t e r s !!
Dim VP As D o u b l e ’ D o u b l e
Dim T e c h o As D o u b l e ' D o u b l e
Dim VATR As D o u b l e ' D o u b l e
Dim P a r a b o l i c D a t a As D o u b l e
Dim A v T r u e R a n g e D a t a As D o u b l e
Option E x p lic it
P u b l i c APP As S y s U s e r A p p
Implements System

P u b l i c S u b S y s t e m _ O n I n i t C a l c u l a t e ()
W i t h APP
VP = O
Techo - O
VATR = O
P a ra b o lic D a ta - . G e t l n d i c a t o r l d e n t i f i e r ( P a r a b o l i c , Data, _
P a r a b o lic D a ta C o e f_ A c e le ra c ió n , ParabolicDataTope_AF)
AvTrueRangeData - . G e t l n d i c a t o r l d e n t i f i e r ( A v T r u e R a n g e , D a ta , 14)
..StartBar = O
End With
End S u b

P u b l i c S u b S y s t e m _ O n C a l c u l a t e B a r ( B y V a l B a r As Long)
W i t h APP
VP = .GetIndicatorValue(ParabolicData)
VATR ■ . G e t l n d i c a t o r V a l u e ( A v T r u e R a n g e D d t a ) * NUM
I f . H i g h < - VP T h e n
, B u y A t S t o p , 1, VP
End I f
- I f . G e t M a r k e t P o s i t i o n (01 » 1 Th e n
I f . G e t B a r s S i n c e E n t r y (0) o O Then
I f . H i g h >= T e c h o Th e n
Techo = .High
En d I f
Else
Techo = .High
End I f
. E x i t L o n g A t S t o p , 1, T e c h o - VATR
End I f
End W i t h
En d Sub

P u b l i c S u b S y s t e m j O n S e t P a r a m e t e r s ( P a r a m A r r a y P a r a m L i s t () As V a r i a n t )
' i i Parameters i n i t i a l i z a t i o n
NUM - P a r a m L i s t (1)
P a r a b o l i c D a t a C o e f _ A c e l e r a c i 6 n - P a r a m L i s t (2)
P a r a b o l i c D a t a T o p e _ A F “ P a r a m L i s t (3)

329
EST K A T R C .IA S D E IN V E R S IÓ N C O N V IS liA L C lIA R T

’ I .11 1II I t 1.11 i ? it 1■1(1 I !


Ki, l Siih

ic 5 u b ? y s t ep_OriCa 1 c a l a t e R a n g e ( ByVa 1 S t a r t B a r As Long, ByVal


Fir-alP: r A:' Long>
rirn 1 A 5 L c n g

i Af P . S t a r t B d r
lí t d I i.D¿air > i Th-^'n
i = ScartEar
En.d I t
V.’hi le No t Ai P . S h o u I d l c r m i n a t e And i <=■ F i n a l B i i r
APP . C u r r e n t B a r = i
Sys t e m_Or . Ca l c u l a t e B a r i
i = i + 1
Won ■i
Eiul Sub

F r i v . i t p r>ub S y s U í P r A p p I nrj t a n e e OnConi H' Ct i o n ( líyV.L 1 App Li c . i t i o n Ar,


Sy r . U s o r A p p , ByV.U M T P U I n ; ; t As O b j t ? c t , Cu.Gt.oinO A;; V a t i a n t )
S e t ATP = A p p l i c a t i o n
End Sub

$iéÍMmaSKS:b

' ;; P a r a m e t e r s
Dim S t o c h a s t i c D a t a P e r i o d o As L o n g '
Dim S t o c h a s t i c D a t a S k As Long ' 3
D i m S t o c h a s t i c D a t a M e d i a As Long ' A v g E x p o n e n t i a l
Dim S t c c h a s t i c D a t a B a n d a S u p e r i o r As D o u b l e '
Diin G t o c h a s r . i c D a t a B a n d a i n f e r i o r As D o u b l e ’
Dim G e t l . o ’- v e s t D a t a t P r i c e As P r i c e '
Dim G e t L o w e s t D a t a L e n g t h As Long ' 1 0
Dim í t r , r : h i r : t i c D a t a S d D o u b l e *3
Dim IJA As D o u b l e ' 10
Dim MD As D o u b l e ' 9 0
Dim P o f c S L As D o u b l e ' 1
Dim G o t f ü g h e s t D a t a t P r i c e As P t i c e '
Dim G e t H i g h e s t D a t a L e n g t h As L o n g ' 1 0
Dim Por CC As D o u b l e ' 1
’ Pa L^a me t e r s ! I
D i n S t c c h a s r : i c D a t a As Long
Opticn E x p lic it
P u b l i c APP As S y s U s e r A p p
Ir-,pler.ents System

P u b l i c Sub S y s t e m _ O n I n i t C a l c u l a t e O
W i t h APP

330
\ \ I i í \ í \ V ' V ^ ' ' ' ' ' ' ^ ^

RSTKATEGIAS DE INVERSIÓN CON VISUAL CIIAHT

.'3to<':ha.<;t i c D o n a = . G « t I n - j i c a t o r M e n » i í i < : - r j : :?, o c h - j ';*. ;


ot o c h a c L ic D a t a p iíc io d o , G t.o c fia c tic D ú ta S /'., o t o ^ r h j s t i c D - i t j;;'J,
StochasticDataMedia, StochasticDataBandaSuperior,
Stochast icDataBanddInferior)
.StartB ar»=0
E nd W i t h
E nd S u b

P u b l i c Sub S y G t e m _ O n C a I c u l a t e B a r ( B y V a l B a r As Long)
W i t h APP

I f . G e t I n d i c a t o r V a l ú e ( S t o c h a s t i c D a t a , 1, 1) <
.GetIndicatorValue(StochasticData, 1, 2) And
■GetIndicatorValue(StochasticData, O, 1) >
■G e t l n d i c a t o r V a l u e ( S t o c h a s t i c D a t a , O, 2) And
■GetlndicatorValue{StochasticData, O, 1) < NA Th e n
. Bu y A t C l o s e , 1
Elae
I f . G e t l n d i c a t o r V a l u e ( S t o c h a s t i c O . i t a , 1, 1) >
. G e t I n d i c a t c r V a 1u e ( S t o c h a s t i c D a t a , 1, 2) And
. G o t I n d i c a t o r V j 1u e ( S t o c h a s t i c Dj t a , O, 1) <
. G o t I n d i c a t o r V a 1u e (S t o c h a s t i c D a t a , O, 2) And
.GetIndicatorValúe(StochasticData, O, 1) > tiB Th e n
.S e ll AtClose, 1
End I f
End I f
I f . G e t M a r k e t P c s i t i o n (0) - 1 T h e n
. E x i t L o n g A t S t o p , 1, . G e t L o w e s t ( D a t a , G e t L o w e s t D a t a t P r i c e ,
G etL ow estD ataLength) - . G etLow eat(Data, G e tL o w e stD a ta tP r ic e ,
G e t L o w e s t D d t a L e n g t h ) * P o r c S L / 100

Else
If . G e t M a r k e t P c s i t i o n (0) = - 1 T h e n
• E x i t S h o r t A t S t c p , 1, . G e t H i g h e s t ( D a t a ,
G etH ig h estD atatP rice, GetHighestDataLength) + .GetH ighest(D ata,
G e t H i g h í j s t D a t a t P r i c e , G e t H i g h e s t D a t a L e n g t h ) * Por CC / 100
End I f
End I f

F.nd W i t h
End S ü b

P u b l i c Sub S y s t e m ^ ^ O n S e t P a r a m e t e r s ( Pa r a n t i Ar r a y P a r a m L i s t O As V . i r i a r . t :
'¡¡ Parameters i n i t i a l i z a t i o n
S t o c h a s t i c D a t a P e r i o d o =• P a r a m L i s t (1}
StochasticD ataSk = ParamList(2)
StochasticD ataM edia = ParamList(3)
StochasticD ataB andaSuperior = ParamList(4)
S t o c h a s t i c D a t a B a n d a I n f e r i o r = P a r a r a L i s t (5)
GetLowestDatatPrice = ParanList(ó)
G e t L o w e s t D a t a L e n g t h •• P a r a m L Í s t ( 7 )
S tochasticD ataS d = ParamList(8)
NA “ P a r a m L i s t ( 9 )
NB = P a r a m L i s t ( 10)
PorcSL = P a r a m L i s t ( l l )

331
F.STRA'I [-.GlAS [)[■: IN V E R S IO N C O N V ISO A I. C'FIAKT

Gr t Hi qhc’.'ít P i i l a t Pr i c e = P a r a m l . i s t ( 12)
Gót l l i ol n' c. t n.it . il.i' nqt h ' P. i r. í ml . i r. t (1 3(
l ' orCC = Pj r . i mLi . - j t ( 1 1 )
' r . i r ü m c ' t í T S i n i r i ,1 1 i i on !
Km.i ;:u!>

I’u b l i C Gub Syüt*j m O r i C . i I c u l a t e P a n q t ’ ( L<yVa 1 S t a r t B . i r As L o n g , [íyVal


Fi n- i l P- . i r As Long)
Dim i As Long
i = APP.StartBar
I f S t a r t B a r > i Then
i = StartBac
End I f
V í h i l e IJot A P P . S h o u l d T e r m i n a t e And i <= F i n a l B a r
APP.CurrentBar * i
System_CnCalculateBar i
i = i + 1
Wend
End Su b

P r i v a t e Sub S y s U s e r A p p I n s t a n c e _ O n C o n n e c t i o n ( B y V a l A p p l i c a t i o n As
S y s U s e r A p p , ByVa l M T D l I I n s t As O b j e c t , C u s t o m í ) As V a r i a n t )
S e t APP = A p p l i c a t i o n
End Sub

SiéUma MmLa¿, kSS


' \ \ Parameters
Dim A v S i r r . p l e P S I D a t a P e r i o d o As Long ' 1 0
Dim A v S i i T i p l e R S I D a C a O r i g e n D a t o s As P r i c e *
Dim A v W e i g h t e d R S I D a t a P e r i o d o As L o n g ' 5 0
Dim A v W e i g h t e d B S I D a t a O r i g e n D a t o s A.s P r i c e '
Dim G e t H i g h e s t D a t a t P r i c e As P r i c e ' P r i c e H i g h
Dim G e t H i g h e s t D a t a L e n g t h As Long ' 1 0
Dim G e t L o w e s t D a t a t P r i c e As P r i c e ' P r i c e L o w
Dim G e t L o w e s t D a t a L e n g t h As Long ' 1 0
‘Parameters i !
Dim Up As D o u b l e ' D o u b l e
Dim Down As D o u b l e ' D o u b l e
Dim R S I D a t a As Long
Dim A v S i m p l e R S I D a t a As L o n g
D i m A v W e i g h t e d R S l D a t a As Lon g
Option E x p l ic it
' P u b l i c APP As S y s U s e r A p p
Implements System

P u b l i c Sub S y s t e m _ O n I n i t C a l c u l a t e O
W i t h APP
Up = O
Down = O
RSIData = . G e t i n d i c a t o r i d e n t i f i e r ( R S I , Data, 14, 70, 30)

i
332

A
R S T R A T F .G IA S DF. IN V R R S IÓ N C O N V IS U A L C M A RT

A v S i m p l e R S l D a t a - . G e t l n d i c a t o r l d e n t i f i e r ( AvGi i r . pl e , R 3 I D a t a ,
A v S i m p l e R S I D a t a P e r i o d o , Av Si mpI ' ORSI D. i t a Or i Te f i f j - i t os )

A v W ei g h t e d R S I D a t a - . G e t I n d i c a t o c I d e n t i f i e r (AvVJeiqhted, RSIData,
AvWoightedRSIDataPeriodo, AvWeightedRSID.itaOrigenDatos)

.DtartBar ■ O
E nd W i t h
End Sub

P u b l i c S u b S y 5 t e m _ 0 n C a l c u l a t e E a r ( B y V a l B a r As Lc-ng)
W i t h APP

If .GetIndicatorValue(AvSimpleRSIData) > .G etlndicatorV alue


( A v W e i g h t e d R S I D a t a ) T.hen
I f , G e t I n d i c a t o r V a l u e ( A v S i m p l e R S I D a t a , 1, 1) < _
. G e t I n d i c a t o r V a l u e ( A v W e i g h t e d R S I D a t a , 1, 1) T h e n
Up = . G e t H i g h e s t ( D a t a , G e t H i g h e s t D a t a t P r i c e ,
GetHighestDataLength)
End I f
■Buy A t S t o p , 1, Up
Else
I f .GetIndicatorValue(AvSim pleRSIData, ! , ! ) > _
, G e t I n d i c a t o r V a l u e (A v W e i g h t e d R S I D a t a , 1, 1) T h e n
Down =» . G e t L o w e s t ( D a t a , G e t L o w e s t D a t a t P r i c e , _
GetLowestDataLenqth)
E nd I f
. S e l l A t S t o p , 1, Down
End I f
End W i t h
End Sub

Public Sub S y s t e n i _ O n S e t P d r a m e t e r s ( P a r a m A r r d y P a r a m L i s t O As V a r i ¿ n t )

’ i i Parameters i n i t i a l i z a t i o n
A v S i m p l e R S I D a t a P e r i o d o = P a r a m L i s t (1'}
A v S i m p l e R S I D a t a O r i g e n D a t O S = P a r a m L i s t (2)
A v W e i g h t e d R S I D a t a P e r i o d o = P a r a n ; L i s t (3)
A v W e i g h t e d R S I D a t a O r i g e n O a t o s = P a r a m L i s t (4)
G e t H i g h e s t D a t a t P r i c e = P a r a m L i s t (5)
G etH ighestD ataL eng th = ParamList(6}
G e t L o w e s t D a t a t P r i c e = P a r a m L i s t (7)
>► G e t L o w e s t D a t a L e n g t h - P a r a m L i s t (8)
' P a r a m e t e r s i n i t i a l i z a t i o n !.!
End Sub

P u b l i c Sub S y s t e m _ O n C a l c u l a t e R a n g e ( B y V a l S t a r t B a r As L o n g , ByVal
F i i U i l B a r As Long)
Dim i As Long
i = APP.StartBar
I f S t a r t B a r > i Then
i = StartBar
End I f
W h i l e N o t A P P . S h o u l d T e r m i n a t e And i <= F i n a l B a r

333
E S IR A T K U tA S DF. IN V E R S IÓ N CX)N V ISU A L C IIA K T

‘ú i . C iii I t H .j: ■ i
í ' y s t c n. ^'r.Ca 1 cu l a t oB. ir i
1 = X 1

Vi’end
f -. í , i r-.ib

:'jí) :Z-j\ ¡ilcjrl.itict.' Ü [)L‘u i n K ' f t i i. i ¡ ( l ' . y V ^ i 1 A ¡'p 1 i c .i r i u ii A:

r.y ;-,:jse rA ¡ p . B y V .il n T D lU n a t A s O b je c t , C u s to m O Aü V a r ia n t )


5 o t APF = A r p l i c a t i ó n
f.n.i Su b

S idétm a B a n d a i G o ttiitu á o l

' \; P a rfl::,e te fs
Di.'n P o r c e n t a j e P a n d a As D o u b l e ' 0 . 5
' P a r a m e t e r s !!
Djm B a n d a S i ; p e r i c r As D o u b l e ' D o u b l e
Dim B a n d a l n í e r i o r As D o u b l e ' D o u b l e
Option ExpliciC
Public A P P A s S y s'J^erApp
Ini;:. 1i'-irw-r;!-. í: Cyr. t cm

P u b l i c Sub G y s t e m O n I n i t C a l e u l a t e ()
W i t h AFP
BaiidaSupur j or = O
Bandainterior = O
•StartBar = O
En d Wi t h
End Su b

P u b l i c S j b S y s t e m _ O n ? a l c j l a t e B a r ( E y V a l B a r As Long)
Wi t h APP
I f . C u r r e n t B a r = O Th e n
Ba;ida3uperior = .Hiqh + .High * P orcentajeB anda / 100
B d r . i a i n f o r i o r = . Low - . Low • P o r c e n t a j e B a n d a l 100

Eliid I f
I f . CJ osc - >= B a n d a S u p e r i o r T h e n
. Buy A t C l o c e , 1
B a n d a S u p e r i o r = . H i g h + , H i g h * P o r c e n t a j e B a n d a / 100
B a n d a I n f e r i o r = -Low - . Low * P o r c e n t a j e B a n d a / 100
End I f

If . C I o :; f- < - B a n d a l n f e r i o r T h e n
, £ e l l AtClOPe, 1
B a n d a G u p e r i o r = . H i q h + . H i g h * P o r c e n t a j e B a n d a / 100
B a n d a l n í e r i o r = . Low - . Low * P o r c e n t a j e B a n d a / 100
End I f

End W i t h
Er.d Cüb

i
334
) ) J 1 , » 1 I > I 1 ^ ^ ^ ^ ^ ^ ^ ^ ^ ^

E S T K A iiiC llA S D K [NVFCKSIÓN ( X m V IS U A L C H A K T

l'uMic Cüb Sy.'3t>:-m_0riS<.tí'-ur-im>--tfcrc (P'j.'-íirr.Arr'jy P'jr.ir.L; (j Várij.-.n)


'¡i Parameters i n i t i a l i z a t i o n
PorcentajeSanda - PararaList(l)
’ P a c a m e t e r s i n i t i a 1 i z a t i o n !!
Knd í!ub

S u im ta B aM a V o L a iil

' ¡ : Parameters
Dim F i n D i a As I n t e g e r 'O
Dim L a r g o C o r t o As I n c e g c r ’ O
Üim M u l t i p U c a v í o r As D o u b l e ' 1
Diin n As D o u b l e ' 3
Dim P e r i o d o As D o u b l e ' 1 0
Dim A v T r u e R a n g e D a t a P e r i o d o As D o u b l e ' 1 4
' Parameters I !
Dim S t o p A l i a As D o u b l e ' D o u b l e
Dim S t o p B a j a As D o u b l e ' D o u b l e
Dim G e t H i g h e s t D a c a t P r i c e As P r i c e ' P r i c e
Dim G e t L o w e s t D a t a t P r i c e As P r i c e ' P r i c e
Dim G e t L o w e s t D a t a L e n g t h As D o u b l e ' D o u b l e
Dim G e t H i g í i e s t O a t a L e n g t h Aí D o u b l e ' D o j b l e
Dim G a n d i c i ó n As B o o l e a n ' B o o l e a n
Dim A v T r u e R a n g e D a C a As Long
Dim M i C i o r r e As I n t e g e r
Optico E x p lic it
P u b l i c APP As S y s U s e r A p p
Implcmencs System

P u b l i c Su b S y s t e m _ O n I n i t C a l c u l a t e O
W i t h APP
S t o p A l z a = 99999
StopBaja = O
M i C i e r r e = 17 3 5
G etH ighestD atatP rice = PriccHigh
G e tL o w e stD a ta tP rice = PriceLow
GotLowescDataLength = Periodo
GetHighestDacaLenqth = Periodo
Condicion " False
AvTrueRangeData = . G e t l n d i c a t o r l d e n t i f i e r ( A v T r u e R a n g e , C ata,
AvTrueRangeDataPeriodo)
•StartB ar = Periodo
En d W i t h
Knd riüb___________________________________________________________________________

P u b l i c Sub S y s t e m _ O n C a l c u l a t e B a r ( B y V a l B a r As Long)
W i t h APP
I f . D a t e > - . D a t e d ) Th e n
MiCierre " .Tim eíl)
En d I f
S e l e c t Case LargoCorto

335
F .S T R A T F G IA S D R IN V E R S IÓ N C O N V IS U A L C H A R T

Case O
OperarLargoCorto
Case 1
OperarLargo
C as e -1
OperarCorto
End S e l e c t

If F i n D i a - 1 And . T i m e = M i C i e r r e T h e n
.ExitLong AcClose, 1
.E x itS h o rt AtClose, 1
End lE
Eikí W i t h
Zivi Sub

P r í v a t e Sub O p o r a r L a r g o C o r t o ()
W i t h APP

If . G e ^ i K a r k e t P o s i t i o n (0) = O Th e n

If . H i g h ( n ) ' .Low(n) > . G e t I n d i c a t o r V a l u e ( A v T r u e R a n g e D a t a , n)


* M u l t i p l i c a d o r Th e n
Ccridici^-jn = T r u e
Ct opAlza = . G e t H i g h e s t (Data, G e t H l g h e s t D a t a t P c i c e ,
G e c H ig h e .'J tD a ta L e n g th )
S tc p B a ^ a = . G e c L o w e s t ( D a t a , G e t L o w e s t D a t a t P r i c e , _
G e t L o w e s t D a t a L e n g t h )
End I f

If . C i ó s e > S t o p A l z a And C o n d i c i o n = T r u e T h e n
■Buy A t C l o s e , 1
C o n d i n i o n = Fal 5; e
End I f
] f . r : i o r . o < n t o r P. ) j a AiíH C o n d i c i ó n T r u c Thr;n
.r.'-.-n A i n o - r . - , 1
Condicion = False
End I f
Else
If. G e t M a r k e t P o s i t i o n (0) « l Th e n
.ExitLong AtStop, 1 , .GetLowest(D ata,
G<-tLowestDatatPri ce,GetLowestDataLength)
End I f
U .r,.-.rM,irk<t To s í t i o n (0) - - 1 Th e n
. Lx i t S h o t t A t 2 t o| j , 1, .t'.ct II L.jhi';; t (O.ii .i,
C<'t I) i glif‘;;t D-ita t Pr i c e , G e t H i q t i c s t D a c a I . e n g t h )
Knd I f
Knd If

End W i t h
End Sub

P r í v a t e S a b O i ^ e r a r L a r g o ()
W i t h APP

If . G e t M a t k e t P o s i t i o n (0) = O Then

336

k I t i i 4
B S T R A T R C ilA S DF, IN V R R S IO N C O N V IS U A L C M A RT

I f . H i g h ( n ) - . L o w ( n ) > . G e t I n d i c a t o c V a l u e ( A v T r u e R a n g e D a t a , n)
* M u l t i p l i c a d o r Then
Condicion - True
S t o p A l z a - . G e t H i g h e s t ( Daca, G e t H l g h e s t D a t a t P r i c e ,
GetHighestDataLength)
En d I f
I f . C i ó s e > S t o p A l z a And C o n d i c i o n - T r u e T h e n
- Buy A t C l o s e , 1
Condicion - False
End I f
Else
I f . G e t M a r k e t P o s i t i o n - ( O ) •> 1 Tfien
. E x i t L o n g A t S t o p , 1, . G e t L o w e s t ( D a t a , G e t L o w e s t D a t a t P r i c e ,
GetLowestDataLength)
End I f
End I f
End W i t h
En d Su b

P r i v a t e S u b O p e r a r C o r t o {)
W i t h APP
I f . G e t M a r k e t P o s i t i o n (0) «■ O Th e n

I f .H ig h (n ) - .Low(n) > . G e t I n d i c a t o r V a l u e ( A v T r u e R a n g e D a t a , n)
* M u l t i p l i c a d o r Then
C o n d i c i o n *■ T r u e
StopBaja = .GetLowest(Data, G etLow estD atatPrice, _
GetLowestD ataLength)
End I f
I f . C i ó s e < S t o p B a j a And C o n d i c i o n = T r u e Th e n
. S e l l AtC lone, 1
Condicion - False
End i r
Else
I f . G e t M a t k e t P o s i t i o n (0) = - 1 T h e n
• E x i t S h o r t A t S t o p , 1, . G e t H i g h e s t ( D a t a , _
G etH ig h estD atatP rice, GetHighestDataLength)
En d I f
F.nd I f
Etitl W i t h
F.rirl .Sufci

I'uhlic í i u b üy;iC<-in_ün;;<.-t r . i r f t ;! ( l'.iI .iiiiAi I . l y l' .ii uní. i t . t ) v . i i i .iiit)


' ¡¡ Paramcters i n i t i a l i z a t i o n
F i n D i a - P . i r a mL Í G t (1)
L ú r g o C o r t o ' I’a r a n i L i s t (2)
M u l t i p l i c a d o r = P a r a c n L i s t (3)
n = ParamList(4)
Periodo = ParamList(5)
A v T r u e R a n g e D a t a P e r i o d o - P a r a m L i s t (6)
’ P a r a m e t e r s i n i t i a l i z a t i o n !!
E n d Su b

337
K S l KA'l iX '.iA S |)!í 1NV'KK’SI(')N C O N N 'lSU A l. C IlA K r

r;;ilir r. y, tr. tn OnCa 1cii ¡ .it (=“R.iiiqc-(ByVd 1 S t j r t B i r As I , ong, ByVaJ


K u i .i Ü m : An l.-nfi)
LHm i l.nrM
1 •= ñl ’F . St a r t B a r
I f r t . i r t B.ir > i Th c n
i - ot .í 1t B.i I'
Etui I f
V;)iiJc IJot A P P . s t i ou] d T e r m i n a t e And i <= F i n a l B a r
AF'P . C a r r e n t B a r - i
Sy5t e . ' Ti _OnCa l c ul ¿3t cBa r i
i ”- i t 1
WfnJ
£ n d Sub _______________________________________________________________

P r í v a t e Sub S y s U s e r A p p I n s t a n c e _ O n C o n n e c t i o n ( B y V a 1 A p p l i c a t i o n As
S y s ' J s e r A p p , ByVal M T D l l I n s t As O b j e c t , C u s t o m í ) As V a r i a n t )
S e t AFP = A p p l i c a t i o n
Enri Sub

Siitwma ñféH ^oéf.


' ¡ ¡ Parameters
Dim A n t e r i o r e s As D o u b l e
Dim P o s t e r i o r e s As D o u b l e
Dirr. NR u n d a y s As D o u b l e
’ P a r a m e t e r s II
Dim Z As D o u b l e
Dim RDBa i Up O As D s u b l e
Diri RDBa r DownO As D o u b l e
Dim M a y o r Ru n d a y As D o u b l e
Dim M e n o r B u n d a y As D o u b l e
Option E x p l ic it
P u b l i c AFP As S y s U s e r A p p
I r p l e m e n t s System

P u b l i c Sub 5 y s t t : n _ 0 n I n i t C a l c u l a t e ()
Wi t h APP
ReDin-i RDBar' Jp (rJP. undays + 1)
P'i-Dirn PDBi t j o wn ( r i P' j n d a y s 1)
F o r Z = 1 To ííP. undays + 1
PDBarUp(?.> = O
RLBarDown (2) . = Q
r.ft/.t Z
E.-,d Wi t h
E nd C j L

P' u-blic Sub £ y Gt em_OnCa I c u l a t e B a r (ByVa 1 B a r As Lonq)


Wj t í i AÍ P
C a l i GuardaRunDay
C a l i Ma ' / o r Mc n o r R u n d a y s
I f . r A n - < - > M i y o r R u n d . i y And R D B a r U p ( l ) < RDB.irDown (1) Th e n
. l í uy A t C l o s e
EDd I f

338
______________________ ESTRATEGIAS P E INVBWSiftN CON VISt'M. fH<k»T

If - C i ó s e < M e n o r R u n d a y And PDRo rOown ( U •- K t , ; ’ ;


. n o l i AtCloso
End l í
End W i t h
End Su b

P u b l i c S u b M r i y o r Me n o r R u n d a y s O
W i t h APP
Mayor Runday O
Me nor Runda y 99999
F o r 2 - 1 To N R u n d a y s
I f . H i g h ( R D B a r U p ( Z ) ) > M a y o r R u n d a y Th e n
MayorRunday - . High(RDBarUp(Z))
End I f
I f . L o w ( R O e a r D o w n ( Z ) ) < M e n o r R u n d a y The n
M e n o r R u n d a y •> . Low (RDBarDown (Z) >
End I f
Next Z
End W i t h
End Su b___________________________________________________________________
P u b l i c S u b G u a r d a R u n D a y ()
W i t h APP
I f RunDayDown Th e n
F o r 2 « N R u n d a y s To 2 S t e p - 1
RDBa r Down( Z) - RDBa r Do wn (2 - 1) + 1
Next 2
RDBar Down( 1> « P o s t e r i o r e s
Else
F o r Z » 1 To N R u n d a y s
R D Ba r Do wn (2) » RDBa r Do wn (2) + 1
Next Z
En d I f
I f RunDayUp T h e n
F o r 2 = N R u n d a y s To 2 S t e p - 1
RDBa r Up( Z) - RDBa r Up( Z - 1) + 1
Wext 2
R D B a r U p ( l ) •= P o s t e r i o r e s
Else
F o r Z - 1 To NR u n d a y s
RDBa c Up t Z) - R DBa r Up( Z) + 1
Next Z
End I f
End W i t h
EtKl Sub

P u b l i c F u n c t i o n R u n D a y D o w n () As B o o l e a n
W i t h APP
RunDayDown - T r u e
F o r Z - 1 To A n t e r i o r e s
I f . L o w ( P o s t e r i o r e s ) > . Lo w ( Z + P o s t e r i o r e s ) Then
RunDayDown “ F a l s e
End I f
Noxt Z
F o r Z - O To P o s t e r i o r e s ~ 1
I f . H i g h ( 2 ) > . H i g h ( P o s t e r i o r e s ) Then

339
E S T R A T E G IA S D R IN V K K S IÓ N C O N V ISU A L C IIA R T

RijiiD.iyDown ^ Fa 1 no
Fu i l í
Noxt Z
End W i t h
F-nd F u n c t i o n

P u b l i c F u n c t i o n R u n Da y Up í ) As B o o l e a n
W i t h APP
RunDayUp = T r u e
F o r Z = 1 To A n t e r i o r e s
I f . H i q h ( P o s t e r i o r e s ) < . H i g h < P o s t e r i o r e s + Z) T h e n
RunDayUp = F a l s e
End I f
Next Z
F o r Z = O To P o s t e r i o r e s - 1
I f , Low(Z) < . L o w ( P o s t e r i o r e s ) Then
RunDayUp = F a l s e
End I f
Next Z
End W i t h
End F u n c t i o n _________________________________________________________________________
P u b l i c Su b S y c t e m _ O n S e t P a r a m e t e r s ( P a r a m A r r ¿ i y P a r a m L i s t O As V a r i a n t ]
’ ¡¡ P a r a m e t e i s i n i t i a l i z a t i o n
, A nteriores = ParamList(l)
P o s te rio re s = ParamList(2)
N R u n d a y s =• P a r a m L i s t O )
' P a r a m e t e r s i n i t i a l i z a t i o n I!
End Sub

P u b l i c S u b S y s t e m _ O n C a l c u l a t e R a n g e { B y V a l S t a r t B a r As L o n g , ByVa l
F i n a l B a r As Long>
D i n i As Long
i = APP.StartBar
I f S t a r t B a r > i Th e n
i = StartBar
End I f
W h i l e Not A P P . S h o u l d T e r m i n a t e And i <= F i n a l B a r
AFP. C u r t e n t B a r = i
Syste.Ti O n C a l c u l a t e B a r i
i = t + 1
Wí’nd
Eri'J Cub

P r í v a t e S u b S y s U s c r A p p I n 5 t a n c e _ 0 n C o n n e c t i o n ( B y V a l A p p l i c a t i o n As
S y s U ü í í r A p p , ByVa l M T D l l I n s t As O b j e c t , C u s t o m O As V a r i a n t )
Sf ' t APP = A p p l j c j t i o i )
t n d Sub

340

A .

4 ^
E S T R A T tíO IA S D K tN V K K S IÓ N C O N V IS U A I. C H A K T

ZüUma *IufUU Souf^

' i i Parameters
Dim F i n D i a As I n t e g e r *0
Dim L a r g o C o r t o As I n t e g e r ’ O
Oim n B a r r a s L i q u i d a As I n t e g e r *0
Dim P e r i o d o As D o u b l e ' 2 0
Dim S e s i o n e s As D o u b l e *4
Dim T i c k s As D o u b l e ' 5
'Param eters M
Dim MaxAnt As D o u b l e ' D o u b l e
Dim M i n A n t As D o u b l e ' D o u b l e
Dim b A l z a As B o o l e a n ' B o o l e a n
Dim b B a j a As B o o l e a n ' B o o l e a n
Dim G e t N t h L o w e s t D a t a t P r i c e As P r i c e ’ P r i c e
Dim G e t N t h H i g h e s t D a t a t P r i c e As P r i c e ’ P r i c e
Dim G e t N t h L o w e s t D a t a L e n g t h As D o u b l e ' D o u b l e
Dim G e t N t h H i g h e s t D a t a L e n g t h As D o u b l e ' D o u b l e
Dim G e t N t h H i g h e s t D a t a N t h As D o u b l e ' D o u b l e
Dim G e t N t h L o w e s t D a t a N t h As D o u b l e ' D o u b l e
Dim G e t H i g h e s t D a t a t P r i c e As P r i c e ' P r i c e
Dim G e t H i g h e s t D a t a L e n g t h As D o u b l e ‘ D o u b l e
Dim G e t L o w e s t D a t a t P r i c e As P r i c e ' P r i c e
Dim G e t L o w e s t D a t a L e n g t h As D o u b l e ‘ D o u b l e
Dim i As I n t e g e r ' I n t e g e r
Dim Mi n As D o u b l e ' D o u b l e
Dim Max As D o u b l e ' D o u b l e
Dim H i C i e r r e As I n t e g e r
Option E x p l ic it
P u b l i c APP As S y s U s e r A p p
Implements System

P u b l i c S u b S y s t e m _ O n I n i t C a l c u l a t e ()
W i t h APP
MaxAnt - 9 9 9 9 9
MinAnt “ O
bAlza “ F a ls e
bBaja - False
■ i - O
GetNthLowestDatatPrice " 2
GetNthH í T l i e s t n j t . i t P r i c e - 1
CtM NI. lil.uwi'ü t l).i t .1 l. omi t h l’i' f i ihKi
G e t Nt hl l i g h e s t Da t a L c n c j t h - P e r i o d o
GotNthilighestD.itdNth - 2
G e t N t h L o w e s t D a t a N t h « -2

GetHighestDataLength « Periodo
G etLowestD ataLength - Periodo
G etHighestDatatPrice - 1
GetLowestDatatPrice - 2
Mi n » O
Max - 9 9 9 9 9
•StartB ar » Periodo
M i C i e r r e - 1735

341
I f 1 r t * f ’» f 1 ■t ' ♦ ' t ’ ' , *t • f ■> r ’ . ■t • i- * , : ^

KSi i M t j-xiiAs ni':: i m E H S l Ó N C(JN VíSIMI, ( ■flAKT

r n d Wi t h
Kn i ;3ub

P u b l i c S'.;b S y ; ; t e n O n C c i l c u l a t o B a r ( B y Va l B a r As Lcr.g] 1
VJiLh h ? P

11 ■ iJ . i t f > . D. j t í M l ) ThíTi
Mi C i e r r e = . T i me (1)
End I f

Sel e c t Case La rg o C o rt o
Case 0
OperarLargoCorLo
Case 1
OperarLargo
Case - 1
OperarCorto
End S e l e c t

I f nBarrasLiquida o
1 0 And • G e t B a r s S i n c e E n t r y =■ n B a r r a s L i q u i d a
The n
.ExicLong AtClose, 1
.E x itS h o rt AtClose, 1
End I f

I f :F i n D i a = 1 And . T i m e = M i C i e r r e Th e n %
.ExitLong AtC lose, 1
.E xitS hort AtClose, 1
End I f

End Wi t h
End Sub

' S i m odo = O e n t . o p e ra m o s a l a r g o y c o r t o
P r í v a t e Sub O p e r a r C o r t o ()
W it h APP

b A lz a = T r u e
b B a ja = T r u e
M d xA nt = .G e L N t h U i g h e s t (D a ta , G o t N t h l t i q h e s t D a t a N t h , _
G c t NC h t i i g h o c L D a L a t D r i c f ? , G o t N t ) i H i q h o r ^ t p . i t ti L o n g t h )
M in A n t = .G e t N th L o w e s t (D a ta , G e t N t h L o w e s t D a t a N t h , _
G e t N t h L o w e s t D a t a t P r i c e , G e t N t h L o w e s t D a t a L e n g t h )
i - 1

I f .G lo s e > = M a x A n t T h e n
W h il e i <= S e s i o n e s And b B a j a
I f M a x A n t < = . H i g h ( i ) T h e n
b B a ja = F a ls e
i = i + 1
E lr.e
i = i + 1
End I f
Wond
E l íí í
b B a ja - F a lr.e

342
» . > í ► , V y I , , < ► , i ^ » V » , k » O * ‘ ^ ► f V ^ '

JvSJ IM ’M v íilA S D E JN V H K SÍÓ N C O N V I 'itI M . C H A U !

End I f

If . G l o s e <= Mi n A n t The n
i = 1
W h i l e i <= S e s i o n e s And b A l z a
I f M i n A n t >-- . L o w ( i ) Th^'n
bAi/..i =
i - i + 1
Else
i = i + 1
End lE
Wend
Else
bAlza = F a ls e
^End I f

I f b A l z a Then
, E x i t S h o r t A t S t o p , 1, ( Mi n An t + T i c k c )
Else
I f b B a j a Then
Max = . H i g h
. S e i l A t S t o p , I , ( Ka x An t - T i c k s )
End I f
End I f

If . G e t M a r k e t P o s i t i o n = - 1 Tl'.'in
• E x i t S h o r t A c S t o p , 1, (Max + T i c k s )
End I f

End W i t h
End Sub

' Si rr,odo = O e n t . operamos a l a r g o y c o r t o


P r í v a t e S u b O p e r a r L a r g o ()
W i t h APP
bAlza = True
bBaja = True
MaxAnt = - G e t N t h i i i g h e s t ( D a t a , G e C N t h l U q h t - ' í c r . i t . ^ N t h ,
G e t N t h f i i g h e s t D a t a t P r i c o , G o t N t hH i ghe::C Dat a L o n g t h )
M in A n t = . G e t N t h L o w e s t ( D a t a , G e t N t h L o w e s tO a t ."iNth,
Ct’ L N tliL c iw o G tD a t d t P r i< .'e , G o t N t l i L o w o s t T a t al . ' . ' -i K' i r h )
i = 1

If . G l o s e >= MaxAn t Th e n
W h i l e i <= S e s i o n e s And b B a j a
I f Ma x An t <= . H i g h ( i ) Th e n
bBaja = False
i = i + 1
Else
i = i + 1
End I f
Wend
Else
bBaja False
End I f

M i

íiÉ l
E S T R A T E G IA S D E IN V E R S IO N C O N V ISU A L C H A R T

I f - C ió s e <= M in A ü t T h e n
i = :
Hhile 1 <= Sesiones An d bAlza
If M i n A n t > -^ .Low (i ) Th o n
bAlr.,-1 -
i = X + 1
Elso
i = i + 1
EDd I f
Wend
E l s e
b A l z d = F a ls e
End I f

If b A l z a The n
M in = .Low
. Bu y A t S t o p , 1, ( Mi n An t + T i c k s )
Else
I f b B a j a Th e n
•ExitLong AtStop, l, (MaxAnt - T i c k s )
End I f
End I f

If .GetMarketPosition = 1 Th e n
.ExitLong AtStop, 1, ( Mi n - T i c k s )
End I f

End W i t h
End Sub

' S i modo = O e n t . operamos a l a r g o y c o r t o


P r i v a t e Su b O p e r a r L a r g o C o r t o ()
W i t h APP
bAlza = True
bBaja = True
M a x A n t = . G e t N t h í U q h e s t ( D a t a , G e t N t h H I g h e s t D a t a N t h ,
G e t N t h H i g h e s t D a t a t P r i c e , G e t N t h H i g h e s t D a t a L e n g t h )
Mi n An t = . G e t N t h L o w e s t ( D a t a , G e t N t h L o w e s t D a t a N t h , _
G etN thL c w estD a ta tPric e , GetNthLowestDataLength)
i = 1

' C o m p r o b a r q u e e l má xi mo a n t e r i o r t i e n e l u g a r a n t e s d e u n n “ d e
sesiones
I f . C i ó s e >= MaxAnt And . G e t H i g h e s t ( D a t a , G e t H i g h e s t D a t a t P r i c e ,
G e t H i g h e s t D a t a L e n g t h ) = . H i g h Th e n
W h i l e i <= S e s i o n e s And b B a j a
I f MaxAnt <= , H i g h ( i ) Th e n
bBaja = F a ls e
i = i + 1
Else
i = i + 1
En d I f
Wend
. E lse

344
"lí
E S T R A T E G IA S D E IN V E R SIÓ N CO N VISUAL O U t ' i |

bBaja = FalEe
En d I f

' C o m p r o b a r q u e e l m ín im o a n t e r i o r t i e n e lu g a r •,
s e s io n e s
l í . C ió s e <= M inA nC And , t ( 0.a r t i , G e C Lc. wí ¡n* : ,
GetLowestDataLength) = . Low T h e n
i = 1
W h i l e i <= S e s i o n e s And b A l z a = T r u e
I f M i n A n t >= . L o w ( i ) The n
bAl?a = Fa lse
i = i + 1
Else
i = i + 1
End I f
Wend
Else
bAlza = F a ls e
En d I f

IfbAlza Then
Min = . Low
•Buy A t S t o p , 1, ( Mi nAnt + T i c k s )
Else
I f b B a j a Then
Max = . H i g h
■S e l l A t S t o p , 1, (MaxAnt - Tic>;r:)
End I f
End I f

’ S i e s t a m o s d e n t r o de m er ca do s e f i j a n l a s l i q u i d a c i o n e s
I f . G e t M a r k e t P o s i t i o n = 1 Then
. E x i t L o n g A t S t o p , 1, (Min - T i c k s )
Else
I f . G e t M a r k e t P o s i t i o n = - 1 The n
. E x i t S h o r t A t S t o p , 1, (Max + T i c k s )
End I f
End I f
En d W i t h
En d Sub____________________________________ ___________________________________

P u b l i c S u b S y s t e m ^ O n S e t P a r a m e t e r s ( P a r a p i Ar r a y P a r a n L i r t í l A.' '.%i
' ¡i P a r a m e t e r s i n i t i a l i z a t i o n
FinDia = P a ra m L ist(l)
L a r g o C o r t o = P a r a m L i s t (2)
n B a r r a s L i q u i d a = P a r a m L i s t (3}
P e r i o d o = P a r a m L i s t (4)
S e s i o n e s = P a r a m L i s t (5)
T i c k s = P a r a m L i s t (6)
' P a r a m e t e r s i n i t i a l i z a t i o n !1
Er)d Su b

P u b l i c S u b S y s t e m _ O n C a l c u l a t e R a n g e (ByVal S t a r t B a r As Lcr. g, !-y'.'


F i n a l B a r As Long)
Dim i As Long

.U5
I I f f f f

FS'l'KATF.C'.lAS OF: IN V f'.R SIÓ N C'ON V IS U ,\I. C H A R T

i " APP.Sr.^rr.Bar
lí rtartP .ir '• i Tti-^n
1

End I f
W h i l e No t A P P . S h c u l d T e r m i n a t e And i <= F i n a l B a r
APP. Currer. tBi'ir - i
Sys t e r r . j OnCa 1 c u l a t e B a r i
i = i + 1
Wt-nd
End Sub _________________________________________________

Prívate Sub S y s ' J 5 e r A p p I n s t ¿ i n c e _ 0 n C o r i n e c t i o n (ByVal Application As


SysUserApp, ByVal KTDllInst As O b j e c t , CasLomO As Variant)
S e t APP = A p p l i c a t i o n
End Sub

' I ¡ Parameters
Dim F i n D i a As I n t e g e r ’ O
Dim L a r g o C o r t o As I n t e g e r 'O
' ParameterB !

Dim P e r i o d o As D o u b l o ’ 3
Dim Va l o r B a n d a A D X As Doublí^ ' 2 0
Dim Vi i l or ATR An Doublf.' ' 2
Dim R e t a r d o As D o u b l e ‘ 1
Dim A v E x p o n e n t i a U U N e q a t i v p D a t a O r i q n n D a t o s As P r i c e ’Price
Dim T i c k s As D o u b l e ’ O. Ol
Dim A v E y . p o n e n t i a l D I P o s i t i v e D a t a O r i g e n D . i t o G Ar, P r i c e ’Pricc
Dim G e t H i g h e s t D a t a t P r i c e As P r i c e ’
Dim G e t L o w e s t D a t a t P r i c e As P r i c e '

Oim Max As D o u b J e ' D o u b l e


Dim Mi n As D o u b l e ' D o u b l e
Dim A v E x p o n e n t i a l D I N e g a t i v e D a t a P e r i o d o As D o u b l e ’ Double
Dim A v E x p o n e n t i a l D I P o s i t i v e D a t a P e r i o d o As D o u b l e 'Double
Dim G e t H i g h e s t D a t a L e n g t h As D o u b l e ’ D o u b l e
D i m G e t L o w e s t D a t a L e n g t h As D o u b l e ' D o u b l e
Dim b E n t r a r As B o o l e a n ’ B o o l e a n
Dim U l t i m o C r u c e As D o u b l e ' D o u b l e
Dim C o n t a d o r As D o u b l e ' D o u b l e
C o n s t D a t a As Long = O
Dim ADXData As Lo ng
Dim D I N e g a t i v e D a t a As Long
Dim D I P o s i t i v e D a t a As Long
Dim A v T r u e R a n g e D a t a As Long
Dim A v E x p o n e n t i a l D I P o S i t i v e D a t a As Long
Dim A v E x p o r i e n t i a l D I N e g a t i v e D a t a As Long
Dim M i C i e r r e As I n t e g e r
Option E x p lic it

346
rST RA T K G tA S D E ÍN VERSJÓ N CON V (S (M L CJÍART

P a b l i c At’P f\s S y s U s e rA p p
Im p lo m e n ts S y s te m

T u b l i c Gub S y s t e m O n l n i t C a l c u J a t e O
W i t h APP
Max = O
Mi n = O
AvExponentialDINegativeDataPeriodo = Periodo
AvExponentiai D I P o s itiv e D a ta P e rio d o - Periodo
GetHighestDataLength ~ Retardo
GetLowestDataLengch = R etardo
U l t i m o C r u c e = -1
Contador = O
ADXData = . G e t i n d i c a t o r i d e n t i f i e r (ADX, Cata_, 14, 2 C * )
D IN e g a t i v e D a t a = . G e t i n d i c a t o r i d e n t i f i e r (DlíIegativ'S, Data,
' H , 20#)
D I P o s i t i v e D a t a = . G e t i n d i c a t o r I d e n t i f i e r Í D I P c s i t i ve. Data,
14, 2 0 # )
A v Tr u e R a n g e D a t a = . G e t l n d i c a t o r l d e n t i f i e r ( AvTrusPar .gc , Data,
H1
AvExponentiaIDIPositiveData = .G e ti n d ic a to r id e n ti f i e r
(A vExponentiai, D IP o s itiv e D a ta ,
A vE xp o n e n tia lD IP o sitiv e D a ta P e r iodo,
AvExponentialDIPositiveDataOrigenDatos)
AvExponentialDINegativeData = . G e t i n d i c a t o r i d e n t i f i e r
(A vExponentiai, D INegativeData, _
A v E x p o n e n t i a l D I N e g a t I v e D a t a P e r i o d o , _
AvExponentialD INegat iv e D ataO rig en D a to s )
■StartBar = O
M i C i e r r e = 17 3 5
End Wi t h
End Sub_________________________________________________________________________ _

P u b l i c Sub S y s t e m _ O n C a l c u l a t e B a r ( B y V a l B a r As Long)
W i t h APP
I f . D a t e > . D a t e ( l ) Th e n
M iC ierre = .Time(l)
End I f

S e l e c t Case LargoCorto
Case O
O p e r a r L a r g o C o r t o
Case 1
O p e r a r L a r g o
C a s e -1
O p e r a r C o r t o
E nd S e l e c t

If F i n D i a = 1 And . T i m e = M i C i e r r e The n
. E x i t L o n g A t C l o s e , 1
■ E x it S h o r t A t C l o s e , 1
E nd I f

End W ith
End Sub

347
E S T R A T E G IA S D E IN V E R S IÓ N C O N V ISU A L C H A R T

' S i modo = O e n t . o p e r a m o s a l a r g o y c o r t o
P r i v a t e S u b O p e r a r L a r g o C o r t o ()
W i t h APP
' Se c o m p r u e b a s i e s un c r u c e a l a l z a o a l a b a j a
I f . G e t I n d i c a t o r V a l u e ( A v E x p o n e n t i a l D I P o s i t i v e D a t a , 1, 1) <
• G e t l n d i c a t o r V a l u e ( A v E x p o n e n t i a l D I N e g a t i v e D a t a , 1, 1) And
. G e t I n d i c a t o r V a l u e ( A v E x p o n e n t i a l D I P o s i t i v e D a t a ) >= _
■ G e t I n d i c a t o r V a l u e ( A v E x p o n e n t i a l D I N e g a t i v e D a t a ) Th e n
UltimoCruce = 1 ' Cruce a l a l z a .
Contador = O
Else
If .GetIndicatorValue(AvExponentialDIPositiveData 1, 1 ) >
. G e t I n d i c a t o r V a l u e ( A v E x p o n e n t i a l D I N e g a t i v e D a t a , 1 1 ) And
. G e t I n d i c a t o r V a l u e <A v E x p o n e n t i a l D I P o s i t i v e D a t a ) <=
. G e t I n d i c a t o r V a l u e ( A v E x p o n e n t i a l D I N e g a t i v e D a t a ) Then
UltimoCruce = O 'C ruce a la b a ja
Contador = O
End I f
End I f

’ Se c o m p r u e b a l o s v a l o r e s d e l o s i n d i c a d o r e s ADX y ATR,
I f . G e t I n d i c a t o r V a l u e ( A D X D a t a ) > V a l o r B a n d a A D X And _
. G e t I n d i c a t o r V a l u e ( A v T r u e R a n g e D a t a ) > V a l o r A T R Th e n
b E n t r a r = True
Else .
bEntrar = False
End I f

Select Case R et ar d o

Case O
I f b E n t r a r The n
I f U l t i m o C r u c e = 1 And . G e t M a r k e t P o s i t i o n <> 1 T h e n
.Buy A t C l o s e , 1
Else
I f U l t i m o C r u c e == O And . G e t M a r ) c e t P o s i t i o n <> - 1 Th e n
.S e ll AtClose, 1
End,If
End I f
Else
I f . G e t M a r k e t P o s i t i o n = 1 And U l t i m o C r u c e = O Th e n
.ExitLong A tC lose, 1

Else
If . G e t M a r k e t P o s i t i o n = - 1 And U l t i m o C r u c e = -1 T h e n
. E x itS h o rt AtClose, 1

End I f
End I f
End I f

Case 1
I f b E n t r a r Th e n

348
E S T R A T E G IA S D K IN V E R S IÓ N C O N V IS U A L C M A R T

I f U l t i m o C r u c e « 1 And . G e t M a r k e t P o s i t i o n <> 1 Th e n
. B u y A t S t o p , 1, . H i g h + ( . H i g h * T i c k s / 100)
Else
I f U l t i m o c r u c e - O And . G e t M a r k e t P o s i t i o n <> - 1 Th e n
• S e U A t S t o p , 1, . Low - ( . Low * T i c k s / 10Q>
End I f
Erd I f
Else
I f . G e t M a r k e t P o s i t i o n « 1 And U l t i m o C r u c e = O The n
■ E x i t L o n g A t S t o p , 1, . Low - {. Low * T i c k s / 100)
Else
I f . G e t M a r k e t P o s i t i o n = - 1 And U l t i m o C r u c e » 1 Th e n
. E x i t S h o r t A t S t o p , 1, . H i g h + ( . H i g h * T i c k s / 100)
End I f
End I f
End I f

Case E l s e

Contador » Contador + 1
I f C o n t a d o r <= R e t a r d o T h e n
Max = . G e t H i g h e s t ( D a t a , G e t H i g h e s t D a t a t P r i c e , R e t a r d o )
Mi n = - G e t L o w e s t ( D a t a , G e t L o w e s t D a t a t P c i c e , R e t a r d o )
End I f

I f b E n t r a r And C o n t a d o r >= R e t a r d o Tfien


I f U l t i m o C r u c e = 1 And . G e t M a r k e t P o s i t i o n o 1 The n
. Bu y A t S t o p , 1, Max + (Max » T i c k s / 100)
Else
I f U l t i m o C r u c e = O And . G e t M a r k e t P o ü i t i o n <> - 1 The n
. S e l l A t S t o p , 1, Min - (Mi n * T i c k s / 100)
End I f
End I f
Else
I f C o n t a d o r >= R e t a r d o T h e n
I f . G e t M a r k e t P o s i t i o n = 1 And U l t i m o C r u c e = O T h e n
. E x i t L o n g A t S t o p , 1, Min - (Min * T i c k s / 100)
Else
I f . G e t M a r k e t P o s i t i o n = - 1 And U l t i m o C r u c e = 1 The n
. E x i t S h o r t A t S t o p , 1, Max + (Max ’ T i c k s / 100)
End I f
End I f
End I f
End I f
End S e l e c t
End Wi t h
End Su b

* S i modo = 1 e n t . o p e r a m o s a l a r g o
P r í v a t e S u b O p e r a r L a r g o ()
With APP
' Se c o m p r u e b a s i e s un c r u c e a l a l z a o a l a b a j a
I f . G e t I n d i c a t o r V a l u e ( A v E x p o n e n t i a l D I P o s i t i v e D a t a , ■1, 1) <
. G e t I n d i c a t o r V a l u e ( A v E x p o n e n t i a l D I N e g a t i v e D a t a , 1, 1) And

349
___________________________ E S T R A T E G IA S DK IN V E R S IÓ N C O N V ISU A L C H A R T _________________________

. G e t I n d i c a t o r V a l u e ( A v E x p o n e n t i a I D I P o s i t i v e D a t a ) >=
. G e t I n d i c a t o r V a l u e ( A v E x p o n e n t i a l D I N e g a t i v e D a t a ) The n
U11 i r í i oCr uce = 1 ' C r u c e a l a l z a .
Contador = O
Else
If .GetIndicatorValue(AvExponentialDlPositiveData, 1, 1) >
• G e t I n d i c a t o r V a l u e ( A v E x p o n e n t i a l D I N e g a t i v e D a t a , 1, 1) And
■G e t I n d i c a t o r V a l u e ( A v E x p o n e n t i a l D I P o s i t i v e D a t a ) <=
. G e t I n d i c a t o r V a l u e ( A v E x p o n e n t i a l D I N e g a t i v e D a t a ) Th e n
UltimoCruce = O 'Cruce a la b a ja
Contador = O
End I f
En d I f

' Se c o m p r u e b a l o s v a l o r e s d e l o s i n d i c a d o r e s ADX y ATR.


I f . G e t I n d i c a t o r V a l u e ( A D X D a t a ) > V a l o r B a n d a A D X And
• G e t I n d i c a t o r V a l u e ( A v T r u e P a n g o D a t a ) > V a l o r A T R Th e n
b E n t r a r = True
Else
bEntrar = False
End I f

S e l e c t Case R etardo
Case O
I f b E n t r a r Th e n
I f U l t i m o C r u c e = 1 And . G e t M a r k e t P o s i t i o n <> 1 Th e n
. Bu y A t C l o s e , 1
Else
I f U l t i m o C r u c e = O And . G e t M a r k e t P o s i t i o n <> - 1 T h e n
.ExitLong AtC lose, 1 ^
End I f
End I f
Else
I f . G e t M a r k e t P o s i t i o n = 1 And U l t i m o C r u c e = O T h e n
.ExitLong A tC lose, 1
End I f
End I f

Case 1
I f b E n t r a r Then
I f U l t i m o C r u c e = 1 And . G e t M a r k e t P o s i t i o n o 1 Then
. B u y A t S t o p , 1, . H i g h ( C o n t a d o r ) +
< . H i g h ( C o n t a d o r ) * T i c k s / 100)
Else
^ I f U l t i m o C r u c e » OAnd . G e t M a r k e t P o s i t i o n <> - 1 Th e n
•E x i t L o n g A t S t o p , 1, . Low ( C o n t a d o r ) -
( • Low(Contador) * T i c k s / 100)
End I f
End I f
Else
I f . G e t M a r k e t P o s i t i o n = 1 And U l t i m o C r u c e = O Th e n
-ExitLong A tStop, 1, . Low(Conta
( . Low(Contador) • T i c k s / 100)

350
V . V, », > < <• ' ‘ ‘‘ ■■ ■’

__________________________ E S T R A T E G IA S D E IN V E R S IO N C O N V IS U A L C H A R T __________________________

End If
E rid If

' In c r e rrb e n ta m o s e l c o n t a d o r .
C o n ta d o r = C o n ta d o r + 1

Case E lse
Contador Contador + 1

I f C o n t a d o r <» R e t a r d o T h e n
Max = . G e t H i g h e s t ( D a t a , G e t H i g h e s t D a t a t P r i c e , R e t a r d o )
Mi n - . G e t L o w e s t ( D a t a , G e t L o w e s t D a t a t P r i c e . P e t a r d o )
End I f

I f b E n t r a r And C o n t a d o r >= R e t a r d o T h e n
I f U l t i m o C r u c e = 1 And . G e t M a r k e t P o s i t L o n o 1 Then
- B j y A t S t o p , 1, Max + (Max * T i c k s / 100(
Else
I f U l t i m o C r u c e - O And . G e t M a r k e t P o s i t i o n <> - 1 Th e n
• E x i t L o n g A t S t o p , 1, Mi n - (Mi n * T i c k s / 100)
End I f
End I f
E ls e

I f C o n t a d o r >= R e t a r d o T h e n
I f . G e t M a r k L e t P o s i t i o n = l And U l t i m o C r u c e = O T h e n
. E x i t L o n g A t S t o p , 1, Mi n - (Mi n • T i c k s / 100)
End I f
End I f
End I f
En d S e l e c t
End Wi th
End S u b ________________________________________________________________________________

' S i modo = ~1 e n t . o p e r a m o s a c o r t o
P r í v a t e S u b O p e r a r C o r t o ()
W i t h APP

' S e c o m p r u e b a s i e s un c r u c e a l a l z a o a l a b a j a
I f . G e t I n d i c a t o r V a l u e ( A v E x p o n e n t i a l D I P o s i t i v e D a t a , 1, 1) <
. G e t I n d i c a t o r V a l u e ( A v E x p o n e n t i a l D I N e g a t i v e D a t a , 1, 1) And
• G e t I n d i c a t o r V a l ú e ( A v E x p o n e n t i a l D I P o s i t i v e D a t a ) >=
• G e t l n d i c a t o r V a l u e ( A v E x p o n e n t i a l D I N e g a t i v e D a t a ) Th e n
U ltim oCruce = 1 ' Cruce a l a l z a .
Contador = O
Else
I f . G e t l n d i c a t o r V a l u e ( A v E x p o n e n t i a l D I P o s i t i v e D a t a , 1, 1) >
. G e t l n d i c a t o r V a l u e ( A v E x p o n e n t i a l D I N e g a t i v e D a t a , 1, 1) And
• G e t l n d i c a t o r V a l u e ( A v E x p o n e n t i a l D I P o s i t i v e D a t a ) <=
- G e t l n d i c a t o r V a l u e ( A v E x p o n e n t i a l D I N e g a t i v e D a t a ) Th e n
U l t i m o C r u c e »= O ' C r u c e a l a b a j a
C o n t a d o r >» O
En d I f
En d I f

i
351

i .
V ESTRATEGIAS D E IN V E R S IÓ N C O N V ISU A L C H A K T

' Se c o m p r u e b a l o s v a l o r e s d e l o s i n d i c a d o r e s ADX y ATR.


I f . G e t I n d i c a t o r V a l u e ( A D X D a t a ) > V a l o r B a n d a A D X And
- G e t l n d i c a t o r V a l u e ( A v T r u e R a n g e D a t a ) > V a i o r A T R Th e n
b E n t ra r = True
Else
bEntrar = False
End I £

S e l e c t Case R etardo

Case O
I f b E n t r a r Th e n
I f U l t i m o C r u c e = I And . G e t M a r k e t P o s i t i o n <> 1 Th e n
.ExitShort AtClose, 1
Else
I f U l t i m o C r u c e = O And . G e t M a r k e t P o s i t i o n <> - ' i T h e n
.S e ll AtClose, 1
End If
End I f
Else
If .GetM arketPosition = - i And U l t i m o C r u c e = 1 Th e n
•ExitShort AtClose, 1
End I f
End I f

Case 1

I f b E n t r a r The n
I f U l t i m o C r u c e = 1 And . G e t M a r k e t P o s i t i o n o 1 Th e n
. E x i t S h o r t A t S t o p , 1, , H i g h ( C o n t a d o r ) +
( . H i g h ( C o n t a d o r ) * T i c k s / lOQ)
E I sg
I f U l t i m o C r u c e = O And . G e t M a r k e t P o s i t i o n o -1 Then
. S e l l A t S t o p , 1, . L o w ( C o n t a d o r ) -
( . L o w ( C o n t a d o r ) * T i c k s / 100)
End I f
End I f
Else
I f . G e t M a r k e t P o s i t i o n = - 1 And U l t i m o C r u c e = 1 T h e n
• E x i t S h o r t A t S t o p , 1, . H i g h ( C o n t a d o r ) +
( .H i g h (Co n t ad or ) * Ticks / 100)
E n d If
E n d If

'Incrementamos e l c o n ta d o r .
C ontador = C ontador + 1

Case Else
'Incrementamos e l c o n ta d o r.
Contador = Contador + 1

352
ÍÍSTRATKOIAS DE INVERSIÓN CON VISUAL CHART

I f C o n t a d o r < - R e t a r d o Then
Max = . G e t H i g h e s t ( D a t a , G e t H i g h e s t D a t a t P r i c e . R e t a r d o )
Mi n = . G e t L o w e s t ( D a t a , G e t L o w e s t D a t a t P r i c e , R e t a r d o )
End I £

I f b E n t r a r And C o n t a d o r >= R e t a r d o Th e n
r f U l t i m o C r u c e - 1 And . G e t M a r k e t P o s i t i o n o 1 Th e n
■ E x i t S h o r t A t S t o p , 1, Max + (Max * T i c k s / 100)
Else
I f U l t i m o C r u c e = O And . G e t M a r k e t P o s i t i o n o - 1 The n
. S e l l A t S t o p , i , Mi n - (Mi n » T i c k s / 100)
End I f
End I f
Else
I f C o n t a d o r >= R e t a r d o T h e n
I f . G e t M a r k e t P o s i t i o n - - L And U l t i m o C r u c e = 1 Th e n
• E x i t S h o r t A t S t o p , 1, Max + (Max * T i c k s / 100)
End I f
End I f
End I f
End S e l e c t
En d W i t h
En d S u b ______________________________________ ___________________________ ___________

P u b l i c . S u b S y s t e m _ O n S e t P a r a m e t e r s ( P a r a m A r r a y P a r a m L i s t O As V a r i a n t )
' ¡i P a r a m e t e r s i n i t i a l l z a t i o n
P e r i o d o = P a r a m L i a t (1)
V a l o r B a n d a A D X = P a r a i i i L i s t (2)
ValorATR = P a r a m L i s t O )
R e t a r d o = P a r a m L i s t (4)
AvExponentialDINegativeDataOrigenDatos = ParamList(5)
Ticks = ParamList(6)
A v E x p o ne ntia lD IP ositive D a ta O rige nD a to s = ParamList{7)
G e t H i g h e s t D a t a t P r i c e = P a r a m L i s t (8)
GetLowestDatatPrice = ParamListO)
F i n D i a = P a r a m L i s t ( 10)
L a r g o C o r t o = P a r a m L i s t ( 11)
' P a r a m e t e r s i n i t i a l i z a t i o n !!
End Sub_________________________________________________________________________________

P u b l i c S u b S y s t e m _ O n C a l c u l a t e R a n g e ( B y V a l S t a r t B a r As Lo ng, ByVal
F i n a l B a r As L o n g )
Dim i As L o n g
i = APP.StartBar
I f S t a r t B a r > i Th e n
i « StartBar
End I f
W h i l e N o t A P P . S h o u l d T e r m i n a t e And i <= F i n a l B a r
APP.CurrentBar » i
System_OnCalculateBar i
i » i + 1
Wend
End Su b

353

i
ESTRATEGIAS DE INVERSIÓN CON VISUAL CHART

P r í v a t e íí u Ij fíy. ' sUcr' rAppIní.-t.ínce O r i C o n n e c t i o n (ByVa l A p p l i c a t i o n As


S y s U s e r A p p , ByVal MTDi l I i i : : t As O b j c c t , Cur ; t om( ) A" V a r i a n t )
S e t APP - A p p l i c a t i o n
End Sub

C iitéd ia A lo U ta fB a fU ta

' i ¡ Parameters
' Parameters ! I
P u b l i c APP As Dr wUs e r Ap p
Implements Study

P ' j b l i c S u b S t u d y _ O n I n i t C a l c u l a t e ()
W i t h APP
■StartBar = O
End Wi t h
End Sub
P u b l i c Sub S t tjd y _ O n C a lc u la t G B a r (B y V a l B a r As Long)
Wi t h APP
I f . C i ó s e >= , O p e n The n
• P a i n t B a r . O p e n , . H i g h , . Low, . C i ó s e , RGB( 0, O, 2 5 5 ) , O, 1, O
Else
. P a i n t B a r . O p e n , . H i g h , . Low, . C l o s e , RGBÍ 255, O, 0 ) , O, 1, O
End I f <
End With
End S u b __________ _________________________________________________________________
P u b l i c S u b S t u d y _ O n S e t P a r a m e t e r s ( P a r a m A r r a y P a r a m L i s t O As V a r i a n t )
’ ¡\ P a r a m e t e r s i n i t i a l i z a t i o n
' P a r a m e t e r s i n i t i a l i z a t i o n !!
End Sub

P u b l i c Sub S t u d y _ O n C a l c u l a t e R a n g e ( B y V a l S t a r t B a r A s Lo n g , ByVal
F i n a l B a r As Long)
Dim i As Long
i = APP.StartBar
I f S t a r t B a r > i Then
i = StartBar
End I f
W h i l e No t A P P . S h o u I d T e r m i n a t e And i <= F i n a l B a r
APP.CurrentBar = i
Study_OnCalculateBar i
i = i + 1
Wend
End Sub______________________________________________________________ __________________
Prívate Sub D r w U c e r A p p I n s t a n c e _ O n C o n n e c t i o n (ByVal A p p l i c a t i o n As
DrwUserApp, ByVal MTDllInst As Object, C u s t o m O As Veriant)
S e t APP = A p p l i c a t i o n
En d Su b

P u b l i c S u b S y s t e m ^ O n C a l c u l a t e R a n g e ( B y V a l S t a r t B a r As Lo n g , ByVal
F i n a l B a r As LongJ
Dim i As Lo n g
i = APP.StartBar

354
ESTRATEGtAS DE INVERStóN CON VISUAL CIMRT

If S t a r t B a r > i Th e n
i = StartBar
End IC
W h i l e N o t A P P . S h o u l d T e r m i n a C e And i <= F i n a l B a r
APP.CurrentBar = i
System_OnCalculateBar i
i = i + 1
Wend
End S u b

P r í v a t e S u b S y s U s e r A p p I n s t a n c e _ O n C o n n e c t i o n ( B y V a l A p p l i c a t i o n As
S y s U s e r A p p , B y V a l M T D l l I n s t As O b j e c t , C u s t o m { ) As V a r i a n t )
S e t APP = A p p l i c a t i o n
En d Su b

' \ i Parameters
Dim B a n d a S u p e r i o r As D o u b l e ' 7 0
Dim B a n d a i n f e r i o r As D o u b l e ' 3 0
Dim R S I D a t a P e r i o d o As D o u b l e ’ 14
' P a r a m e t e r s !!
Dim VRSI As D o u b l e ' D o u b l e
Dim R S I D a t a B a n d a S u p e r i o r As D o u b l e 'Double
Dim R S i D a t a B a n d a I n f e r i o r As D o u b l e 'Double
Dim R S I D a t a As Long
P u b l i c APP As D r w U s e t A p p
Iraplements St u d y

P u b l i c Sub S t u d y _ O n I n i t C a l c u l a t e O
W i t h APP
R S I D a t a B a n d a S u p e r i o r = 70
R S I D a t a B a n d a l n f e r i o r = 30
VRSI = O
R S I D a t a = . G e t i n d i c a t o c i d e n t i f i e r ( RSI , D a t a , R S I D a t a P e r i o d o ,
RSIDataBandaSuperior, R SID ataB andalnferior)
-StartBar = O
E n d Wi t h
E n d S u b __________________________________________________________________________

P u b l i c S u b S t u d y _ O n C a l c u l a t e B a r ( B y V a l B a r As Long)
W i t h APP
VRSI = . G e t I n d i c a t o r V a l u e ( R S I D a t a )
I f VRSI > = B a n d a S u p e r i o r T h e n
■ P a i n t B a r . O p e n , - H i g h , . Low, . c i ó s e ,
RGB( 0, O, 2 5 5 ) , O, 1, O
Else
I f VRSI > “ B a n d a l n f e r i o r Th e n
• P a i n t B a r . O p e n , . H i g h , . Low, . C i ó s e , _
R GB( 3 2 , 1 5 1 , 2 5 ) , 1, 1, O
Else
ESTRATF.Cil/VS OF. INVERSION CON VISUAL ClIART

• P ^ i n t B a r . Op e n , . H i g h , . Low, .Cióse, _
RGB( 2 55, O, 0 ) , 1, 1, O
End I f
End I f
End Wi t h
E ikí Svib

P u b l i c Sub S t u d y _ O n S e t P a r a m e t e r s ( P a r a r r A r r a y P a r a m L i s t O As V á r i a n t )
’ i i Parameters i n i t i a l i z a t i o n
BandaSuperior = Param List(l)
B a n d a in f e r ío r = ParamList(2)
RSIDataPeriodo = P a ra m L istO )
■ P a r a m e t e r s i n i t i a l i z a t i o n I!
E r d Sub_______________________________________________________________________________

P u b l i c Su b S t ' j d y _ O n C a l c u l a t e P , a n g e ( B y Va l S t a r t B a r As L o n g , ByVal
F i n a l B a r As Lo ng)
Dim i As Long
i = APP.StartBar
I f S t a r t B a r > i Then
i = StartBar
End I f
W h i l e N o t A P P . S h o u l d T e r m i n a t e And i <= F i n a l B a r
APP.CurrentB ar = i
StudyOnCalculateBar i
i = i + 1
Wend
En d Sub_______________________________________________________________________________

P r i v a t e S u b D r w U s e r A p p I n s t a n c e _ O n C o n n e c t i o n (ByVa l A p p l i c a t i o n As
Dr w U s e r A p p , ByVa l M T D l l I n s t As O b j e c t , C u s t o m O As V a r i a n t )
S e t APP = A p p l i c a t i o n
En d Sub

tdudiA BaVuU (hm

' i ; Parameters
Dim A n t e r i o r e s As D o u b l e ’ 2
Dim P o s t e r i o r e s As D o u b l e ' 2
’ P a r a m e t e r s !!
Dim Z As I n t e g e r
Option E x p l ic it
P u b l i c APP As Dr w U s e r Ap p
Implements Study

P u b l i c Gub S t u d y _ O n I n i t C a l c u l a t e O
H i t h APP
En d W i t h
En d Sub

Public Function RunDayBajistaO As B o o l e a n


W i t h APP

356
ESTRATEGIAS DE INVERSIÓN CON VISUAL CHART

R u n D ay B a ji s ta = True
F o r Z = 1 To A n t e r i o r e s
I f . L o w ( P o s t o r i o r e g ) >» , Lo w( Z + P o s t e r l c r R S ) Then
BunDayBrs j i s t a =■ F a l s e
E x l t E'unctíon
End I f
Next Z
F o r Z = O To P o s t e r i o r e s - 1
I f . H i g h ( Z ) >= . H i g h ( P o s t e r i o r e s ) T h e n
RunDayBajista = Fa lse
Exit Function
End I f
Next Z
End W i t h
End F u n c t i o n

P u b l i c F u n c t i o n R u n D a y A l c i s t a () As B o o l e a n
W i t h APP
R u nD ay A lc is ta = True
F o r Z = 1 To A n t e r i o r e s
I f . H i g h ( P o s t e r i o r e s ) <= . H i g h ( P o s t e r i o r e s *■ Z ) The.-!
RunDayAlcista = F a ls e
Exit Function
End I f
Next Z
F o r 2 = O To P o s t e r i o r e s - 1
I f . Lo w( Z) <= . L o w ( P o s t e r i o r e s ) T h e n
RunDayAlcista = F a ls e
Exit Function
End I f
Next Z
E nd W i t h
End F u n c t i o n

P u b l i c S u b S t u d y _ O n C a l c u l a t e B a r ( ByVa l B a r As Long)
W i t h APP

I f R u n D a y A l c i s t a Th e n
■PaintBar . O p e n ( P o s t e r i o r e s ) , . H ig h (P o s t e r i o r e s ) ,
. L o w ( P o s t e r i o r e s ) , . C i ó s e ( P o s t e r i o r e s ) , RGB( 0, O, 2 5 5 ) ,
O, 3, P o s t e r i o r e s
Else
I f R u n D a y B a j i s t a Then
• P a i n t B a r .Open ( P o s t e r i o r e s ) , . H i q h ( P o s t e r i o r e s ) , _
•L o w (P o sterio re s), .Cióse ( P o s t e r i o r e s ) , ( . : ? ? , C, 0 ) ,
O, 3 , P o s t e r i o r e s
End I f
End I f
En d W i t h
En d Sub

P u b l i c S u b S t u d y _ O n S e t P a r a m e t e r s ( p a r a m A r r a y P a r a m L i s t () As V a r i a n t )
' ¡¡ P a r a m e t e r s i n i t i a l i z a c i o n
A nteriores = ParamList(l)
P o s te rio re s = ParamList(2)

357
t f f i t f f t t f f t t f P ■t p ■f - t p t ■t ^ t t t > ■k . 1

______________________ F.STRATEGIAS DE INVERSIÓN CON VISUAL CHART______________________

' I ' . i t n m r - r I ’ r r, i n j t, i - i I i t. i o n ! !
E rirl S ub
P i jb l ic Sub S t u d y _ O n C a lc u la t e R a n g e (ByVcjl S t a r t B a r As L ong, B y V a l
F i r . a lE a r As Long)
Dim i As Long
i - A['[’ . Gt-J r t.H.1 r
11 C t a r t B a r > i Th<?n
i -■= 2 1a 11 Ba r
End I t
W h il e N o t AF’P . í ] h o u l d T e r m i n a t e And i < - F i n a l B a r
A P P .C u r r e n t B a r = i
S t u d y _ O n C a lc u la t e B a r i
i = i ^ 1
Wend
End Sub

P r í v a t e Sub D r w U s e r A p p In s t a n c e ^ O n C o n n e c t i o n (B y V a 1 A p p l i c a t i o n As
D rw U s e rA p p , B y V a l M T D l l I n s t As O b j e c t , C u s t o m O As V a r i a n t )
S e t APP = A p p l i c a t i o n
E n d Sub

¡¡M áicaJo^ P atU aüa

' ¡ ; P a r a m e t e i s
Dim Longitud As Double '10
D im A v E x p o n e n t i ¿j 1 D d t ¿ > o r i g e n D a t o s A s P r i c e '

Dim P e r i o d o As D o u b l e ' 1 0
Dim C o e f i c i e n t e As D o u b l e ' 1 . 5 *
‘Parameters ¡ !
Dim PS As D o u b l e ' D o u b l e
Dim PI As D o u b l e ' D o u b l e
Dim VATR As D o u b l e ' D o u b l e
Dim AVE As D o u b l e ' D o u b l e
Dim A v E x p o n e n t i a l D a t a P e r i o d o As D o u b l e ' D o u b l e
Dim A v T r u e R a n g e D a t a P e r i o d o As D o u b l e ' D o u b l e
Dim A v E x p o n e n t i a l D a t a As Long
Dim A v T r u e R a n g e D a t a As L o n g
Option E x p licit
P u b l i c APP As O s c U s e r A p p
Implements I n d i c a t o r

P u b l i c S u b I n d i c a t o r _ O n I n i t C a l c u l a t e ()
W i t h APP
/ AvExponentialDataPeriodo = Longitud
AvTrueRangeDataPeriodo = Period o
A v E x p o n e n t i a l D a t a = . G e t i n d i c a t o r i d e n t i f i e r ( A v E x p o n e n t i a l , Data,
A vExponentialDataPeriodo, AvExponentialDataOrigenDatos)
A v T r u e R a n g e D a t a = . G e t i n d i c a t o r I d e n t i f i e r (A v T r u e R a n g e , D a t a ,
AvTrueRangeDataPeriodo)
.StartBar = O
End Wi t h
End Sub ■

358
i k .i I. .\ 1 , ♦ .i » ,\ » . i 4 . i, I , I

________________________ ESTRATICGIAS Í)FC INVKKSIÓN CCW VISUAL C FIAKT________________________

P u b l i c Sub I n d i c í i L o r ^ O r i C / i ) c u l d r < ' ?,ar (EyV-il t-.-jr A:; L^;.'j)


Wi t h A P P
AVE = . G e t l n d i c a t o r V a l u e ( A v E x p o n e n t i a l D a t a )
VATR = . G e t I n d i c a t o r V a l u e ( A v T r u e R a n q e D a r . a )
PS AVE + VATR * C o e f i c i e n t e
PI - AVE - VATR * Coft fi ci ( j ni , f . '
. S e t l n d i c a t o r V a l u e PS
. S e t I n d i c a t o r V a l u e AVE, 2
.SetIndicatorValue PI, 3
End W i t h
End Sub

P u b l i c S u b I n d i c a t o r _ O n S e t P a r a m e t e r s { P a r a m A r r a y Pa r a . - r i Li s t () As
Variant)
' ¡¡ P a r a m e t e r s i n i t i a l i z a t i o n
Longitud - ParamList(l)
A v E x p o n e n t i a l D a t a O r i g e n D a t o s = P a r a m L i s t . (2}
P e r i o d o = P a r a m L i s t (3)
C o e f ic ie n te = ParamList(4)
' P a r a m e t e r s i n i t i a l i z a t i o n !!
End S u b

P u b l i c S u b I n d i c a t o r _ O n C a l c u l a t e B a n g e ( B y V a l S t a r t E a r As Lo n q , ByVal
F i n a l B a r As Long)
Dim i As Lon g
i = APP.StarcBar
I f S t a r t B a r > i The n
i = StartBar
En d I f
W h i l e N o t A P P . S h o u l d T e r m i n a t e And i <= F i n a l B a r
APP.CurrentBar = i
Indicator_O nCalculateBar i
i = i + 1
Wend
En d Sub_______________________________________________________________________________________
P r í v a t e Sub O s c U s e r A p p I n s t a n c e _ O n C o n n e c t i o n ( B y V a l A p p l i c a t i c r . As
O s c U s e r A p p , B y V a l M T D l l I n s t As O b j e c t , C u s t c m O As V a r i a n C )
S e t APP = A p p l i c a t i o n
End Sub

34td¿oado\ 3íoUb SuJa


' ¡¡ P a r a m e t e r s
Dim B a r r a s As D o u b l e ' 3
Dim I n c l i n a c i ó n As D o u b l e
Dim n As D o u b l e ' 5
' P a r a m e t e r s !!
Dim PI As D o u b l e
Dim P2 As D o u b l e
Dim Pl Up As D o u b l e
D i m X As D o u b l e

35 9

i
ESTRATEGIAS DE INVERSION CON VISUAL CHART

Dim P I n f e r i o r As D o u b l e
Dim P S u p e r i o r As D o u b l e
Option E x p l ic it
P u b l i c APP As O s c U s e r A p p
Implements I n d i c a t o r

P u b l i c Sub I n d i c a t o r O n I n i t C a l c u l a t e O
W i t h APP
E n d Wi t h
E n d Sub

P u b l i c Su b I n d i c a t o r _ O n C a l c u l a t e B a r ( ByVal B a r As I, ong)
W i t h APP
Pl Up = . G e t S w i n g H i q h B a r ( D a t a , 1, P r i c e L o w , B a r r a s , B a r r a s * 10)
P1 = . Get Swi r i gl . owBi i r { D a t a , 1, P r i c e L o w , B . i r r n S / B a r r a s * 10)
P2 = . Ge t S wi n<j l . owRa r ( D. i t a , 2 , P r i c e L o w , B a r r a n , P a r r a r . * 10)
f’S u p t ' r i o r “ . Iliijh (I’lUp)
I f P1 o N u l l V a l u e And P2 <> N u i l Va l ú e And l’l Up o N u i l Va l ú e T h r n
I f P1 < Pl Up And Pl Up < P2 ThL-n
I f A b s ( . L o w ( P l ) - , L o w ( P 2 ) > < I n c l i n a c i ó n The n

I£ P2 - P1 < n T h e n
If . L o w ( P l ) < , Low( P2 > Th e n
P I n f e r i o r = .Low(Pl)
El s o
I’ 1 ti 1 r’ t i o r - . I,iiw ( Í’P >
F ikI if

For X - P1 - l^. iri. ín Tn P? t H.itt.' iü


If .f,ow(x) < . II I . j l i ( l ' I ( / [ . ) Th-ri
. r.i-r ] lu) 1C.11 (it v.í 1u f , i.üw (X) , 1
End I£
. S e t I n d i c a t o r V a l u e P I n f e r i o r , 2, :
. S e t I n d i c a t o r V a l u e P S u p e r i o r , 3, :

Ne xt X
Else
. SetIndicatorV alue NullValue, 1
. SetlndicatorV alue NullValue, 2
. S e tln d ic a to iV a lu e NullValue, 3

End I f
End I f
En d I f
End I f
E n d Wi t h
End Sub ____________
P u b l i c Sub I n d i c a t o r _ O n S e t P a r a m e t e r s ( P a r a m A r r a y P a r a m L i s t , {) As
Variant)
' ¡¡ P a r a m e t e r s i n i t i a l i z a t i o n
B a r r a s = P a r a m L i s t (1)
I n c l i n a c i ó n = P a r a m L i s t (2)
n = P a r a m L i s t (3)
’ P a r a m e t e r s i n i t i a l i z a t i o n !!
End Sub

360
ESTRATEGIAS DE INVERSIÓN CON VISUAL CHART

P u b l i c S u b I n d i c a t o r _ O n C a l c u l a t e R a n g e ( By Va l S t a r t B a r As Lcr. g, SyVal
F i n a l B a r As Long)
Dim i As Long
i = APP.StartBar
I f S t a r t B a r > i Then
i = StartBar
End I t
W h i l e N o t A P P . S h o u l d T e r m i n a t e And i <= F i n a l B a r
APP.CurrentBar = i
Indicator_O nCalculateBar i
i = i + 1
Wend
End S u b

P r í v a t e S u b O s c U s e r A p p I n s t a n c e _ O n C o n n e c t i o n ( HyVa l A p p l i r . i r i o n A-;
0 ; ; c Us t í r Ap p , ByVal M T D l l I n s t As O b j r c t , C i i s t o m O A.'; V . i r i . i n t )
S e t APP *= A p p l i c a t i o n
End S u b
P u b l i c Sub I n d i c a t o r _ O n S e t P a r a m e t e r s ( P a r a m A r r a y P a r a m L i s t O As
Variant)
' t¡ P a r a m e t e r s i n i t i a l i z a t i o n
Barras = ParamList(l)
I n c l i n a c i ó n = P a r a m L i s t (2)
' P a r a m e t e r s i n i t i a l i z a t i o n !!
F:nd Sub

S^JUeado^ R»laÍUta
' ¡ ¡ Parameters
Dim C o d i g o i n d i c e As S t r i n g ' 0 1 0 0 9 6 . IBEX
Dim F e c h a l n i c i a l As S t r i n g '1 5/10 /19 90
Dim P e r i o d o As D o u b l e ' 1 5
' P a r a m e t e r s !!
Dim F e c h a F í n a l As S t r i n g
Dim V P I n d As D o u b l e
Dim VPEmp As D o u b l e
Dim I n d i c e As L o n g
Dim X As D o u b l e
P i m T i p o S i n i b o l o As Lo n g
Dim C o m p r e s i ó n As Long
Option E x p lic it
P u b l i c APP As O s c U s e r A p p
Implements I n d i c a t o r

P u b l i c S u b I n d i c a t o r O n I n i t C a l c u l a t e 1)
Ul i t h APP
FechaFinal = "01/01/2020"
T i po Si m b ol o = .G G tS y m b o lI n f o (S b iC o m p re s io n , Data)
C o m p r e s i ó n - . G e t S y m b o l I n f o (S b i B a r C o m p r e s i o n . D a t a )
In d ic e » . G e t S y m b o lI d e n tif ie r ( C o d ig o i n d ic e , Compresión,
TipoSimbolo, F e c h a l n i c i a l , FechaFinal)

361
S T K A T I X i l A S m e 1N V í ; R S U ' ) N c o n V I S M A I , C I l A K 'r

,r ; ta r t B .ir = 16
End Witti
End Sub

P u b l i c S u b I n d i c a t o r _ O n C d l c u l a t e B a r ( B y V a l B a r As Long)
W i r h APP
VPInd = O
VPEmp = O
F o r X = O To P e r i o d o - 1
V P I n d = V P I n d + ( . C I o s e ( x , I n d i c e ) - . C l o s e í x + 1, I n d i c e } ) _
* 100 / . C l o s t M x , I n d i c o )
VPEmp = VFLrnp + ( . C i ó s e (x) - . C i ó s e (x + 1 ) ) * 100 / . C l o s o ( x )
Next X
I f V P I n d <> O And VPEmp o O Thon
- S e t l n d i c a t o t V a l u e VPEmp - v p i n d
• S e t l n d i c a t o r V a l u e O, 2
End I f
End W i t h
End Sub

Public Sub Ind ic a to r_ O n S e tP aram e t;e rs (ParamArray Param ListO As


Va r i a n t )
'; ; Parameters í n i t i a l i z a t i o n
C o d i g o l n d i c e = P a r a m L i s t (1)
F e c h a l n i c i a l = ParamList(2)
P e r i o d o = P a r a i n L i s t ( 3)
' P a r a m e t e r s i n i t i a l i z a t i o n !!
End S u b

P u b l i c Sub I n d i c a t o r _ O n C a l c u l a t e R a n g e ( B y V a l S t a r t B a r L o n g , ByVal
F i n a l B a r As Long)
Dim i Ac Long
i = APP.GtattBar
I f S t a r t B a r > i Th e n
i - GtartBar
En d I f
W h i l e N o t A P P . S h o u l d T e r m i n a t e And i <= F i n a l B a r
APP.CurrentBar = i
Indicator_OnCaIculat^Bar i
1 = 1 + 1
Wend
End Su b

Prívate Cub O c c ü f , ' ; r App I n s t a n c e _ _ O n C o n n e c t i o n ( EiyVa 1 A p p l i c a t. i oii Ar;


O s c U s e r A p p , ByVa l M T D l l I n s t As O b j e c t , C u s t o m O As V a r i a n t )
S e t APP = A p p l i c a t i o n
End "ijb

362
^ ^ k* ^ ^ ¥ 4 ^. 4"I. > V
. ->"I ¥^ ^ ^ ^ 'I i 'í É
^. W ^ t ^-4 ^ ^ ^^ ^ VK►-V ^ ■» ^^ é^ J L ) ^V iwJ

I-:STKATI':(ilAS DK INVKNSIÓN CON VISUAL CMAKT

BIBLIOGRAFIA

Creo interesante reseñar una pequeña selección de obras que pueden


resultar muy útiles para ampliar conocimientos sobre todo lo que se ha tratado
en este libro. Son las siguientes:

BAUER, Richard J. y DAHLQUIST, Julie: Technical M arkeí


Indicators.iohn Wiley & Sons, 1999

CONNORS & RASCHKE: 5/»a/75.M.Gordon Publishing Group,


1995

E L D E R , A lexander: T ra d in g fo r a líving.. John W ile y & Son s, 1993

MARTÍNEZ ABASCAL,Eduardo: In ven ir en Bolsa. Conceptos y


ejíraíegmj.McGraw-Hill, 1999

SCHWAGER, Jack D: Technical/í/w/>’5 /j.John Wiley & Sons, 1996

VINCE, Ralph: Portfolio Management Formulas.}o\\v\ Wiley & Sons,


1990

WELLES WILDER, J: Nuevos conceptos sobre sistem as técnicos de


operación en 5o/5a.Gcsmovasa,1988

Cabe destacar también el “Curso Práctico de Análisis Técnico y


Chartismo” que en fascículos ha ido apareciendo junto con la revista lin crsión
y Capital a lo largo del año 2001, y los distintos números de la revista
Technical Analysis of Stocks & Commodities, donde se puede encontrar
siempre material abundante y actualizado sobre estrategias de inversión.

363
KSTNATi-XllAS 1)1'. INVF.KSlON CON VISUAL CltAlíT

NOTA FINAL

En el momento de ver la luz este libro estará ya en uso la versión 2.0 de


Visual Cliart, que introduce algunas novedades en el entorno PDV respecto a
lo que hemos estado tratando hasta ahora, siempre buscando una mayor
eficacia. Fundamcntahnente son éstas:

Se podrá introducir comentarios en el código, es decir, mediante


un mecanismo dado se marca una parte, que queda de esa fonna
como no accesible al flujo del cálculo. Esto permite realizar
modificaciones y pruebas sin tener que estar poniendo y quitando
elementos o tener que hacer copias de trabajo constantemente.

- Se podrán cambiar y personalizar tanto el nombre de los


indicadores a utilizar como sus parámetros.

Se podrá insertar código Visual Basic en el entorno PDV, lo que


aportará gran operatividad y potencia de cálculo al poderse utilizar
todas las funciones posibles.

- Se podrán utilizar variables del tipo cadena de caracteres (string)


hasta el momento solo disponibles en VBA.

364
KSTRATROIAS DR INVERSIÓN CON VISUAL CMART

INDICE

PREFACIO 3

LOS SISTEM A S A U TO M A TIZA D O S DE


IN VERSIÓ N. IN TR O D U C C IÓ N 7

¿Qué son? 9
¿En qué tipo de modelo de inversión se incluyen? 9
¿Qué ventajas ofrecen? 10
¿Cómo se clasifican? 11
¿Cómo se elaboran? 12
¿Que es Ja gestión del capital y el control del riesgo? 15
¿Cómo puede afectar Ja psicología del inversor? 23

LOS SISTEM AS A U T O M A T IZ A D O S DE
INVERSIÓ N. DISEÑO Y PRO G R AM ACIÓ N CON
VISUAL CH A R T 27

/" PARTE. PRINCIPIOS BÁSICOS GENERALES 29

-Visual Chart. Posibilidades 29


-Visual Chart. M odelo organizativo 30
-Los escenarios de diseño 31
-Fundamentos 32
El cálculo 32
Las herramientas 33

i r PARTE. LA PLA TAFORMA DE DISEÑO VISVAL 43

-PDV. El entorno 43
-PDV. Estructura del código 43
-Recorrido didáctico a través de 13 Sistemas 47
Sistema Media M óvil 47
Sistema Comparación 59
Sistema Cruce 64
Sistema Pivots 71

365
!. i . m , i , í . ?

ESTRATEGIAS DE INVERSIÓN CON VISUAL CHART

Sistema Bandas 77
Sistema Consecutivos 80
Sistema Salidas 84
Sistema Fluctuación 90
Sistema RSI 94
Sistema Cierres 102
Sistema Acumulación 106
Sistema Retrocesos 109
Sistema Espera 112
-Principales elementos aparecidos en los Sistemas 117
-Recursos prácticos en el manejo del entorno 122
Traslado de bloques y unidades 122
Horrar un elemento 12.1
Copiar un elem ento 124
Crear copias de trabajo 125
Trabajar con pantalla completa 125
Gráfico y código al mismo tiempo 125
Vista global y zoom 126
Creación de variables seguidas 128
Variables o funciones olvidadas 128
Alineaciones 128
Auxiliares en el menú flotante 130
Edición directa en el diagrama 130
Cambio de entorno PDV a VBA 131
-Creación de Estudios e Indicadores 132
Estudio Doble curva de precios 132
Estudio Seguimiento de Media Móvil 134
Estudio Muestra Pivots 135
Estudio Cierres consecutivos 137
Estudio Volumen 138
Indicador Media Móvil sobre Media Móvil 141
Indicador Pivots superiores/Pivots inferiores 142
Indicador Cruce de medias con alerta 143
-Elementos nuevos aparecidos en estudios e Indicadores 145
-Cuestionario 146
-Respuestas al cuestionario 152

lirP A R T E .E L ENTORNO D E DISEÑO VISUAL BASIC 157

-VBA. Declaraciones y Procedimientos 157


-Recorrido didáctico a través de 12 Sistemas 158
Sistema Fiat 158
Sistema Permanencia 163
Sistema For Next 170

366
;;. ¡, j. } , \ i i , 'i , ' U i-> i v 'l , '' o
__________________________ E S T R A T E G IA S D E IN V E R S IO N C O N V IS U A L C H A R T __________________________

Sistema Alcista/Bajista 174


Sistema Escudo 177
Sistema SKSD Estocástico . 181
Sistema Medias RSI 186
Sistema Bandas Continuas 190
Sistema Barra Volátil 193
Sistema Turtie Soup Plus 201
Sistema Run Day 2 11
Sistema Dirección 218
-Principales elementos aparecidos en los sistemas 230
-Recursos prácticos en el nfianejo dcl entorno 238
Proyectos abiertos . 238
Copia de dalos 238
Lista de funciones disponible 239
Proceso de depuración de estrategias 239
Sintaxis dcl Identifícador de un indicador 242
Visualización de código ajustado a pantalla 243
-Creación de Estudios e Indicadores 244
Estudio Alcista/Bajista 244
Estudio RSI 246
Estudio Barras Run Day 247
Indicador Pantalla . 251
Indicador Doble Suelo 252
Indicador Fuerza Relativa 256
-Elementos nuevos aparecidos en Estudios e Indicadores 259
-Cuestionario 260
-Respuestas al cuestionario 265

GLOSARIO 269

ANEXO I. UN M ODELO DE PROTOCOLO DE


EVALUACIÓN DE SISTEM AS 275

-Evaluación de Sistemas con aplicación intradiaria 278


-Evaluación de Sistemas con aplicación diaria o
de tiempo mayor 293

ANEXO II. DESARROLLO DE LOS SISTEM AS


V DEM ÁS ESTRATEGIAS CO M ENTADOS EN
EL LIBRO 300

BIBLIOGRAFÍA 363

NOTA FINAL 364

367

Potrebbero piacerti anche