Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 1508

 
Maxim Kuznetsov:

не обязательно таскать фигню из справки, пишите очевидный цикл...вам-же потом с этим жить :-)

   for(long chartId=ChartNext(0);chartId>0 &&!IsStopped();chartId=ChartNext(chartId)) {

      if (ChartSymbol(chartId)=="") continue;

      DoChart(chartId);

   }

Это мне тоже надо переварить...
 
Maxim Kuznetsov:

   for(long chartId=ChartNext(0);chartId>0 &&!IsStopped();chartId=ChartNext(chartId)) {

      if (ChartSymbol(chartId)=="") continue;

      DoChart(chartId);

   }

Максим, я не могу понять как это применить к моей задаче(

 
MakarFX:

Помогите, пожалуйста, найти или написать функцию для поиска объектов на открытых графиках.

Пять открытых графиков, советник стоит на первом. МТ4

такой код должен работать:

#property strict
#include <Arrays\ArrayLong.mqh>
CArrayLong ChartsID;
//+------------------------------------------------------------------+
int OnInit()
{
   FindChartsBySymbol(_Symbol, ChartsID);
   for(int i = ChartsID.Total() - 1; i >= 0; i--)
   {
      long chart_id = ChartsID.At(i);
      Print("ChertID = ", chart_id, " , symbol = ", ChartSymbol(chart_id));
   }
   return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
void FindChartsBySymbol(string symbol, CArrayLong &charts)
{
   for(long currChart = ChartFirst(); currChart >= 0; currChart = ChartNext(currChart))
   {
      if(ChartSymbol(currChart) == symbol) charts.Add(currChart);
   }
}
//+------------------------------------------------------------------+

на криптовалютах проверьте, они по выходным работают

единственное - нужно контролировать открытие (и закрытие ? ) новых чартов и тогда обновлять список
 
Igor Makanu:

такой код должен работать:

на криптовалютах проверьте, они по выходным работают

Спасибо)))

 
MakarFX:

Приемлем ли запуск индикатора с минимальным кодом на каждом графике? Возможно это делать шаблоном по умолчанию.

 
Aleksei Stepanenko:

Приемлем ли запуск индикатора или советника с минимальным кодом на каждом графике? Возможно это делать шаблоном по умолчанию.

Советник на первом графике запускает DLL

так что только один

C# DLL MQ4 построение формы общения
C# DLL MQ4 построение формы общения
  • 2021.04.02
  • www.mql5.com
Еще неделю назад я не знал что такое C#...теперь я знаю что это читается "си шарп"))) Прочитав статьи https://www.mql5...
 

Если на каждый нужный график повесить такой индикатор, то при любом изменении объектов на подконтрольной территории (графике), будет посылаться событие на график с экспертом.

//идентификатор графика с советником
long ID=1;

int OnInit() 
   {
   //установка флага получения событий создания объектов графика 
   ChartSetInteger(ChartID(),CHART_EVENT_OBJECT_CREATE,true); 
   //установка флага получения событий удаления объектов графика 
   ChartSetInteger(ChartID(),CHART_EVENT_OBJECT_DELETE,true); 
   return(INIT_SUCCEEDED); 
   } 

void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) 
   {
   //если объект удалён или создан, или изменён
   if(id==CHARTEVENT_OBJECT_DELETE || id==CHARTEVENT_OBJECT_CREATE || id==CHARTEVENT_OBJECT_CHANGE)
      {
      EventChartCustom(ID,1,lparam,dparam,sparam); 
      }
   }

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);
   }
Пример как идея.
 
Aleksei Stepanenko:

Если на каждый нужный график повесить такой индикатор, то при любом изменении объектов на подконтрольной территории (графике), будет посылаться событие на график с экспертом.

Пример как идея

Спасибо, но проверил свой код на крипте, все работает как я хотел.

Всем спасибо за помощь!

 
MakarFX:

Вот у меня и проблема с Chart_ID()

Сделал так

но в тестере не проверишь(

...до понедельника так долго ждать(

При инициализации вроде все работает

А вот как будет в реале?

Пока я отсутствовал тут уже ………

На первый взгляд вроде нормально. Проверить можно в скрипте в любой день. Но вот в документации мне не нравится пример. Вот как я советую написать

#property strict

/********************Script program start function*******************/
void OnStart()
 {
  long chart = ChartFirst();
  while(chart >= 0 && !IsStopped())
   {
    if(ObjectFind(chart, "00") >= 0)
     Print("Symbol ", ChartSymbol(chart), " Period ", EnumToString(ChartPeriod(chart)));
    chart = ChartNext(chart);
   }
 }/******************************************************************/

/*****************************End program****************************/
 
Aleksei Stepanenko:

Если на каждый нужный график повесить такой индикатор, то при любом изменении объектов на подконтрольной территории (графике), будет посылаться событие на график с экспертом.

Пример как идея.

Для такой задачи

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам

MakarFX, 2021.06.19 21:21

Алексей, если честно, то с моими познаниями это звучит страшно...

Мне надо проще, нашел объект на покупку-купил, нашел объект на продажу-продал.


индикатор не подходит.