다이내믹 메시지를 쓸 수 있는 새로운 얼러트

Jan 25, 2021

새 스크립트 얼러트는 스트래티지 및 스터디 모두에서 돌아가는 `alert()` 펑크션을 쓰고 있으며, 얼러트가 트리거되었을 때 풀 다이내믹 메시지를 만들 수 있습니다.

새 얼러트는 최신 스트래티지 얼러트와 비슷한 모델을 써서 돌아가므로 차트 유저 인터페이스에서 만들어진 단 한개의 얼러트만이 스크립트안의 여러 `alert()` 콜에 의해 만들어진 모든 트리거를 합칠수 있습니다. 이는 하나의 스트래티지 얼러트가 모든 브로커 이벤트 트리거를 합칠 수 있는 것과 같은 것입니다.

새 얼러트를 만들려면:

  1. 여러분의 스크립트안에 넣고 싶은 만큼 `alert()` 콜을 넣고 각각을 트리거링 컨디션을 정한 `if` 블럭안에 넣으십시오.
  2. 차트의 “얼러트 만들기” 다이얼로그 박스를 써서 스크립트용 얼러트를 하나 만들고 “alert() function call” 이 들어 있는 얼러트 타입을고르십시오.

스트래티지에 쓸때는 유저는 `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")

스크립트 유저는 헬프 센터에서 얼러트 만들기에 대해 더 배울 수 있습니다. 파인 코더는 새 얼러트에 대해 파인 유저 매뉴얼 과 레퍼런스 매뉴얼을 읽어 보시기 바랍니다.

유저 매뉴얼 릴리즈 노트에 나오는 파인 업데이트를 모두 읽어 보시기 바랍니다.

Look first Then leap

트레이딩뷰는 여러분을 위해 만들어졌으므로 트레이딩뷰의 멋진 기능을 최대한 활용하세요