Página 1 de 1

Programación AFL _ AMIBROKER

Publicado: 17 Ene 2009 00:19
por JMVMRGR
Para programar un indicador, necesito la volatilidad historica. AMIBROKER no trae esta función. ¿Como puedo programar esta instrucción en AMIBROKER?. Gracias

Saludos,

Publicado: 19 Ene 2009 22:22
por polxx
Creo que yo tengo el mismo problema que tu...

Yo cree un indicador muy simple en visual chart y ahora quiero hacerlo para amibroker.

Si abrimos el codigo del indicador rsi del amibroker veremos algo parecido a:
PLOT (RSI(), ....);

Es decir, que RSI() es una funcion que calcula el valor del RSI. Si despues queremos hacer un sistema que aplique el RSI hacemos referencia a la función RSI() y no al indicador como se haria en visual chart, ya que en amibroker el indicador simplemente dibuja.

Entonces lo que yo necesito es hacer MIPROPIOINDICADOR() como una funcion, la cual luego la convertire en indicador usando PLOT y por otro lado usare esa función para los sistemas.

No estoy seguro... pero si esto es tal como lo digo, ¿como se crea una función en amibroker???

Publicado: 19 Ene 2009 22:31
por ranunculo
Hola Polxx. veo que sigues con tu problema.
Pero aun no acabo de entenderlo.
Si tienes el algoritmo de un indicador para usarlo en un sistema, pues simplemente utilizalo.. Yo no he usado funciones en un codigo Amibroker, pero en todos los ejemplos que he visto, en vez de usar funciones, se usa el codigo en el sistema directamente..
Un ejemplo:
A = H - C;
B = ( ( 100 * A ) / C );
D = (100 * 0.50 ) / H;
E = (100 * 0.50 ) / L;

Cond5 = O > (H - D); // AND B < 0.50;
Cond6 = C <= (L + E);
BUY=cond5 and cond6;
y ya esta..

Publicado: 19 Ene 2009 22:36
por ranunculo
De todos modos puedes usar la funcion Function. El ejemplo de Ami es claro:

function IIR2( input, f0, f1, f2 )
{
result[ 0 ] = input[ 0 ];
result[ 1 ] = input[ 1 ];

for( i = 2; i < BarCount; i++ )
{
result[ i ] = f0 * input[ i ] +
f1 * result[ i - 1 ] +
f2 * result[ i - 2 ];
}

return result;
}

Plot( Close, "Price", colorBlack, styleCandle );
Plot( IIR2( Close, 0.2, 1.4, -0.6 ), "function example", colorRed );

En esta ultima linea usas el nombre de la funcion (IIR2) en el comando Plot para dibujar el grafico..

Publicado: 20 Ene 2009 18:01
por polxx
Bueno pues gracias a ranunculo ya lo he comprendido, lo explico mejor por si le sirve a alguien.

En visual chart tenemos indicadores, que toman unos datos de entrada y pintan en pantalla unas lineas de resultado, y esas lineas pueden usarse en otros indicadores o tambien sistemas. Asi que los indicadores de visual chart podrian considerarse como funciones clasicas de programacion.

Y tambien tenemos sistemas, que toman datos de entrada y/o indicadores, y devuelven operaciones sobre el grafico.


Pero en amibroker no se diferencia entre indicadores o sistemas. Si algo usa la funcion PLOT() entonces se podria considerar un indicador. Y si algo usa BUY o SELL entonces lo consideramos un sistema. Pero en realidad un cosigo puede ser indicador y sistema a la vez, en caso de que incluya PLOT y BUY...

Lo que si incluye amibroker son las clasicas funciones de programación, que toman unos datos de entrada y dan resultado de salida.

Asi que si inventamos un indicador nuevo y queremos representarlo en pantalla y ademas operar con el, lo que debemos hacer es programar ese codigo a modo de funcion y crear un indicador que contenta y use esa funcion para dibujarlo en pantalla y por otro lado hacer un sistema que incluya el mismo codigo de la funcion y a la vez la use para hacer operaciones.

Como veis amibroker deja mas trabajo para el programador y lo pone un poquito mas dificil, pero a la vez es mas flexible y mucho mas rapido en optimizaciones.