Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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
D epósito Legal: A L -1 -2 0 0 2
RSTRATF.CIAS DK INVF.RSiON CON VISUAL CHAÍ^T
PREFACIO
__________________________ 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 __________________________
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 __________________________
__________________________ 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.
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
10
ESTRATEGIAS DE INVERSION CON VISUAL CHART
¿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
¿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.
12
F.STRATKGÍAS DE JNVERSIÓN CON VISUAL CKART
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
14
KSTRATKGIAS DE ÍNVERSIÓN C oN VtSlML CHART
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
Ift
r r r r r r r r r n r- ,
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
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.
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
{ { 1 ,5 + 1 ) * 0 45 ] - 1
f= = 0 083 = 8 3%
15
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 =
30.000
Número de Contratos =
(15000 * 2 ] + 7000
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
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.
23
ESTRATEGIAS DE INVERSIÓN CON VISUAL CHART
¿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
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 _________________________ _
29
ESTR.\TEGIAS DE INVERSIÓN CON VISUAL CHART
30
ESTRATEGIAS DE INVERSIÓN CON VISUAL CHART
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 _____________________________
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 ( )
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
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
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
> 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.
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
PDV. EL ENTORNO.
* -ü
j lr>d(«daifff
■J «vilbiK
f-i Ptncort
» \f'w
r~ íM » T '
43
RSTHATEGrAS DK INVF-RSIÓN CON VISUAL CHART
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
-14
' 'i ' ■> ^ ^ ^ ^
Bucle
BUCLE
Órdenes
ORDENES
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
[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
47
) í )
) I I I
ManMbate Difi
VdD CIERRE
B«i* ’O
_J
4X
ESTRATEGIAS DE INVERSIÓN CON VISUAL CHART
IdsnliÜMda D«ta
V*ta CIERRE •]
B«i«
apertura
1 MINIMA
VOLUMEN
-E)v<MÍón OPEN INTERES!
FECHA
TIEMPO
^ 1
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
Mayo( ^
jÜEHRSSDEE
Mayor o Igual
Menor
Menor o igual
Disthto
I g u a l______________
49
ESTRATEGIAS DE INVERSION CON VISUAL CHART
’-J
■»«
í WwVjiaU. I
sJ
50
í
ESTRATEGIAS DE INVERSION CON VISUAL CHART
[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 )
51
I I < ) i « I I t t t I I I
52
l i l i [ l i l i l í
W it p q o d e ( « k c c i i n
In d c a d o n j
J Paracokc Pv abdica
JWei^Cloja We<edOose
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
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
54
ESTRATEGIAS DE INVERSIÓN CON VISUAL CHART
i.«o
A fe ii
ík- v W ’, ; í 11 a
"1,
V" 1.20
1.10
U rlf
'Ot 'May
«'<!» hVvU
55
RSTRATEGIAS DE INVERSION CON VISUAL CHART
í
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
56
ESTRATEOIAS DE INVERSIÓN CON VISUAL CHART
Herram ientas X
a ú Senes
s □ Indicadores
B ♦ AvSimpleData
0 D Variables
a ♦ Av5impIeDataPeriodo
a ♦ AvSimpleDataOrigenDatos
□ Función
B □ Barra Inicio
57
ESTRATEGIAS DE INVERSIÓN CON VISUAL CMART
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
58
ESTRATRGIAS DE INVERSIÓN CON VISUAL CHART
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:
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 __________________________
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
O c < ia i
61
ESTRATEGIAS D E INVERSIÓN CON VISUAL CHART
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
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
*J
Oiden
T ip o d * O n lB n
P is c o
EbiliiaU
65
ESTRATEGIAS DE INVERSIÓN CON VISUAL CHART
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.
r U w t como Parémetio
A ceptjí { Cancelaf
67
ESTRATEGIAS D E INVERSIÓN CON VISUAL CHART
I A c W » I C j n c ( l 3í |
6K
ESTRATEGIAS DE INVERSIÓN CON VISUAL CHART
69
ESTRATEGIAS DE INVERSIÓN CON VISUAL CHART
2.47
2 47 íj. Botde*1
AktMOíteHflñnrii^*:;]
)ct
fe
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
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
72
ESTRATEGIAS DE INVERSION CON VISUAL CHART
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
73
ESTRATEGIA?; DR INVERSIÓN CON VISUAL CHART
];
Venta 1 Stop GeílPivoíDownOata
------------------------- 11 - - -- - ■
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.
r Ü s« como ParáfTWlro
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
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
76
ESTRATEGIAS DE INVERStÓN CON VISUAL CHART
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
0 Cü Vattabtes
i Q ♦ GítHighestOalatPrtce
i : ♦ Pjícc : PticeHigh
i É ♦ GetHigheítDalaLer>g»h
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
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
xo
J
• ( f i / i '( i ( f f ( f f t * f f / f f H 4/ f (
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
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 __________________________
___________________________ 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 __________________________
; 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
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
84
ESTRATEGIAS DE INVERSIÓN CON VISUAL CHART
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
86
f •( r . f r ¡ r r r r r r r r
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:
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
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 ^
■-1
1'
[ Cen« Codo 1Lnísda G«EnfyPlcfrCetn(riftt«‘p«/10fl|
91
ESTRATEGIAS DE INVERSIÓN CON VISUAL CH Aírr
92
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
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
95
KSTRATEGIAS d e INVERStON CON VISUAL CMART
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
í (
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.
V>nl41Cora
Conl«dor«Cona<lDi*11
100
ESTRATEGIAS DE ÍNVERSIÓN CON VISUAL CHART
101
í 7 < ( ( *
\
( f
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
• if
102
í ( f r f f r r
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.
C*i«L«g(>>Sliv
C aw L«go 1
104
ESTRATEGIAS DE INVERSIÓN CON VISUAL CHART
1^.00
te.oo
17.00
t
16.00
15.00
11.00
tos
íiSTKATKQIAS DE INVIiKSlON CON VI.SUAl. CIIAHT
■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. •
107
ESTRATECJAS OR INVERSIÓN CON VISUAL CHART
■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.
Teciic
109
t i-
( ( t t i i < í 1 f f I f f ( / f f f f ( f f í i i i é f 4
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.
110
í ^ f f é ( < ^ f f f /
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 ^
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 < (
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:
114
r f f
115
ESTRATEGIAS DE INVERSIÓN CON VISUAL CHART
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
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
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 Espera
- Sistema Cierres
- Sistema Fluctuación
- Sistema Salidas
117
ESTRATEGIAS DE INVERSIÓN CON VISUAL CHART
- Sistema Espera
- Sistema Acumulación
- Sistema Cierres
- Sistema RSl
- Sistema Bandas
Indicadores
118
ESTRATEGIAS DE INVERSIÓN CON VISUAL CHART
- Sistema Primero
- Sistema Cruce
- Sistema Salidas
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
119
ESTRATEGIAS DK INVERSION CON VISUAL CHART
- Sistema Salidas
- Sistema Pívots
- Sistema Espera
- Sistema RSl
- Sistema Salidas
- Sistema Espera •
- Sistema Retrocesos
- Sistema Cierres
- Sistema Fluctuación
- Sistema Salidas
- Sistema Acumulación
- Sistema Cierres
Oíros elementos
120
ESTRATKOIAS DE IN V E R S IÓ N CON VJSUAL CHART
- Sistema Fluctuación
- Sistema Salidas
- Sistema Cruce
- Sistema Retrocesos
. - Sistema Consecutivos
- Sistema Cierres
- Sistema Salidas
121
ESTKATliCUAS DK INVÍCKSIÓN CON VISUA L L'IIAKT
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.
125
, ( 1 , 1 (' M í ^ í ( ■( ■í ( ' ' ' ( f ( í f f ( ^
Voliuina la opción Mosaico vertical. Quedan las dos en vertical una al lado de
la olra.
[B6JM
■
) 500,G
) <00.0
,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
giopiedades / .. m ':'-,
TamaíSa ' ►
127
KSTRATEGfAS DE INVERSIÓN CON VISUAL CHART
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
'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
129
) V ) > ) )
r # í f ( f t f , f 'f ■¡ ( f '< '/ / 'f f t í '( 'f ■> <
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
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
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 ^
132
ESTRATEGIAS DE INVERSIÓN CON VISUAL CHART
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:
133
.............................................................. ............... I I t t I I I > i
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
134
i;s IiM i r.diAS ni% invi jís iú n í o n v isu a i . í maht
135
ESTRATEGIAS DE INVERSIÓN CON VISUAL CHART
Ptopwdade* Pxopiedadsi n
P « in l d r 1-1 í S
'j E s m m
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
3.50
3,00
) 'w 3.50
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.
138
r' r
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
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 (
142
( i ( ( i f < t ( i í J f f < f f f í ! > ! t ^
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
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»
144
Funciones:
-GctSwingHighBar
- GclSwingLowBar
- Alert
- Volumen
145
^ >l s *
CUESTIONARIO
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
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
Ejercicio S |
147
ESTRATEGIAS DE INVERSION CON VISUAL CHART
^ c r c ic io 6
Í48
ESTRATEGIAS DE INVERSIÓN CON VISUAL CMA«T
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^
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
FjiTcici» I I
Sigiiiciulo CUJI el cjcrcicit) anlciior, ¿que soluciones podemos apliciir'si
no deseamos que esto se prodii/ea?.
Kjcrcicio 12
Ejercicio 13
Ejercicio 14
150
» * ‘ • » » > ^ > V > ^ ^ ^ A > > ^
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?
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
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
» !
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.
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
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
157
I í • < ' t ' • I t t ' t
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
I5 ‘)
ESTRATECGIAS DK INVERSIÓN CON VISUAL CHART
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.
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
i 60
ESTRATEGIAS DK INVKRSIÓN CON VISUAL CIlAkT
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
163
ESTRATEGÍAS DE INVERSIÓN CON VISUAL CMART
’ 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
164
i,
KSTRATEGIAS DE INVERSION CON VISUAL CHART
' 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 ______________________________
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
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):
End U i t h
End Sub
166
_____________________ KSTRATIvGiAS Ü í; INVÍ-:RS)6N CON VISUAL CÜAKT______________________
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
Ú
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
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
169
KSTKATKOIAS niC 1NVI’;KSK'>N c o n VISU.M, CIlAK r
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
‘ 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
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 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
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
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
' 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
174
< ( f ( ( i f f * r ( r r r r f f r ^ r r r r
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
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
' , , 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
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
178
( f ( t ( (
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
lí . H í g h < - VP Then
.B u y A t S t o p , 1 , VP
End I£
179
RSTRATÍCC.IAS DE INVERSION CON VISUAL CHART
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
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
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
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
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 <
JX6
RSTHATKGIAS DR INVKRSiÓN CON VISUAL CMART
, 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___________________________________
•StactB ac - O
tn d With
tn d Sub
187
ESTRATEGIAS DE INVERSIÓN CON VISUAL CHART
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
> 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
0,00
’d Íc ' oí 'feb ^Maf 'May 'jun ^
I<1tJ llfTjüÍQÍa_n vaiioi /Hoill Jji
is^)
t i
' *
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£
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
192
ESTRATRCilAS DB INVERSIÓN CON VISUAL CHART
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
> , ')
' , , 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 _____________________________
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
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___________________________________________________
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
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
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
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
l<>7
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
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£
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 )
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
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.
,L*
Líüi
10 900,
-I
A V
f tA
J, 10 050,
10 800
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
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.
202
) . >i )
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
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
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
|P lw 1 As I n t e g e r ' In teaer |
Diin Hin As D o u b le ‘ D o u b le
Diiii Hax As P o ii b l e ' D oiible
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
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
205
4 i
). ). )
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 - )
If . D a t e > . D a t e ( l ) Then
H iC ie r r e “ .T im e ( l)
End I f
207
K STÍM TirilAS OR INVi^RSIÓN ('()N VISUAL Cl lART
-9 500.C
ji.4 f
■9450,0
H /v -9400.0
'02/D6fl)1 10 35 12 00 ^13 10 ^
CASE1 K
A 9450.0
9.400.0
208 .4
KS I IMTICOIAS DK INVRKSiON CON VISUAL CIIART
>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:
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 *
« ni
IfcJ
,1 8 200,0
IV II'
... 8 150,0
■1
17 00 26/07/01 09 55 10 55 11 55
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
210
\ í 1 \ 1 ^ í ^ \ > V ^ ^ ^ \ \ > > > > )
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
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
212
ICS'I RATICOIAS Í)K INVr.RS[6N C’ííN VISUAL CJIART
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
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
10
215
ICS I RATICGIAR DI', INVKIÍSIÓN CON VISUAL CIIART
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
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
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
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).
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
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
í'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 ; ' ' ____ _____ _____ _____ ______________ _______
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' '
,, 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
222
> > > > > > >
' , , 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£
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
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
225
i- i' i
1 I l « t
226
\ i
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
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
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
•
---------— _______
228
ESI (MTlCOrAS DK INVfCKSIÓN CON VI.StMI. Í.'MAKT
229
( t I ( t
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
: .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
232
rCSTíMTIvCJlAS n í í INVÍvMSIÓN CON VISUAL CUART
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_
-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
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
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
238
ESTRATKGÍAS DE ÍNVERSI6 N CON VISUAL CHAKT
EX
^ f «I Q <C:\Arctwy»»
^ Iftto cI (C;\Af<hivo«
^ UvíiConnírtí
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! )
24Ü
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^
rCi wauinwt I n
•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 » '
\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.
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.
242
KSTRATl'XílAS 1)K INVKRSIÓN CXJN VISUAL C IIA fa
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
K s I i k Ho : A l c i s ( a / I ) ; i i í s t a
' 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
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
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
L 245
I I í ( ^ '
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
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.
' i I p . a r ¿ ii ii e t ; 'r L ‘ 3
247
K S I NATl'X '.IAS DI-; IN V K K S IÚ N C O N VJSUAI< C IIA K T
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
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
- |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
...^ xj
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
' 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
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)
253
) ) í ) ) i ) ) ) ) > )
( I ( ( f ( i I
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
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
B 400.0
epao.o
8 360,0
9 340.0
256
t I
ESTRATEGIAS DE INVERSIÓN CON VISUAL CIIAKT
257
FSTKA TW '.IAS l>r, 1NVF.KS1(')N CON VISUA l. C IIA R T
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
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
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
'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
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
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
■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
ü OnCalculateRange
Q OnlnitCalculate
L1 Paramcters/Option Explicit
G OnCalculateBar
Q OnSetParamcters
Q OnConnection
PDV VBA
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
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.
262
__________ RSTRATFOIAS HE INVERSIÓN CON VISUAL CIIART
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
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
Ejercicio 14| ¿Qué diferencia iiay entre estas tres formas de declarar
variables?
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
' , 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?.
Respuesta 1
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
265
i ' ¡ i ■ i
t t ) \ 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
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
269
t i I \ t » \ I I \ I k t t t t , t
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
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
272
ESTKATKCilAS DE INVKKSÍÓN CON VISUAL Cf ÍAKT
273
^ i
t I k « I >
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
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 ^ • * * * ^
278
( i , , , / é f i f f << f ' '
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
280
ICSTIMTWÍIAS Drí INVKKSIÓN CON VISUAI- CHAKT
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
281
I ( f ( f f ^ ( I i ( f i i f i f
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
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
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
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%.
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
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.
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.
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.
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
A5 1 ... 1 • :1 f 1 ; . r f ,7 .:\
- i - í — r • « n
♦n»9J ♦.142 •.11) «,♦70 • ,tn •.IÍ7 • .tíí
rri»t-33
abf 93 f.OO» •Cí.iirt' M 27 •.* 2 i •.0*1 • •*•
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
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
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.
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
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
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;
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
Tnfal
Opt: 1.4
A co p: 1.0
Eirter: 1.1
Estdd: 0.7
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
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.
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 |
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
317
318
KS IRAl KOIAS IMCINVFCKStON CON VISUAI- CMART
CUttdky ValémfH
319
ESTRATEGIAS DE INVERSIÓN CON VISUAL CHART
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 ^
Snáloado^ P iuitl
322
i . > ^
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
Fnií oiib
S iiirn m a ^h ^fiti
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
326
1
» . I . k i ^ , ) 1 ■) ' ^ ^ ^ ^ ^ ^ ^
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
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 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
$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 ^ ' ' ' ' ' ' ^ ^
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!>
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
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
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
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 ^ ^ ^ ^ ^ ^ ^ ^ ^ ^
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 . 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
337
K S l KA'l iX '.iA S |)!í 1NV'KK’SI(')N C O N N 'lSU A l. C IlA K r
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
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
338
______________________ ESTRATEGIAS P E INVBWSiftN CON VISt'M. fH<k»T
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
' 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- * , : ^
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 ^ '
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
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
' 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
.U5
I I f f f f
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 _________________________________________________
' 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 '
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
* 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
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
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
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
' 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
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
' 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
' ¡ ; 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
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
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
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
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
362
^ ^ k* ^ ^ ¥ 4 ^. 4"I. > V
. ->"I ¥^ ^ ^ ^ 'I i 'í É
^. W ^ t ^-4 ^ ^ ^^ ^ VK►-V ^ ■» ^^ é^ J L ) ^V iwJ
BIBLIOGRAFIA
363
KSTNATi-XllAS 1)1'. INVF.KSlON CON VISUAL CltAlíT
NOTA FINAL
364
KSTRATROIAS DR INVERSIÓN CON VISUAL CMART
INDICE
PREFACIO 3
¿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
-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 , í . ?
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
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 __________________________
GLOSARIO 269
BIBLIOGRAFÍA 363
367