Nasze nowe alerty skryptowe wykorzystują funkcję `alert()`, która działa zarówno w strategiach jak i wskaźnikach i pozwala na wygenerowanie w pełni dynamicznej wiadomości, gdy alert zostanie uruchomiony.
Nowe alerty działają w podobny sposób co ostatnie alerty strategii, gdzie pojedynczy alert utworzony w interfejsie wykresu może agregować wszystkie wyzwalacze generowane przez dowolną liczbę wywołań funkcji `alert()` w skrypcie, w ten sam sposób, w jaki pojedynczy alert strategii agregowałby wszystkie wyzwalacze zdarzeń brokera.
Aby utworzyć nowe alerty:
- Uwzględnij w skrypcie tyle wywołań funkcji `alert()` ile chcesz, dołączając każde z nich do bloku `if` definiującego warunki wyzwalające.
- Utwórz alert dla skryptu za pomocą okna dialogowego „Utwórz alert” na wykresie i wybierz typ alertu, który zawiera „wywołanie funkcji alert ()”.
Poniżej znajdują się trzy przykłady użycia funkcji `alert()`:
1) Alert skryptu jest wyzwalany na każdym słupku, a wiadomość zawiera cenę zamknięcia słupka:
//@version=4 study("Simple alert() example") plot(close) alert("Close = " + tostring(close), alert.freq_once_per_bar_close)
2) Sprawdzane są wartości trzech wskaźników: RSI, SMA i Momentum. Alert skryptu zostanie uruchomiony, jeśli któryś ze wskaźników przekroczy określony poziom (lub cenę), a wiadomość będzie zawierała nazwę wskaźnika i jego aktualną wartość.
//@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) W tym przykładzie sprawdzane są wartości jednego wskaźnika RSI, ale na pięciu symbolach jednocześnie. Alert skryptu zostanie uruchomiony, jeśli RSI przekroczy określony poziom dla któregokolwiek z symboli, a wiadomość będzie zawierała symbol i wartość wskaźnika w momencie przekroczenia.
//@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")
Użytkownicy skryptów mogą dowiedzieć się więcej na temat tworzenia alertów w Centrum Pomocy. Programiści Pine mogą przeczytać o nowych alertach Instrukcji Obsługi skryptu Pine oraz Dokumentacji języka skryptowego Pine.
Przeczytaj o wszystkich aktualizacjach języka Pine na stronie Informacje o Wersji.