Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Нашел прибыльную стратегию? Заведи торговый сигнал и заработай на этом!
Алексей
1565
Алексей 2006.03.06 22:46 
Начал изучать MQL4 и возникла проблема с отрисовкой элементов которые добавленны в советнике.
я написал простую функцию для этого и вызываю её в функции start()
void DrawNumber() { string object_name = Bars - 1; int ret = ObjectFind(object_name); PrintLastError(); if(ret != -1) return (0); ObjectCreate(object_name, OBJ_TEXT, 0, Time[1], High[1] + 5*Point); PrintLastError(); string number = Bars - 1; ObjectSetText(object_name, number, 7, "Arial", RGB(255,0,0)); ObjectSet(object_name, OBJPROP_TIMEFRAMES, OBJ_PERIOD_H1); PrintLastError(); } void PrintLastError() { int error = GetLastError(); if(error != 0) { Print(ErrorDescription(error)); } }

Затем запускаю советник для евродоллора к примеру для H1
Открываю окно графика нажав на кнопку "Открыть график", но график пустой только бары.
Смотрю в диалоге "Список объектов" есть все мои объекты и я могу сделать их видимыми нажав на кнопку "Показать".
Это конечно хорошо, но я хочу чтобы объекты СРАЗУ были видны как тольо я их добавил в советнике и не лезть в диалог "Список объектов".
Есть ли такая возможность? Может быть надо включить какую-то опцию для этого в метатрейдере или в самом коде советника?
Функция RedrawObjects() не помогает сделать сразу их видимыми.

Заранее спасибо за советы.
Евгений Панин
702
Евгений Панин 2006.03.07 11:54  
Функция RedrawObjects() не помогает сделать сразу их видимыми.
Наверное, имелось ввиду ObjectsRedraw()?
Странно, что не помогает. В моих программах это успешно работает.
Алексей
1565
Алексей 2006.03.07 14:53  
SKif:
Функция RedrawObjects() не помогает сделать сразу их видимыми.
Наверное, имелось ввиду ObjectsRedraw()?
Странно, что не помогает. В моих программах это успешно работает.
Не знаю ObjectsRedraw не помогает всем моим объектам перерисоваться.
Я запускаю советника и открываю график и он пуст нет моих объектов но иду в диалог
"все объекты" и уже там выделяю их и делаю видимыми. Что за проблема не пойму.
А ты бы не мог прислать фрагмент своего кода где ты добавляешь графические компоненты
и заставляешь их быть видимыми сразу?
Евгений Панин
702
Евгений Панин 2006.03.07 18:12  
У меня там достаточно сложно всё. Вернее там всего много. https://www.mql4.com/ru/forum/2773/
А ObjectsRedraw() используется как положено один раз в файле AG_Work_scr. mq4

Тут одно из двух:
- либо в твоём коде управление просто не проходит через этот оператор,
- либо в МТ где-то есть галочка, кот. надо просто включить.

Но то, что сама по себе функция ObjectsRedraw() работает, - точно.
Slawa
Модератор
6681
Slawa 2006.03.09 13:33  
Кнопка "Показать" всего лишь перематывает график на ту дату/время, которая указана в первой координате объекта. Точно так же после открытия графика Вы можете вручную проскроллится до ближайшего объекта.
Возникает законный вопрос, почему объекты не рисуются в конце графика? Потому что тестер работает на данных из FXT-файла. Например, Вы его получили месяц назад. Тестер будет работать вплоть до даты 8 февраля.
Нажимайте иногда галочку "Пересчитать"
Евгений Панин
702
Евгений Панин 2006.03.09 15:42  
Потому что тестер работает на данных из FXT-файла
Насколько я понял речь идёт не о тестировании.
Slawa
Модератор
6681
Slawa 2006.03.10 11:53  
SKif:
Потому что тестер работает на данных из FXT-файла
Насколько я понял речь идёт не о тестировании.
===
Открываю окно графика нажав на кнопку "Открыть график", но график пустой только бары.
===
Евгений Панин
702
Евгений Панин 2006.03.10 14:39  
stringo,
да, я согласен. Просто сразу не обратил внимание.
Алексей
1565
Алексей 2006.03.10 22:56  
Stringo, спасибо за ответы.
Я здесь писал стратегию свою и в ней добавлял объекты и они видны сразу. Этот пример, который запостил сдесь в начале темы, я попробовал вновь и он тоже заработал.
Не понимаю, в чём была проблема, но возможно из-за
ObjectSet(object_name, OBJPROP_TIMEFRAMES, OBJ_PERIOD_H1);
Хотя кажется я пробовал запускать на часовиках и небыли видны сразу объекты. Уже не помню. Но сейчас нет такой проблемы и слава богу.
Кстати а что по умолчанию первый бар начинает приходить только начиная с сотого?
То есть первый вызов функции "старт" начиная с сотого бара? А можно ли это изменить скажем чтобы первый приходил двадцатый?
Воообще мт4 мне понравился. Достаточно прост в освоении. Посмотрим дальше как пойдёт.
MetaQuotes
Админ
24434
Renat Fatkhullin 2006.03.12 18:52  
Кстати а что по умолчанию первый бар начинает приходить только начиная с сотого?
Тестирование начинается с 100 бара специально. Во избежание глупейших ошибок работы на пустой истории и неправильных результатов индикаторов.
Это правило изменено не будет.
Алексей
1565
Алексей 2006.03.12 21:57  
Renat:
Кстати а что по умолчанию первый бар начинает приходить только начиная с сотого?
Тестирование начинается с 100 бара специально. Во избежание глупейших ошибок работы на пустой истории и неправильных результатов индикаторов.
Это правило изменено не будет.
Ну это нормальное правило, я думаю. Просто, в некоторых экспертах, которые в сети нашёл, идет проверка типа
if (Bars < 25) return (0)

Вот и подумал мож я чего не знаю ещё и можно где то выбрать опцию, чтобы начинать с заданного бара.

А нельзя ли в МТ4 добавить опцию, которая позволяла бы выбрать тип баров по умолчанию? К примеру, я хочу при любом новом открытии
чарта для инструмента, у меня было представление ввиде японских свечей сразу.
/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий