필드 값을 수정
type order
float price
float amount
string symbol
if strategy.position_size == 0 and open > close
strategy.entry("long", strategy.long, 1)
order1 = order.new(strategy.opentrades.entry_price(strategy.opentrades - 1), strategy.opentrades.size(strategy.opentrades - 1), syminfo.ticker)
if strategy.position_size != 0
runtime.log(order1)
order1.price := 999
order1.amount := 100
runtime.log(order1)
runtime.error("stop")
객체 필드의 값은:=
재배정 운영자
객체 수집
이 예제는 사용자가 정의한 순서 타입의 객체를 보유할 빈 배열을 선언합니다:
type order
float price
float amount
string symbol
arrOrder = array.new<order>()
order1 = order.new(99, 1, "BTC_USDT")
order2 = order.new(100, 2, "ETH_USDT")
array.push(arrOrder, order1)
array.push(arrOrder, order2)
runtime.log(arrOrder)
runtime.error("stop")
또는
type order
float price
float amount
string symbol
var array<order> arrOrder = na
arrOrder := array.new<order>()
order1 = order.new(99, 1, "BTC_USDT")
order2 = order.new(100, 2, "ETH_USDT")
array.push(arrOrder, order1)
array.push(arrOrder, order2)
runtime.log(arrOrder)
runtime.error("stop")
사물을 복사
파인에서는 객체를 참조로 할당합니다. 기존 객체를 새로운 변수에 할당하면 둘 다 동일한 객체를 참조합니다.
//@version=5
indicator("")
type pivotPoint
int x
float y
pivot1 = pivotPoint.new()
pivot1.x := 1000
pivot2 = pivot1
pivot2.x := 2000
// Both plot the value 2000.
plot(pivot1.x)
plot(pivot2.x)
다음 예제에서, 우리는 피보트1 객체를 만들고 그 x 필드를 1000로 설정합니다. 그러면 우리는 피보트1 객체에 대한 참조를 포함하는 피보트2 변수를 선언합니다. 따라서 둘 다 동일한 인스턴스에 가리키고 있습니다. 따라서, 피보트2.x를 변경하면 둘 다 같은 객체의 x 필드에 참조하기 때문에 피보트1.x도 변경됩니다.
원래 객체와 독립적인 복사본을 만들기 위해, 이 경우 우리는 내장된 복사 (() 방법을 사용할 수 있습니다. 이 예제에서, 우리는 변수 pivot2를 pivot1 객체의 복사된 인스턴스를 참조하도록 선언합니다. 이제, pivot2.x를 변경하면 pivot1.x가 변경되지 않습니다. 왜냐하면 그것은 별도의 객체의 x 필드를 참조하기 때문입니다.
//@version=5
indicator("")
type pivotPoint
int x
float y
pivot1 = pivotPoint.new()
pivot1.x := 1000
pivot2 = pivotPoint.copy(pivot1)
pivot2.x := 2000
// Plots 1000 and 2000.
plot(pivot1.x)
plot(pivot2.x)
TradingView
깊이 복사
//@version=5
indicator("test deepCopy")
type orderInfo
float price
float amount
type labelInfo
orderInfo order
string labelMsg
labelInfo1 = labelInfo.new(orderInfo.new(100, 0.1), "test labelInfo1")
labelInfo2 = labelInfo.copy(labelInfo1)
labelInfo1.labelMsg := "labelInfo1->2" // Modify the base type field of labelInfo1 to see if it affects labelInfo2
labelInfo1.order.price := 999 // Modify the composite type field of labelInfo1 to see if it affects labelInfo2
runtime.log(labelInfo1)
runtime.log(labelInfo2)
runtime.error("stop")
테스트 결과는 labelInfo.copy ((labelInfo1) 가 실행될 때 심층 복사본이라는 것을 보여줍니다. 그리고 labelInfo1의 모든 필드를 수정하면 labelInfo2가 영향을 받지 않습니다.
파인 언어의 메소드는 내장형 또는 사용자 정의형의 특정 인스턴스와 연관된 특수 함수이다. 대부분의 측면에서, 그것들은 본질적으로 일반 함수와 동일하지만, 더 짧고 편리한 문법을 제공한다. 사용자는 파인 객체의 필드에 액세스하는 것과 마찬가지로 점 표기법을 사용하여 변수에 직접 메소드를 액세스할 수 있다. 파인에는 배열, 행렬, 지도, 선, 채울 선 등 모든 특수 타입에 대한 내장된 메소드가 포함되어 있다. 이 메소드는 사용자에게 이러한 유형의 특수 프로그램을 스크립트에서 호출하는 보다 간결한 방법을 제공한다.
내장된 방법
예를 들어, 이런 스크립트 코드:
//@version=5
indicator("Custom Sample BB", overlay = true)
float sourceInput = input.source(close, "Source")
int samplesInput = input.int(20, "Samples")
int n = input.int(10, "Bars")
float multiplier = input.float(2.0, "StdDev")
var array<float> sourceArray = array.new<float>(samplesInput)
var float sampleMean = na
var float sampleDev = na
// Identify if `n` bars have passed.
if bar_index % n == 0
// Update the queue.
array.push(sourceArray, sourceInput)
array.shift(sourceArray)
// Update the mean and standard deviaiton values.
sampleMean := array.avg(sourceArray)
sampleDev := array.stdev(sourceArray) * multiplier
// Calculate bands.
float highBand = sampleMean + sampleDev
float lowBand = sampleMean - sampleDev
plot(sampleMean, "Basis", color.orange)
plot(highBand, "Upper", color.lime)
plot(lowBand, "Lower", color.red)
다음과 같이 적을 수 있습니다.
//@version=5
indicator("Custom Sample BB", overlay = true)
float sourceInput = input.source(close, "Source")
int samplesInput = input.int(20, "Samples")
int n = input.int(10, "Bars")
float multiplier = input.float(2.0, "StdDev")
var array<float> sourceArray = array.new<float>(samplesInput)
var float sampleMean = na
var float sampleDev = na
// Identify if `n` bars have passed.
if bar_index % n == 0
// Update the queue.
sourceArray.push(sourceInput)
sourceArray.shift()
// Update the mean and standard deviaiton values.
sampleMean := sourceArray.avg()
sampleDev := sourceArray.stdev() * multiplier
// Calculate band values.
float highBand = sampleMean + sampleDev
float lowBand = sampleMean - sampleDev
plot(sampleMean, "Basis", color.orange)
plot(highBand, "Upper", color.lime)
plot(lowBand, "Lower", color.red)
PINE가 지원한 후Methods
, 코드array.avg(sourceArray)
방법의 형태로 쓸 수 있습니다.sourceArray.avg()
...
참고로 FMZ는array.avg
currently.
사용자 정의 메소드
파이인은 사용자가 임의의 내장형 또는 사용자 정의형의 객체와 작동하는 사용자 정의 메소드를 정의할 수 있게 해준다. 메소드를 정의하는 것은 기본적으로 함수를 정의하는 것과 같지만 두 가지 주요 차이점이 있다:
예를 들어, 다음 코드에서 볼링거 지표를 계산하는 코드는 사용자 정의 방법으로 포괄됩니다.
//@version=5
indicator("Custom Sample BB", overlay = true)
float sourceInput = input.source(close, "Source")
int samplesInput = input.int(20, "Samples")
int n = input.int(10, "Bars")
float multiplier = input.float(2.0, "StdDev")
var array<float> sourceArray = array.new<float>(samplesInput)
var float sampleMean = na
var float sampleDev = na
// Identify if `n` bars have passed.
if bar_index % n == 0
// Update the queue.
sourceArray.push(sourceInput)
sourceArray.shift()
// Update the mean and standard deviaiton values.
sampleMean := sourceArray.avg()
sampleDev := sourceArray.stdev() * multiplier
// Calculate band values.
float highBand = sampleMean + sampleDev
float lowBand = sampleMean - sampleDev
plot(sampleMean, "Basis", color.orange)
plot(highBand, "Upper", color.lime)
plot(lowBand, "Lower", color.red)
변경된 것:
//@version=5
indicator("Custom Sample BB", overlay = true)
float sourceInput = input.source(close, "Source")
int samplesInput = input.int(20, "Samples")
int n = input.int(10, "Bars")
float multiplier = input.float(2.0, "StdDev")
var array<float> sourceArray = array.new<float>(samplesInput)
method maintainQueue(array<float> srcArray, float value, bool takeSample = true) =>
if takeSample
srcArray.push(value)
srcArray.shift()
srcArray
method calcBB(array<float> srcArray, float mult, bool calculate = true) =>
var float mean = na
var float dev = na
if calculate
mean := srcArray.avg()
dev := srcArray.stdev() * mult
[mean, mean + dev, mean - dev]
bool newSample = bar_index % n == 0
[sampleMean, highBand, lowBand] = sourceArray.maintainQueue(sourceInput, newSample).calcBB(multiplier, newSample)
plot(sampleMean, "Basis", color.orange)
plot(highBand, "Upper", color.lime)
plot(lowBand, "Lower", color.red)
당신은 키워드 메소드: maintainQueue와 calcBB와 선언 사용자 정의 메소드의 매개 변수 목록의 첫 번째 매개 변수가 유형을 볼 수 있습니다array<float>
, 즉, 방법은 타입의 변수의 방법입니다array<float>
, 그래서 다음 코드가 볼링거 지표를 계산하기 위해 호출되는 것을 볼 수 있습니다.
[sampleMean, highBand, lowBand] = sourceArray.maintainQueue(sourceInput, newSample).calcBB(multiplier, newSample)
과부하 방법
사용자 정의 메소드는 기존의 내장 메소드와 사용자 정의 메소드를 동일한 식별자로 대체하고 과부하할 수 있습니다. 이 기능은 사용자가 동일한 메소드 이름 아래 다른 논증 서명과 관련된 여러 루틴을 정의할 수 있습니다. 간단한 예로, 변수의 유형을 식별하는 메소드를 정의하고 싶다고 가정합니다. 사용자 정의 메소드에 연관된 객체 유형을 명시적으로 지정해야하기 때문에 인식하고 싶은 각 유형에 대한 과부하를 정의해야합니다. 다음으로 우리는 변수
//@version=5
indicator("Type Inspection")
// @function Identifies an object's type.
// @param this Object to inspect.
// @returns (string) A string representation of the type.
method getType(int this) =>
na(this) ? "int(na)" : "int"
method getType(float this) =>
na(this) ? "float(na)" : "float"
method getType(bool this) =>
na(this) ? "bool(na)" : "bool"
method getType(color this) =>
na(this) ? "color(na)" : "color"
method getType(string this) =>
na(this) ? "string(na)" : "string"
a = 1 // a.getType(): float
b = 1.0 // b.getType(): float
c = true // c.getType(): bool
d = color.white // d.getType(): string(na)
e = "1" // e.getType(): string
runtime.log("a.getType():", a.getType())
runtime.log("b.getType():", b.getType())
runtime.log("c.getType():", c.getType())
runtime.log("d.getType():", d.getType())
runtime.log("e.getType():", e.getType())
runtime.error("stop")
각 변수의 기본 유형은 어떤 과부하가getType()
FMZ 플랫폼에서는 PINE 스크립트의 기본 구현이 자바스크립트이기 때문에 숫자 타입은 부동 소수점 데이터 (float) 로 판단됩니다.
함수를 호출할 때, 인수를 전달할 수 있습니다. 값을 부여하기 위해 인수의 이름을 할당할 수 있습니다. 해당 인수 위치에서 변수를 직접 전달할 수 있습니다. 혼합 사용도 지원됩니다. 예를 들어:
plot(close, title="test plot") // Pass the argument close directly; specify the argument title and assign the string "test plot"
논증 이름 할당을 지정 한 후, 더 이상 변수를 직접 논증으로 전달할 수 없으며, 그 다음의 논증들은 논증 이름 할당의 형태로 작성되어야 합니다.
// plot(close, title="test", color.red) // Although the third argument of plot is the color value, but this will report an error
plot(close, title="test", color=color.red) // Correct writing
plot(close, "test", color.red) // Correct writing
지난 기간을timeframe
몇 초로 나누는 것입니다.
timeframe.in_seconds(timeframe)
예제
// Get chart timeframe:
i_tf = input.timeframe("1D")
// Convert timeframe to the int value (number of seconds in 1 Day):
tf = timeframe.in_seconds(i_tf)
plot(tf)
반환1 바에 있는 초의 숫자의 int 표현timeframe
.
주장
timeframe
(단순 문자열) 시간 프레임. 선택적입니다. 기본은 시간 프레임. 기간입니다.언급의 경우timeframe
>=
또한 참조
input.timeframe
timeframe.period
평형 평균 int 표현값을 요청하기 위해 틱어 식별자를 생성합니다.
ticker.heikinashi(symbol)
예제
heikinashi_close = request.security(ticker.heikinashi(syminfo.tickerid), timeframe.period, close)
heikinashi_aapl_60_close = request.security(ticker.heikinashi(syminfo.tickerid), "60", close)
plot(heikinashi_close)
plot(heikinashi_aapl_60_close)
반환request.security 함수에 제공될 수 있는 주식 코드의 문자열 값
주장
symbol
(단순 문자열) 제품 코드 식별자또한 참조
syminfo.tickerid
syminfo.ticker
request.security
외부 데이터 요청
request.data(url, attribute)
예제
/*backtest
start: 2024-09-01 16:00:00
end: 2024-10-10 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
args: [["RunMode",1,358374],["ZPrecision",0,358374]]
*/
var chart_data = "https://www.datadata.com/api/v1/query/ebe46218-c5c6-4366-8c72-413694417976/data"
spotPrice = request.data(chart_data, "$.spot_close_price")
futuresPrice = request.data(chart_data, "$.future_close_price")
diff = futuresPrice - spotPrice
plot(diff, "perpetual-spot difference")
plot(futuresPrice, "futures prices", overlay=true)
plot(spotPrice, "spot prices", overlay=true)
if diff > 80 and strategy.position_size >= 0
runtime.log("diff > 80")
strategy.entry("Enter Short", strategy.short)
if diff < 60 and strategy.position_size <= 0
runtime.log("diff < 60")
strategy.entry("Enter Short", strategy.long)
반환 값속성 대조는 데이터 시리즈를 지정합니다.
주장
url
(단순 문자열) 요청된 데이터 소스 url 및 데이터 소스 응답의 데이터 형식은 요구 사항을 충족해야 합니다 (적어도 시간 및 데이터 속성을 포함):{"data": [], "schema": ["time", "data"]}
예를 들어 데이터 형식을 참조할 수 있습니다:
{
"data": [
[1720051200000, "{\"spot_close_price\" : 57050.01, \"future_close_price\" : 57045.9}"],
[1720137600000, "{\"spot_close_price\" : 56628.79, \"future_close_price\" : 56604.9}"],
// ...
],
"schema": ["time", "data"]
}
attribute
(단순 문자열) 는 속성 이름을 지정하고 필요한 데이터를 반환합니다. 예를 들어:"$.spot_close_price"
, 사용$.
전자로, 그리고 속성의 이름은 데이터 소스를 요청할 때 응답의 데이터의 데이터 필드의 속성과 일치합니다.
오류가 표시되면,request.data
백테스트에 설정된 시간 범위와 일치합니다. 백테스트 시간 시리즈에서 데이터가 검색 될 수 없다면 오류가 보고됩니다.
이 예제에서 데이터-데이터 데이터 질의 SQL 명령어는:
WITH latest_data AS (
SELECT
klines.spot_1d.Time AS time,
CONCAT('{\"spot_close_price\" : ', klines.spot_1d.Close, ', \"future_close_price\" : ', klines.future_1d.Close, '}') AS data
FROM
klines.spot_1d
JOIN
klines.future_1d
ON
klines.spot_1d.Time = klines.future_1d.Time
WHERE
klines.spot_1d.Symbol = 'btc_usdt'
AND
klines.future_1d.Symbol = 'btc_usdt.swap'
AND
klines.spot_1d.Exchange = 'Binance'
AND
klines.future_1d.Exchange = 'Binance'
ORDER BY
klines.spot_1d.Time DESC
LIMIT 100
)
SELECT * FROM latest_data
ORDER BY time ASC;
검색 및 데이터 링크를 만들 수 있습니다데이터 탐색FMZ 플랫폼의 페이지입니다.https://www.datadata.com/api/v1/query/ebe46218-c5c6-4366-8c72-413694417976/data
예제에서 사용된 것입니다.
다른 다양성/해결도를 요청하세요.
request.security(symbol, timeframe, expression, gaps, lookahead, ignore_invalid_symbol, currency)
예제
s = request.security(syminfo.tickerid, "D", close) // 1 Day
plot(s)
expr = ta.sma(close, 10)
s1 = request.security(syminfo.tickerid, "240", expr) // 240 Minutes
plot(s1)
// To avoid difference in calculation on history/realtime you can request not latest values and use merge strategy flags as follows:
s2 = request.security(syminfo.tickerid, "D", close[1], barmerge.gaps_off, barmerge.lookahead_on)
plot(s2)
f() => [open, high]
[o, h] = request.security(syminfo.tickerid, "D", f())
[l, c] = request.security(syminfo.tickerid, "D", [low, close])
plot((o + h + l + c) / 4)
반환요청된 시리즈
주장
symbol
(단순한 문자열) 상징.timeframe
(단순 문자열) 시간 기간. 빈 문자열은 차트의 현재 해상도로 해석됩니다.expression
(series int/float/bool/color) request.security 호출에서 표현식을 계산하고 반환할 수 있습니다. 그것은 일련에 캐스팅 될 수있는 요소를 포함하는 일련 또는 튜플이 될 수 있습니다.gaps
(barmerge_gaps) 요청된 데이터에 대한 통합 전략 ( 요청된 데이터는 자동으로 주요 시리즈 OHLC 데이터와 통합됩니다). 가능한 값: barmerge.gaps_on, barmerge.gaps_off. barmerge.gaps_on - 요청된 데이터는 가능한 격차 (na 값) 로 통합됩니다. barmerge.gaps_off - 요청된 데이터는 빈틈없이 연속적으로 통합되며, 모든 격차는 이전 가장 가까운 기존 값으로 채워집니다. 기본 값은 barmerge.gaps_off입니다.lookahead
(barmerge_lookahead) 요청된 데이터 위치의 병합 전략. 가능한 값: barmerge.lookahead_on, barmerge.lookahead_off. 기본 값은 barmerge.lookahead_off입니다. 버전 3부터 시작하여. 동작이 실시간에서 동일하며 역사에서만 다르다는 점에 유의하십시오.ignore_invalid_symbol
(const bool) 선택적 인 논증. 지정된 기호가 발견되지 않으면 함수의 동작을 결정합니다: 거짓이라면 스크립트가 중지되어 실행 시간 오류를 반환합니다. 사실이라면 함수가 na를 반환하고 실행을 계속합니다. 기본 값은 거짓입니다.currency
(단순 문자열) 기호의 통화 관련 값 (예: OHLC) 이 변환될 수 있는 통화.expression
변환된 값에 기초하여 계산됩니다. 사용 된 변환율은 전날의 FX_IDC 쌍언급이 함수를 사용하는 파인스크립트 코드는 역사와 실시간 데이터에 대해 다르게 계산할 수 있습니다.
요청된 기호에 대한 추가 인수를 지정하고 싶다면, 예를 들어 세션 또는 조정 유형,ticker.new() 함수
이 함수에서
해상도 논리의 허용 값은: 1S, 5S, 15S, 30S - 초 간격 (차트 해상도는 요구된 해상도보다 작거나 같아야 합니다) 1에서 1440까지 분 1D에서 365D까지 1W에서 52W까지 몇 주 동안 1M에서 12M까지 몇 달 동안
또한 참조
syminfo.ticker
syminfo.tickerid
timeframe.period
ta.correlation
barmerge.lookahead_off
barmerge.lookahead_on
true 를 반환합니다.source
문자열은str
하위 문자열, 그렇지 않으면 거짓입니다.
str.contains(source, str)
예제
// If the current chart is a continuous futures chart, e.g "BTC1!", then the function will return true, false otherwise.
var isFutures = str.contains(syminfo.tickerid, "!")
plot(isFutures ? 1 : 0)
반환만약str
발견되었습니다.source
문자열, 그렇지 않으면 거짓.
주장
source
소스 문자열str
검색해야 할 하위 문자열.또한 참조
str.pos
str.match
true 를 반환합니다.source
하위 문자열로 끝나는 줄str
그렇지 않으면 거짓입니다.
str.endswith(source, str)
반환만약source
하위 문자열로 끝나는 줄str
그렇지 않으면 거짓입니다.
주장
source
소스 문자열str
검색해야 할 하위 문자열.또한 참조
str.startswith
true 를 반환합니다.source
하위 문자열로 시작됩니다str
그렇지 않으면 거짓입니다.
str.startswith(source, str)
반환만약source
하위 문자열로 시작됩니다str
그렇지 않으면 거짓입니다.
주장
source
소스 문자열str
검색해야 할 하위 문자열.또한 참조
str.endswith
새로운 문자열을 반환합니다.source
하위 문자열은 지표에서 지정된 문자열로 시작합니다.begin_pos
그리고 source
string.
str.substring(source, begin_pos)
str.substring(source, begin_pos, end_pos)
예제
sym= "EXCHANGE_NAME:SYMBOL_NAME"
pos = str.pos(sym, ":") // Get position of ":" character
tkr= str.substring(sym, pos+1) // "SYMBOL_NAME"
if barstate.islastconfirmedhistory
runtime.log(tkr)
반환소스 문자열에서 추출된 하위 문자열입니다.
주장
source
(시리즈 문자열) 소스 문자열에서 하위 문자열을 추출합니다.begin_pos
(series int) 추출된 하위 문자열의 시작 위치. 그것은 포괄적입니다 ( 추출된 하위 문자열에는 그 위치에 있는 문자가 포함됩니다).end_pos
(series int) 종료 위치. 그것은 배타적입니다 (수출된 문자열은 그 위치source
string.언급문자열 인덱싱은 0에서 시작됩니다.begin_pos
이 값은end_pos
, 함수는 빈 문자열을 반환합니다.
또한 참조
str.contains
str.pos
str.match
str.tonumber(string)
반환유효한 숫자를 포함하면 문자열의 부동 버전, 그렇지 않으면.
주장
string
(시리즈 문자열) int 또는 float의 문자열 표현포맷 문자열과 value(s) 을 포맷된 문자열로 변환한다. 포맷 문자열에는 문자 텍스트와 포맷될 각 값에 대한 커리 브래시 {}로 한 개의 포지셔널 포지셔널 포지셔널 포지셔널 포지셔널 포지셔널 포지셔널 포지셔널 포지셔널 포지셔널 포지셔널 포지셔널 포지셔널 포지셔널 포지셔널 포지셔널 포지셔널 포지셔널 포지셔널 포지셔널 포지셔널 포지셔널 포지셔널 포지셔널 포지셔널 포지셔널 포지셔널 포지셔널 포지셔널 포지셔널 포지셔널 포지셔널 포지셔널 포지셔널 포지셔널 포지셔널 포지셔널 포지셔널 포지셔널 포지셔널 포지셔널 포지셔널 포지셔널 포지셔널 포지셔널 포지셔널 포지셔널 포지셔널 포지셔널 포지셔널 포지셔널 포지셔널 포지셔
str.format(formatString, arg0, arg1, ...)
예제
// The format specifier inside the curly braces accepts certain modifiers:
// - Specify the number of decimals to display:
s1 = str.format("{0,number,#.#}", 1.34) // returns: 1.3
runtime.log(s1)
// - Round a float value to an integer:
s2 = str.format("{0,number,integer}", 1.34) // returns: 1
runtime.log(s2)
// - Display a number in currency:
s3 = str.format("{0,number,currency}", 1.34) // returns: $1.34
runtime.log(s3)
// - Display a number as a percentage:
s4 = str.format("{0,number,percent}", 0.5) // returns: 50%
runtime.log(s4)
// EXAMPLES WITH SEVERAL ARGUMENTS
// returns: Number 1 is not equal to 4
s5 = str.format("Number {0} is not {1} to {2}", 1, "equal", 4)
runtime.log(s5)
// returns: 1.34 != 1.3
s6 = str.format("{0} != {0, number, #.#}", 1.34)
runtime.log(s6)
// returns: 1 is equal to 1, but 2 is equal to 2
s7 = str.format("{0, number, integer} is equal to 1, but {1, number, integer} is equal to 2", 1.34, 1.52)
runtime.log(s7)
// returns: The cash turnover amounted to $1,340,000.00
s8 = str.format("The cash turnover amounted to {0, number, currency}", 1340000)
runtime.log(s8)
// returns: Expected return is 10% - 20%
s9 = str.format("Expected return is {0, number, percent} - {1, number, percent}", 0.1, 0.2)
runtime.log(s9)
반환포맷된 문자열.
주장
formatString
(시리즈 문자열) 형식 문자열arg0, arg1, ...
(열 int/float/bool/string/na/int[]/float[]/bool[]/string[]) 형식화 값언급표기되지 않은 패턴 내의 모든 곱슬 모양의 브레이크는 균형을 잡아야합니다. 예를 들어,
그 문자열에 있는 문자열의 수에 해당하는 정수를 반환합니다.
str.length(string)
반환소스 문자열의 문자 숫자
주장
string
소스 문자열모든 글자가 소문자로 변환된 새로운 문자열을 반환합니다.
str.lower(source)
반환모든 글자가 소문자로 변환된 새로운 문자열
주장
source
(시리즈 문자열) 문자열을 변환합니다.또한 참조
str.upper
모든 글자가 대문자로 변환된 새로운 문자열을 반환합니다.
str.upper(source)
반환모든 글자가 대문자로 변환된 새로운 문자열
주장
source
(시리즈 문자열) 문자열을 변환합니다.또한 참조
str.lower
새로운 하위 문자열을 반환합니다source
문자열이 a와 일치하는 경우regex
정규 표현식,
str.match(source, regex)
예제
s = input.string("It's time to sell some EXCHANGE_NAME:SYMBOL_NAME!")
// finding first substring that matches regular expression "[\w]+:[\w]+"
var string tickerid = str.match(s, "[\\w]+:[\\w]+")
if barstate.islastconfirmedhistory
runtime.log(tickerid) // "EXCHANGE_NAME:SYMBOL_NAME"
반환새로운 하위 문자열source
문자열이 a와 일치하는 경우regex
정규 표현식,
주장
source
소스 문자열regex
(시리즈 문자열) 이 문자열이 일치해야 하는 정규 표현식언급함수는 정규 표현식의 첫 번째 발생을 반환합니다.source
끈.
역삼각형 regex
문자열은 추가적인 역슬래쉬로 탈출해야 합니다. 예를 들어,
또한 참조
str.contains
str.substring
첫 번째 발생의 위치를 반환str
줄에source
string,
str.pos(source, str)
반환의 위치str
줄에source
string.
주장
source
소스 문자열str
검색해야 할 하위 문자열.언급문자열 인덱싱은 0에서 시작합니다.
또한 참조
str.contains
str.match
str.substring
N + 1th 발생과 함께 새로운 문자열을 반환target
문자열과 이전 발생target
문자열을replacement
문자열, 여기서 N는occurrence
. N는 소스 문자열에 교체되는 대상 문자열의 일치 인덱스입니다.
str.replace(source, target, replacement, occurrence)
예제
var source = "EXCHANGE1:SYMBOL1 / EXCHANGE1:SYMBOL2"
// Replace first occurrence of "EXCHANGE1" with "EXCHANGE2" replacement string
var newSource = str.replace(source, "EXCHANGE1", "EXCHANGE2", 0)
if barstate.islastconfirmedhistory
// Display "EXCHANGE1:SYMBOL1 / EXCHANGE1:SYMBOL2"
runtime.log(newSource)
반환가공된 끈.
주장
source
소스 문자열target
(시리즈 문자열) 문자열을 교체합니다.replacement
(시리즈 문자열) 대상 문자열 대신 삽입되는 문자열.occurrence
(series int) 소스 문자열에서 교체되는 대상 문자열의 발생의 일치 지수는 첫 번째 일치에 대해 0에서 시작됩니다. 선택적입니다. 기본 값은 0입니다.또한 참조
str.replace_all
str.match
소스 문자열의 목표 문자열의 모든 출현을 대체 문자열로 대체합니다.
str.replace_all(source, target, replacement)
반환가공된 끈.
주장
source
소스 문자열target
(시리즈 문자열) 문자열을 교체합니다.replacement
(시리즈 문자열) 대상 문자열의 각 발생에 대해 대체해야 하는 문자열.문자열을 하위 문자열의 배열로 나누고 배열 ID를 반환합니다.
str.split(string, separator)
반환문자열의 ID.
주장
string
소스 문자열separator
(시리즈 문자열) 각 하위 문자열을 분리하는 문자열str.tostring(value)
str.tostring(value, format)
str.tostring(value[])
str.tostring(value[], format)
반환문자열 표현value
논쟁.
만약value
문자는 문자열이고, 그대로 반환됩니다.
그 때value
is na, 함수는 문자열
주장
value
(series int/float/bool/string/int[]/float[]/bool[]/string[]) 값 또는 배열 ID는 요소가 문자열로 변환됩니다.format
(시리즈 문자열) 형식 문자열. 이러한 형식을 허용 합니다.* 상수: format.mintick, format.percent, format.volume. 선택 사항. 기본 값은 언급플로트 값의 포맷은 필요한 경우 그 값을 둥글게 합니다. 예를 들어 str.tostring ((3.99,
함수 색은 주어진 색에 지정된 투명성을 적용합니다.
color.new(color, transp)
예제
plot(close, color=color.new(color.red, 50))
반환특정 투명성 색상
주장
color
(시리즈 색상)transp
(series int/float) 가능한 값은 0 (투명하지 않음) 에서 100 (보이지 않음) 까지 있습니다.언급변수가 아닌 변수를 사용하는 경우 (예:
RGB 색상 모델을 사용하여 투명성을 가진 새로운 색상을 만듭니다.
color.rgb(red, green, blue, transp)
예제
plot(close, color=color.rgb(255, 0, 0, 50))
반환특정 투명성 색상
주장
red
(시리즈 int/float) 빨간색 구성 요소. 가능한 값은 0에서 255입니다.green
(시리즈 int/float) 녹색 색상 구성 요소. 가능한 값은 0에서 255입니다.blue
(시리즈 int/float) 파란색 색상 구성 요소. 가능한 값은 0에서 255입니다.transp
(시리즈 int/float) 선택. 색상 투명성. 가능한 값은 0 (무투화) 에서 100 (보이지 않는) 이다. 기본 값은 0.언급변수가 아닌 변수를 사용하는 경우 (예:
변수 정보를 콘솔에 인쇄해
FMZ PINE 언어 특수한 기능runtime.debug(value)
, 단지 논쟁과 함께.
로그에서 출력 컨텐츠
FMZ PINE 언어 특수한 기능runtime.log(1, 2, 3, close, high, ...)
, 당신은 여러 주장을 통과 할 수 있습니다.
호출할 때, 실행 시간 오류를 발생message
argument.
runtime.error(message)
주장메시지 (시리즈 문자열) 오류 메시지.
스크립트 설정의 입력 탭에 입력 기능을 추가하여 스크립트 사용자에게 구성 옵션을 제공할 수 있습니다. 이 함수는 자동으로 defval에 사용되는 논증의 유형을 감지하고 해당 입력 위젯을 사용합니다.
input(defval, title, tooltip, inline, group)
input(defval, title, inline, group, tooltip)
예제
i_switch = input(true, "On/Off") // Set true, the default is checked.
plot(i_switch ? open : na)
i_len = input(7, "Length")
i_src = input(close, "Source") // Drop-down box, select close by default.
plot(ta.sma(i_src, i_len))
i_col = input(color.red, "Plot Color")
plot(close, color=i_col)
i_text = input("Hello!", "Message")
runtime.log(i_text)
반환입력 변수의 값
주장
defval
(const int/float/bool/string/color or source-type built-in) 스크립트close
, hlc3
, 등등title
(conststring) 입력의 제목. 지정되지 않은 경우 변수 이름은 입력의 제목으로 사용됩니다. 제목이 지정되어 있지만 비어있는 경우 이름은 빈 문자열입니다.tooltip
(const string) 도구 팁 아이콘을 누르면 사용자에게 표시되는 문자열.inline
(conststring) 같은 문장을 사용하는 모든 입력 호출을 한 줄에 결합합니다. 문자로 사용되는 문자열은 표시되지 않습니다. 동일한 줄에 속하는 입력값을 식별하는 데만 사용됩니다.group
(const string) 같은 그룹 논증 문자열을 사용하여 모든 입력 위에 헤더를 만듭니다. 문자열은 헤더의 텍스트로도 사용됩니다.언급입력 함수의 결과는 항상 변수에 할당되어야 합니다. 위의 예제를 참조하십시오.
또한 참조
input.bool
input.color
input.int
input.float
input.string
input.timeframe
input.source
스크립트 설정의 입력 탭에 입력 기능을 추가하여 스크립트 사용자에게 구성 옵션을 제공할 수 있습니다. 이 기능은 사용자가 계산을 위한 소스를 선택할 수 있는 드롭다운 기능을 추가합니다. 예를 들어 close, hl2 등이 있습니다. 스크립트에는 하나의 input.source() 호출만 포함되는 경우, 사용자가 다른 지표의 출력을 소스로 선택할 수 있습니다.
input.source(defval, title, tooltip, inline, group)
예제
i_src = input.source(close, "Source")
plot(i_src)
반환입력 변수의 값
주장
defval
(series int/float) 스크립트 title
(conststring) 입력의 제목. 지정되지 않은 경우 변수 이름은 입력의 제목으로 사용됩니다. 제목이 지정되어 있지만 비어있는 경우 이름은 빈 문자열입니다.tooltip
(const string) 도구 팁 아이콘을 누르면 사용자에게 표시되는 문자열.inline
(conststring) 같은 문장을 사용하는 모든 입력 호출을 한 줄에 결합합니다. 문자로 사용되는 문자열은 표시되지 않습니다. 동일한 줄에 속하는 입력값을 식별하는 데만 사용됩니다.group
(const string) 같은 그룹 논증 문자열을 사용하여 모든 입력 위에 헤더를 만듭니다. 문자열은 헤더의 텍스트로도 사용됩니다.언급input.source 함수의 결과는 항상 변수에 할당되어야 합니다. 위의 예제를 참조하십시오.
또한 참조
input.bool
input.int
input.float
input.string
input.timeframe
input.color
input
스크립트 설정의 입력 탭에 입력값을 추가하여 스크립트 사용자에게 구성 옵션을 제공할 수 있습니다. 이 함수는 스크립트 입력값에 문자열 입력값을 추가합니다.
input.string(defval, title, options, tooltip, inline, group, confirm)
예제
i_text = input.string("Hello!", "Message")
runtime.log(i_text)
반환입력 변수의 값
주장
defval
(const string) 사용자가 변경할 수 있는 스크립트options
그 중 하나여야 합니다.title
(conststring) 입력의 제목. 지정되지 않은 경우 변수 이름은 입력의 제목으로 사용됩니다. 제목이 지정되어 있지만 비어있는 경우 이름은 빈 문자열입니다.options
(상수 목록: [<형>...]) 선택할 수 있는 옵션 목록tooltip
(const string) 도구 팁 아이콘을 누르면 사용자에게 표시되는 문자열.inline
(conststring) 같은 문장을 사용하는 모든 입력 호출을 한 줄에 결합합니다. 문자로 사용되는 문자열은 표시되지 않습니다. 동일한 줄에 속하는 입력값을 식별하는 데만 사용됩니다.group
(const string) 같은 그룹 논증 문자열을 사용하여 모든 입력 위에 헤더를 만듭니다. 문자열은 헤더의 텍스트로도 사용됩니다.confirm
(const bool) true라면, 표시가 차트에 추가되기 전에 입력값을 확인하도록 요청됩니다. 기본 값은 false입니다.언급input.string 함수의 결과는 항상 변수에 할당되어야 합니다. 위의 예제를 참조하세요.
또한 참조
input.bool
input.int
input.float
input.timeframe
input.source
input.color
input
스크립트 설정의 입력 탭에 입력 기능을 추가하여 스크립트 사용자에게 구성 옵션을 제공할 수 있습니다. 이 기능은 스크립트 입력에 체크마크를 추가합니다.
input.bool(defval, title, tooltip, inline, group, confirm)
예제
i_switch = input.bool(true, "On/Off")
plot(i_switch ? open : na)
반환입력 변수의 값
주장
defval
(const bool) 스크립트title
(conststring) 입력의 제목. 지정되지 않은 경우 변수 이름은 입력의 제목으로 사용됩니다. 제목이 지정되어 있지만 비어있는 경우 이름은 빈 문자열입니다.tooltip
(const string) 도구 팁 아이콘을 누르면 사용자에게 표시되는 문자열.inline
(conststring) 같은 문장을 사용하는 모든 입력 호출을 한 줄에 결합합니다. 문자로 사용되는 문자열은 표시되지 않습니다. 동일한 줄에 속하는 입력값을 식별하는 데만 사용됩니다.group
(const string) 같은 그룹 논증 문자열을 사용하여 모든 입력 위에 헤더를 만듭니다. 문자열은 헤더의 텍스트로도 사용됩니다.confirm
(const bool) true라면, 표시가 차트에 추가되기 전에 입력값을 확인하도록 요청됩니다. 기본 값은 false입니다.언급input.bool 함수의 결과는 항상 변수에 할당되어야 합니다. 위의 예를 참조하십시오.
또한 참조
input.int
input.float
input.string
input.timeframe
input.source
input.color
input
스크립트 설정의 입력 탭에 입력값을 추가하여 스크립트 사용자에게 구성 옵션을 제공할 수 있습니다. 이 함수는 스크립트 입력값에 정수 입력값을 추가합니다.
input.int(defval, title, minval, maxval, step, tooltip, inline, group, confirm)
input.int(defval, title, options, tooltip, inline, group, confirm)
예제
i_len1 = input.int(10, "Length 1", minval=5, maxval=21, step=1)
plot(ta.sma(close, i_len1))
i_len2 = input.int(10, "Length 2", options=[5, 10, 21])
plot(ta.sma(close, i_len2))
반환입력 변수의 값
주장
defval
(const int) 스크립트options
그 중 하나여야 합니다.title
(conststring) 입력의 제목. 지정되지 않은 경우 변수 이름은 입력의 제목으로 사용됩니다. 제목이 지정되어 있지만 비어있는 경우 이름은 빈 문자열입니다.minval
(const int) 입력 변수의 최소 가능한 값. 선택적입니다.maxval
(const int) 입력 변수의 최대 가능한 값. 선택적입니다.step
(const int) 입력값을 증가 / 감소시키는 데 사용되는 단계 값. 선택적입니다. 기본값은 1.options
(const int 값의 튜플: [val1, val2,...]) 우수점으로 분리되어 사각형 괄호에 포함 된 드롭다운 메뉴에서 선택할 수있는 옵션 목록: [val1, val2,...]. 이 인수를 사용하면minval
, maxval
그리고step
논증들은 사용할 수 없습니다.tooltip
(const string) 도구 팁 아이콘을 누르면 사용자에게 표시되는 문자열.inline
(conststring) 같은 문장을 사용하는 모든 입력 호출을 한 줄에 결합합니다. 문자로 사용되는 문자열은 표시되지 않습니다. 동일한 줄에 속하는 입력값을 식별하는 데만 사용됩니다.group
(const string) 같은 그룹 논증 문자열을 사용하여 모든 입력 위에 헤더를 만듭니다. 문자열은 헤더의 텍스트로도 사용됩니다.confirm
(const bool) true라면, 표시가 차트에 추가되기 전에 입력값을 확인하도록 요청됩니다. 기본 값은 false입니다.언급결과input.int함수는 항상 변수에 할당되어야 합니다. 위의 예를 참조하십시오.
또한 참조
input.bool
input.float
input.string
input.timeframe
input.source
input.color
input
스크립트 설정의 입력 탭에 입력값을 추가하여 스크립트 사용자에게 구성 옵션을 제공할 수 있습니다. 이 함수는 스크립트 입력값에 플로트 입력값을 추가합니다.
input.float(defval, title, minval, maxval, step, tooltip, inline, group, confirm)
input.float(defval, title, options, tooltip, inline, group, confirm)
예제
i_angle1 = input.float(0.5, "Sin Angle", minval=-3.14, maxval=3.14, step=0.02)
plot(math.sin(i_angle1) > 0 ? close : open, "sin", color=color.green)
i_angle2 = input.float(0, "Cos Angle", options=[-3.14, -1.57, 0, 1.57, 3.14])
plot(math.cos(i_angle2) > 0 ? close : open, "cos", color=color.red)
반환입력 변수의 값
주장
defval
(const int/float) 스크립트options
그 중 하나여야 합니다.title
(conststring) 입력의 제목. 지정되지 않은 경우 변수 이름은 입력의 제목으로 사용됩니다. 제목이 지정되어 있지만 비어있는 경우 이름은 빈 문자열입니다.minval
(const int/float) 입력 변수의 최소 가능한 값. 선택적입니다.maxval
(const int/float) 입력 변수의 최대 가능한 값. 선택적입니다.step
(const int/float) 입력값을 증가/감축하는 데 사용되는 단계 값. 선택적입니다. 기본값은 1입니다.options
(const int/float 값의 튜플: [val1, val2,...]) 우수점으로 분리된 드롭다운 메뉴에서 선택할 수 있는 옵션 목록, 사각형 괄호에 포함: [val1, val2,...]. 이 인수를 사용할 때,minval
, maxval
그리고step
논증들은 사용할 수 없습니다.tooltip
(const string) 도구 팁 아이콘을 누르면 사용자에게 표시되는 문자열.inline
(conststring) 같은 문장을 사용하는 모든 입력 호출을 한 줄에 결합합니다. 문자로 사용되는 문자열은 표시되지 않습니다. 동일한 줄에 속하는 입력값을 식별하는 데만 사용됩니다.group
(const string) 같은 그룹 논증 문자열을 사용하여 모든 입력 위에 헤더를 만듭니다. 문자열은 헤더의 텍스트로도 사용됩니다.confirm
(const bool) true라면, 표시가 차트에 추가되기 전에 입력값을 확인하도록 요청됩니다. 기본 값은 false입니다.언급input.float 함수의 결과는 항상 변수에 할당되어야 합니다. 위의 예를 참조하십시오.
또한 참조
input.bool
input.int
input.string
input.timeframe
input.source
input.color
input
스크립트 설정의 입력 탭에 입력 기능을 추가하여 스크립트 사용자에게 구성 옵션을 제공할 수 있습니다. 이 기능은 사용자가 색상 패러다임 또는 헥스 값에서 색상 및 투명성을 선택할 수 있도록 색상 선택기를 추가합니다.
input.color(defval, title, tooltip, inline, group, confirm)
예제
i_col = input.color(color.red, "Plot Color")
plot(close, color=i_col)
반환입력 변수의 값
주장
defval
(const color) 스크립트title
(conststring) 입력의 제목. 지정되지 않은 경우 변수 이름은 입력의 제목으로 사용됩니다. 제목이 지정되어 있지만 비어있는 경우 이름은 빈 문자열입니다.tooltip
(const string) 도구 팁 아이콘을 누르면 사용자에게 표시되는 문자열.inline
(conststring) 같은 문장을 사용하는 모든 입력 호출을 한 줄에 결합합니다. 문자로 사용되는 문자열은 표시되지 않습니다. 동일한 줄에 속하는 입력값을 식별하는 데만 사용됩니다.group
(const string) 같은 그룹 논증 문자열을 사용하여 모든 입력 위에 헤더를 만듭니다. 문자열은 헤더의 텍스트로도 사용됩니다.confirm
(const bool) true라면, 표시가 차트에 추가되기 전에 입력값을 확인하도록 요청됩니다. 기본 값은 false입니다.언급input.color 함수의 결과는 항상 변수에 할당되어야 합니다. 위의 예제를 참조하십시오.
또한 참조
input.bool
input.int
input.float
input.string
input.timeframe
input.source
input
스크립트 confirm = true
차트를 클릭하여 가격을 선택하는 인터랙티브 입력 모드를 활성화합니다.
input.price(defval, title, tooltip, inline, group, confirm)
예제
price1 = input.price(title="Date", defval=42)
plot(price1)
price2 = input.price(54, title="Date")
plot(price2)
반환입력 변수의 값
주장
defval
(const int/float) 스크립트 title
(conststring) 입력의 제목. 지정되지 않은 경우 변수 이름은 입력의 제목으로 사용됩니다. 제목이 지정되어 있지만 비어있는 경우 이름은 빈 문자열입니다.tooltip
(const string) 도구 팁 아이콘을 누르면 사용자에게 표시되는 문자열.inline
(conststring) 같은 문장을 사용하는 모든 입력 호출을 한 줄에 결합합니다. 문자로 사용되는 문자열은 표시되지 않습니다. 동일한 줄에 속하는 입력값을 식별하는 데만 사용됩니다.group
(const string) 같은 그룹 논증 문자열을 사용하여 모든 입력 위에 헤더를 만듭니다. 문자열은 헤더의 텍스트로도 사용됩니다.confirm
(const bool) true 경우, 인터랙티브 입력 모드가 활성화되고 지표가 차트에 추가될 때 차트를 클릭하거나 지표를 선택하고 그 후에 선택지를 이동함으로써 선택이 이루어집니다. 선택 사항입니다. 기본값은 false입니다.언급인터랙티브 모드를 사용할 때, 시간 입력과 가격 입력이 결합될 수 있습니다.inline
argument.
또한 참조
input.bool
input.int
input.float
input.string
input.resolution
input.source
input.color
input
스크립트 설정의 입력 탭에 입력 기능을 추가하여 스크립트 사용자에게 구성 옵션을 제공할 수 있습니다. 이 기능은 사용자가 타임프레임 선택기를 통해 특정 타임프레임을 선택하여 문자열로 반환할 수 있는 드롭다운을 추가합니다. 선택기는 사용자가 차트
input.timeframe(defval, title, options, tooltip, inline, group, confirm)
예제
i_res = input.timeframe('D', "Resolution", options=['D', 'W', 'M'])
s = request.security("syminfo.tickerid", i_res, close)
plot(s)
반환입력 변수의 값
주장
defval
(const string) 사용자가 변경할 수 있는 스크립트options
그 중 하나여야 합니다.title
(conststring) 입력의 제목. 지정되지 않은 경우 변수 이름은 입력의 제목으로 사용됩니다. 제목이 지정되어 있지만 비어있는 경우 이름은 빈 문자열입니다.options
(투프구걸자왜 전략 광장 복제 피인 전략이 현실화되지 않는지
발명가들의 수량화 - 작은 꿈자, 우리는 그것을 확인합니다.
구걸자
발명가들의 수량화 - 작은 꿈안녕하세요, 구체적으로 어떤 전략이 있을까요?