MetaTrader4
Fundamental Trader: Tu Asesor Experto para Trading en MetaTrader 4
Descripción:
La idea principal detrás de Fundamental Trader EA es desarrollar un Asesor Experto que tome decisiones de trading financiero basadas en eventos noticiosos, de manera automática. Este EA no se puede probar con datos históricos, ya que está diseñado para esperar el siguiente evento noticioso y tomar decisiones en función de la diferencia entre los datos (real vs. pronóstico) o (real vs. anterior).
El Fundamental Trader EA es muy sencillo. Tras descargar el calendario, determina qué evento noticioso del calendario de DailyFX está programado para ser el siguiente. Luego, espera a que se publique ese evento. Una vez liberados los datos, el EA toma una decisión de trading. Este EA se puede aplicar a cualquier gráfico y en cualquier marco de tiempo, ya que solo utiliza el gráfico para ejecutar órdenes. Además, está configurado para soportar todos los países que se encuentran en el calendario de DailyFX; más detalles a continuación.
NOTA:
Para que este EA funcione, debes seguir las instrucciones de configuración de los archivos principales en el siguiente sitio:
https://www.mql5.com/en/articles/1502
Este EA se basa en el código de un indicador que se especifica en el enlace anterior. Debes seguir primero las instrucciones en el enlace anterior y configurar los siguientes archivos:
getright_setup.zip
Time.mq4
Time.mqh
Asegúrate de cambiar el directorio de descarga predeterminado de "get right" al lugar donde se descargará el calendario, de lo contrario, este EA no funcionará.
Lee ese artículo con atención y asegúrate de seguir cada instrucción.
En el artículo puedes leer sobre qué son esos (3) archivos y cuál es su función. Explica muy bien lo que el indicador está ejecutando para mostrar los eventos noticiosos en la ventana del gráfico.
Es recomendable configurar primero ese indicador y tener las noticias mostradas en tu gráfico, después de lo cual este EA funcionará sin problemas.
El código fuente de ese indicador fue modificado para convertirse en un EA que opera en base a noticias y no solo las muestra.
Cuando configures los archivos mencionados anteriormente, puedes descargar este EA junto con "str2double.dll" y este EA operará con las noticias publicadas en DAILYFX. El archivo "str2double.dll" debe ir en el directorio raíz, por ejemplo, C:\Program Files\Interbank FX Trader 4\
Lógica de Trading:
La lógica detrás de este trading es la siguiente: existen dos tipos de eventos que ocurren al operar con noticias.
1º: hay datos económicos reales que se comparan con los datos económicos pronosticados.
2º: hay datos económicos reales que se comparan con los datos económicos anteriores.
La diferencia entre los datos económicos puede afectar la dirección del precio de la divisa, y el porcentaje de diferencia entre los datos económicos proporciona una mayor probabilidad de que el evento noticioso tenga una reacción en el mercado en una dirección específica.
Para más información sobre Trading Fundamental, visita www.pfxglobal.com
Cuando hay una alta diferencia porcentual entre los datos económicos, el EA ejecuta órdenes con lotes más grandes.
Cuando la diferencia porcentual entre los datos económicos es pequeña, el EA ejecuta órdenes con lotes mínimos.
Estos tamaños de lote están especificados cuando se aplica el EA al gráfico con las siguientes variables:
lot1, lot2, lot3, lot4, lot5, lot6......lot18
El tamaño de lote específico será elegido por el EA, basado en el porcentaje de diferencia entre los datos económicos.
Relación Riesgo/Recompensa:
El Fundamental Trader EA está configurado con una relación riesgo/recompensa de 1:3, los valores predeterminados son riesgo=20, recompensa=3.
El riesgo son los valores de StopLoss en PIP, y la recompensa es el multiplicador, por lo que si el EA arriesga 20 PIP, espera ganar 60 PIP.
Estos valores se pueden modificar al aplicar el EA al gráfico.
Tiempo de Espera para la Liberación del Evento Noticioso:
Los datos de noticias no se publican exactamente a la hora programada, es necesario configurar un marco de tiempo para que el EA espere la liberación de los eventos noticiosos.
El siguiente fragmento de código determina el tiempo que el EA esperará para la liberación de las noticias; una vez que haya pasado el tiempo de espera, el EA pasa al siguiente evento noticioso.
xTime es una variable que se puede cambiar al aplicar el EA a un gráfico. El valor predeterminado es de 27 minutos.
if(Date>(TimeCurrent()-(xTime*60)))
Tiempo de Espera para el Cierre de las Órdenes:
También puedes configurar un marco de tiempo para que el EA espere un cierto tiempo antes de cerrar una orden abierta.
Por ejemplo, después de que se ha liberado un evento noticioso y se ejecuta una posición, espera 30 minutos para cerrar la orden actual, ya sea con ganancias o pérdidas. Esta es una recomendación del usuario de MQL4 "ebenv".
Hay (3) variables que controlan esta función:
MagicNumber | número que se usa para rastrear órdenes abiertas
enable_close_time | se establece en verdadero para habilitar al EA a monitorear el tiempo transcurrido desde que se ejecutó la orden
wait_time | tiempo a esperar antes de cerrar la orden
Soporte de Países para Fundamental Trader:
El Fundamental Trader EA opera con todas las divisas que se encuentran en dailyfx.com/calendar.
A continuación, se presenta un fragmento de código que especifica la divisa para operar según el país donde se libera el evento noticioso. La lista de divisas es la siguiente: EUR, USD, JPY, GBP, CHF, AUD, CAD, NZD
if(stCurrency=="EUR") {ordercurrency="EURUSD"; } //trading eurusd
if(stCurrency=="USD") {ordercurrency="EURUSD"; } //trading eurusd
if(stCurrency=="JPY") {ordercurrency="USDJPY"; } //trading usdjpy
if(stCurrency=="GBP") {ordercurrency="GBPUSD"; } //trading usdgbp
if(stCurrency=="CHF") {ordercurrency="USDCHF"; } //trading usdchf
if(stCurrency=="AUD") {ordercurrency="AUDUSD"; } //trading audusd
if(stCurrency=="CAD") {ordercurrency="USDCAD"; } //trading usdcad
if(stCurrency=="NZD") {ordercurrency="NZDUSD"; } //trading nzdusd
Decisión de Trading:
El siguiente fragmento de código describe cómo el EA toma una decisión de trading, cuando este espera los datos económicos reales, cuando los datos económicos pronosticados están disponibles.
Cuando los datos pronosticados no están disponibles, el EA utiliza los datos anteriores para hacer una operación.
El siguiente fragmento de código explica cómo se ejecuta la operación basada en datos pronosticados y datos reales. El mismo algoritmo se usa cuando el EA toma una decisión de trading basada en datos anteriores y reales.
if(StringToDouble(stActual)>StringToDouble(stForecast))
{
Aert("Más fuerte (real vs pronóstico): " + stCurrency + " " + "Hora: " + stTime);
int total=OrdersTotal();
for(int cnt=0; cnt<total; cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES); //verificar órdenes abiertas
if(OrderComment()==stCurrency+stActual+stForecast+"BUY"||
OrderComment()==stCurrency+stActual+stForecast+"SELL")
{
FileClose(file);
Comment("\n"+"Operación en Vivo Abierta"+OrderTicket());
return(0);
}
}
int historytotal=OrdersHistoryTotal();
for(cnt=0; cnt<historytotal; cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_HISTORY); //verificar órdenes abiertas
if(OrderComment()==stCurrency+stActual+stForecast+"BUY"||
OrderComment()==stCurrency+stActual+stForecast+"SELL")
{
FileClose(file);
Comment("\n"+"Operación Ejecutada"+OrderTicket());
return(0);
}
}
if(stCurrency=="EUR"||stCurrency=="GBP"||stCurrency=="AUD")
{
double ask=MarketInfo(ordercurrency,MODE_ASK);
double point1=MarketInfo(ordercurrency,MODE_POINT);
OrderSend(ordercurrency,OP_BUY,lot_p,ask,3,ask-(risk*point1),
ask+reward*risk*point1,stCurrency+stActual+stForecast+"BUY");
}
if(stCurrency=="CHF"||stCurrency=="CAD"||stCurrency=="NZD"||stCurrency=="JPY"||stCurrency=="USD")
{
double bid=MarketInfo(ordercurrency,MODE_BID);
double point2=MarketInfo(ordercurrency,MODE_POINT);
OrderSend(ordercurrency,OP_SELL,lot_p,bid,3,bid+risk*point2,
bid-(reward*risk*point2),stCurrency+stActual+stForecast+"SELL");
}
Primero: el EA solo puede ejecutar una orden por evento noticioso, por lo que primero verifica si se ha ejecutado una orden; si la orden está actualmente abierta, el EA sale.
Segundo: el EA determina si esta orden ya fue ejecutada y cerrada; si la orden se ha ejecutado y cerrado con ganancias o pérdidas, el EA sale.
Las (2) verificaciones para las órdenes aseguran que no haya duplicación de órdenes, lo que permite al EA realizar una única operación por evento noticioso.
A continuación, determina para qué país se están liberando los datos y abre una operación con las especificaciones de la función ordersend cuando se liberan los datos económicos.
El código anterior es para: cuando los datos reales son mayores que los datos pronosticados; el código es el mismo cuando los datos reales son menores que los datos pronosticados, la única diferencia es la dirección de la operación.
El mismo algoritmo se aplica cuando los datos anteriores se comparan con los datos reales cuando los datos pronosticados no están presentes.
Tamaño de Lotes:
El EA compara (datos reales con datos pronosticados) o (datos reales con datos anteriores); el porcentaje de diferencia entre los datos noticiosos determina la cantidad de lotes que el EA operará.
El siguiente fragmento de código muestra cómo el EA determina el porcentaje de diferencia y especifica el tamaño del lote. El tamaño del lote es un número externo que puede ser modificado para respaldar cualquier bróker de EA.
El usuario puede modificar los lotes al aplicar el EA al gráfico. Los valores predeterminados de tamaño de lote son (0.01, 0.02, 0.03...0.17).
double percent_d_AF=MathAbs((MathAbs(StringToDouble(stActual)-StringToDouble(stForecast))/StringToDouble(stForecast))*100);
double lot_p=0;
if((percent_d_AF>0 && percent_d_AF<=3)){lot_p=lot1;} //0.1 lote
if((percent_d_AF>3 && percent_d_AF<=6)){lot_p=lot2;} //0.2 lotes
if((percent_d_AF>6 && percent_d_AF<=9)){lot_p=lot3;} //0.3 lotes
if((percent_d_AF>9 && percent_d_AF<=12)){lot_p=lot4;} //0.4 lotes
if((percent_d_AF>12 && percent_d_AF<=15)){lot_p=lot5;} //0.5 lotes
if((percent_d_AF>15 && percent_d_AF<=18)){lot_p=lot6;} //0.6 lotes
if((percent_d_AF>18 && percent_d_AF<=21)){lot_p=lot7;} //0.7 lotes
if((percent_d_AF>21 && percent_d_AF<=24)){lot_p=lot8;} //0.8 lotes
if((percent_d_AF>24 && percent_d_AF<=27)){lot_p=lot9;} //0.9 lotes
if((percent_d_AF>27 && percent_d_AF<=30)){lot_p=lot10;} //1 lote
if((percent_d_AF>30 && percent_d_AF<=40)){lot_p=lot11;} //2 lotes
if((percent_d_AF>40 && percent_d_AF<=50)){lot_p=lot12;} //3 lotes
if((percent_d_AF>50 && percent_d_AF<=60)){lot_p=lot13;} //4 lotes
if((percent_d_AF>60 && percent_d_AF<=70)){lot_p=lot14;} //5 lotes
if((percent_d_AF>70 && percent_d_AF<=80)){lot_p=lot15;} //6 lotes
if((percent_d_AF>80 && percent_d_AF<=90)){lot_p=lot16;} //7 lotes
if((percent_d_AF>90 && percent_d_AF<=100)){lot_p=lot17;} //8 lotes
if((percent_d_AF>100)){lot_p=lot18;} //8 lotes
Información del Gráfico:
Captura de Pantalla de Datos Económicos Fundamentales
Cuando el EA se aplica por primera vez al gráfico, debes especificar "xTime", "riesgo", "recompensa", "MagicNumber", "enable_close_time", "wait_time" y especificar tus tamaños de lotes mínimos y máximos. Asegúrate de dejar la ubicación predeterminada donde está instalado "get right".
El EA descargará el calendario de DailyFX y determinará qué evento noticioso es el siguiente. Mostrará los siguientes datos: Fecha, Hora, Zona Horaria, Divisa, Descripción, Importancia, Actual, Pronóstico y datos del evento noticioso anterior como un comentario en el gráfico, tal como se muestra en la imagen anterior.
En la imagen anterior, el EA está esperando el evento noticioso que se liberará a las 2:00 AM, y como puedes ver, los datos económicos anteriores son conocidos (73,5%), por lo que el EA está esperando que se liberen los datos actuales. Cuando se liberen los datos económicos, el EA comparará los datos y tomará una decisión de trading basada en los datos económicos anteriores y actuales.
Finalmente, el EA descarga los datos del calendario de manera minuto a minuto, comenzando desde el momento en que el evento noticioso está programado para liberarse.
Resumen del Fundamental Trader:
Este EA opera con cada evento económico que se libera en dailyfx.com/calendar, en formato CSV.
El calendario se descarga con el programa "get right".
El EA descarga el calendario cada minuto cuando los datos de noticias están programados para liberarse.
El EA analiza el calendario y determina cuál es el siguiente evento noticioso, luego espera 27 minutos para la liberación de la noticia.
Una vez que se liberan los datos económicos, determina si son (real vs. pronóstico) o (real vs. anterior).
El EA determina el tamaño de lote, la divisa a operar y la dirección basándose en el evento del calendario económico; todos estos datos se pueden encontrar en el gráfico cuando el EA está en funcionamiento.
La orden se ejecuta con una relación riesgo/recompensa de 1:3.
El EA está configurado para ejecutar solo una única orden por evento noticioso. Si "enable_close_time" está habilitado con un valor "verdadero", el EA esperará la cantidad de minutos especificada por "wait_time" antes de cerrar la orden abierta.
Recuerda seguir todas las instrucciones en el siguiente enlace https://www.mql5.com/en/articles/1502, para que el calendario se descargue correctamente y tu hora de bróker esté configurada correctamente, ya que los datos de dailyfx.com/calendar están en GMT.
Si tienes alguna pregunta, comentario o crítica, deja un comentario.
2008.10.15