Ваши вопросы по языку MQL4

Bob5

Новичок форума
Неподскажете как можно переместить Comment в правую сторону в экране терминала. Если ставить пробелы внутри кавычек - в метаедиторе получается до неприличия растянутый в ширину советник .
 

vadynik

Активный участник
Неподскажете как можно переместить Comment в правую сторону в экране терминала. Если ставить пробелы внутри кавычек - в метаедиторе получается до неприличия растянутый в ширину советник .

Никак, используй графические объекты
 

Bob5

Новичок форума
Хотел уже давно спросить - на сколько граф.объекты грузят терминал при работе советника или это мизер?
 

Ugar

Гуру форума
Хотел уже давно спросить - на сколько граф.объекты грузят терминал при работе советника или это мизер?
Померил. Установил текстовую метку, задал угол, координаты, размер шрифта, потом удалил метку. Так 1 000 000 раз. Это заняло примерно 4 секунды. Значит установка одной метки занимает около 4 микросекунд. Довольно быстро. Правда, комп у меня хоть и древний, но не слабенький.
 
  • Like
Реакции: Bob5

Bob5

Новичок форума
Если можно еще вопросик.
Как правильно написать, чтоб условие проверялось один раз, каждые например
3 минуты, от открытия действующего бара, (на примере 15фрейма).
Типа этого

extern int Tm=3; // один раз в три минуты (после открытия текущего бара) будет проверяться условие и так каждые 3-минуты

if (TimeCurrent() ==Time[0]+(Tm || Tm*2 || Tm*3. и так далее)) Open_Sell();

если тайм фрейм 15минут, то писать Tm - 15раз
несовсем правильно. Возможно здесь нужно
вставлять массивы, но сними пока нелады. Да и мой пример, тоже содержит недочеты.
Кто подскажет - буду признателен !
 
Последнее редактирование:

Ugar

Гуру форума
Если можно еще вопросик.
Как правильно написать, чтоб условие проверялось один раз, каждые например
3 минуты, от открытия действующего бара, (на примере 15фрейма).
Типа этого

extern int Tm=3; // один раз в три минуты (после открытия текущего бара) будет проверяться условие и так каждые 3-минуты

if (TimeCurrent() ==Time[0]+(Tm || Tm*2 || Tm*3. и так далее)) Open_Sell();

если тайм фрейм 15минут, то писать Tm - 15раз
несовсем правильно. Возможно здесь нужно
вставлять массивы, но сними пока нелады. Да и мой пример, тоже содержит недочеты.
Кто подскажет - буду признателен !
Не надо тут массивов.
как то так
static datetime b;
if(по открытию нового бара)b=Time[0];
if(TimeCurrent()>=b+Tm*60)
{
b=TimeCurrent();
//Прошло 3, 6, 9, 12... минуты с открытия бара
}
 
  • Like
Реакции: Bob5

ansol

Местный знаток
Померил. Установил текстовую метку, задал угол, координаты, размер шрифта, потом удалил метку. Так 1 000 000 раз. Это заняло примерно 4 секунды. Значит установка одной метки занимает около 4 микросекунд. Довольно быстро. Правда, комп у меня хоть и древний, но не слабенький.

Ну, объекты все-таки не с такой частотой создаются в нормально написанном эксперте, не?
Я думаю, тут интересен вопрос о неудаленных объектах на графике. Например, метки-стрелки, указывающие на открытие/закрытие ордера. Конечно, тут все завсит от "глубины" графика, вроде бы по умолчанию последние билды ставят число баров на графике 65 000. Ну и приделать каждому бару по стрелке - много это дополнительной памяти займет? оО
 

matro3

Почетный гражданин
Если можно еще вопросик.
Как правильно написать, чтоб условие проверялось один раз, каждые например
3 минуты, от открытия действующего бара, (на примере 15фрейма).
Типа этого

extern int Tm=3; // один раз в три минуты (после открытия текущего бара) будет проверяться условие и так каждые 3-минуты

if (TimeCurrent() ==Time[0]+(Tm || Tm*2 || Tm*3. и так далее)) Open_Sell();

если тайм фрейм 15минут, то писать Tm - 15раз
несовсем правильно. Возможно здесь нужно
вставлять массивы, но сними пока нелады. Да и мой пример, тоже содержит недочеты.
Кто подскажет - буду признателен !

http://docs.mql4.com/ru/eventfunctions/eventsettimer
 
  • Like
Реакции: Bob5

Ugar

Гуру форума
Ну, объекты все-таки не с такой частотой создаются в нормально написанном эксперте, не?
Я думаю, тут интересен вопрос о неудаленных объектах на графике. Например, метки-стрелки, указывающие на открытие/закрытие ордера. Конечно, тут все завсит от "глубины" графика, вроде бы по умолчанию последние билды ставят число баров на графике 65 000. Ну и приделать каждому бару по стрелке - много это дополнительной памяти займет? оО
100 000 стрелок съели 95 Mb RAM. Нормально так. Почти в 2 раза больше чем остальной терминал. А это только стрелки, без буферов индикатора.
 

ansol

Местный знаток
100 000 стрелок съели 95 Mb RAM. Нормально так. Почти в 2 раза больше чем остальной терминал. А это только стрелки, без буферов индикатора.

Ага, спасибо за инфу!
У меня один терминал жрет 300 Мб при 10 графиках по 4 индюка на каждом, конечно, есть и буферы у них и объекты. (это по встроенному диспетчеру задач)
 

Ugar

Гуру форума
Ага, спасибо за инфу!
У меня один терминал жрет 300 Мб при 10 графиках по 4 индюка на каждом, конечно, есть и буферы у них и объекты. (это по встроенному диспетчеру задач)
Чё то многовато 300. Хотя, если 10 графиков с индюками и поди что задано баров в окне много...
 

ansol

Местный знаток
Чё то многовато 300.

Ну, я и заинтересовался тем, что жрет ресурсы. Стрелочки у меня сов ставит, но количество небольшое, штук несколько в день - видимо, здесь много несъэкономить.
Кстати, удаление графика целиком видимого эффекта не дает, наверно надо терминал перезапускать?
 
  • Like
Реакции: Ugar

Ugar

Гуру форума
Ну, я и заинтересовался тем, что жрет ресурсы. Стрелочки у меня сов ставит, но количество небольшое, штук несколько в день - видимо, здесь много несъэкономить.
Кстати, удаление графика целиком видимого эффекта не дает, наверно надо терминал перезапускать?
Удаление чего либо, как и сокращение количества баров на экране, не освободит память сразу. Только после перезапуска терминала.
 

ansol

Местный знаток
Удаление чего либо, как и сокращение количества баров на экране, не освободит память сразу. Только после перезапуска терминала.

Ну я так и понял, спасибо.

Вопрос "в другую степь":
Почему не работает сова на оффлайновом графике, как будто нету тиков?
Вот здесь обсуждают ренко, на нем и не работает:
http://forexsystemsru.com/ruchnye-torgovye-strategii-i-taktiki/66911-torgovlya-na-renko-grafikah-151.html
 

Ugar

Гуру форума
Ну я так и понял, спасибо.

Вопрос "в другую степь":
Почему не работает сова на оффлайновом графике, как будто нету тиков?
Вот здесь обсуждают ренко, на нем и не работает:
http://forexsystemsru.com/ruchnye-t...ki/66911-torgovlya-na-renko-grafikah-151.html
Так может действительно нет тиков? Эти вопросы надо задать тому, кто писал программу, создающую этот график. Мне ренко не интересен.
А если бы был интересен, написал бы свой ренко. Мне, написать свою прогу проще чем разбирать кто что и где накосячил.
В конце концов, если одна програ, делает график, на котором не работают совы, можно поискать другие.
 

ansol

Местный знаток
Так может действительно нет тиков? Эти вопросы надо задать тому, кто писал программу, создающую этот график. Мне ренко не интересен.
А если бы был интересен, написал бы свой ренко. Мне, написать свою прогу проще чем разбирать кто что и где накосячил.

Как нету? На соседнем графике есть, а тут нету? Рисуются же индюки на нем, происходит эмуляция онлайнового графика, хотя, косяк видимо, есть где-то (хоть бы не у меня! :D )
 

vadynik

Активный участник
Ну я так и понял, спасибо.

Вопрос "в другую степь":
Почему не работает сова на оффлайновом графике, как будто нету тиков?
Вот здесь обсуждают ренко, на нем и не работает:
http://forexsystemsru.com/ruchnye-torgovye-strategii-i-taktiki/66911-torgovlya-na-renko-grafikah-151.html

Используй EventSetTimer(), если нет тиков
 

Ugar

Гуру форума
Костыль в сову вставить? Раньше все работало, до 600 билда, видимо, в данной версии не учтены особенности кривизны нового МТ4 :D
Или, скорее всего, особенности нового языка. Работа с файлами теперь немного отличается. Хотя и кривизну билдов исключить нельзя.
Я когда то столкнулся с кривизной, кстати текстовых меток. До 600 билда индикатор работал нормально, а после повесил терминал. Оказалось что терминал попутал имя объекта текстовой метки и текст этой метки. И за этого индикатор повесил на график тысячи объектов один поверх другого.
Потом, с выходом очередного билда, это исправили и индикатор опять заработал нормально.
 

vadynik

Активный участник
Костыль в сову вставить? Раньше все работало, до 600 билда, видимо, в данной версии не учтены особенности кривизны нового МТ4 :D

Ну когда нужно идти, можно и костыли поюзать :laugh: еще скажи что 5хх билды лучше
 
Верх