Сповіщення зі скриптів
Як скрипт на LootScript повідомляє про спрацювання умови: alert() і alertcondition(), частота, увімкнення умов, куди приходить сповіщення і чого в скриптових сповіщень немає.
Скрипт може повідомити вам, що на живому ринку виконалася умова: пробій рівня, сплеск дельти, перетин ліній. Для цього в LootScript є дві функції — alert(), яку скрипт викликає сам, і alertcondition(), умова, яку ви вмикаєте вручну.
Спрацювання потрапляє в той самий конвеєр, що й інші сповіщення терміналу: запис у стрічці Оповіщення, звук, спливаюча плашка. Усе це рахується всередині терміналу на вашому комп’ютері: сповіщення працюють, поки термінал запущено і скрипт стоїть на графіку.
Два способи
alert() |
alertcondition() |
|
|---|---|---|
| Хто вирішує, чи дзвонити | Код скрипта | Ви: умову потрібно увімкнути |
| Коли спрацьовує | За вибраною частотою, в тому числі на незакритому барі | Лише на закритті бару, не частіше за раз на бар |
| Текст | Будь-який рядок, можна зібрати з чисел | Фіксований текст у коді |
| Де вмикається | Завжди, поки скрипт на графіку | Галочкою в консолі редактора |
Якщо сповіщення потрібно завжди — використовуйте alert(). Якщо скрипт оголошує кілька сигналів, а дзвонити повинні тільки деякі — оголосіть їх через alertcondition() і увімкніть потрібні.
alert(): сповіщення з коду
alert(message, freq = alert.freq_once_per_bar_close)message — рядок. Числа в нього вставляють через str.tostring: "Цена " + str.tostring(close). Текст приходить у сповіщення як є, термінал його не перекладає і не править.
Частота задається константою:
| Частота | Коли спрацьовує |
|---|---|
alert.freq_once_per_bar_close |
За замовчуванням. Один раз, коли бар закрився: при першому оновленні наступного бару, за значеннями закритого |
alert.freq_once_per_bar |
У перший момент, коли виклик відбувся на цьому барі — навіть якщо бар ще формується. Далі мовчить до наступного бару |
alert.freq_all |
На кожному перерахунку живого бару, де виклик спрацював |
Частота рахується для кожного виклику alert() окремо: два виклики в одному скрипті не заглушують один одного. За один перерахунок скрипт відправляє не більше 16 сповіщень, решта відкидаються.
Приклад: сповіщення про сплеск дельти, щойно він з’явився на формуючомуся барі.
indicator("Всплеск дельты", overlay = false)
mult = input.float(3.0, "Во сколько раз больше обычного", minval = 1.5, step = 0.5)
base = ta.sma(math.abs(delta.value), 50)
spike = delta.available and math.abs(delta.value) > base * mult
plot(delta.value, "Дельта", style = plot.style_columns, color = delta.value >= 0 ? color.teal : color.red)
if spike {
alert("Всплеск дельты: " + str.tostring(delta.value, "#.##"), freq = alert.freq_once_per_bar)
}Там, де дельти немає, delta.available хибне й сповіщення не спрацьовує — детальніше про правило na в розділі Дані ринку.
alertcondition(): умова, яку вмикаєте ви
alertcondition(condition, title, message)condition — логічний вираз, title — назва умови, message — текст сповіщення. title і message — рядки прямо в коді, зібрати їх із чисел не можна. Без message у сповіщення піде title.
Умова дзвонить лише на закритті бару, не частіше разу за бар і тільки якщо вона увімкнена. За замовчуванням усі умови вимкнені.
Додайте скрипт на графік
В редакторі скриптів натисніть Додати на графік.
Відкрийте вкладку «Вивід»
У консолі під кодом виберіть вкладку Вивід. Там показані значення рядів на останньому барі і список «Умови алертів (alertcondition) — увімкніть потрібні».
Увімкніть умови
Позначте галочками умови, за якими хочете отримувати сповіщення. Якщо скрипт стоїть на кількох графіках, у кожного свій список.
Історія мовчить
Сповіщення дзвонять тільки на живих оновленнях. Перший розрахунок після завантаження графіка, після зміни інструмента і після підвантаження більш старшої історії вважається історією: на минулих барах ні alert(), ні alertcondition() не спрацьовують. Тому, додавши скрипт на графік, ви не отримаєте купу сповіщень за минуле.
Перевірити умову на історії можна візуально: намалюйте її міткою plotshape — вона покаже кожний бар, де сповіщення б спрацювало.
Куди приходить сповіщення
Кожне спрацювання:
- Записується в стрічку «Оповіщення» з джерелом «Скриптовий алерт». У записі — текст повідомлення, ім’я скрипта і, для
alertcondition(), назва умови. Стрічка відкривається окремим вікном або панеллю робочого простору; фільтр Джерела залишає в ній лише скриптові алерти. - Програє звук. Його вибирають в Налаштування → Сповіщення, блок «Звуки», рядок «Скриптовий алерт»: список звуків і перемикач, який вимикає звук.
- Показує плашку «Ім’я скрипта: текст».
- Підсвічує вкладку робочого простору, де стоїть графік зі скриптом.
Інші сповіщення терміналу описані на сторінці Алерти і рівні.
Журнал: log.*
Для налагодження умов є журнал. log.info, log.warning і log.error пишуть рядок у вкладку Журнал консолі редактора — туди ж, де Проблеми і Вивід.
- Журнал, як і сповіщення, пишеться тільки на живих оновленнях — на історії мовчить.
- На один бар — не більше 16 рядків, решта відкидаються.
- Консоль зберігає останні 256 рядків. Більш старі витісняються, їх кількість показано як «витіснено рядків». Кнопка Очистити очищує журнал.
indicator("Проверка условия", overlay = true)
len = input.int(20, "Канал, баров", minval = 2, maxval = 500)
upper = ta.highest(high, len)[1]
plot(upper, "Верх канала", color = color.teal)
if barstate.islast {
log.info("Закрытие " + str.tostring(close) + ", верх канала " + str.tostring(upper))
}Приклад: пробій каналу
Скрипт малює верхню межу каналу, відзначає пробої трикутником і повідомляє про них двома способами: alert() дзвонить завжди, а умова «Пробой вверх» — тільки якщо ви її увімкнули.
indicator("Пробой канала с алертом", overlay = true)
len = input.int(20, "Канал, баров", minval = 2, maxval = 500)
upper = ta.highest(high, len)[1]
breakUp = ta.crossover(close, upper)
plot(upper, "Верх канала", color = color.teal)
plotshape(breakUp, "Пробой", style = shape.triangleup, location = location.belowbar, color = color.teal, size = size.small)
if breakUp {
alert("Пробой вверх, цена " + str.tostring(close), alert.freq_once_per_bar_close)
}
alertcondition(breakUp, "Пробой вверх", "Цена закрылась выше канала")Межа береться зі зсувом [1] — по попередніх барах, інакше поточний максимум завжди був би всередині каналу. Частота freq_once_per_bar_close означає, що сповіщення прийде після закриття бару над каналом, а трикутник на графіку залишиться саме там, де сповіщення пролунало. У реальному скрипті зазвичай лишають один із двох способів — тут обидва для порівняння.