`
इसका मतलब है कि यह एक समान रूप से लिखा जा सकता हैः
//@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
इस तरह के आह्वान।
उपयोगकर्ता परिभाषित विधि
पीन उपयोगकर्ता को किसी भी अंतर्निहित या उपयोगकर्ता-परिभाषित प्रकार के ऑब्जेक्ट के साथ उपयोग करने के लिए एक कस्टम विधि को परिभाषित करने की अनुमति देता है। परिभाषा विधि अनिवार्य रूप से परिभाषा फ़ंक्शन के समान है, लेकिन दो महत्वपूर्ण अंतरों के साथः
उदाहरण के लिए, निम्न कोड में, ब्रिन सूचकांक की गणना करने के लिए कोड को उपयोगकर्ता-अनुकूलित तरीके के रूप में कैप्चर करेंः
//@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)
विधि पुनः लोड
उपयोगकर्ता-परिभाषित विधियों को मौजूदा अंतर्निहित विधियों और उपयोगकर्ता-परिभाषित विधियों के साथ ओवरले और ओवरलोड किया जा सकता है जिनके पास एक ही पहचानकर्ता है। यह सुविधा उपयोगकर्ताओं को एक ही विधि नाम के तहत परिभाषित करने की अनुमति देती है जो विभिन्न पैरामीटर हस्ताक्षरों के साथ जुड़े हुए हैं। एक सरल उदाहरण के रूप में, मान लें कि हम एक विधि को परिभाषित करना चाहते हैं जो कि चर के प्रकारों को पहचानता है। चूंकि हमें उपयोगकर्ता-परिभाषित विधियों से जुड़े ऑब्जेक्ट प्रकारों को स्पष्ट रूप से निर्दिष्ट करना होगा, इसलिए हमें प्रत्येक प्रकार के लिए ओवरले को परिभाषित करने की आवश्यकता है जिसे हम पहचानना चाहते हैं। नीचे, हमने एक GetType () विधि को परिभाषित किया है जो चर प्रकार के स्ट्रिंग प्रतिनिधित्व के रूप में लौटाता है और इसमें पांच बुनियादी प्रकार के ओवरलोड हैंः
//@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()
किस प्रकार का भारन होगा? एफएमजेड प्लेटफॉर्म पर, संख्यात्मक प्रकार को फ्लोट डेटा के रूप में माना जाता है क्योंकि पिन स्क्रिप्ट को जावास्क्रिप्ट भाषा के रूप में लागू किया गया है।
फ़ंक्शन को कॉल करते समय पैरामीटर पास किया जाता है, आप पैरामीटर नाम को निर्दिष्ट कर सकते हैं, आप संबंधित पैरामीटर स्थान पर चर को सीधे पास कर सकते हैं, और मिश्रित उपयोग को भी समर्थन कर सकते हैं। उदाहरण के लिएः
plot(close, title="test plot") // 直接传参数 close ;指定参数 title ,赋值字符串"test plot"
निर्दिष्ट पैरामीटर के नाम के बाद, चर को पैरामीटर के रूप में सीधे स्थानांतरित नहीं किया जा सकता है, और इसके बाद के पैरामीटर को पैरामीटर के नाम के रूप में लिखा जाना चाहिए।
// plot(close, title="test", color.red) // 虽然plot第三个参数是颜色值,但是这样写就会报错
plot(close, title="test", color=color.red) // 正确写法
plot(close, "test", color.red) // 正确写法
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)
मान लौटाएँ
timeframe
की एक K पंक्ति में सेकंड की संख्या int के रूप में दर्शाता है
पैरामीटर
timeframe
(simple string) समय फ़्रेम. वैकल्पिक. डिफ़ॉल्ट समय फ़्रेम. अवधि है.टिप्पणी
के लिएtimeframe
>= ‘1M’ फ़ंक्शन एक महीने में 30.4167 (365⁄12) दिनों के आधार पर सेकंड की गणना करता है।
और देखें
input.timeframe
timeframe.period
एक कोड आइडेंटिफायर बनाने के लिए अनुरोध समतल औसत K लाइन मान
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
(simple string) वस्तु कोड पहचानकर्ता。और देखें
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, "永续-现货差价")
plot(futuresPrice, "期货价格", overlay=true)
plot(spotPrice, "现货价格", 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)
मान लौटाएँ
पैरामीटरattribute
निर्दिष्ट डेटा श्रृंखला
पैरामीटर
url
(simple string) अनुरोध डेटा स्रोत यूआरएल, डेटा स्रोत प्रतिक्रिया डेटा प्रारूप आवश्यकताओं को पूरा करने की आवश्यकता है (कम से कम समय, डेटा विशेषता शामिल है):{"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
(simple string) विशेषता नाम निर्दिष्ट करता है और वांछित डेटा लौटाता है. उदाहरण के लिएः"$.spot_close_price"
,उपयोग$.
एक पूर्ववर्ती के रूप में, एक विशेषता का नाम डेटा फ़ील्ड में एक विशेषता के साथ मेल खाता है जब अनुरोध डेटा स्रोत के लिए उत्तर दिया जाता हैयदि संकेत गलत है, तो जांच की आवश्यकता हैrequest.data
क्या अनुरोध की समय सीमा के साथ मेल खाता है और समय सीमा की स्थापना की है, यह पता लगाने के लिए समय सीमा पर डेटा नहीं मिल रहा है।
इस उदाहरण में data-data डेटा क्वेरी एसक्यूएल स्टेटमेंट:
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
(simple string) वस्तु कोड timeframe
(simple string) समय अवधि △ रिक्त स्ट्रिंग को ग्राफ के वर्तमान समय अवधि के रूप में व्याख्या की जाएगी △expression
(series int/float/bool/color) एक अभिव्यक्ति की गणना और वापसी request.security कॉल से की जा सकती है। यह एक श्रृंखला या तत्वों का एक सेट हो सकता है जिसे श्रृंखला में परिवर्तित किया जा सकता है।gaps
(barmerge_gaps) अनुरोध किए गए डेटा को एक साथ जोड़ने के लिए एक रणनीति दी गई है। यह डेटा को मुख्य ओएचएलसी डेटा श्रृंखला के साथ स्वचालित रूप से एक साथ जोड़ने की आवश्यकता है। संभावित मानः barmerge.gaps_on, barmerge.gaps_off। barmerge.gaps_on - अनुरोध किए गए डेटा को संभावित अंतराल के साथ मिलाएं।lookahead
(barmerge_lookahead) अनुरोधित डेटा विलय रणनीति। संभावित मानः barmerge.lookahead_on, barmerge.lookahead_off। संस्करण 3 के बाद से, डिफ़ॉल्ट मान barmerge.lookahead_off है। कृपया ध्यान दें कि व्यवहार वास्तविक समय के समान है, केवल इतिहास में भिन्न है।ignore_invalid_symbol
(const bool) एक वैकल्पिक पैरामीटर. यदि निर्दिष्ट वस्तु नहीं मिली है, तो फ़ंक्शन का व्यवहार निर्धारित करेंः यदि यह false है, तो स्क्रिप्ट रुक जाएगी और चलाने पर त्रुटि लौटाएगी; यदि यह true है, तो फ़ंक्शन na लौटाएगा और निष्पादन जारी रखेगा। डिफ़ॉल्ट false है।currency
(simple string) एक वस्तु का मुद्रा-संबंधी मान ((जैसे ओएचएलसी) को मुद्रा में परिवर्तित करता है। फिर रूपांतरण के बाद के मान के आधार पर गणना की जाती है। expression 。 उपयोग की जाने वाली रूपांतरण दर FX_IDC जोड़ी के लिए पिछले दिन की दैनिक विनिमय दर पर आधारित है। (के-लाइन के संबंध में) की गणना की जाती है। डिफ़ॉल्ट मान syminfo.currency है। संभावित मानः ISO 4217 प्रारूप में मुद्रा कोड के साथ तीन अक्षरों की स्ट्रिंग ((जैसे USD ) या currency.* नामस्थान में निरंतर में से एक, जैसे currency.USD टिप्पणी
पिनस्क्रिप्ट कोड जो इस फ़ंक्शन का उपयोग करता है, इतिहास और वास्तविक समय डेटा के लिए अलग-अलग गणना करता है।
यदि आप अनुरोधित वस्तु के लिए अतिरिक्त पैरामीटर निर्दिष्ट करना चाहते हैं, जैसे कि लेनदेन का समय या समायोजन प्रकार, तो आप ticker.new () फ़ंक्शन का उपयोग कर सकते हैं।
‘ticker’ चर का उपयोग करने में असमर्थता इस फ़ंक्शन के लिए विसंगति को पारित करती है. आप ‘ticker.new’ चर या स्टॉक कोड के स्ट्रिंग प्रतिनिधित्व का उपयोग कर सकते हैं, उदाहरण के लिए, AAPL+MSFT*TSLA”。
वर्तमान में, एक स्क्रिप्ट में अधिकतम 40 request.security कॉल की अनुमति है।
कृपया ध्यान दें कि इस चर / फ़ंक्शन का उपयोग करने से सूचक को फिर से तैयार किया जा सकता है।
रिज़ॉल्यूशन मापदंडों के लिए अनुमत मान:
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
अगर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)
मान लौटाएँ
अगरsource
स्ट्रिंग में पाया गयाstr
, तो यह सच है, अन्यथा यह गलत है।
पैरामीटर
source
(series string) स्रोत स्ट्रिंगstr
(series string) खोज करने के लिए उप-स्ट्रिंगऔर देखें
str.pos
str.match
अगरsource
स्ट्रिंगstr
में निर्दिष्ट उप स्ट्रिंग समाप्त होता है, तो यह true लौटाता है, अन्यथा यह false लौटाता है
str.endswith(source, str)
मान लौटाएँ
अगरsource
स्ट्रिंगstr
में निर्दिष्ट उप-स्ट्रिंग समाप्त होती है, तो यह true है, अन्यथा यह false है
पैरामीटर
source
(series string) स्रोत स्ट्रिंगstr
(series string) खोज करने के लिए उप-स्ट्रिंगऔर देखें
str.startswith
अगरsource
स्ट्रिंगstr
में निर्दिष्ट सबस्ट्रिंग प्रारंभ होता है, तो true लौटाता है, अन्यथा false लौटाता है
str.startswith(source, str)
मान लौटाएँ
अगरsource
स्ट्रिंगstr
में निर्दिष्ट उप-स्ट्रिंग शुरू होती है, तो यह true है, अन्यथा यह false है
पैरामीटर
source
(series string) स्रोत स्ट्रिंगstr
(series string) खोज करने के लिए उप-स्ट्रिंगऔर देखें
str.endswith
एक नई स्ट्रिंग, यह हैsource
स्ट्रिंग की उप-स्ट्रिंग.begin_pos
निर्दिष्ट सूचकांक में वर्ण शुरू होता है, और करने के लिए विस्तारsource
स्ट्रिंग का ‘end_pos - 1’
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
(series string) स्रोत स्ट्रिंग जिसमें से उप-स्ट्रिंग निकाली जाती हैbegin_pos
(series int) निकाले गए उप-स्ट्रिंग की प्रारंभिक स्थिति. यह अनन्य है ((निकाले गए उप-स्ट्रिंग में उस स्थान के वर्ण शामिल हैं))end_pos
(series int) समाप्ति स्थान。 यह अनन्य है ((निकाली गई स्ट्रिंग में उस स्थान के वर्ण शामिल नहीं हैं)。 वैकल्पिक。 डिफ़ॉल्ट मान हैsource
स्ट्रिंग की लंबाईटिप्पणी
स्ट्रिंग इंडेक्स 0 से शुरू होता है. यदिbegin_pos
बराबरend_pos
, फ़ंक्शन एक रिक्त स्ट्रिंग देता है.
और देखें
str.contains
str.pos
str.match
str.tonumber(string)
मान लौटाएँ यदि इसमें वैध संख्याएँ हैं, तो स्ट्रिंग के फ़्लोटिंग पॉइंट प्रकार के रूप में, अन्यथा na。
पैरामीटर
string
(series string) int या float के लिए स्ट्रिंग का प्रतिनिधित्व करता हैप्रारूप स्ट्रिंग और मान को स्वरूपित स्ट्रिंग में परिवर्तित करें. प्रारूप स्ट्रिंग में पाठ पाठ और प्रत्येक प्रारूपित मान के लिए एक कोष्ठक में एक बिन्दु हो सकता है. प्रत्येक बिन्दु में एक सूचकांक शामिल होता है जिसमें इसके आवश्यक पैरामीटर को प्रतिस्थापित किया जाएगा ((0 से शुरू), और एक वैकल्पिक प्रारूप निर्दिष्टकर्ता। सूचकांक str.format पैरामीटर सूची में उस पैरामीटर की स्थिति को दर्शाता है।
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
(series string) स्वरूपित स्ट्रिंगarg0, arg1, ...
(series int/float/bool/string/na/int[]/float[]/bool[]/string[]) स्वरूपित करने के लिए मान।टिप्पणी उदाहरण के लिए, “ab {0} de” और “ab ‘}’ de” वैध शैलियों हैं, लेकिन “ab {0’} ‘de”, “ab } de” और “’{”” वैध शैलियों नहीं हैं।
इस स्ट्रिंग में वर्णों की संख्या के अनुरूप एक पूर्णांक लौटाता है
str.length(string)
मान लौटाएँ स्रोत स्ट्रिंग में वर्णों की संख्या
पैरामीटर
string
(series string) स्रोत स्ट्रिंगएक नई स्ट्रिंग लौटाता है जिसमें सभी अक्षरों को छोटे अक्षरों में परिवर्तित किया जाता है.
str.lower(source)
मान लौटाएँ सभी अक्षरों को छोटे अक्षरों के नए स्ट्रिंग में परिवर्तित किया गया है।
पैरामीटर
source
(series string) परिवर्तित करने के लिए स्ट्रिंगऔर देखें
str.upper
एक नई स्ट्रिंग लौटाता है जिसमें सभी अक्षरों को अपरकेस में परिवर्तित किया जाता है
str.upper(source)
मान लौटाएँ सभी अक्षरों को नए अक्षरों में परिवर्तित कर दिया गया है, जो बड़े अक्षरों में लिखे गए हैं।
पैरामीटर
source
(series string) परिवर्तित करने के लिए स्ट्रिंगऔर देखें
str.lower
अगर मिलानregex
नियमित अभिव्यक्ति, वापसsource
स्ट्रिंग का नया उप-स्ट्रिंग, अन्यथा ‘na’ देता है
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
स्ट्रिंग के नए उप स्ट्रिंग, अगर यह एक मिलानregex
नियमित अभिव्यक्ति, अन्यथा ‘ना’
पैरामीटर
source
(series string) स्रोत स्ट्रिंगregex
(series string) इस स्ट्रिंग से मेल खाने वाली एक नियमित अभिव्यक्ति टिप्पणी
फ़ंक्शन रिटर्नsource
स्ट्रिंग में पहली बार दिखाई देने वाली नियमित अभिव्यक्ति:
regex
एक स्ट्रिंग में उलटा-उलटा\उलटा प्रतीक को अतिरिक्त उलटा-उलटा-उलटा के साथ अनुवादित किया जाना चाहिए, जैसे कि उलटा\d एक नियमित अभिव्यक्ति को दर्शाता है \d。
और देखें
str.contains
str.substring
वापस आनाsource
स्ट्रिंग में पहली बार आयाstr
स्ट्रिंग की स्थिति, अन्यथा ‘na’ देता है
str.pos(source, str)
मान लौटाएँ
str
स्ट्रिंग मेंsource
स्ट्रिंग में स्थान
पैरामीटर
source
(series string) स्रोत स्ट्रिंगstr
(series string) खोज करने के लिए उप-स्ट्रिंगटिप्पणी स्ट्रिंग इंडेक्स 0 से शुरू होता है.
और देखें
str.contains
str.match
str.substring
एक नई स्ट्रिंग लौटाता है जिसमें N+1 बारtarget
स्ट्रिंग और पहलेtarget
स्ट्रिंग के साथ प्रतिस्थापितreplacement
स्ट्रिंग, जहां एन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 "EXCHANGE2:SYMBOL1 / EXCHANGE1:SYMBOL2"
runtime.log(newSource)
मान लौटाएँ संसाधित स्ट्रिंग
पैरामीटर
source
(series string) स्रोत स्ट्रिंगtarget
(series string) को स्ट्रिंग से बदल दिया गया हैreplacement
(series string) लक्षित स्ट्रिंग के बजाय डाली जाने वाली स्ट्रिंगoccurrence
(series int) प्रतिस्थापित करने के लिए लक्ष्य स्ट्रिंग स्रोत स्ट्रिंग में दिखाई देने वाला मिलान सूचकांक है। पहला मिलान सूचकांक 0 से शुरू होता है। वैकल्पिक है। डिफ़ॉल्ट मान 0 है।और देखें
str.replace_all
str.match
प्रतिस्थापन स्ट्रिंग के लिए, प्रतिस्थापन स्रोत स्ट्रिंग में हर बार लक्षित स्ट्रिंग।
str.replace_all(source, target, replacement)
मान लौटाएँ संसाधित स्ट्रिंग
पैरामीटर
source
(series string) स्रोत स्ट्रिंगtarget
(series string) को स्ट्रिंग से बदल दिया गया हैreplacement
(series string) हर बार जब लक्ष्य स्ट्रिंग आता है, तो यह उस स्ट्रिंग को प्रतिस्थापित करता हैस्ट्रिंग को उप-स्ट्रिंग सरणी में विभाजित करें और उसकी सरणी आईडी वापस करें
str.split(string, separator)
मान लौटाएँ स्ट्रिंग सरणी की आईडी
पैरामीटर
string
(series string) स्रोत स्ट्रिंगseparator
(series string) प्रत्येक उप स्ट्रिंग को अलग करने वाली स्ट्रिंगstr.tostring(value)
str.tostring(value, format)
str.tostring(value[])
str.tostring(value[], format)
मान लौटाएँ
value
पैरामीटर के स्ट्रिंग्स को फ़ॉर्म में दर्शाया गया है:
अगरvalue
यदि पैरामीटर एक स्ट्रिंग है, तो यह वही लौटाता है जो यह था
जबvalue
जब na, फ़ंक्शन स्ट्रिंग लौटता है NaN.
पैरामीटर
value
(series int/float/bool/string/int[]/float[]/bool[]/string[]) जिसका तत्व स्ट्रिंग के मान या सरणी आईडी में परिवर्तित किया जाता हैformat
(series string) Format string. Accepts these format.* constants: format.mintick, format.percent, format.volume. Optional. The default value is ‘#.##########’.टिप्पणी फ़्लोट मानों के लिए प्रारूप भी आवश्यक होने पर इन मानों को चौपट कर देता है, उदाहरण के लिए str.tostring ((3.99, ‘#’) वापस आएगा str4。 शून्य के बाद ‘0’ का प्रयोग करें, ‘#’ के बजाय। उदाहरण के लिए, ‘#.000’। format.mintick का उपयोग करते समय, यह मान चौगुना किया जाता है, जो कि syminfo.mintick के बिना बिना किसी अतिरिक्त संख्या के निकटतम संख्या में विभाजित किया जा सकता है। लौटाई गई स्ट्रिंग शून्य के साथ होती है। यदि x एक स्ट्रिंग है, तो यह वही स्ट्रिंग मान देता है. Bool प्रकार का पैरामीटर TRUE या FALSE देता है. जब x na है, तो फ़ंक्शन NaN देता है.
फ़ंक्शन रंग निर्दिष्ट पारदर्शिता को दिए गए रंग पर लागू करता है.
color.new(color, transp)
उदाहरण
plot(close, color=color.new(color.red, 50))
मान लौटाएँ एक विशिष्ट पारदर्शिता के साथ रंग
पैरामीटर
color
(series color)transp
(series int/float) उपलब्ध मान 0 से 100 तक हैटिप्पणी बहुत सारे पैरामीटर का उपयोग करना (उदाहरण के लिए, simple, input या series) स्क्रिप्ट टैब सेटिंग्स / स्टाइल टैब पेज में प्रदर्शित रंगों को प्रभावित करता है। अधिक जानकारी के लिए उपयोगकर्ता पुस्तिका देखें।
आरजीबी रंग मॉडल का उपयोग कर पारदर्शिता के साथ नए रंगों का निर्माण करना।
color.rgb(red, green, blue, transp)
उदाहरण
plot(close, color=color.rgb(255, 0, 0, 50))
मान लौटाएँ एक विशिष्ट पारदर्शिता के साथ रंग
पैरामीटर
red
(series int/float) लाल रंग की . संभावित मान 0 से 255 तक .green
(series int/float) हरियाली. संभव मान 0 से 255 तक है.blue
(series int/float) नीला . 0 से 255 .transp
(series int/float) वैकल्पिक. रंग पारदर्शी. 0 से 100 तक के संभावित मान. डिफ़ॉल्ट मान 0 है.टिप्पणी बहुत सारे पैरामीटर का उपयोग करना (उदाहरण के लिए, simple, input या series) स्क्रिप्ट टैब सेटिंग्स / स्टाइल टैब पेज में प्रदर्शित रंगों को प्रभावित करता है। अधिक जानकारी के लिए उपयोगकर्ता पुस्तिका देखें।
नियंत्रण कक्ष में चर जानकारी मुद्रित करें.
FMZ PINE भाषा में एक विशेष फ़ंक्शन है।runtime.debug(value)
, केवल एक पैरामीटर
लॉग में आउटपुट
FMZ PINE भाषा में एक विशेष फ़ंक्शन है।runtime.log(1, 2, 3, close, high, ...)
, कई पैरामीटर पारित कर सकते हैं.
यह एक ऑपरेटिंग त्रुटि का कारण बनता है औरmessage
पैरामीटर में निर्दिष्ट त्रुटि संदेश
runtime.error(message)
पैरामीटर message (series string) त्रुटि संदेश
इनपुट को स्क्रिप्ट सेटिंग्स के इनपुट टैब पेज में जोड़ें, यह आपको स्क्रिप्ट उपयोगकर्ताओं को कॉन्फ़िगरेशन विकल्प प्रदान करने की अनुमति देता है। यह फ़ंक्शन डिफ़ॉल्ट रूप से डिफ़ॉल्ट के लिए पैरामीटर प्रकार का पता लगाता है और संबंधित इनपुट प्लगइन का उपयोग करता है।
input(defval, title, tooltip, inline, group)
input(defval, title, inline, group, tooltip)
उदाहरण
i_switch = input(true, "On/Off") // 设置true,默认勾选
plot(i_switch ? open : na)
i_len = input(7, "Length")
i_src = input(close, "Source") // 下拉框,默认选择close
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-ins) स्क्रिप्ट के फ्लोट सेटिंग्स/इनपुट फ्लोट टैग पेज में अनुशंसित इनपुट चर का डिफ़ॉल्ट मान निर्धारित करता है, जिसमें से स्क्रिप्ट उपयोगकर्ता इसे बदल सकता है। स्रोत प्रकार अंतर्निहित फ़ंक्शन गणना स्रोत को निर्दिष्ट करने के लिए अंतर्निहित सरणी फ्लोट चर हैःclose
、hlc3
आदि।title
(const string) प्रविष्टि का शीर्षक यदि निर्दिष्ट नहीं है, तो चर नाम को प्रविष्टि के शीर्षक के रूप में उपयोग करें यदि शीर्षक निर्दिष्ट है, लेकिन शीर्षक खाली है, तो नाम खाली स्ट्रिंग होगा tooltip
(const string) यह स्ट्रिंग उपयोगकर्ता को तब दिखाई देगी जब माउस टूल संकेत चिह्न पर लटकती है।inline
(const string) एक पंक्ति में एक ही पैरामीटर का उपयोग कर सभी इनपुट कॉलिंग को मिलाएं. यह स्ट्रिंग को प्रदर्शित नहीं करता है जो पैरामीटर के रूप में उपयोग किया जाता है. यह केवल एक ही पंक्ति से संबंधित इनपुट की पहचान करने के लिए उपयोग किया जाता है.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) स्क्रिप्ट के फ़ोल्डर सेटिंग्स / इनपुट फ़ोल्डर टैग पृष्ठ में अन