Forex tester es una plataforma de simulación de mercados para el desarrollo de backtesting. Ideal para desarrollar y probar estrategias nuevas, evaluar indicadores técnicos o ideas sobre los mismos y practicar nuestras destrezas en el análisis técnico (por ejemplo ¿qué tal probar haciendo conteos de elliott de una hora en los últimos 10 años?)
Actualizado al 2019, en Julio ha sido lanzado Forex Tester 4 con un montón de mejoras como es el hecho de poder directamente convertir un indicador técnico de MT4 (contando con el código fuente osea el archivo MQL4)
En este artículo te presento una serie de video tutoriales y el unboxig de esta versión del (tal vez) más robusto simulador de mercados.
Sin duda alguna, desde que la probé hace 12 años (2007) me pareció una herramienta interesante, pero conforme ha pasado el tiempo en estos años, ha probado ser una de las herramientas más útiles para desarrollar no solo mis habilidades en análisis técnico y las de mis alumnos, sino que además para descubrir nuevas técnicas y hacer investigación sobre el desarrollo del precio en el mercado de divisas. Al punto que ahora me pregunto cómo podría haber estado sin él, todos los años que pasaron antes que desarrollaran este software (lo tengo desde su primer versión).
El software lo puedes descargar gratis desde la siguiente liga:
La desarga que hagas de forextester te servirá para usarla en modo de prueba (sin límite de días) lo mismo que para usarla en su modo de licencia personal (cuando ya has pagado por el programa, aprox 299 USD) por lo que una vez que lo compres no necesitarás volver a descargarlo ni instalar nada más en tu computadora.
Las limitantes de la versión demo incluyen laincapacidad de guardar los resultados de tus pruebas, probar por más de un mes de manera continua un gráfico o usar de manera ininterrumpida por más de una hora el programa (se para y puedes volver a comenzar una nueva prueba) por lo que evidentemente, comprar la licencia es una buena inversión (la versión demo básicamente sirve para que te familiarices con el programa y veas si te podría ser útil pero sería muy incómodo hacer una prueba seria sin comprar la licencia del mismo.
Adicionalmente este programa puedes adicionarlo con paquetes de feed de precios de paga mensual para obtener más variedad de brokers que proporcionen los históricos, los ticks reales (es decir los micromovimientos abajo de velas de 1 minuto) para pruebas de scalping más precisas) Algo que insisto, si no vas a hacer scalping tal vez no te sea tan importante, pero es bueno tener.
La versión desde 2019 que es la 4 ya además cuenta con la capacidad de manejar descargas (rentando el paquete de históricos) de un montonal de instrumentos adicionales que incluyen, pares exóticos, criptodivisas, índices accionarios, commodities, acciones, etc.
A continuación te dejo con una lista de los distintos capítulos que he desarrollado de tutoriales sobre el uso de forex tester:
Tutoriales:
Adicional:
En el capítulo 5 del tutorial de Forex Tester 3 pongo un ejemplo de código para programar un nuevo indicador, te comparto aquí el código para generar el gann line:
library GannLine; {$R *.res}
// index buffer var GL: TIndexBuffer; //--------------------------------------------------------------------------- // Initialization procedure //--------------------------------------------------------------------------- procedure Init; stdcall; begin // Define parameters IndicatorShortName('Gann Line'); SetOutputWindow(ow_ChartWindow); // register external parameters // Create index buffer GL := CreateIndexBuffer; IndicatorBuffers(1); SetIndexBuffer(0, GL); SetIndexStyle(0, ds_Line, psSolid, 1, clYellow); end; //--------------------------------------------------------------------------- // Deinitialization procedure //--------------------------------------------------------------------------- procedure Done; stdcall; begin // do nothing end; //--------------------------------------------------------------------------- // Calculate a single bar //--------------------------------------------------------------------------- procedure Calculate(index: integer); stdcall; begin //si no hace máx más altos en alza esperar if(High(index+1)>High(index+2)) and (Low(index+1)>Low(index+2)) and (High(index)<=High(index+1)) and ( Low(index)>=Low(index+1)) then begin GL[index]:=High(index+1); end; //si no hace min más bajos en baja esperar if(High(index+1)<High(index+2)) and ( Low(index+1)<Low(index+2)) and (Low(index)>=Low(index)) and (High(index)<=High(index+1)) then begin GL[index]:=Low(index+1); end; //si no hace máx más altos desde ensanchado arriba if(High(index+1)>High(index+2)) and (Low(index+1)<Low(index+2)) and (High(index)<=High(index+1)) and (Low(index)>=Low(index+1)) and ( Close(index+1)>=(High(index+1)+Low(index+1))/2) then begin GL[index]:=High(index+1); end; //si no hace min más bajos desde ensanchado abajo if(High(index+1)>High(index+2)) and (Low(index+1)<Low(index+2)) and (Close(index)<=(Low(index)+High(index))/2) and (Low(index)>=Low(index+1)) and (High(index)<High(index+1)) then begin GL[index]:=Low(index+1); end; //si hace máx más altos y min más bajos y cierra mitad superior es a máximo if(High(index)>=High(index+1)) and ( Low(index)<Low(index+1)) and (Close(index)>=(Low(index)+High(index))/2) then begin GL[index]:=High(index); end; //si hace máx más altos y mín más bajos y cierra mitad inferior es a minimo if(High(index)>High(index+1)) and ( Low(index)<=Low(index+1)) and (Close(index)<=(Low(index)+High(index))/2) then begin GL[index]:=Low(index); end; if(High(index)>High(index+1)) and (Low(index)<=Low(index+1)) and (Close(index)>=(Low(index)+High(index))/2) then begin GL[index]:=High(index); end; //si hace máx más altos y mín más bajos y cierra mitad inferior es a minimo if(High(index)>=High(index+1)) and (Low(index)<Low(index+1)) and (Close(index)<=(Low(index)+High(index))/2) then begin GL[index]:=Low(index); end; //si hace máx más altos y min más altos es al máximo if(High(index)>=High(index+1)) and ( Low(index)>=Low(index+1)) then //max más alto min más alto begin GL[index]:=High(index); end; //si hace min más bajos y max más bajos es al minimo if(High(index)<=High(index+1) ) and (Low(index)<=Low(index+1)) then // max más bajo min más bajo begin GL[index]:=Low(index); end; if Hour(Time(index))<8 and Hour(Time(index))>15 then begin ObjectCreate(Date(Time(index)),obj_TrendLine,Time(index),Hihg(index),Time(index-1),High(index,index)); end; end; exports Init, Done, Calculate; end.
|
Estuve mirando algunos de tus videos. Son muy buenos. Te comento que siempre desconfié de las ondas elliot porque creía que eran un engaño...
Muy buenos videos, muchas gracias me ha servido de mucho.
Saludos