Вопросы ответы по MQL5 - страница 2

 
stringo писал(а) >>

А вот это - вряд ли. Мы не можем адекватно моделировать ручные (то есть непредсказуемые) действия.

А зачем их моделировать? Пользователь сам будет генерировать ручные действия в режиме визуализации. А вот Вы дайте возможность перехвата этих действий.

 
Renat писал(а) >>

Мы приняли решение запустить тестирование возможности использовать графические объекты в индикаторах.

Дождитесь очередного тестового билда, пожалуйста. А потом оценим результаты.

Вода камень точит.

Просите и воздасться.

 
Renat писал(а) >>

Мы приняли решение запустить тестирование возможности использовать графические объекты в индикаторах.

Дождитесь очередного тестового билда, пожалуйста. А потом оценим результаты.

В экспертах также пусть остается возможность работы с графическими объектами.

 

Графические объекты - хорошо.

Означает ли это, что расширится и список событий, на которые реагирует Neoиндикатор? Сейчас OnChartEvent() обрабатывается только экспертом, а не индикатором. В некоторых вполне естественных задачах это жутко неудобно.

 

Если я правильно понимаю в индикаторе

не отрабатывают ChartSet...

mt5 186 рели з mql - 177


//+------------------------------------------------------------------+
//|                                               YURAZ_BF_MT5V1.mq5 |
//|                        Copyright 2009, MetaQuotes Software Corp. |
//|                                              https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "2009, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property indicator_chart_window

int OnInit()
  {

//
// Настройка чарта -- в индикаторе не отрабатывает
//
   ChartSetInteger( 0, CHART_SHOW_OHLC       , false         ); // вверху название пары и OHCL
   ChartSetInteger( 0, CHART_MODE            , CHART_CANDLES ); // свечи
   ChartSetInteger( 0, CHART_SHOW_BID_LINE   , true          ); // свечи
   ChartSetInteger( 0, CHART_SHOW_ASK_LINE   , true          ); // свечи
   ChartSetInteger( 0, CHART_SHOW_PERIOD_SEP , true          ); // свечи
   ChartSetInteger( 0, CHART_SHOW_GRID       , false         ); // свечи
   ChartSetInteger( 0, CHART_SHOW_VOLUMES    , false         ); // свечи
   ChartSetString ( 0, CHART_COMMENT         , Symbol()      ); // свечи

   printf(">>>"); // в индикаторе не отработает

//---
   return(0);
  }
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime& time[],
                const double& open[],
                const double& high[],
                const double& low[],
                const double& close[],
                const long& tick_volume[],
                const long& volume[],
                const int& spread[])
  {

  return(rates_total);
  }
//+------------------------------------------------------------------+


 
YuraZ >>:

Если я правильно понимаю в индикаторе

не отрабатывают ChartSet...

mt5 186 рели з mql - 177


Справка


 
api писал(а) >>

А зачем их моделировать? Пользователь сам будет генерировать ручные действия в режиме визуализации. А вот Вы дайте возможность перехвата этих действий.

а как скрестить "коня и трепетную лань"? тут либо одно, либо другое - совершенно разные среды исполнения.

 

простой пример использования торгового события

при любом изменении состояния ордеров,

сохранить в каталог MQL5\files скриншоты в GIF по всем открытым чартам

даже на тех где нет экспертов


- скрин- шот самого МТ5 хочется или скриншот любого другого окна! можно ?


void OnTrade()
{
//
// после опрерации пробежаться по всем открытым графикам и сделать по ним скриншот
// и по тем где не стоят эксперты
   long idScreenFirst=ChartFirst(); // получить первый график в терминале
   long idScreen=idScreenFirst;
   MqlDateTime tTime;
   TimeLocal(tTime); // получим локальное время 
   while(idScreen!=-1)
     {
      // формируем уникальное имя файла
      string FileName=ChartSymbol (idScreen) +"_"+StringFormat("%0004d%02d%02d_%02d%02d%02d.gif",
                             tTime.year
                             , tTime.mon
                             , tTime.day
                             , tTime.hour
                             , tTime.min
                             , tTime.sec
                             );
      // Сохраним скриншот в папку MQL5/files  по правилам форума разрешение не более 700x500
      ChartScreenShot(idScreen,FileName,700,500,ALIGN_RIGHT); 
      idScreen=ChartNext(idScreen); // получить ID следующего графика
     }

}
 

Мне кажется проблему с невозможностью рисования индикаторами можно решить, не давая разрешения запуска нескольких советников на графике.

Для этого нужно создать специальное событие(функцию) ONTickScreen(), которое будет можно использовать в индикаторах

вместо ( !!! но не одновременно с ONCalculate ) которая будет вызываться каждый тик.

Работать она должна по типу start() в индикаторах MQL4.

НО :

1. Все создаваемые буфера будут внутренними и недоступны из экпертов и скриптов.

2. Длина буферов должна быть автоматически равна длине экрана.

3. Возможно будет разрешить доступ к массивам-таймсериям текущего графика с длинной, совпадающей с длинной экрана.

4. Разрешить вызывать по iCustom() (точнее,через хэндл) только индикаторы типа OnCalculate


Таким образом индикаторы просто разделятся на два типа :

1. индикаторы OnCalculate (вычислители ) для использования в программах. Им вообще можно запретить рисовать.

2. индикаторы OnTickScreen() ( рисовальщики) для отображения информации.


Не надо ничего переделывать, просто добавить новую функцию-обработчик события.

 
api писал(а) >>

Вода камень точит.

Просите и воздасться.

А чтобы отладчик появился, придется видимо песок целовать, по которому ходят разработчики.

Причина обращения: