Подскажите как сделать скриншот результата прогона в тестере. - страница 3

 
Еще раз. Идея такая.-" Хотелось на 1000 прогонов иметь 1000 картинок и потом отобрать очень просто. Глаз сразу видит из массы картинок  хорошую линию...
 
VVT:

Зачем вообще картинки? пересмотреть 1000 картинок и выбрать самую прикольную???

Интересуют основные результаты тестов; прибыльность, просадка, матоожидание, фактор восстановления... всё это быстро сортируется в экселе

Опять же эксель, имея ордера в csv формате создается график по Вашему вкусу в экселе
"Перепробовал множество способов выяснения какой прогон имеет наиболее неломанную "ломаную" :) линию баланса. Пока Фактор восстановления наилучший.  Но порой он дает парадоксальные результаты(впрочем как и все остальные. Линейная корреляция тоже). Решил попробовать делать скриншоты линии баланса в конце прогона. Больше ничего на ум не приходит. Подскажите кто знает как. Спасибо!"


Не интересен фактор восстановления. Были советники с ФР под 60(да и больше были). А линия в конце горизонтальная. За 5 лет. Ну и зачем такой способ. пусть будет 10-15, но..


 
Dmitry Fedoseev:
В деините картинку создать, сохранить. В формате bmp совсем не сложно.
Вот я и пытаюсь понять. Как?
 
Александр:
Вот я и говорю. Как?

https://www.mql5.com/ru/code/251

 
#include <Graphics\Graphic.mqh>

// https://www.mql5.com/ru/code/18801
#define MIN_WIDTH 10
string GraphPlot2( const double &Y[], int Width = 0, int Height = 0,
                   const ENUM_CURVE_TYPE Type = CURVE_NONE,
                   const string CurveName = 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 Size = ::ArraySize(Y);

    Graphic.CurveAdd(Y, ((Type == CURVE_NONE) && Size) ? ((Width / Size < MIN_WIDTH) ? CURVE_LINES : CURVE_POINTS_AND_LINES) : Type, CurveName);

    Graphic.CurvePlotAll();
    Graphic.Update();
  }

  return (Res ? Graphic.ChartObjectName() : NULL);
}

void OnStart()
{
  double Data[]  ={0, 2, 1, 4};
  
  // https://www.mql5.com/ru/forum/170952/page142#comment_13349694
  ResourceSaveBMP(::ObjectGetString(0, GraphPlot2(Data), OBJPROP_BMPFILE), "Test.bmp");
}


 
fxsaber:


Спасибо! А для МТ4 нет у Вас?

 
Спасибо! Надо для мт4.
 
Александр:
Спасибо! Надо для мт4.

Что из предложенных кодов у вас не компилируется под четверку?

 
Александр:
Сбор данных не проблема( в deinit перебираем закрытые сделки).

Если баланс, то да. Если нужна линия эквити, собирать данные нужно на протяжении всего теста.

 
Dmitry Fedoseev:

Самый простой способ - использовать индикатор. Индикатор создает пару кнопок (вперед, назад для передора вариантов), а данные отображает в подокне буфером. Соответственно, при тестировании в эксперте в деините сохранять текстовые файлы с историей баланса.

Не подходит. надо видеть сразу много вариантов.