Esta librería le permite leer/escribir archivos tst - MT5-Tester single pass format.
Algunas variantes de uso
Foro sobre trading, sistemas automatizados de trading y testeo de estrategias de trading
fxsaber, 2019.10.04 07:18 pm.
Si abren el formato de archivos tst y colocan la carpeta de caché del Probador en el sandbox, es posible crear productos de Mercado de un nuevo tipo, que serán analizadores/correctores de los resultados del Probador.
Por ejemplo, será posible escribir un Market-combine que muestre todos los pases individuales disponibles en la caché.
No es necesario lanzar el Probador para implementar cada elemento.
Todo esto se puede hacer ahora si pones la carpeta de caché en el sandbox a través de mklink. Sólo necesitas tst-format.
Quien sienta la fuerza en sí mismo probablemente debería empezar a escribir tal producto. Con mucho gusto me uniría al equipo de sus desarrolladores y lo compraría. El nicho está completamente vacío.
Si cache-folder no es sandboxed, puede haber una mayor posibilidad de que productos similares aparezcan fuera del ecosistema MQ, ya que serán escritos en otros lenguajes.
#include <fxsaber\SingleTesterCache\SingleTesterCache.mqh> // Datos de una sola pasada del probador. void OnStart() { SINGLETESTERCACHE SingleTesterCache; // Creado un objeto caché de comprobador. SingleTesterCache.Set(); // Pon la historia real de la puja. // ..\.\.\MQL5\Files/Test.tst. Print(SingleTesterCache.Save("Test.tst")); // Escribirlo en un archivo que pueda ser importado al Probador. }
Este script recopila el historial de operaciones de cuentas reales en formato tst. Se importa al Probador de la siguiente manera.
Resulta algo así
Las soluciones DLL no se pueden colocar en KB, por lo que a continuación se muestra el código fuente de otro script, que no se incluye en la entrega de KB.
#include <fxsaber\SingleTesterCache\SingleTesterCache.mqh> // Datos de una sola pasada del probador. #include <Graphics\Graphic.mqh> #include <fxsaber\MultiTester\MTTester.mqh> // https://www.mql5.com/es/code/26132 #define MIN_WIDTH 10 // Creación de un gráfico. string GraphPlot( const double &Y1[], const double &Y2[], int Width = 0, int Height = 0, const ENUM_CURVE_TYPE Type = CURVE_NONE, const string CurveName1 = NULL, const string CurveName2 = NULL, string ObjName = NULL ) { Width = Width ? Width : (int)::ChartGetInteger(0, CHART_WIDTH_IN_PIXELS); Height = Height ? Height : (int)::ChartGetInteger(0, CHART_HEIGHT_IN_PIXELS); ObjName = (ObjName == NULL) ? __FUNCTION__ : ObjName; CGraphic Graphic; const bool Res = (::ObjectFind(0, ObjName) >= 0) ? Graphic.Attach(0, ObjName) : Graphic.Create(0, ObjName, 0, 0, 0, Width, Height); if (Res) { const int Size1 = ::ArraySize(Y1); const int Size2 = ::ArraySize(Y2); Graphic.CurveAdd(Y1, ((Type == CURVE_NONE) && Size1) ? ((Width / Size1 < MIN_WIDTH) ? CURVE_LINES : CURVE_POINTS_AND_LINES) : Type, CurveName1); Graphic.CurveAdd(Y2, ((Type == CURVE_NONE) && Size2) ? ((Width / Size2 < MIN_WIDTH) ? CURVE_LINES : CURVE_POINTS_AND_LINES) : Type, CurveName2); Graphic.CurvePlotAll(); Graphic.Update(); } return (Res ? Graphic.ChartObjectName() : NULL); } void OnStart() { uchar Bytes2[]; if (MTTESTER::GetLastTstCache(Bytes2) != -1) // Si fuera posible leer el último registro de caché de una sola ejecución { const SINGLETESTERCACHE SingleTesterCache(Bytes2); // Condúcelo al objeto correspondiente. SingleTesterCache.SaveSet(NULL, true, "Created by " + __FILE__); // Guarda el archivo set con los detalles. double Balance[]; double Equity[]; // Imprime el gráfico de saldo y patrimonio. if (SingleTesterCache.GetBalance(Balance) && SingleTesterCache.GetEquity(Equity)) GraphPlot(Balance, Equity, 1200, 500, CURVE_NONE, "Balance", "Equity"); Print(SingleTesterCache.Header.ToString()); // Salida de la cabecera de una sola pasada. Print(SingleTesterCache.Summary.ToString()); // Statistica. Print(SingleTesterCache.Inputs); // Parámetros de entrada. } }
Este script recogerá automáticamente los datos de la última pasada y mostrará sus datos, incluyendo un gráfico de balance/equidad.
Gracias a los desarrolladores por crear las cachés de Tester y ayudarme a descomprimir sus formatos.
Traducción del ruso realizada por MetaQuotes Ltd
Artículo original: https://www.mql5.com/ru/code/27611
Script para Mapear Símbolos de Market Watch Basado en Similaridad
Este script es una solución de referencia para mapear nombres de símbolos configurados por los usuarios en EAs o scripts de MetaTrader 5 con los nombres reales proporcionados por el broker. Utiliza el algoritmo de distancia de Levenshtein para identificar automáticamente el símbolo más similar en Market Watch. Ideal para desarrolladores que enfrentan problemas de compatibilidad con prefijos o sufijos en los nombres de los símbolos. Es un punto de partida personalizable para adaptarse a cualquier necesidad específica.
Informe de Análisis de Velas
Este script ayuda a los traders a entender la distribución y amplitud de las velas en un período específico, lo que puede ser útil para tomar decisiones de trading como qué Take Profit o Stop Loss usar según los valores históricos.
Calendario
Calendario: análisis fundamental histórico y en tiempo real.
Detección del inicio de una nueva barra o vela
Detección del inicio de una nueva barra o vela en el manejador de eventos OnTick() de un Asesor Experto.