Мы добавили новый тип оповещений на скрипт, которые можно создавать для индикаторов и стратегий.
Новые оповещения срабатывают в скрипте при каждом вызове функции alert(), подобно тому, как они срабатывают при исполнении отдельной заявки в оповещениях на стратегии.
Для создания оповещения на скрипт нужно:
1) Задать в скрипте количество вызовов функции alert().
2) Выбрать опцию Создать оповещение в диалоговом окне.
Если в стратегии есть функция alert(), то при создании оповещения можно выбрать события, по которым оповещение сработает: исполнение заявок и вызов alert(), только исполнение заявок или только вызов alert().
В новых оповещениях можно не пользоваться фигурными скобками, чтобы задать значение переменной в сообщении, а также нет ограничения на количество переменных.
Ниже приведены три примера использования функции alert():
1) Оповещение на такой скрипт срабатывает на каждом баре, в сообщении указывается цена закрытия бара.
//@version=4 study("Simple alert() example") plot(close) alert("Close = " + tostring(close), alert.freq_once_per_bar_close)
2) Проверяются значения сразу трех индикаторов: индекса относительной силы (RSI), простого скользящего среднего (SMA) и Моментум (Momentum). Оповещение на такой скрипт сработает при пересечении любого из индикаторов с заданными уровнем или ценой, при этом в сообщении будет указано название индикатора и его текущее значение.
//@version=4 study("alert() with multiple indicators", overlay=true) f_triggerSma()=> _s = sma(close, 14) _co = crossover(close, _s) _cu = crossunder(close, _s) if _co alert("Price (" + tostring(close) + ") crossing up SMA (" + tostring(_s) + ")", alert.freq_once_per_bar) else if _cu alert("Price (" + tostring(close) + ") crossing down SMA (" + tostring(_s) + ")", alert.freq_once_per_bar) f_triggerRsi()=> _r = rsi(close, 7) _co = crossover(_r, 70) _cu = crossunder(_r, 30) if _co alert("RSI (" + tostring(_r) + ") crossing up 70 level", alert.freq_once_per_bar) else if _cu alert("RSI (" + tostring(_r) + ") crossing down 30 level", alert.freq_once_per_bar) f_triggerMom()=> _m = mom(close, 14) _co = crossover(_m, 0) _cu = crossunder(_m, 0) if _co alert("Momentum (" + tostring(_m) + ") crossing up 0 level", alert.freq_once_per_bar) else if _cu alert("Momentum (" + tostring(_m) + ") crossing down 0 level", alert.freq_once_per_bar) plot(sma(close, 14), "SMA") f_triggerSma() f_triggerRsi() f_triggerMom()
3) Проверяются значения одного RSI-индикатора, но сразу на пяти инструментах. Оповещение на такой скрипт сработает, если RSI пересечет заданный уровень на любом из инструментов, при этом в сообщении будет указан инструмент и значение индикатора в момент пересечения.
//@version=4
study("alert() with multiple symbols")
f_triggerRsi(_ticker)=>
_r = rsi(close, 7)
_x = crossover(_r,70)
_y = crossunder(_r,30)
_rt = barstate.isrealtime
[_rsi, _co, _cu, _rt_bar] = security(_ticker, timeframe.period, [_r, _x, _y, _rt])
_msg = _ticker + ", " + timeframe.period + ": "
if _co and _rt_bar
_msg := _msg + "RSI (" + tostring(_rsi) + ") crossing up 70 level"
alert(_msg, alert.freq_once_per_bar_close)
else if _cu and _rt_bar
_msg := _msg + "RSI (" + tostring(_rsi) + ") crossing down 30 level"
alert(_msg, alert.freq_once_per_bar_close)
plot(rsi(close, 7), "RSI", color=#8E1599)
band1 = hline(70, "Upper Band", color=#C0C0C0)
band0 = hline(30, "Lower Band", color=#C0C0C0)
fill(band1, band0, color=color.new(#9915FF,90), title="Background")
f_triggerRsi(syminfo.tickerid)
f_triggerRsi("NASDAQ:MSFT")
f_triggerRsi("FX:EURUSD")
f_triggerRsi("NASDAQ:TSLA")
f_triggerRsi("NASDAQ:PYPL")
Более подробная информация о новых оповещениях есть в справочном центре, документации по Pine Script и справочнике Pine.
Узнать обо всех обновлениях в языке Pine можно на странице Release Notes.