14 octubre 2016
14 octubre 2016
Añadidas descripciones emergentes para los botones Buy, Sell y Close en los cuadros de diálogo comerciales. Las descripciones aclararán qué activos precisamente se comprarán o venderán al realizar esta o aquella operación, ayudando así a los tráders principiantes a comprender la esencia del proceso comercial.
Asimismo, se ha incluido en la biblioteca una versión MQL5 de la biblioteca de análisis numérico ALGLIB.
Posibilidades de la biblioteca
Cómo usarlo
los archivos de la biblioteca ALGLIB se ubican en el catálogo \MQL5\Include\Math\Alglib. Para usar las funciones, incluya el archivo principal de la biblioteca en su programa:
En la biblioteca estándar se han incluido funciones para trabajar con estadística matemática. Ahora en MQL5 están disponibles las posibilidades del lenguaje R, uno de las mejores herramientas de procesamiento y análisis estadístico de datos.
Posibilidades de la biblioteca
La biblioteca estadística contiene funciones para el cálculo de las características estadísticas de los datos, así como funciones para trabajar con distribuciones estadísticas:
Cómo usarlo
los archivos de la biblioteca estadística se ubican en el catálogo \MQL5\Include\Math\Stat. Para usarla, incluya el archivo con las funciones necesarias en su programa, por ejemplo:
#include <Math\Stat\Binomal.mqh> #include <Math\Stat\Cauchy.mqh>
Puede leer una descripción detallada de las funciones de la biblioteca en el artículo Distribuciones Estadísticas en MQL5: tomando lo mejor de R.
Se ha incluido en la biblioteca estándar una versión MQL5 de la biblioteca Fuzzy, en la que se han implementado los sistemas de inferencia de lógica difusa Mamdani y Sugeno.
Posibilidades de la biblioteca
Cómo usarlo
Los archivos de la biblioteca Fuzzy se encuentran en el catálogo \MQL5\Include\Math\Fuzzy. Para usarla, incluya el archivo con las funciones necesarias en su programa, por ejemplo:
#include <Math\Fuzzy\mamdanifuzzysystem.mqh> #include <Math\Fuzzy\sugenofuzzysystem.mqh>
Podrá encontrar una descripción detallada de la biblioteca en Code Base: Fuzzy - biblioteca para trabajar con lógica difusa
long FileLoad( const string filename, // [in] nombre del archivo void &buffer[], // [out] matriz para la lectura uint common_flag=0 // [in] 0 - búsqueda de un archivo en la carpeta Files del terminal, FILE_COMMON - en la carpeta común de los terminales ); bool FileSave( const string filename, // [in] nombre del archivo const void &buffer[], // [in] matriz para el almacenamiento uint common_flag=0 // [in] 0 - creación de un archivo en la carpeta Files del terminal, FILE_COMMON - en la carpeta común de los terminales );Ejemplo de cómo grabar una matriz de ticks y leerla enseguida:
//--- parámetros de entrada input int ticks_to_save=1000; // número de ticks //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { string filename=_Symbol+"_ticks.bin"; MqlTick ticks[]; //--- int copied=CopyTicks(_Symbol,ticks,COPY_TICKS_ALL,0,ticks_to_save); if(copied!=-1) { PrintFormat(" CopyTicks(%s) copied %d ticks",_Symbol,copied); //--- si la historia de ticks está sicronizada, el código de error será igual a cero if(!GetLastError()==0) PrintFormat("%s: Ticks are not synchronized. Error=",_Symbol,copied,_LastError); //--- escribimos los ticks en el archivo if(!FileSave(filename,ticks,FILE_COMMON)) PrintFormat("FileSave() failed, error=%d",GetLastError()); } else PrintFormat("Failed CopyTicks(%s), Error=",_Symbol,GetLastError()); //--- ahora leemos estos ticks de vuelta desde el archivo ArrayFree(ticks); long count=FileLoad(filename,ticks,FILE_COMMON); if(count!=-1) { Print("Time\tBid\tAsk\tLast\tVolume\tms\tflags"); for(int i=0;i<count;i++) { PrintFormat("%s.%03I64u:\t%G\t%G\t%G\t%I64u\t0x%04x", TimeToString(ticks[i].time,TIME_DATE|TIME_SECONDS),ticks[i].time_msc%1000, ticks[i].bid,ticks[i].ask,ticks[i].last,ticks[i].volume,ticks[i].flags); } } }
//--- velas iguales, pintadas de un mismo color #property indicator_label1 "One color candles" #property indicator_type1 DRAW_CANDLES //--- solo se indica un color, por eso todas las velas serán solo de un color #property indicator_color1 clrGreenSi indicamos dos colores, los contornos se dibujarán con el primer color, y el cuerpo con el segundo.
//--- el color de las velas se diferencia del color de las sombras #property indicator_label1 "Two color candles" #property indicator_type1 DRAW_CANDLES //--- las sombras y el contorno de las velas en color verde, el cuerpo, en color blanco #property indicator_color1 clrGreen,clrWhiteSi se indican tres colores, el contorno de la vela se dibujará con el primer color, y el color de la vela alcista y bajista se establecerá con el segundo y el tercer color.
//--- el color de las velas se diferencia del color de las sombras #property indicator_label1 "One color candles" #property indicator_type1 DRAW_CANDLES //--- las sombras y el contorno de las velas en color verde, el cuerpo de la vela alcista, en color blanco, el cuerpo de la vela bajista, de color rojo #property indicator_color1 clrGreen,clrWhite,clrRedDe esta forma, con la ayuda del estilo DRAW_CANDLES se pueden crear variantes personalizadas propias del color de las velas. Asimismo, todos los colores pueden cambiarse de forma dinámica durante el proceso del trabajo con la ayuda de la función PlotIndexSetInteger(índice_de_la_construcción_DRAW_CANDLES, PLOT_LINE_COLOR, número_del_modificador, color) , donde el número_del_modificador puede tener los valores siguientes:
//--- establecemos el color del contorno y las sombras PlotIndexSetInteger(0,PLOT_LINE_COLOR,0,clrBlue); //--- establecemos el color del cuerpo para la vela alcista PlotIndexSetInteger(0,PLOT_LINE_COLOR,1,clrGreen); //--- establecemos el color del cuerpo para la vela bajista PlotIndexSetInteger(0,PLOT_LINE_COLOR,2,clrRed);
Se ha actualizado la documentación.