Arch #: Не предназначен тестер для таких действий.Да и "костыль" очень даже и полезный, всё без клавиатуры можно делать.А на планшете так вообще самое то
Как вариант с клавиатуры можно клавиши считывать но работает ли это в тестере я никогда не проверял
коллеги тут мысля пришла -решил на долго не откладывать пока не забыл, по организационному вопросу - надо знать значение пользовательского индикатора во время открытия позиции например покупка - во вложении, для его получения при перезагрузке терминала к примеру или переключения таймфрейма - не через глобальные переменные терминала его отсматривать и не из файла ранее сохраненного считывать - а что если отсматривать можно через время открытия позиции... мне надо (можно с погрешностью) зная время открытия позиции или даже номер бара (через номер бара) может так, потом например, после выходных когда может комп вообще выключен, в понедельник его включая - чтобы робот, например в ините, если есть позиция по символу крайняя (первая справа - значек покупка синяя стрелка справа налево первая), зная время ее открытия, считывал значение индикатора - на рисунке желтая кривая снизу в доп окне. Актуально и для Мт 4 и для МТ 5
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
intCopyBuffer(
int indicator_handle, // handle индикатораint buffer_num, // номер буфера индикатораintstart_pos, // откуда начнемintcount, // сколько копируемdouble buffer[] // массив, куда будут скопированы данные
);
И даже можно перепроверить, может и номер бара не надо определять. Я не помню проверял-ли я, обязательно-ли время приводить ко времени открытия бара…
intCopyBuffer(
int indicator_handle, // handle индикатораint buffer_num, // номер буфера индикатораdatetimestart_time, // с какой датыintcount, // сколько копируемdouble buffer[] // массив, куда будут скопированы данные
);
МТ5 преднамеренно отключен от интернета, тики не поступают и как следствие OnCalculate() не перезапускается. Но в некоторых ситуациях необходимо чтобы сработал OnCalculate() - в таких случаях - 'правый клик' и в открывшемся окне выбираю 'Обновить' (OnCalculate() запускается). Хотелось бы для подобных ситуаций создать кнопку, кликнув которую можно было получить поведение, аналогичное 'Обновить'. Это возможно?
ПС С OnTimer() знаком, но интересно решение для OnCalculate().
И организационный вопрос по ним, у меня к примеру 20 символов на каждом торгует один и тот же робот с разными магиками, тут надо в названии переменной в каждом роботе, её название видимо к магику привязывать...
Понятно, спасибо. Жесть костыль. те, получается, именно вводить никак.
Не предназначен тестер для таких действий.Да и "костыль" очень даже и полезный, всё без клавиатуры можно делать.А на планшете так вообще самое то
//--- установим цвет фона
ObjectSetInteger(chart_ID,name,OBJPROP_BGCOLOR,back_clr);
RGB цифрами цвет просто прописывает в свойствах бакграунда кнопки
Спасибо!
Таки, чем не нравится стейт в файле? Туда много чего можно писать. Или из-за VPS?
Чем глобальные переменные терминала не подходят?
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
Roman Shiredchenko, 2025.05.03 16:37
коллеги тут мысля пришла -решил на долго не откладывать пока не забыл, по организационному вопросу - надо знать значение пользовательского индикатора во время открытия позиции например покупка - во вложении, для его получения при перезагрузке терминала к примеру или переключения таймфрейма - не через глобальные переменные терминала его отсматривать и не из файла ранее сохраненного считывать - а что если отсматривать можно через время открытия позиции... мне надо (можно с погрешностью) зная время открытия позиции или даже номер бара (через номер бара) может так, потом например, после выходных когда может комп вообще выключен, в понедельник его включая - чтобы робот, например в ините, если есть позиция по символу крайняя (первая справа - значек покупка синяя стрелка справа налево первая), зная время ее открытия, считывал значение индикатора - на рисунке желтая кривая снизу в доп окне. Актуально и для Мт 4 и для МТ 5
с робота к нему обращаюсь следующим образом:
...
индикатор во вложении.
может как то через ф-ию iTime () можно, в ините, зная время открытия позиции например покупка - можно выйти на номер бара, на текущем (рабочем) таймфрейме и через него уже запросить это значение в ф-ии обращения к значению индикатора
Это чтобы не связываться с записью в файл значения индикатора или глобальными переменными терминала
по сути вот нашел ф-ию Ким И В для МТ 4 ее вставить вместо "Х" и все...???
если так - то можно подобие и для МТ 5?
Я просто балдею от вашего неумения пользоваться получеными знаниями.
Ведь всё что надо вы уже сказали. По времени найти номер бара… Затем внимательно прочтите синтаксис функции CopyBuffer
И даже можно перепроверить, может и номер бара не надо определять. Я не помню проверял-ли я, обязательно-ли время приводить ко времени открытия бара…
Так вообще никаких проблем.
Я просто балдею от вашего неумения пользоваться получеными знаниями.
Действительно. Часто правильное решение лежит на поверхности.
ПС С OnTimer() знаком, но интересно решение для OnCalculate().
Чем глобальные переменные терминала не подходят?
Я просто балдею от вашего неумения пользоваться получеными знаниями.
Ведь всё что надо вы уже сказали. По времени найти номер бара… Затем внимательно прочтите синтаксис функции CopyBuffer
И даже можно перепроверить, может и номер бара не надо определять. Я не помню проверял-ли я, обязательно-ли время приводить ко времени открытия бара…
Так вообще никаких проблем.