Видалення стрілок з графіка - мова програмування mql4

Можна і скриптом. Особисто я роблю так - тисну правою кнопкою миші на графік і вибираю пункт "список об'єктів". Потім комбінацією клавіш Ctrl + A виділяю все і тисну на кнопку видалити

У мене йде на це секунд 15.))))

Звичайно, можна і вручну, якщо об'єктів не так багато. До речі, список об'єктів зручніше викликати комбінацією Ctrl + B. Але людина спочатку просив, щоб не вручну. І є такі скрипти / індикатори, які цих стрілок тисячами за раз на графік кидають. Так що "рука бійця колоти втомиться".

Шановні панове # 33;
Дякую за ваші відповіді.

Шановний WTrader # 33; Якщо це не дуже важко, поясніть, будь ласка, трохи докладніше. Додаю скріншот. На ньому видно, що є безліч стрілок, відповідних відкриття і закриття ордерів (стрілочки ставляться оскільки заданий колір в командах OrderSend і OrderClose). Всі відкриття і зарита ордерів виконує тільки радник. Завдання полягає в тому, щоб на графіку залишалися тільки ті стрілочки, які відповідають ордерами, які ще не закриті, тобто при відкритті ордера його стрілочка з'являлася, а при закритті зникала. (Як зробити, щоб не з'являлися стрілочки закриття мені зрозуміло: прибрати параметр "колір" в OrderClose.)). Тобто в будь-який момент часу на графіку повинні бути стрілочки тільки тих ордерів, які ще не закриті.

Видалення стрілок з графіка - мова програмування mql4

Попутно дозволю собі ще питання. Як видно на скріншоті, мені зручно, щоб стовпці "Ордер", "Час", "Тип" і т.д. були нестандартної ширини. Чи є спосіб змусити термінал запам'ятати це? Зараз при кожному запуску терміналу доводиться вручну зрушувати кордону стовпців в потрібне положення.

Шановні панове # 33;
Дякую за ваші відповіді.

Шановний WTrader # 33; Якщо це не дуже важко, поясніть, будь ласка, трохи докладніше. Додаю скріншот. На ньому видно, що є безліч стрілок, відповідних відкриття і закриття ордерів (стрілочки ставляться оскільки заданий колір в командах OrderSend і OrderClose). Всі відкриття і зарита ордерів виконує тільки радник. Завдання полягає в тому, щоб на графіку залишалися тільки ті стрілочки, які відповідають ордерами, які ще не закриті, тобто при відкритті ордера його стрілочка з'являлася, а при закритті зникала. (Як зробити, щоб не з'являлися стрілочки закриття мені зрозуміло: прибрати параметр "колір" в OrderClose.)). Тобто в будь-який момент часу на графіку повинні бути стрілочки тільки тих ордерів, які ще не закриті.

Видалення стрілок з графіка - мова програмування mql4

Попутно дозволю собі ще питання. Як видно на скріншоті, мені зручно, щоб стовпці "Ордер", "Час", "Тип" і т.д. були нестандартної ширини. Чи є спосіб змусити термінал запам'ятати це? Зараз при кожному запуску терміналу доводиться вручну зрушувати кордону стовпців в потрібне положення.


Подивися на імена цих самих стрілок і удаляй їх після закриття ордера на ім'я, в чому проблема не зрозумію, після закриття ордера знаходь стрілку і удаляй. І навіщо їх взагалі малювати якщо лінії ордерів і так є на графіку. Малюють їх якраз щоб подивитися де були ордера а де поточні і так видно.


Завдання полягає в тому, щоб на графіку залишалися тільки ті стрілочки, які відповідають ордерами, які ще не закриті, тобто при відкритті ордера його стрілочка з'являлася, а при закритті зникала. (Як зробити, щоб не з'являлися стрілочки закриття мені зрозуміло: прибрати параметр "колір" в OrderClose.)). Тобто в будь-який момент часу на графіку повинні бути стрілочки тільки тих ордерів, які ще не закриті.
(Image)


Немає нічого нудніше, ніж розбиратися в чужому коді. Особливо, коли немає ніякого опису. До розробнику радника треба б звернутися. Підозрюю, що радник узятий звідкись даром. Відповідно, без будь-якої підтримки. Невідомо, як стрілки прив'язуються до ордерами. Це можна по-різному робити. А рішення задачі вже було озвучено. Якщо стрілок так багато, то організовується цикл з перевіркою наявності ордерів.

Попутно дозволю собі ще питання. Як видно на скріншоті, мені зручно, щоб стовпці "Ордер", "Час", "Тип" і т.д. були нестандартної ширини. Чи є спосіб змусити термінал запам'ятати це? Зараз при кожному запуску терміналу доводиться вручну зрушувати кордону стовпців в потрібне положення.


Натисни латинську А, щоб скасувати автоматичну розмітку стовпців.

Шановні панове # 33;
Дякую за ваші відповіді.

Не відомо, чи як стрілки прив'язуються до ордерами.

стрілочки ставляться оскільки заданий колір в командах OrderSend і OrderClose

А рішення задачі вже було озвучено.

Я його не зрозумів. Але раз пояснити складно, без сумніву розберуся сам.
(NB: радник не «взятий звідкись", а написаний мною. Він нескладний, але те, що від нього вимагається, робить).

Натисни латинську А, щоб скасувати автоматичну розмітку стовпців.

Оскільки межі стовпців зрушені щодо звичайного їхнього економічного становища, можна припустити, що автоматична розмітка вже скасовано.
Проблема полягає в тому, що

Зараз при кожному запуску терміналу доводиться вручну зрушувати кордону стовпців в потрібне положення.

Іншими словами, я зрушую кордону стовпців так, як мені зручно, але при наступному запуску терміналу вони знову встановлюються в стандартне положення, і їх знову потрібно рухати. Це не трагічно, звичайно, але дратує. Тому я і запитав, чи можна їх зафіксувати, так щоб при наступних запусках терміналу вони стояли в тому положенні, в яке я їх встановив.

У моєму терміналі ширина стовпців не збивається при кожному новому запуску, якщо була виставлена ​​вручну.
А стрілки все-одно мають свої імена, де обов'язково присутній унікальний номер. За цим номером і фільтруй.
Приблизно так повинно вийти:

void deinit ()
for (int cnt = value_min; cnt<=value_max; cnt++)
if (ObjectType ( "Arrow" + cnt) = 22) // ---- переконуємося, що об'єкт є стрілкою: 22 - OBJ_ARROW
ObjectDelete ( "Arrow" + cnt);
>
>

Видаляє всі об'єкти на графіку, вставити в код будь-якого індикатора.