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

 
Andrei Sokolov #:

Понятно, спасибо. Жесть костыль. те, получается, именно вводить никак.

Не предназначен тестер для таких действий.Да и "костыль" очень даже и полезный, всё без клавиатуры можно делать.А на планшете так вообще самое то
 
Arch #:
Не предназначен тестер для таких действий.Да и "костыль" очень даже и полезный, всё без клавиатуры можно делать.А на планшете так вообще самое то
Как вариант с клавиатуры можно клавиши считывать но работает ли это в тестере я никогда не проверял 
 
Andrei Sokolov #:

//--- установим цвет фона
   ObjectSetInteger(chart_ID,name,OBJPROP_BGCOLOR,back_clr);

Ко мне можно на ты и без больших букв, чсв проблем нет))
Arch #:
RGB цифрами цвет просто прописывает в свойствах бакграунда кнопки

Спасибо!

 
JRandomTrader #:

Таки, чем не нравится стейт в файле? Туда много чего можно писать. Или из-за VPS?

Да с файлами ок. Это если проекты с деньгами... )

А так пока продолжать тут можно через ф-ии Ким И В.

С файлами качну.... тему. Чуть позже.... надо... надо.. готовлюсь.....

Нет. Не впс. Комп из дома торгует....
 
Roman Shiredchenko #:
Да с файлами ок. Это если проекты с деньгами... )

А так пока продолжать тут можно через ф-ии Ким И В.

С файлами качну.... тему. Чуть позже.... надо... надо.. готовлюсь.....

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

Чем глобальные переменные терминала не подходят?

 

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

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

Roman Shiredchenko, 2025.05.03 16:37

коллеги тут мысля пришла  -решил на долго не откладывать пока не забыл, по организационному вопросу - надо знать значение пользовательского индикатора во время открытия позиции например покупка - во вложении, для его получения при перезагрузке терминала к примеру или переключения таймфрейма - не через глобальные переменные терминала его отсматривать и не из файла ранее сохраненного считывать  - а что если отсматривать можно через время открытия позиции... мне надо (можно с погрешностью) зная время открытия позиции или даже номер бара (через номер бара) может так, потом например, после выходных когда может комп вообще выключен, в понедельник его включая - чтобы робот, например в ините, если есть позиция по символу крайняя (первая справа - значек покупка синяя стрелка справа налево первая), зная время ее открытия, считывал значение индикатора - на рисунке желтая кривая снизу в доп окне. Актуально и для Мт 4 и для МТ 5 


с робота к нему обращаюсь следующим образом:


int indHandle=INVALID_HANDLE;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   // GlobalVariableSet(текущее_значение_спред_продан_глобал,1.23);
   
   indHandle=iCustom(_Symbol,_Period,"spreads",1,Coefficient_to_an_integer1,Symbol2,Reverse,1,Coefficient_to_an_integer2);
   if(indHandle == INVALID_HANDLE)
     {
      Print("Can't load indicator.");
      return INIT_FAILED;
     }

...

 текущее_значение_спред_куплен =   NormalizeDouble(GetData(indHandle,0),0);
   
   
   return(INIT_SUCCEEDED);
  }
   spread0 = NormalizeDouble(GetData(indHandle,0),0); // текущее значение спреда на нулевом баре
   spread2 = NormalizeDouble(GetData(indHandle,2),0); // текущее значение спреда на втором баре

...

double GetData(const int handle,const int i)
  {
   double res[1];
   if(CopyBuffer(handle,0,i,1,res)<=0)
      return(0);
   return(res[0]);
  }

индикатор во вложении.

может как то через ф-ию iTime  ()  можно, в ините, зная время открытия позиции например покупка - можно выйти на номер бара, на текущем (рабочем) таймфрейме и через него уже запросить это значение в ф-ии обращения к значению индикатора

Это чтобы не связываться с записью в файл значения индикатора или глобальными переменными терминала

по сути вот нашел ф-ию Ким И В для МТ 4 ее вставить вместо "Х" и все...???

если так - то можно подобие и для МТ 5?

NormalizeDouble(GetData(indHandle,Х),0); // текущее значение спреда на Х баре, на котором была открыта крайняя позиция покупки к примеру

Я просто балдею от вашего неумения пользоваться получеными знаниями.

Ведь всё что надо вы уже сказали. По времени найти номер бара… Затем внимательно прочтите синтаксис функции CopyBuffer

int  CopyBuffer(
   int       indicator_handle,     // handle индикатора
   int       buffer_num,           // номер буфера индикатора
   int       start_pos,            // откуда начнем 
   int       count,                // сколько копируем
   double    buffer[]              // массив, куда будут скопированы данные
   );

И даже можно перепроверить, может и номер бара не надо определять. Я не помню проверял-ли я, обязательно-ли время приводить ко времени открытия бара…

int  CopyBuffer(
   int       indicator_handle,     // handle индикатора
   int       buffer_num,           // номер буфера индикатора
   datetime  start_time,           // с какой даты
   int       count,                // сколько копируем
   double    buffer[]              // массив, куда будут скопированы данные
   );

Так вообще никаких проблем.

 
Alexey Viktorov #:

Я просто балдею от вашего неумения пользоваться получеными знаниями.

Действительно. Часто правильное решение лежит на поверхности.

 
МТ5 преднамеренно отключен от интернета, тики не поступают и как следствие OnCalculate() не перезапускается. Но в некоторых ситуациях необходимо чтобы сработал OnCalculate() - в таких случаях - 'правый клик' и в открывшемся окне выбираю 'Обновить' (OnCalculate() запускается). Хотелось бы для подобных ситуаций создать кнопку, кликнув которую можно было получить поведение, аналогичное 'Обновить'. Это возможно?

ПС С OnTimer() знаком, но интересно решение для OnCalculate().
 
Andrei Sokolov #:

Чем глобальные переменные терминала не подходят?

Пока ими в роботе учусь пользоваться....
Как к ним в коде обращаться?

И организационный  вопрос по ним, у меня к примеру 20 символов на каждом торгует один и тот же робот с разными магиками, тут надо в названии переменной в каждом роботе, её название видимо к магику  привязывать...
 
Alexey Viktorov #:

Я просто балдею от вашего неумения пользоваться получеными знаниями.

Ведь всё что надо вы уже сказали. По времени найти номер бара… Затем внимательно прочтите синтаксис функции CopyBuffer

И даже можно перепроверить, может и номер бара не надо определять. Я не помню проверял-ли я, обязательно-ли время приводить ко времени открытия бара…

Так вообще никаких проблем.

Спс, прочту ещё раз... )