728x90
반응형
트레이딩뷰 지표 및 전략에 사용되는 파인스크립트 매뉴얼 한글버전을 가져왔다. 트레이딩뷰에서 제공하는 공식 매뉴얼과 동일하므로 아래 링크로 해당 사이트에서 봐도 무방하다. 단지 트레이딩뷰 사이트에서 보는 것이 불편하여 블로그로 가져온 것 뿐이다. 🤓 먼저 자체 내장된 변수에 대해 알아보자. 다음 번에는 자주 사용하는 것들만 따로 정리해보겠다.
Pine Script® language reference manual
Variables 변수.
bar_index
커런트 바 인덱스. 0부터 매기며, 첫 바의 인덱스는 0입니다.
버전 4 에서는 bar_index 가 n 베어리어블을 대신합니다.
바 인덱스는 첫 히스토리바가 0부터 시작합니다.
이 베어리어블/펑션을 쓰면 인디케이터 리페인팅이 생길 수 있습니다.
series int
//@version=5
indicator("bar_index")
plot(bar_index)
plot(bar_index > 5000 ? close : 0)
barstate.isconfirmed
스크립트가 현재 바의 마지막 (클로징) 업데이트를 계산하는 중이면 트루 리턴합니다. 다음 스크립트 계산은 새 바 데이터가 들어오면 하게 됩니다.
이 변수를 쓰는 Pine Script® 코드는 히스토리와 리얼타임 데이터에서 다르게 셈이 될 수 있습니다.
barstate.isconfirmed을 request.security 표현식에 사용하는 것은 권장하지 않습니다. request.security에서 요청하는 값은 예측할 수 없습니다.
이 베어리어블/펑션을 쓰면 인디케이터 리페인팅이 생길 수 있습니다.
series bool
barstate.isconfirmed을 request.security 표현식에 사용하는 것은 권장하지 않습니다. request.security에서 요청하는 값은 예측할 수 없습니다.
이 베어리어블/펑션을 쓰면 인디케이터 리페인팅이 생길 수 있습니다.
series bool
barstate.isfirst
커런트 바가 바세트에서 첫번째 바이면 참, 아니면 거짓 리턴.
이 변수를 쓰는 Pine Script® 코드는 히스토리와 리얼타임 데이터에서 다르게 셈이 될 수 있습니다.
이 베어리어블/펑션을 쓰면 인디케이터 리페인팅이 생길 수 있습니다.
series bool
이 베어리어블/펑션을 쓰면 인디케이터 리페인팅이 생길 수 있습니다.
series bool
barstate.ishistory
커런트 바가 과거 바이면 참, 아니면 거짓 리턴.
이 변수를 쓰는 Pine Script® 코드는 히스토리와 리얼타임 데이터에서 다르게 셈이 될 수 있습니다.
이 베어리어블/펑션을 쓰면 인디케이터 리페인팅이 생길 수 있습니다.
series bool
이 베어리어블/펑션을 쓰면 인디케이터 리페인팅이 생길 수 있습니다.
series bool
barstate.islast
커런트 바가 바세트에서 마지막 바이면 참, 아니면 거짓 리턴. 이 콘디션은 바세트에 있는 모든 실시간 바에 대해 참이 됩니다.
이 변수를 쓰는 Pine Script® 코드는 히스토리와 리얼타임 데이터에서 다르게 셈이 될 수 있습니다.
이 베어리어블/펑션을 쓰면 인디케이터 리페인팅이 생길 수 있습니다.
series bool
이 베어리어블/펑션을 쓰면 인디케이터 리페인팅이 생길 수 있습니다.
series bool
barstate.islastconfirmedhistory
시장이 닫힐 때 데이터셋의 마지막 바에서 스크립트가 실행 중이거나 시장이 열려 있는 경우 실시간 바 바로 앞의 바에서 스크립트가 실행 중이면 true를 반환합니다. 그렇지 않으면 false를 반환합니다.
이 변수를 쓰는 Pine Script® 코드는 히스토리와 리얼타임 데이터에서 다르게 셈이 될 수 있습니다.
이 베어리어블/펑션을 쓰면 인디케이터 리페인팅이 생길 수 있습니다.
series bool
이 베어리어블/펑션을 쓰면 인디케이터 리페인팅이 생길 수 있습니다.
series bool
barstate.isnew
스크립트가 현재 새 바에서 계산하는 중이면 참, 아니면 거짓 리턴. 이 변수는 과거 바 또는 새로 만들어진 실시간 바의 첫 업데이트 계산때 참이 됩니다.
이 변수를 쓰는 Pine Script® 코드는 히스토리와 리얼타임 데이터에서 다르게 셈이 될 수 있습니다.
이 베어리어블/펑션을 쓰면 인디케이터 리페인팅이 생길 수 있습니다.
series bool
이 베어리어블/펑션을 쓰면 인디케이터 리페인팅이 생길 수 있습니다.
series bool
barstate.isrealtime
커런트 바가 실시간 바이면 참, 아니면 거짓 리턴.
이 변수를 쓰는 Pine Script® 코드는 히스토리와 리얼타임 데이터에서 다르게 셈이 될 수 있습니다.
이 베어리어블/펑션을 쓰면 인디케이터 리페인팅이 생길 수 있습니다.
series boolbox.all
스크립트가 그린 모든 박스로 채워진 어레이를 리턴합니다.
리드-온리 어레이입니다. 어레이의 제로 인덱스는 차트에서 가장 오래 된 오브젝트의 아이디입니다.
array<box>
//@version=5
indicator("box.all")
//delete all boxes
box.new(time, open, time + 60 * 60 * 24, close, xloc=xloc.bar_time, border_style=line.style_dashed)
a_allBoxes = box.all
if array.size(a_allBoxes) > 0
for i = 0 to array.size(a_allBoxes) - 1
box.delete(array.get(a_allBoxes, i))
chart.bg_color
"차트 세팅/모습/백그라운드" 필드로부터 차트 백그라운드 컬러를 리턴합니다. 그래디언트를 고르면 그래디언트의 미들 포인트를 리턴합니다.
input color
chart.fg_color
chart.bg_color 에 대해 최적의 대비가 되는 컬러를 리턴합니다.
input color
chart.is_heikinashi
차트 타입이 하이킨 아시면 true, 아니면 false 리턴.
simple bool
simple bool
chart.is_kagi
차트 타입이 카기면 true, 아니면 false 리턴.
simple bool
simple bool
chart.is_linebreak
simple bool
차트 타입이 라인 브레이크면 true, 아니면 false 리턴.
chart.is_pnf
차트 타입이 포인트 앤 피겨이면 true, 아니면 false 리턴.
simple bool
simple bool
chart.is_range
차트 타입이 레인지이면 true, 아니면 false 리턴.
simple bool
simple bool
chart.is_renko
차트 타입이 렌코이면 true, 아니면 false 리턴.
simple bool
simple bool
chart.is_standard
차트 타입이 바, 캔들, 할로우 캩들, 라인, 에어리어 또는 베이스라인이면 true, 그렇지 않으면 false 리턴합니다.
simple bool
simple bool
chart.left_visible_bar_time
현재 맨 왼쪽 바의 time 이 차트에 보임.
이 변수를 쓰는 스크립트는 저절로 재실행하여 그 값들을 업데이트함으로써 유저들이 차트 스크롤이나 또는 새로운 실시간 바에 의해 차트에 바뀐 것들을 반영합니다.
이 변수가 포함된 스크립트에서 생성된 알림은 이후 값이 변경되어 다시 칠할 수 있는지 여부에 관계없이 알림이 생성되는 시점에 변수에 할당된 값만 사용합니다.
input int
input int
chart.right_visible_bar_time
현재 맨 오른쪽 바의 time 이 차트에 보임.
이 변수를 쓰는 스크립트는 저절로 재실행하여 그 값들을 업데이트함으로써 유저들이 차트 스크롤이나 또는 새로운 실시간 바에 의해 차트에 바뀐 것들을 반영합니다.
이 변수가 포함된 스크립트에서 생성된 알림은 이후 값이 변경되어 다시 칠할 수 있는지 여부에 관계없이 알림이 생성되는 시점에 변수에 할당된 값만 사용합니다.
input int
input int
close
현재 바가 마감되었을 때의 종가 또는 아직 마감되지 않은 실시간 바의 마지막 거래 가격.
이전 값들은 스퀘어 브래킷 오퍼레이터 [] 를 써서 읽을 수 있습니다. 보기: close[1], close[2].
series float
series float
dayofmonth
거래소 타임존 기준 커런트 바 데이트.
이 베어리어블은 바 오픈 타임의 날을 리턴합니다. 오버나잇 세션 (보기: EURUSD, 먼데이 세션이 선데이 17시 스타트) 의 경우 이 밸류는 트레이딩 데이의 날보다 1 낮을 수 있습니다.
series int
series int
dayofweek
거래소 타임존 기준 커런트 바 요일.
이 베어리어블은 바 오픈 타임의 날을 리턴합니다. 오버나잇 세션 (보기: EURUSD, 먼데이 세션이 선데이 17시 스타트) 의 경우 이 밸류는 트레이딩 데이의 날보다 1 낮을 수 있습니다.
dayofweek.sunday, dayofweek.monday, dayofweek.tuesday, dayofweek.wednesday, dayofweek.thursday, dayofweek.friday 및 dayofweek.saturday 베어리어블과 견주어 볼 수 있습니다.
series int
series int
earnings.future_eps
다음 수익 보고서의 예상 주당 순이익을 해당 상품 통화로 반환하거나, 이 데이터를 사용할 수 없는 경우 na을 반환합니다.
이 값은 스크립트의 초기 계산 중에 한 번만 가져옵니다. 이 변수는 다음 수익 보고서의 예상 시간 이후에도 스크립트가 다시 계산될 때까지 동일한 값을 반환합니다.
series float
series float
earnings.future_period_end_time
다음 수익 보고서의 데이터를 확인하고 해당 수익이 포함된 재무 기간이 종료되는 날의 UNIX 타임스탬프를 반환하거나, 이 데이터를 사용할 수 없는 경우 na을 반환합니다.
리턴값 : 밀리초 단위로 표시되는 UNIX 시간입니다.
이 값은 스크립트의 초기 계산 중에 한 번만 가져옵니다. 이 변수는 다음 수익 보고서의 예상 시간 이후에도 스크립트가 다시 계산될 때까지 동일한 값을 반환합니다.
series int
series int
earnings.future_revenue
다음 수익 보고서의 예상 수익을 해당 상품 통화로 반환하거나, 이 데이터를 사용할 수 없는 경우 na을 반환합니다.
이 값은 스크립트의 초기 계산 중에 한 번만 가져옵니다. 이 변수는 다음 수익 보고서의 예상 시간 이후에도 스크립트가 다시 계산될 때까지 동일한 값을 반환합니다.
series float
series float
earnings.future_time
다음 수익 보고서의 예상 시간을 나타내는 UNIX 타임스탬프를 반환하거나, 이 데이터를 사용할 수 없는 경우 na을 반환합니다.
리턴값: 밀리초 단위로 표시되는 UNIX 시간입니다.
이 값은 스크립트의 초기 계산 중에 한 번만 가져옵니다. 이 변수는 다음 수익 보고서의 예상 시간 이후에도 스크립트가 다시 계산될 때까지 동일한 값을 반환합니다.
series int
series int
high
커런트 하이 프라이스.
이전 값들은 스퀘어 브래킷 오퍼레이터 [] 를 써서 읽을 수 있습니다. 보기: high[1], high[2].
series float
series float
hl2
(high + low) / 2 의 줄임입니다
series float
hlc3
(high + low + close) / 3 의 줄임입니다
series float
hlcc4
(high + low + close + close)/4 에 대한 숏컷입니다
series float
hour
거래소 타임존 기준 커런트 바 시간.
series int
label.all
스크립트가 그린 모든 라벨로 채워진 어레이를 리턴합니다.
리드-온리 어레이입니다. 어레이의 제로 인덱스는 차트에서 가장 오래 된 오브젝트의 아이디입니다.
array<label>
//@version=5
indicator("label.all")
//delete all labels
label.new(bar_index, close)
a_allLabels = label.all
if array.size(a_allLabels) > 0
for i = 0 to array.size(a_allLabels) - 1
label.delete(array.get(a_allLabels, i))
last_bar_index
라스트 차트 바 인덱스. 바 인덱스는 첫바에서 0으로 시작합니다.
리턴값: 클로즈드 마켓의 라스트 히스토리 바 인덱스, 또는 오픈 마켓의 리얼-타임 바 인덱스.
이 변수를 사용하면 지표가 리페인팅 될 수 있습니다.
series int
//@version=5
strategy("Mark Last X Bars For Backtesting", overlay = true, calc_on_every_tick = true)
lastBarsFilterInput = input.int(100, "Bars Count:")
// Here, we store the 'last_bar_index' value that is known from the beginning of the script's calculation.
// The 'last_bar_index' will change when new real-time bars appear, so we declare 'lastbar' with the 'var' keyword.
var lastbar = last_bar_index
// Check if the current bar_index is 'lastBarsFilterInput' removed from the last bar on the chart, or the chart is traded in real-time.
allowedToTrade = (lastbar - bar_index <= lastBarsFilterInput) or barstate.isrealtime
bgcolor(allowedToTrade ? color.new(color.green, 80) : na)
last_bar_time
라스트 차트 바의 유닉스 포맷 타임. 1970년 1월 1일 00:0:00 UTC 로부터 센 밀리세컨드 수.
이 베어리어블/펑크션을 쓰면 인디케이터 리페인팅이 생길 수 있습니다.
이 베어리어블은 바 오픈 타임 기준 타임스탬프를 리턴합니다.
series int
series int
line.all
스크립트가 그린 모든 라인으로 채워진 어레이를 리턴합니다.
리드-온리 어레이입니다. 어레이의 제로 인덱스는 차트에서 가장 오래 된 오브젝트의 아이디입니다.
array<line>
//@version=5
indicator("line.all")
//delete all lines
line.new(bar_index - 10, close, bar_index, close)
a_allLines = line.all
if array.size(a_allLines) > 0
for i = 0 to array.size(a_allLines) - 1
line.delete(array.get(a_allLines, i))
linefill.all
스크립트에서 그린 현재 라인필 오브젝트로 채워진 어레이를 리턴합니다.
리드-온리 어레이입니다. 어레이의 제로 인덱스는 차트에서 가장 오래 된 오브젝트의 아이디입니다.
array<linefill>
array<linefill>
low
커런트 로우 프라이스.
이전 값들은 스퀘어 브래킷 오퍼레이터 [] 를 써서 읽을 수 있습니다. 보기: low[1], low[2].
series float
series float
minute
거래소 타임존 기준 커런트 바 분.
series int
month
거래소 타임존 기준 커런트 바 달.
이 베어리어블은 바 오픈 타임의 달을 리턴합니다. 오버나잇 세션 (보기: EURUSD, 먼데이 세션이 선데이 17시 스타트) 의 경우 이 밸류는 트레이딩 데이의 달보다 1 낮을 수 있습니다.
na
변수에 할당된 값이 없음을 나타내는 "사용할 수 없음" 키워드입니다.
이 변수를 비교 연산자과 함께 na의 값을 테스트하는 데 사용하면 예기치 않은 동작이 발생할 수 있으므로 사용하지 마세요. 대신 na 함수를 사용하십시오. 초기화 문에 변수의 유형이 지정되어 있는 경우 na을 사용하여 변수를 초기화할 수 있다는 점에 유의하세요.
simple na
//@version=5
indicator("na")
// CORRECT
// Plot no value when on bars zero to nine. Plot `close` on other bars.
plot(bar_index < 10 ? na : close)
// CORRECT ALTERNATIVE
// Initialize `a` to `na`. Reassign `close` to `a` on bars 10 and later.
float a = na
if bar_index >= 10
a := close
plot(a)
// INCORRECT
// Trying to test the preceding bar's `close` for `na`.
// Will not work correctly on bar zero, when `close[1]` is `na`.
plot(close[1] == na ? close : close[1])
// CORRECT
// Use the `na()` function to test for `na`.
plot(na(close[1]) ? close : close[1])
// CORRECT ALTERNATIVE
// `nz()` tests `close[1]` for `na`. It returns `close[1]` if it is not `na`, and `close` if it is.
plot(nz(close[1], close))
ohlc4
(시가 + 고가 + 저가 + 종가) / 4 의 줄임말
series float
open
현재 시가.
이전 값들은 스퀘어 브래킷 오퍼레이터 [] 를 써서 읽을 수 있습니다. 보기: open[1], open[2].
series float
series float
polyline.all
스크립트에 의해 그려진 모든 현재 polyline 인스턴스가 포함된 어레이를 리턴합니다.
어레이는 읽기 전용입니다. 어레이의 인덱스 0은 차트에서 가장 오래된 폴리라인 오브젝트의 ID를 참조합니다.
array<polyline>
second
거래소 타임존 기준 커런트 바 초.
series int
session.isfirstbar
만약 현재 바가 오늘의 세션의 첫 번째 바이면 true을 반환하고, 그렇지 않으면 false를 반환합니다. 만약 확장된 세션 정보가 사용된다면, 프리마켓 바의 첫 번째 바에만 true을 반환합니다.
series bool
//@version=5
strategy("`session.isfirstbar` Example", overlay = true)
longCondition = year >= 2022
// Place a long order at the `close` of the trading session's first bar.
if session.isfirstbar and longCondition
strategy.entry("Long", strategy.long)
// Close the long position at the `close` of the trading session's last bar.
if session.islastbar and barstate.isconfirmed
strategy.close("Long", immediately = true)
session.isfirstbar_regular
데이 세션의 첫번째 레귤러 바면 true, 아니면 false 리턴합니다. 확장 세션 인포를 쓰던 안쓰던 결과는 똑같습니다.
series bool
//@version=5
strategy("`session.isfirstbar_regular` Example", overlay = true)
longCondition = year >= 2022
// Place a long order at the `close` of the trading session's first bar.
if session.isfirstbar and longCondition
strategy.entry("Long", strategy.long)
// Close the long position at the `close` of the trading session's last bar.
if session.islastbar_regular and barstate.isconfirmed
strategy.close("Long", immediately = true)
session.islastbar
현재 막대가 당일 세션의 마지막 막대인 경우 true을 반환하고, 그렇지 않으면 false을 반환합니다. 확장 세션 정보를 사용하는 경우, 장 마감 후 막대의 마지막 막대에서 true만 반환합니다.
이 베어리어블은 모든 세션에서 딱 한번 true 리턴이 보장되지 않는데, 이는 세션의 마지막 바를 만들게 될 트레이드가 하나도 일어나지 않아 세션 마지막 바가 만들어 지지 않을 수도 있기 때문입니다.
이 베어리어블은 넌-스탠다드 차트 타입에 대해서는 예상대로 되리라 보장이 되지 않습니다. 보기: 렌코.
series bool
//@version=5
strategy("`session.islastbar` Example", overlay = true)
longCondition = year >= 2022
// Place a long order at the `close` of the trading session's last bar.
// The position will enter on the `open` of next session's first bar.
if session.islastbar and longCondition
strategy.entry("Long", strategy.long)
// Close 'Long' position at the close of the last bar of the trading session
if session.islastbar and barstate.isconfirmed
strategy.close("Long", immediately = true)
session.islastbar_regular
데이 세션의 마지막 레귤러 바면 true, 아니면 false 리턴합니다. 확장 세션 인포를 쓰던 안쓰던 결과는 똑같습니다.
이 베어리어블은 모든 세션에서 딱 한번 true 리턴이 보장되지 않는데, 이는 세션의 마지막 바를 만들게 될 트레이드가 하나도 일어나지 않아 세션 마지막 바가 만들어 지지 않을 수도 있기 때문입니다.
이 베어리어블은 넌-스탠다드 차트 타입에 대해서는 예상대로 되리라 보장이 되지 않습니다. 보기: 렌코.
series bool
//@version=5
strategy("`session.islastbar_regular` Example", overlay = true)
longCondition = year >= 2022
// Place a long order at the `close` of the trading session's first bar.
if session.isfirstbar and longCondition
strategy.entry("Long", strategy.long)
// Close the long position at the `close` of the trading session's last bar.
if session.islastbar_regular and barstate.isconfirmed
strategy.close("Long", immediately = true)
session.ismarket
현재 바가 정규 거래 시간(즉, 시장 영업 시간)의 일부인 경우 true을 반환하고, 그렇지 않으면 false를 반환합니다.
series bool
session.ispostmarket
현재 바가 시장 후의 일부인 경우 true을 반환하고, 그렇지 않으면 false를 반환합니다. 비 일중 차트의 경우 항상 false을 반환합니다.
series bool
session.ispremarket
현재 바가 프리마켓의 일부인 경우 true을 반환하고, 그렇지 않으면 false를 반환합니다. 비 일중 차트의 경우 항상 false을 반환합니다.
series bool
strategy.account_currency
결과 셈에 쓰이는 커런시를 리턴하며, 스트래티지 프로퍼티에서 셋할 수 있습니다.
simple string
strategy.avg_losing_trade
손실 거래당 평균 손실 금액을 반환합니다. 손실 총액을 손실 거래 건수로 나눈 값으로 계산됩니다.
series float
strategy.avg_losing_trade_percent
손실 거래당 평균 손실 비율을 반환합니다. 손실률의 합을 손실 거래 수로 나눈 값으로 계산됩니다.
series float
strategy.avg_trade
거래당 평균 수익 또는 손실 금액을 반환합니다. 모든 수익과 손실의 합계를 청산된 거래 수로 나눈 값으로 계산됩니다.
series float
strategy.avg_trade_percent
거래당 평균 수익 또는 손실 비율을 반환합니다. 모든 수익 및 손실 비율의 합을 청산된 거래 수로 나눈 값으로 계산됩니다.
series float
strategy.avg_winning_trade
승리한 거래당 평균 수익금을 반환합니다. 수익의 합계를 승리한 거래의 수로 나눈 값으로 계산됩니다.
series float
strategy.avg_winning_trade_percent
승리한 거래당 평균 수익률을 반환합니다. 수익률의 합을 승리한 거래 수로 나눈 값으로 계산됩니다.
series float
strategy.closedtrades
전체 트레이딩 인터벌 동안 클로즈 되어 있었던 트레이드 수.
series int
strategy.equity
커런트 에쿼티 (strategy.initial_capital + strategy.netprofit + strategy.openprofit).
series float
strategy.eventrades
전체 트레이딩 인터벌 동안의 브레이크 이븐 트레이드 수.
series int
strategy.grossloss
완료된 모든 손실 거래의 총 통화 가치.
series float
strategy.grossloss_percent
완료된 모든 손실 거래의 총 가치로, 초기 자본의 백분율로 표시됩니다.
series float
strategy.grossprofit
완료된 모든 이익 거래의 총 통화 가치
series float
strategy.grossprofit_percent
완료된 모든 수익 거래의 총 통화 가치로, 초기 자본의 백분율로 표시됩니다.
series float
strategy.initial_capital
전략 속성에 설정된 초기 자본액
series float
strategy.long
롱 포지션 엔트리
const strategy_direction
strategy.losstrades
전체 트레이딩 인터벌 동안의 프라핏 못낸 트레이드 수.
series int
strategy.margin_liquidation_price
전략에 마진이 쓰이는 경우 시뮬레이션 마진 콜이 발생할 가격 포인트를 반환하고 마진 요건을 충족할 만큼 포지션을 청산합니다.
전략이 증거금을 쓰지 않는 경우, 즉 strategy 선언문에 margin_long 또는 margin_short 매개변수에 대한 인수가 지정되지 않은 경우 변수는 na을 반환합니다.
series float
//@version=5
strategy("Margin call management", overlay = true, margin_long = 25, margin_short = 25,
default_qty_type = strategy.percent_of_equity, default_qty_value = 395)
float maFast = ta.sma(close, 14)
float maSlow = ta.sma(close, 28)
if ta.crossover(maFast, maSlow)
strategy.entry("Long", strategy.long)
if ta.crossunder(maFast, maSlow)
strategy.entry("Short", strategy.short)
changePercent(v1, v2) =>
float result = (v1 - v2) * 100 / math.abs(v2)
// exit when we're 10% away from a margin call, to prevent it.
if math.abs(changePercent(close, strategy.margin_liquidation_price)) <= 10
strategy.close("Long")
strategy.close("Short")
strategy.max_contracts_held_all
전체 트레이딩 인터벌 기간에 대해 같은 방향 트레이드할 수 있는 맥시멈 컨트랙트/셰어/롯트/유닛 수.
series float
strategy.max_contracts_held_long
전체 트레이딩 인터벌 기간에 대해 같은 방향 롱 트레이드할 수 있는 맥시멈 컨트랙트/셰어/롯트/유닛 수.
series float
strategy.max_contracts_held_short
전체 트레이딩 인터벌 기간에 대해 같은 방향 숏 트레이드할 수 있는 맥시멈 컨트랙트/셰어/롯트/유닛 수.
series float
strategy.max_drawdown
전체 트레이딩 인터벌에 걸쳐 맥시멈 에쿼티 드로다운 밸류.
series float
strategy.max_drawdown_percent
전체 거래 기간 동안의 최대 편일예탁잔고 감소 값으로, 백분율로 표시되며 공식에 의해 계산됩니다: Lowest Value During Trade / (Entry Price x Quantity) * 100.
series float
strategy.max_runup
전체 트레이딩 인터벌에 대한 맥시멈 에쿼티 런-업 밸류.
series float
strategy.max_runup_percent
전체 거래 기간 동안의 최대 주식 런업 값으로, 백분율로 표시되며 공식에 의해 계산됩니다: Highest Value During Trade / (Entry Price x Quantity) * 100.
series float
strategy.netprofit
완료된 모든 거래의 총 통화 가치.
series float
strategy.netprofit_percent
완료된 모든 거래의 총 가치로, 초기 자본의 백분율로 표시됩니다.
series float
strategy.openprofit
모든 오픈 포지션에 대한 현재 미실현 손익.
series float
strategy.openprofit_percent
모든 오픈 포지션의 현재 미실현 손익을 백분율로 표시하고 공식으로 계산합니다: openPL / realizedEquity * 100.
series float
strategy.opentrades
오픈 상태로 남아 있는 마켓 포지션 엔트리 갯수. 오픈 마켓 포지션이 없으면 0 이 리턴됩니다.
series int
strategy.opentrades.capital_held
현재 미체결 거래가 보유한 자본금을 반환합니다.
이 변수는 전략이 가상 계좌의 일부로 펀딩 거래를 시뮬레이션하지 않는 경우, 즉 strategy 함수에 0이 아닌 margin_long 또는 margin_short 인수가 포함되지 않은 경우 na을 반환합니다.
series float
//@version=5
strategy(
"strategy.opentrades.capital_held example", overlay=false, margin_long=50, margin_short=50,
default_qty_type = strategy.percent_of_equity, default_qty_value = 100
)
// Enter a short position on the first bar.
if barstate.isfirst
strategy.entry("Short", strategy.short)
// Plot the capital held by the short position.
plot(strategy.opentrades.capital_held, "Capital held")
// Highlight the chart background if the position is completely closed by margin calls.
bgcolor(bar_index > 0 and strategy.opentrades.capital_held == 0 ? color.new(color.red, 60) : na)
strategy.position_avg_price
커런트 마켓 포지션의 평균 엔트리 프라이스. 마켓 포지션이 플랫이면 'NaN' 이 리턴됩니다.
series float
strategy.position_entry_name
커런트 마켓 포지션을 오픈했던 오더 네임.
series string
strategy.position_size
커런트 마켓 포지션 디렉션 및 사이즈. 그 값이 0 보다 크면 마켓 포지션이 롱이고, 0 보다 작으면 숏입니다. 절대값은 거래 컨트랙트/셰어/롯트/유닛 수입니다 (포지션 사이즈).
series float
strategy.short
숏 포지션 엔트리.
const strategy_direction
strategy.wintrades
전체 트레이딩 인터벌 동안의 프라핏 낸 트레이드 수.
series int
syminfo.basecurrency
변수는 심볼의 기축 통화(즉, 거래 통화 또는 코인)를 나타내는 코드를 포함하는 문자열을 반환합니다. 이 심볼이 Forex 또는 크립토 페어이거나 이러한 페어를 기반으로 한 파생상품인 경우입니다. 그렇지 않으면 빈 문자열을 반환합니다. 예를 들어 "EURJPY"의 경우 "EUR"을 반환하고 "BTCUSDT"의 경우 "BTC"를 반환합니다. "CME:6C1!"의 경우 "CAD"를 반환하며 "NASDAQ:AAPL"의 경우 빈 문자열을 반환합니다.
simple string
syminfo.country
해당 심볼이 거래되는 국가의 두 글자 코드를 ISO 3166-1 alpha-2 형식으로 반환하거나 거래소가 특정 국가와 직접 연결되지 않은 경우 na를 반환합니다. 예를 들어 "NASDAQ:AAPL"의 경우 "US", "LSE:AAPL"의 경우 "GB", "BITSTAMP:BTCUSD"의 경우 na가 리턴됩니다.
simple string
syminfo.currency
이 변수는 심볼의 가격 통화를 나타내는 코드를 포함하는 문자열을 반환합니다. 예를 들어 "NASDAQ:AAPL"의 경우 "USD"를 반환하고 "EURJPY"의 경우 "JPY"를 반환합니다.
simple string
syminfo.description
현재 심볼 설명
simple string
syminfo.employees
회사의 직원 수.
simple int
//@version=5
indicator("syminfo simple")
//@variable A table containing information about a company's employees, shareholders, and shares.
var result_table = table.new(position = position.top_right, columns = 2, rows = 5, border_width = 1)
if barstate.islastconfirmedhistory
// Add header cells
table.cell(table_id = result_table, column = 0, row = 0, text = "name")
table.cell(table_id = result_table, column = 1, row = 0, text = "value")
// Add employee info cells.
table.cell(table_id = result_table, column = 0, row = 1, text = "employees")
table.cell(table_id = result_table, column = 1, row = 1, text = str.tostring(syminfo.employees))
// Add shareholder cells.
table.cell(table_id = result_table, column = 0, row = 2, text = "shareholders")
table.cell(table_id = result_table, column = 1, row = 2, text = str.tostring(syminfo.shareholders))
// Add float shares outstanding cells.
table.cell(table_id = result_table, column = 0, row = 3, text = "shares_outstanding_float")
table.cell(table_id = result_table, column = 1, row = 3, text = str.tostring(syminfo.shares_outstanding_float))
// Add total shares outstanding cells.
table.cell(table_id = result_table, column = 0, row = 4, text = "shares_outstanding_total")
table.cell(table_id = result_table, column = 1, row = 4, text = str.tostring(syminfo.shares_outstanding_total))
syminfo.expiration_date
현재 선물 계약의 마지막 날 시작을 나타내는 UNIX 타임스탬프입니다. 이 변수는 비연속 선물 심볼과만 호환됩니다. 다른 심볼에서는 na을 반환합니다.
simple int
syminfo.industry
심볼의 산업을 반환하거나, 심볼에 산업이 없는 경우 na을 반환합니다. 예시: 예: "인터넷 소프트웨어/서비스", "패키지 소프트웨어", "통합 석유", "자동차" 등. 이 값은 차트의 "심볼 정보" 창에서 볼 수 있는 값과 동일합니다.
섹터는 경제의 광범위한 부분입니다. 산업은 더 좁은 분류입니다. 예를 들어 NASDAQ:CAT(Caterpillar, Inc.)는 "생산자 제조" 섹터와 "트럭/건설/농기계" 산업에 속합니다.
simple string
simple string
syminfo.minmove
심볼의 가격 변동 사이의 최소 증분을 계산하는 데 사용되는 정수를 반환합니다 (syminfo.mintick). 이 값은 syminfo.mintick 포뮬러의 분자입니다: syminfo.minmove / syminfo.pricescale = syminfo.mintick.
simple int
syminfo.mintick
커런트 심볼 미니멈 틱 밸류.
simple float
syminfo.pointvalue
커런트 심볼에 대한 포인트 밸류.
simple float
syminfo.prefix
현재 심볼 이름의 접두어 (보기: 'CME_EOD:TICKER' 의 접두어는 'CME_EOD').
simple string
//@version=5
indicator("syminfo.prefix")
// If current chart symbol is 'BATS:MSFT' then syminfo.prefix is 'BATS'.
if barstate.islastconfirmedhistory
label.new(bar_index, high, text=syminfo.prefix)
syminfo.pricescale
심볼의 가격 변동 사이의 최소 증분을 계산하는 데 사용되는 정수를 반환합니다 (syminfo.mintick). 이 값은 syminfo.mintick 포뮬러의 분모입니다: syminfo.minmove / syminfo.pricescale = syminfo.mintick.
simple int
syminfo.recommendations_buy
현재 심볼에 "매수" 등급을 부여한 애널리스트 수.
series int
//@version=5
indicator("syminfo recommendations", overlay = true)
//@variable A table containing information about analyst recommendations.
var table ratings = table.new(position.top_right, 8, 2, frame_color = #000000)
if barstate.islastconfirmedhistory
//@variable The time value one year from the date of the last analyst recommendations.
int YTD = syminfo.target_price_date + timeframe.in_seconds("12M") * 1000
// Add header cells.
table.cell(ratings, 0, 0, "Start Date", bgcolor = color.gray, text_color = #000000, text_size = size.large)
table.cell(ratings, 1, 0, "End Date", bgcolor = color.gray, text_color = #000000, text_size = size.large)
table.cell(ratings, 2, 0, "Buy", bgcolor = color.teal, text_color = #000000, text_size = size.large)
table.cell(ratings, 3, 0, "Strong Buy", bgcolor = color.lime, text_color = #000000, text_size = size.large)
table.cell(ratings, 4, 0, "Sell", bgcolor = color.maroon, text_color = #000000, text_size = size.large)
table.cell(ratings, 5, 0, "Strong Sell", bgcolor = color.red, text_color = #000000, text_size = size.large)
table.cell(ratings, 6, 0, "Hold", bgcolor = color.orange, text_color = #000000, text_size = size.large)
table.cell(ratings, 7, 0, "Total", bgcolor = color.silver, text_color = #000000, text_size = size.large)
// Recommendation strings
string startDate = str.format_time(syminfo.recommendations_date, "yyyy-MM-dd")
string endDate = str.format_time(YTD, "yyyy-MM-dd")
string buyRatings = str.tostring(syminfo.recommendations_buy)
string strongBuyRatings = str.tostring(syminfo.recommendations_buy_strong)
string sellRatings = str.tostring(syminfo.recommendations_sell)
string strongSellRatings = str.tostring(syminfo.recommendations_sell_strong)
string holdRatings = str.tostring(syminfo.recommendations_hold)
string totalRatings = str.tostring(syminfo.recommendations_total)
// Add value cells
table.cell(ratings, 0, 1, startDate, bgcolor = color.gray, text_color = #000000, text_size = size.large)
table.cell(ratings, 1, 1, endDate, bgcolor = color.gray, text_color = #000000, text_size = size.large)
table.cell(ratings, 2, 1, buyRatings, bgcolor = color.teal, text_color = #000000, text_size = size.large)
table.cell(ratings, 3, 1, strongBuyRatings, bgcolor = color.lime, text_color = #000000, text_size = size.large)
table.cell(ratings, 4, 1, sellRatings, bgcolor = color.maroon, text_color = #000000, text_size = size.large)
syminfo.recommendations_buy_strong
현재 종목에 "강력 매수" 등급을 부여한 애널리스트 수.
series int
//@version=5
indicator("syminfo recommendations", overlay = true)
//@variable A table containing information about analyst recommendations.
var table ratings = table.new(position.top_right, 8, 2, frame_color = #000000)
if barstate.islastconfirmedhistory
//@variable The time value one year from the date of the last analyst recommendations.
int YTD = syminfo.target_price_date + timeframe.in_seconds("12M") * 1000
// Add header cells.
table.cell(ratings, 0, 0, "Start Date", bgcolor = color.gray, text_color = #000000, text_size = size.large)
table.cell(ratings, 1, 0, "End Date", bgcolor = color.gray, text_color = #000000, text_size = size.large)
table.cell(ratings, 2, 0, "Buy", bgcolor = color.teal, text_color = #000000, text_size = size.large)
table.cell(ratings, 3, 0, "Strong Buy", bgcolor = color.lime, text_color = #000000, text_size = size.large)
table.cell(ratings, 4, 0, "Sell", bgcolor = color.maroon, text_color = #000000, text_size = size.large)
table.cell(ratings, 5, 0, "Strong Sell", bgcolor = color.red, text_color = #000000, text_size = size.large)
table.cell(ratings, 6, 0, "Hold", bgcolor = color.orange, text_color = #000000, text_size = size.large)
table.cell(ratings, 7, 0, "Total", bgcolor = color.silver, text_color = #000000, text_size = size.large)
// Recommendation strings
string startDate = str.format_time(syminfo.recommendations_date, "yyyy-MM-dd")
string endDate = str.format_time(YTD, "yyyy-MM-dd")
string buyRatings = str.tostring(syminfo.recommendations_buy)
string strongBuyRatings = str.tostring(syminfo.recommendations_buy_strong)
string sellRatings = str.tostring(syminfo.recommendations_sell)
string strongSellRatings = str.tostring(syminfo.recommendations_sell_strong)
string holdRatings = str.tostring(syminfo.recommendations_hold)
string totalRatings = str.tostring(syminfo.recommendations_total)
// Add value cells
table.cell(ratings, 0, 1, startDate, bgcolor = color.gray, text_color = #000000, text_size = size.large)
table.cell(ratings, 1, 1, endDate, bgcolor = color.gray, text_color = #000000, text_size = size.large)
table.cell(ratings, 2, 1, buyRatings, bgcolor = color.teal, text_color = #000000, text_size = size.large)
table.cell(ratings, 3, 1, strongBuyRatings, bgcolor = color.lime, text_color = #000000, text_size = size.large)
table.cell(ratings, 4, 1, sellRatings, bgcolor = color.maroon, text_color = #000000, text_size = size.large)
syminfo.recommendations_date
현재 기호에 대한 마지막 권장 사항 세트의 시작 날짜.
series int
//@version=5
indicator("syminfo recommendations", overlay = true)
//@variable A table containing information about analyst recommendations.
var table ratings = table.new(position.top_right, 8, 2, frame_color = #000000)
if barstate.islastconfirmedhistory
//@variable The time value one year from the date of the last analyst recommendations.
int YTD = syminfo.target_price_date + timeframe.in_seconds("12M") * 1000
// Add header cells.
table.cell(ratings, 0, 0, "Start Date", bgcolor = color.gray, text_color = #000000, text_size = size.large)
table.cell(ratings, 1, 0, "End Date", bgcolor = color.gray, text_color = #000000, text_size = size.large)
table.cell(ratings, 2, 0, "Buy", bgcolor = color.teal, text_color = #000000, text_size = size.large)
table.cell(ratings, 3, 0, "Strong Buy", bgcolor = color.lime, text_color = #000000, text_size = size.large)
table.cell(ratings, 4, 0, "Sell", bgcolor = color.maroon, text_color = #000000, text_size = size.large)
table.cell(ratings, 5, 0, "Strong Sell", bgcolor = color.red, text_color = #000000, text_size = size.large)
table.cell(ratings, 6, 0, "Hold", bgcolor = color.orange, text_color = #000000, text_size = size.large)
table.cell(ratings, 7, 0, "Total", bgcolor = color.silver, text_color = #000000, text_size = size.large)
// Recommendation strings
string startDate = str.format_time(syminfo.recommendations_date, "yyyy-MM-dd")
string endDate = str.format_time(YTD, "yyyy-MM-dd")
string buyRatings = str.tostring(syminfo.recommendations_buy)
string strongBuyRatings = str.tostring(syminfo.recommendations_buy_strong)
string sellRatings = str.tostring(syminfo.recommendations_sell)
string strongSellRatings = str.tostring(syminfo.recommendations_sell_strong)
string holdRatings = str.tostring(syminfo.recommendations_hold)
string totalRatings = str.tostring(syminfo.recommendations_total)
// Add value cells
table.cell(ratings, 0, 1, startDate, bgcolor = color.gray, text_color = #000000, text_size = size.large)
table.cell(ratings, 1, 1, endDate, bgcolor = color.gray, text_color = #000000, text_size = size.large)
table.cell(ratings, 2, 1, buyRatings, bgcolor = color.teal, text_color = #000000, text_size = size.large)
table.cell(ratings, 3, 1, strongBuyRatings, bgcolor = color.lime, text_color = #000000, text_size = size.large)
table.cell(ratings, 4, 1, sellRatings, bgcolor = color.maroon, text_color = #000000, text_size = size.large)
syminfo.recommendations_hold
현재 종목에 "보유" 등급을 부여한 애널리스트 수.
series int
//@version=5
indicator("syminfo recommendations", overlay = true)
//@variable A table containing information about analyst recommendations.
var table ratings = table.new(position.top_right, 8, 2, frame_color = #000000)
if barstate.islastconfirmedhistory
//@variable The time value one year from the date of the last analyst recommendations.
int YTD = syminfo.target_price_date + timeframe.in_seconds("12M") * 1000
// Add header cells.
table.cell(ratings, 0, 0, "Start Date", bgcolor = color.gray, text_color = #000000, text_size = size.large)
table.cell(ratings, 1, 0, "End Date", bgcolor = color.gray, text_color = #000000, text_size = size.large)
table.cell(ratings, 2, 0, "Buy", bgcolor = color.teal, text_color = #000000, text_size = size.large)
table.cell(ratings, 3, 0, "Strong Buy", bgcolor = color.lime, text_color = #000000, text_size = size.large)
table.cell(ratings, 4, 0, "Sell", bgcolor = color.maroon, text_color = #000000, text_size = size.large)
table.cell(ratings, 5, 0, "Strong Sell", bgcolor = color.red, text_color = #000000, text_size = size.large)
table.cell(ratings, 6, 0, "Hold", bgcolor = color.orange, text_color = #000000, text_size = size.large)
table.cell(ratings, 7, 0, "Total", bgcolor = color.silver, text_color = #000000, text_size = size.large)
// Recommendation strings
string startDate = str.format_time(syminfo.recommendations_date, "yyyy-MM-dd")
string endDate = str.format_time(YTD, "yyyy-MM-dd")
string buyRatings = str.tostring(syminfo.recommendations_buy)
string strongBuyRatings = str.tostring(syminfo.recommendations_buy_strong)
string sellRatings = str.tostring(syminfo.recommendations_sell)
string strongSellRatings = str.tostring(syminfo.recommendations_sell_strong)
string holdRatings = str.tostring(syminfo.recommendations_hold)
string totalRatings = str.tostring(syminfo.recommendations_total)
// Add value cells
table.cell(ratings, 0, 1, startDate, bgcolor = color.gray, text_color = #000000, text_size = size.large)
table.cell(ratings, 1, 1, endDate, bgcolor = color.gray, text_color = #000000, text_size = size.large)
table.cell(ratings, 2, 1, buyRatings, bgcolor = color.teal, text_color = #000000, text_size = size.large)
table.cell(ratings, 3, 1, strongBuyRatings, bgcolor = color.lime, text_color = #000000, text_size = size.large)
table.cell(ratings, 4, 1, sellRatings, bgcolor = color.maroon, text_color = #000000, text_size = size.large)
syminfo.recommendations_sell
현재 심볼에 "매도" 등급을 부여한 애널리스트 수.
series int
//@version=5
indicator("syminfo recommendations", overlay = true)
//@variable A table containing information about analyst recommendations.
var table ratings = table.new(position.top_right, 8, 2, frame_color = #000000)
if barstate.islastconfirmedhistory
//@variable The time value one year from the date of the last analyst recommendations.
int YTD = syminfo.target_price_date + timeframe.in_seconds("12M") * 1000
// Add header cells.
table.cell(ratings, 0, 0, "Start Date", bgcolor = color.gray, text_color = #000000, text_size = size.large)
table.cell(ratings, 1, 0, "End Date", bgcolor = color.gray, text_color = #000000, text_size = size.large)
table.cell(ratings, 2, 0, "Buy", bgcolor = color.teal, text_color = #000000, text_size = size.large)
table.cell(ratings, 3, 0, "Strong Buy", bgcolor = color.lime, text_color = #000000, text_size = size.large)
table.cell(ratings, 4, 0, "Sell", bgcolor = color.maroon, text_color = #000000, text_size = size.large)
table.cell(ratings, 5, 0, "Strong Sell", bgcolor = color.red, text_color = #000000, text_size = size.large)
table.cell(ratings, 6, 0, "Hold", bgcolor = color.orange, text_color = #000000, text_size = size.large)
table.cell(ratings, 7, 0, "Total", bgcolor = color.silver, text_color = #000000, text_size = size.large)
// Recommendation strings
string startDate = str.format_time(syminfo.recommendations_date, "yyyy-MM-dd")
string endDate = str.format_time(YTD, "yyyy-MM-dd")
string buyRatings = str.tostring(syminfo.recommendations_buy)
string strongBuyRatings = str.tostring(syminfo.recommendations_buy_strong)
string sellRatings = str.tostring(syminfo.recommendations_sell)
string strongSellRatings = str.tostring(syminfo.recommendations_sell_strong)
string holdRatings = str.tostring(syminfo.recommendations_hold)
string totalRatings = str.tostring(syminfo.recommendations_total)
// Add value cells
table.cell(ratings, 0, 1, startDate, bgcolor = color.gray, text_color = #000000, text_size = size.large)
table.cell(ratings, 1, 1, endDate, bgcolor = color.gray, text_color = #000000, text_size = size.large)
table.cell(ratings, 2, 1, buyRatings, bgcolor = color.teal, text_color = #000000, text_size = size.large)
table.cell(ratings, 3, 1, strongBuyRatings, bgcolor = color.lime, text_color = #000000, text_size = size.large)
table.cell(ratings, 4, 1, sellRatings, bgcolor = color.maroon, text_color = #000000, text_size = size.large)
syminfo.recommendations_sell_strong
현재 종목에 "강력 매도" 등급을 부여한 애널리스트 수.
series int
//@version=5
indicator("syminfo recommendations", overlay = true)
//@variable A table containing information about analyst recommendations.
var table ratings = table.new(position.top_right, 8, 2, frame_color = #000000)
if barstate.islastconfirmedhistory
//@variable The time value one year from the date of the last analyst recommendations.
int YTD = syminfo.target_price_date + timeframe.in_seconds("12M") * 1000
// Add header cells.
table.cell(ratings, 0, 0, "Start Date", bgcolor = color.gray, text_color = #000000, text_size = size.large)
table.cell(ratings, 1, 0, "End Date", bgcolor = color.gray, text_color = #000000, text_size = size.large)
table.cell(ratings, 2, 0, "Buy", bgcolor = color.teal, text_color = #000000, text_size = size.large)
table.cell(ratings, 3, 0, "Strong Buy", bgcolor = color.lime, text_color = #000000, text_size = size.large)
table.cell(ratings, 4, 0, "Sell", bgcolor = color.maroon, text_color = #000000, text_size = size.large)
table.cell(ratings, 5, 0, "Strong Sell", bgcolor = color.red, text_color = #000000, text_size = size.large)
table.cell(ratings, 6, 0, "Hold", bgcolor = color.orange, text_color = #000000, text_size = size.large)
table.cell(ratings, 7, 0, "Total", bgcolor = color.silver, text_color = #000000, text_size = size.large)
// Recommendation strings
string startDate = str.format_time(syminfo.recommendations_date, "yyyy-MM-dd")
string endDate = str.format_time(YTD, "yyyy-MM-dd")
string buyRatings = str.tostring(syminfo.recommendations_buy)
string strongBuyRatings = str.tostring(syminfo.recommendations_buy_strong)
string sellRatings = str.tostring(syminfo.recommendations_sell)
string strongSellRatings = str.tostring(syminfo.recommendations_sell_strong)
string holdRatings = str.tostring(syminfo.recommendations_hold)
string totalRatings = str.tostring(syminfo.recommendations_total)
// Add value cells
table.cell(ratings, 0, 1, startDate, bgcolor = color.gray, text_color = #000000, text_size = size.large)
table.cell(ratings, 1, 1, endDate, bgcolor = color.gray, text_color = #000000, text_size = size.large)
table.cell(ratings, 2, 1, buyRatings, bgcolor = color.teal, text_color = #000000, text_size = size.large)
table.cell(ratings, 3, 1, strongBuyRatings, bgcolor = color.lime, text_color = #000000, text_size = size.large)
table.cell(ratings, 4, 1, sellRatings, bgcolor = color.maroon, text_color = #000000, text_size = size.large)
syminfo.recommendations_total
현재 심볼에 대한 총 추천 수.
series int
//@version=5
indicator("syminfo recommendations", overlay = true)
//@variable A table containing information about analyst recommendations.
var table ratings = table.new(position.top_right, 8, 2, frame_color = #000000)
if barstate.islastconfirmedhistory
//@variable The time value one year from the date of the last analyst recommendations.
int YTD = syminfo.target_price_date + timeframe.in_seconds("12M") * 1000
// Add header cells.
table.cell(ratings, 0, 0, "Start Date", bgcolor = color.gray, text_color = #000000, text_size = size.large)
table.cell(ratings, 1, 0, "End Date", bgcolor = color.gray, text_color = #000000, text_size = size.large)
table.cell(ratings, 2, 0, "Buy", bgcolor = color.teal, text_color = #000000, text_size = size.large)
table.cell(ratings, 3, 0, "Strong Buy", bgcolor = color.lime, text_color = #000000, text_size = size.large)
table.cell(ratings, 4, 0, "Sell", bgcolor = color.maroon, text_color = #000000, text_size = size.large)
table.cell(ratings, 5, 0, "Strong Sell", bgcolor = color.red, text_color = #000000, text_size = size.large)
table.cell(ratings, 6, 0, "Hold", bgcolor = color.orange, text_color = #000000, text_size = size.large)
table.cell(ratings, 7, 0, "Total", bgcolor = color.silver, text_color = #000000, text_size = size.large)
// Recommendation strings
string startDate = str.format_time(syminfo.recommendations_date, "yyyy-MM-dd")
string endDate = str.format_time(YTD, "yyyy-MM-dd")
string buyRatings = str.tostring(syminfo.recommendations_buy)
string strongBuyRatings = str.tostring(syminfo.recommendations_buy_strong)
string sellRatings = str.tostring(syminfo.recommendations_sell)
string strongSellRatings = str.tostring(syminfo.recommendations_sell_strong)
string holdRatings = str.tostring(syminfo.recommendations_hold)
string totalRatings = str.tostring(syminfo.recommendations_total)
// Add value cells
table.cell(ratings, 0, 1, startDate, bgcolor = color.gray, text_color = #000000, text_size = size.large)
table.cell(ratings, 1, 1, endDate, bgcolor = color.gray, text_color = #000000, text_size = size.large)
table.cell(ratings, 2, 1, buyRatings, bgcolor = color.teal, text_color = #000000, text_size = size.large)
table.cell(ratings, 3, 1, strongBuyRatings, bgcolor = color.lime, text_color = #000000, text_size = size.large)
table.cell(ratings, 4, 1, sellRatings, bgcolor = color.maroon, text_color = #000000, text_size = size.large)
syminfo.root
퓨쳐스 컨트랙트와 같은 데리버티브 (파생물) 의 루트. 다른 심볼의 경우 syminfo.ticker 와 같은 값을 리턴합니다.
simple string
//@version=5
indicator("syminfo.root")
// If the current chart symbol is continuous futures ('ES1!'), it would display 'ES'.
if barstate.islastconfirmedhistory
label.new(bar_index, high, syminfo.root)
syminfo.sector
심볼의 섹터를 반환하거나 심볼에 섹터가 없는 경우 na을 반환합니다. 예시: 예: "전자 기술", "기술 서비스", "에너지 광물", "내구소비재" 등. 이 값은 차트의 "심볼 정보" 창에서 볼 수 있는 값과 동일합니다.
섹터는 경제의 광범위한 부분입니다. 산업은 더 좁은 분류입니다. 예를 들어 NASDAQ:CAT(Caterpillar, Inc.)는 "생산자 제조" 섹터와 "트럭/건설/농기계" 산업에 속합니다.
simple string
simple string
syminfo.session
차트 메인 시리즈의 세션 타입. 쓸 수 있는 값은 session.regular, session.extended 입니다.
simple string
syminfo.target_price_average
애널리스트가 예측한 해당 종목의 최근 1년간 목표 가격의 평균.
series float
//@version=5
indicator("syminfo target_price")
if barstate.islastconfirmedhistory
//@variable The time value one year from the date of the last analyst recommendations.
int YTD = syminfo.target_price_date + timeframe.in_seconds("12M") * 1000
//@variable A line connecting the current `close` to the highest yearly price estimate.
highLine = line.new(time, close, YTD, syminfo.target_price_high, color = color.green, xloc = xloc.bar_time)
//@variable A line connecting the current `close` to the lowest yearly price estimate.
lowLine = line.new(time, close, YTD, syminfo.target_price_low, color = color.red, xloc = xloc.bar_time)
//@variable A line connecting the current `close` to the median yearly price estimate.
medianLine = line.new(time, close, YTD, syminfo.target_price_median, color = color.gray, xloc = xloc.bar_time)
//@variable A line connecting the current `close` to the average yearly price estimate.
averageLine = line.new(time, close, YTD, syminfo.target_price_average, color = color.orange, xloc = xloc.bar_time)
// Fill the space between targets
linefill.new(lowLine, medianLine, color.new(color.red, 90))
linefill.new(medianLine, highLine, color.new(color.green, 90))
// Create a label displaying the total number of analyst estimates.
string estimatesText = str.format("Number of estimates: {0}", syminfo.target_price_estimates)
label.new(bar_index, close, estimatesText, textcolor = color.white, size = size.large)
syminfo.target_price_date
현재 심볼에 대한 마지막 목표가 예측의 시작일.
series int
//@version=5
indicator("syminfo target_price")
if barstate.islastconfirmedhistory
//@variable The time value one year from the date of the last analyst recommendations.
int YTD = syminfo.target_price_date + timeframe.in_seconds("12M") * 1000
//@variable A line connecting the current `close` to the highest yearly price estimate.
highLine = line.new(time, close, YTD, syminfo.target_price_high, color = color.green, xloc = xloc.bar_time)
//@variable A line connecting the current `close` to the lowest yearly price estimate.
lowLine = line.new(time, close, YTD, syminfo.target_price_low, color = color.red, xloc = xloc.bar_time)
//@variable A line connecting the current `close` to the median yearly price estimate.
medianLine = line.new(time, close, YTD, syminfo.target_price_median, color = color.gray, xloc = xloc.bar_time)
//@variable A line connecting the current `close` to the average yearly price estimate.
averageLine = line.new(time, close, YTD, syminfo.target_price_average, color = color.orange, xloc = xloc.bar_time)
// Fill the space between targets
linefill.new(lowLine, medianLine, color.new(color.red, 90))
linefill.new(medianLine, highLine, color.new(color.green, 90))
// Create a label displaying the total number of analyst estimates.
string estimatesText = str.format("Number of estimates: {0}", syminfo.target_price_estimates)
label.new(bar_index, close, estimatesText, textcolor = color.white, size = size.large)
syminfo.target_price_estimates
현재 심볼에 대한 최신 총 목표가 예측 수.
series float
//@version=5
indicator("syminfo target_price")
if barstate.islastconfirmedhistory
//@variable The time value one year from the date of the last analyst recommendations.
int YTD = syminfo.target_price_date + timeframe.in_seconds("12M") * 1000
//@variable A line connecting the current `close` to the highest yearly price estimate.
highLine = line.new(time, close, YTD, syminfo.target_price_high, color = color.green, xloc = xloc.bar_time)
//@variable A line connecting the current `close` to the lowest yearly price estimate.
lowLine = line.new(time, close, YTD, syminfo.target_price_low, color = color.red, xloc = xloc.bar_time)
//@variable A line connecting the current `close` to the median yearly price estimate.
medianLine = line.new(time, close, YTD, syminfo.target_price_median, color = color.gray, xloc = xloc.bar_time)
//@variable A line connecting the current `close` to the average yearly price estimate.
averageLine = line.new(time, close, YTD, syminfo.target_price_average, color = color.orange, xloc = xloc.bar_time)
// Fill the space between targets
linefill.new(lowLine, medianLine, color.new(color.red, 90))
linefill.new(medianLine, highLine, color.new(color.green, 90))
// Create a label displaying the total number of analyst estimates.
string estimatesText = str.format("Number of estimates: {0}", syminfo.target_price_estimates)
label.new(bar_index, close, estimatesText, textcolor = color.white, size = size.large)
syminfo.target_price_high
애널리스트가 예측한 해당 종목의 최근 최고 연간 목표가.
series float
//@version=5
indicator("syminfo target_price")
if barstate.islastconfirmedhistory
//@variable The time value one year from the date of the last analyst recommendations.
int YTD = syminfo.target_price_date + timeframe.in_seconds("12M") * 1000
//@variable A line connecting the current `close` to the highest yearly price estimate.
highLine = line.new(time, close, YTD, syminfo.target_price_high, color = color.green, xloc = xloc.bar_time)
//@variable A line connecting the current `close` to the lowest yearly price estimate.
lowLine = line.new(time, close, YTD, syminfo.target_price_low, color = color.red, xloc = xloc.bar_time)
//@variable A line connecting the current `close` to the median yearly price estimate.
medianLine = line.new(time, close, YTD, syminfo.target_price_median, color = color.gray, xloc = xloc.bar_time)
//@variable A line connecting the current `close` to the average yearly price estimate.
averageLine = line.new(time, close, YTD, syminfo.target_price_average, color = color.orange, xloc = xloc.bar_time)
// Fill the space between targets
linefill.new(lowLine, medianLine, color.new(color.red, 90))
linefill.new(medianLine, highLine, color.new(color.green, 90))
// Create a label displaying the total number of analyst estimates.
string estimatesText = str.format("Number of estimates: {0}", syminfo.target_price_estimates)
label.new(bar_index, close, estimatesText, textcolor = color.white, size = size.large)
syminfo.target_price_low
애널리스트가 예측한 해당 종목의 최근 연간 최저 목표가.
series float
//@version=5
indicator("syminfo target_price")
if barstate.islastconfirmedhistory
//@variable The time value one year from the date of the last analyst recommendations.
int YTD = syminfo.target_price_date + timeframe.in_seconds("12M") * 1000
//@variable A line connecting the current `close` to the highest yearly price estimate.
highLine = line.new(time, close, YTD, syminfo.target_price_high, color = color.green, xloc = xloc.bar_time)
//@variable A line connecting the current `close` to the lowest yearly price estimate.
lowLine = line.new(time, close, YTD, syminfo.target_price_low, color = color.red, xloc = xloc.bar_time)
//@variable A line connecting the current `close` to the median yearly price estimate.
medianLine = line.new(time, close, YTD, syminfo.target_price_median, color = color.gray, xloc = xloc.bar_time)
//@variable A line connecting the current `close` to the average yearly price estimate.
averageLine = line.new(time, close, YTD, syminfo.target_price_average, color = color.orange, xloc = xloc.bar_time)
// Fill the space between targets
linefill.new(lowLine, medianLine, color.new(color.red, 90))
linefill.new(medianLine, highLine, color.new(color.green, 90))
// Create a label displaying the total number of analyst estimates.
string estimatesText = str.format("Number of estimates: {0}", syminfo.target_price_estimates)
label.new(bar_index, close, estimatesText, textcolor = color.white, size = size.large)
syminfo.target_price_median
애널리스트가 예측한 해당 종목의 최근 연간 목표 가격의 중앙값.
series float
//@version=5
indicator("syminfo target_price")
if barstate.islastconfirmedhistory
//@variable The time value one year from the date of the last analyst recommendations.
int YTD = syminfo.target_price_date + timeframe.in_seconds("12M") * 1000
//@variable A line connecting the current `close` to the highest yearly price estimate.
highLine = line.new(time, close, YTD, syminfo.target_price_high, color = color.green, xloc = xloc.bar_time)
//@variable A line connecting the current `close` to the lowest yearly price estimate.
lowLine = line.new(time, close, YTD, syminfo.target_price_low, color = color.red, xloc = xloc.bar_time)
//@variable A line connecting the current `close` to the median yearly price estimate.
medianLine = line.new(time, close, YTD, syminfo.target_price_median, color = color.gray, xloc = xloc.bar_time)
//@variable A line connecting the current `close` to the average yearly price estimate.
averageLine = line.new(time, close, YTD, syminfo.target_price_average, color = color.orange, xloc = xloc.bar_time)
// Fill the space between targets
linefill.new(lowLine, medianLine, color.new(color.red, 90))
linefill.new(medianLine, highLine, color.new(color.green, 90))
// Create a label displaying the total number of analyst estimates.
string estimatesText = str.format("Number of estimates: {0}", syminfo.target_price_estimates)
label.new(bar_index, close, estimatesText, textcolor = color.white, size = size.large)
syminfo.ticker
익스체인지 프레픽스가 붙지 않은 심볼 이름, 예를 들어 'MSFT'.
simple string
syminfo.tickerid
ticker 또는 symbol 매개변수가 있는 함수에서 인수로 사용하기 위해 심볼을 나타내는 티커 ID의 전체 형식을 반환합니다. 언제나 콜론으로 구분된 접두사 (거래소) 와 티커 ("NASDAQ:AAPL")를 포함하지만 배당 조정, 차트 유형, 통화 변환 등과 같은 다른 심볼 데이터도 포함할 수 있습니다.
이 변수의 값이 항상 간단한 "prefix:ticker" 형식을 사용하는 것은 아니므로 부울 비교 또는 문자열 조작 함수에 사용하기에는 적합하지 않습니다. 이러한 컨텍스트에서 ticker.standard를 통해 변수의 결과를 실행하여 정화합니다. 이렇게 하면 불필요한 정보가 제거되고 "prefix:ticker" 구조를 사용하여 일관되게 형식이 지정된 티커 ID가 반환됩니다.
simple string
simple string
syminfo.timezone
차트 메인 시리즈 거래소의 타임존. 쓸 수 있는 값은 timestamp 에서 보십시오.
simple string
syminfo.type
심볼의 마켓 타입입니다. 값은 "stock", "fund", "dr", "right", "bond", "warrant", "structured", "index", "forex", "futures", "spread", "economic", "fundamental", "crypto", "spot", "swap", "option", "commodity" 입니다.
simple string
syminfo.volumetype
현재 심볼의 볼륨 유형입니다. 가능한 값은 기준 통화의 경우 "base", 쿼트 통화의 경우 "quote", 거래의 경우 "tick", 거래량이 없거나 유형이 지정되지 않은 경우 "n/a"입니다.
단지 몇몇 데이터 피드 프로바이더들만이 볼륨 정보를 제공합니다. 결과적으로 이 베어리어블은 그러한 심볼의 경우에만 밸류를 리턴하는데, 보통 크립토 섹터입니다.
simple string
simple string
ta.accdist
누적/분포 지수
series float
ta.iii
인트라데이 인텐시티 인덱스.
series float
//@version=5
indicator("Intraday Intensity Index")
plot(ta.iii, color=color.yellow)
// the same on pine
f_iii() =>
(2 * close - high - low) / ((high - low) * volume)
plot(f_iii())
ta.nvi
네거티브 볼륨 인덱스.
series float
//@version=5
indicator("Negative Volume Index")
plot(ta.nvi, color=color.yellow)
// the same on pine
f_nvi() =>
float ta_nvi = 1.0
float prevNvi = (nz(ta_nvi[1], 0.0) == 0.0) ? 1.0: ta_nvi[1]
if nz(close, 0.0) == 0.0 or nz(close[1], 0.0) == 0.0
ta_nvi := prevNvi
else
ta_nvi := (volume < nz(volume[1], 0.0)) ? prevNvi + ((close - close[1]) / close[1]) * prevNvi : prevNvi
result = ta_nvi
plot(f_nvi())
ta.obv
온 밸런스 볼륨.
series float
//@version=5
indicator("On Balance Volume")
plot(ta.obv, color=color.yellow)
// the same on pine
f_obv() =>
ta.cum(math.sign(ta.change(close)) * volume)
plot(f_obv())
ta.pvi
포지티브 볼륨 인덱스.
series float
//@version=5
indicator("Positive Volume Index")
plot(ta.pvi, color=color.yellow)
// the same on pine
f_pvi() =>
float ta_pvi = 1.0
float prevPvi = (nz(ta_pvi[1], 0.0) == 0.0) ? 1.0: ta_pvi[1]
if nz(close, 0.0) == 0.0 or nz(close[1], 0.0) == 0.0
ta_pvi := prevPvi
else
ta_pvi := (volume > nz(volume[1], 0.0)) ? prevPvi + ((close - close[1]) / close[1]) * prevPvi : prevPvi
result = ta_pvi
plot(f_pvi())
ta.pvt
프라이스-볼륨 트렌드.
series float
//@version=5
indicator("Price-Volume Trend")
plot(ta.pvt, color=color.yellow)
// the same on pine
f_pvt() =>
ta.cum((ta.change(close) / close[1]) * volume)
plot(f_pvt())
ta.tr
실제 범위, ta.tr(handle_na = false)에 해당합니다.
math.max(high - low, math.abs(high - close[1]), math.abs(low - close[1]))로 계산됩니다.
math.max(high - low, math.abs(high - close[1]), math.abs(low - close[1]))로 계산됩니다.
series float
ta.vwap
거래량 가중 평균가. hlc3를 소스 시리즈로 씁니다.
series float
ta.wad
윌리엄스 어큐뮬레이션/디스트리뷰션.
series float
//@version=5
indicator("Williams Accumulation/Distribution")
plot(ta.wad, color=color.yellow)
// the same on pine
f_wad() =>
trueHigh = math.max(high, close[1])
trueLow = math.min(low, close[1])
mom = ta.change(close)
gain = (mom > 0) ? close - trueLow : (mom < 0) ? close - trueHigh : 0
ta.cum(gain)
plot(f_wad())
ta.wvad
윌리엄스 베어리어블 어큐뮬레이션/디스트리뷰션.
series float
//@version=5
indicator("Williams Variable Accumulation/Distribution")
plot(ta.wvad, color=color.yellow)
// the same on pine
f_wvad() =>
(close - open) / (high - low) * volume
plot(f_wvad())
table.all
스크립트가 그린 모든 테이블로 채워진 어레이를 리턴합니다.
리드-온리 어레이입니다. 어레이의 제로 인덱스는 차트에서 가장 오래 된 오브젝트의 아이디입니다.
리드-온리 어레이입니다. 어레이의 제로 인덱스는 차트에서 가장 오래 된 오브젝트의 아이디입니다.
array<table>
//@version=5
indicator("table.all")
//delete all tables
table.new(position = position.top_right, columns = 2, rows = 1, bgcolor = color.yellow, border_width = 1)
a_allTables = table.all
if array.size(a_allTables) > 0
for i = 0 to array.size(a_allTables) - 1
table.delete(array.get(a_allTables, i))
time
UNIX 포맷 커런트 바 타임. 1970년 1월 1일 00:00:00 UTC 로부터 잰 밀리세컨드 수입니다.
이 베어리어블은 바 오픈 타임 기준 타임스탬프를 리턴합니다. 그렇기 때문에 오버나잇 세션 (보기: EURUSD, 먼데이 세션이 선데이 17시 스타트) 의 경우 이 베어리어블은 지정된 트레이딩 데이트보다 먼저 타임을 리턴할 수 있습니다. 보기로, EURUSD 에서는 dayofmonth(time) 가 트레이딩 데이트보다 1 낮을 수 있는데, 이는 커런트 데이 바가 실제로는 하루 앞서 오픈하기 때문입니다.
series int
series int
time_close
현재 봉의 UNIX 형식 종가 시간입니다. 1970년 1월 1일 UTC 00:00:00 이후 경과한 밀리초 수를 나타냅니다. 비표준 가격 기반 차트 유형(렌코, 줄 바꿈, 카기, 포인트 &피겨, 레인지)에서 이 변수는 차트의 실시간 봉에서 na을 반환합니다.
series int
time_tradingday
커런트 바 트레이딩 시작 타임 (유닉스 포맷, UTC 1970/01/01 00:00:00 부터 흐른 밀리세컨드 값).
변수는 연중무휴 세션에서 유용합니다. 여기서는 현재 날짜 세션이 이전 달력 날짜에서 시작할 수 있습니다(예: FXCM:EURUSD의 월요일 세션은 일요일에 시장 시간대 기준 17:00에 시작됩니다). 월요일 일봉의 경우 time이 해당 월요일의 17:00 타임스탬프를 반환하는 것과 달리, time_tradingday는 해당 월요일 00:00 UTC의 타임스탬프를 반환합니다.
1D 보다 큰 타임프레임에 time_tradingday 를 쓰면 그 바의 마지막 트레이딩 데이 (보기: 1W 는 그 위크의 마지막 트레이딩 데이) 를 리턴합니다.
series int
series int
timeframe.isdaily
커런트 레졸루션이 데일리 레졸루션이면 참, 아니면 거짓 리턴.
simple bool
timeframe.isdwm
커런트 레졸루션이 데일리, 위클리, 만쓸리 레졸루션이면 참, 아니면 거짓 리턴.
simple bool
timeframe.isintraday
커런트 레졸루션이 인트라데이 (미니트 또는 세컨드) 이면 true. 아니면 false.
simple bool
timeframe.isminutes
커런트 레졸루션이 미니트이면 true. 아니면 false.
simple bool
timeframe.ismonthly
현재 레졸루션이 달 레졸루션이면 true, 아니면 false 리턴.
simple bool
timeframe.isseconds
커런트 레졸루션이 세컨드이면 true. 아니면 false.
simple bool
timeframe.isweekly
커런트 레졸루션이 위클리 레졸루션이면 참, 아니면 거짓 리턴.
simple bool
timeframe.multiplier
레졸루션 멀티플라이어, 보기: '60' - 60, 'D' - 1, '5D' - 5, '12M' - 12.
simple int
timeframe.period
차트의 타임프레임을 나타내는 문자열입니다. 반환된 문자열의 형식은 "[<quantity>][<units>]"이며, 여기서 <quantity> 및 <units>는 경우에 따라 없습니다. <quantity>는 숫자 단위이지만 그 수가 1이면 부재합니다. <unit>은 초는 "S", 일은 "D", 주는 "W", 월은 "M"이지만 분은 없습니다. 시간은 <unit>이 존재하지 않습니다.
변수는 10초 동안 "10S", 60분 동안 "60", 1일 동안 "D", 2주 동안 "2W", 한 분기 동안 "3M"을 반환합니다.
timeframe 매개변수를 포함하는 모든 함수의 인수로 사용할 수 있습니다.
simple string
timenow
UNIX 포맷 커런트 타임. 1970년 1월 1일 00:00:00 UTC 로부터 잰 밀리세컨드 수입니다.
이 베어리어블/펑크션을 쓰면 인디케이터 리페인팅이 생길 수 있습니다.
series int
series int
volume
커런트 바 볼륨.
이전 값들은 스퀘어 브래킷 오퍼레이터 [] 를 써서 읽을 수 있습니다. 보기: volume[1], volume[2].
series float
series float
weekofyear
거래소 시간대에서 현재 바가 몇 주차인지를 나타내는 번호.
이 베어리어블은 바 오픈 타임의 주를 리턴합니다. 오버나잇 세션 (보기: EURUSD, 먼데이 세션이 선데이 17시 스타트) 의 경우 이 밸류는 트레이딩 데이의 주보다 1 낮을 수 있습니다.
series int
series int
year
거래소 타임존 기준 커런트 바 해.
이 베어리어블은 바 오픈 타임의 해를 리턴합니다. 오버나잇 세션 (보기: EURUSD, 먼데이 세션이 선데이 17시 스타트) 의 경우 이 밸류는 트레이딩 데이의 해보다 1 낮을 수 있습니다.
series int
series int
728x90
반응형
'Money' 카테고리의 다른 글
파인스크립트 언어 레퍼런스 매뉴얼 v5 한국어 (2) 상수 Constants (0) | 2024.06.19 |
---|---|
비트코인 자동매매 트레이딩뷰 지표 얼러트 OKX 시그널봇 연동 (7) | 2024.06.18 |
🪙 가상화폐 거래소 코인원 수수료 총정리 (코인 거래 수수료 및 입출금 수수료) (1) | 2024.01.01 |
🪙 가상화폐 거래소 코빗 수수료 총정리 (코인 거래 수수료 및 입출금 수수료) (1) | 2024.01.01 |
🪙 가상화폐 거래소 업비트 수수료 총정리 (코인 거래 수수료 및 입출금 수수료) (0) | 2023.12.31 |
댓글