4
ध्यान केंद्रित करना
1076
समर्थक

FMZ PINE स्क्रिप्ट दस्तावेज़ीकरण

में बनाया: 2022-05-06 14:27:06, को अपडेट: 2025-01-23 10:19:06
comments   18
hits   13761

`

इसका मतलब है कि यह एक समान रूप से लिखा जा सकता हैः

//@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इस तरह के आह्वान।

उपयोगकर्ता परिभाषित विधि

पीन उपयोगकर्ता को किसी भी अंतर्निहित या उपयोगकर्ता-परिभाषित प्रकार के ऑब्जेक्ट के साथ उपयोग करने के लिए एक कस्टम विधि को परिभाषित करने की अनुमति देता है। परिभाषा विधि अनिवार्य रूप से परिभाषा फ़ंक्शन के समान है, लेकिन दो महत्वपूर्ण अंतरों के साथः

  1. method कीवर्ड फ़ंक्शन नाम से पहले होना चाहिए
  2. method के पैरामीटर, जिनमें से पहले पैरामीटर के प्रकार को स्पष्ट रूप से घोषित किया जाना चाहिए, क्योंकि यह उस प्रकार के ऑब्जेक्ट को दर्शाता है जिसके साथ यह विधि संबद्ध होगी।

उदाहरण के लिए, निम्न कोड में, ब्रिन सूचकांक की गणना करने के लिए कोड को उपयोगकर्ता-अनुकूलित तरीके के रूप में कैप्चर करेंः

//@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पैरामीटर की समय अवधि सेकंड में परिवर्तित की जाती है

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 (36512) दिनों के आधार पर सेकंड की गणना करता है।

और देखें input.timeframe timeframe.period

ticker

ticker.heikinashi

एक कोड आइडेंटिफायर बनाने के लिए अनुरोध समतल औसत 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

request.data

बाहरी डेटा की मांग

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

एक और नस्ल/विश्लेषण की आवश्यकता होती है

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

str

str.contains

अगर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

str.endswith

अगरsourceस्ट्रिंगstrमें निर्दिष्ट उप स्ट्रिंग समाप्त होता है, तो यह true लौटाता है, अन्यथा यह false लौटाता है

str.endswith(source, str)

मान लौटाएँ अगरsourceस्ट्रिंगstrमें निर्दिष्ट उप-स्ट्रिंग समाप्त होती है, तो यह true है, अन्यथा यह false है

पैरामीटर

  • source(series string) स्रोत स्ट्रिंग
  • str(series string) खोज करने के लिए उप-स्ट्रिंग

और देखें str.startswith

str.startswith

अगरsourceस्ट्रिंगstrमें निर्दिष्ट सबस्ट्रिंग प्रारंभ होता है, तो true लौटाता है, अन्यथा false लौटाता है

str.startswith(source, str)

मान लौटाएँ अगरsourceस्ट्रिंगstrमें निर्दिष्ट उप-स्ट्रिंग शुरू होती है, तो यह true है, अन्यथा यह false है

पैरामीटर

  • source(series string) स्रोत स्ट्रिंग
  • str(series string) खोज करने के लिए उप-स्ट्रिंग

और देखें str.endswith

str.substring

एक नई स्ट्रिंग, यह है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

str.tonumber(string)

मान लौटाएँ यदि इसमें वैध संख्याएँ हैं, तो स्ट्रिंग के फ़्लोटिंग पॉइंट प्रकार के रूप में, अन्यथा na。

पैरामीटर

  • string(series string) int या float के लिए स्ट्रिंग का प्रतिनिधित्व करता है

str.format

प्रारूप स्ट्रिंग और मान को स्वरूपित स्ट्रिंग में परिवर्तित करें. प्रारूप स्ट्रिंग में पाठ पाठ और प्रत्येक प्रारूपित मान के लिए एक कोष्ठक में एक बिन्दु हो सकता है. प्रत्येक बिन्दु में एक सूचकांक शामिल होता है जिसमें इसके आवश्यक पैरामीटर को प्रतिस्थापित किया जाएगा ((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

इस स्ट्रिंग में वर्णों की संख्या के अनुरूप एक पूर्णांक लौटाता है

str.length(string)

मान लौटाएँ स्रोत स्ट्रिंग में वर्णों की संख्या

पैरामीटर

  • string(series string) स्रोत स्ट्रिंग

str.lower

एक नई स्ट्रिंग लौटाता है जिसमें सभी अक्षरों को छोटे अक्षरों में परिवर्तित किया जाता है.

str.lower(source)

मान लौटाएँ सभी अक्षरों को छोटे अक्षरों के नए स्ट्रिंग में परिवर्तित किया गया है।

पैरामीटर

  • source(series string) परिवर्तित करने के लिए स्ट्रिंग

और देखें str.upper

str.upper

एक नई स्ट्रिंग लौटाता है जिसमें सभी अक्षरों को अपरकेस में परिवर्तित किया जाता है

str.upper(source)

मान लौटाएँ सभी अक्षरों को नए अक्षरों में परिवर्तित कर दिया गया है, जो बड़े अक्षरों में लिखे गए हैं।

पैरामीटर

  • source(series string) परिवर्तित करने के लिए स्ट्रिंग

और देखें str.lower

str.match

अगर मिलान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

str.pos

वापस आनाsourceस्ट्रिंग में पहली बार आयाstrस्ट्रिंग की स्थिति, अन्यथा ‘na’ देता है

str.pos(source, str)

मान लौटाएँ strस्ट्रिंग मेंsourceस्ट्रिंग में स्थान

पैरामीटर

  • source(series string) स्रोत स्ट्रिंग
  • str(series string) खोज करने के लिए उप-स्ट्रिंग

टिप्पणी स्ट्रिंग इंडेक्स 0 से शुरू होता है.

और देखें str.contains str.match str.substring

str.replace

एक नई स्ट्रिंग लौटाता है जिसमें 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

प्रतिस्थापन स्ट्रिंग के लिए, प्रतिस्थापन स्रोत स्ट्रिंग में हर बार लक्षित स्ट्रिंग।

str.replace_all(source, target, replacement)

मान लौटाएँ संसाधित स्ट्रिंग

पैरामीटर

  • source(series string) स्रोत स्ट्रिंग
  • target(series string) को स्ट्रिंग से बदल दिया गया है
  • replacement(series string) हर बार जब लक्ष्य स्ट्रिंग आता है, तो यह उस स्ट्रिंग को प्रतिस्थापित करता है

str.split

स्ट्रिंग को उप-स्ट्रिंग सरणी में विभाजित करें और उसकी सरणी आईडी वापस करें

str.split(string, separator)

मान लौटाएँ स्ट्रिंग सरणी की आईडी

पैरामीटर

  • string(series string) स्रोत स्ट्रिंग
  • separator(series string) प्रत्येक उप स्ट्रिंग को अलग करने वाली स्ट्रिंग

str.tostring

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

color.new

फ़ंक्शन रंग निर्दिष्ट पारदर्शिता को दिए गए रंग पर लागू करता है.

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

आरजीबी रंग मॉडल का उपयोग कर पारदर्शिता के साथ नए रंगों का निर्माण करना।

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) स्क्रिप्ट टैब सेटिंग्स / स्टाइल टैब पेज में प्रदर्शित रंगों को प्रभावित करता है। अधिक जानकारी के लिए उपयोगकर्ता पुस्तिका देखें।

runtime

runtime.debug

नियंत्रण कक्ष में चर जानकारी मुद्रित करें.

FMZ PINE भाषा में एक विशेष फ़ंक्शन है।runtime.debug(value), केवल एक पैरामीटर

runtime.log

लॉग में आउटपुट

FMZ PINE भाषा में एक विशेष फ़ंक्शन है।runtime.log(1, 2, 3, close, high, ...), कई पैरामीटर पारित कर सकते हैं.

runtime.error

यह एक ऑपरेटिंग त्रुटि का कारण बनता है औरmessageपैरामीटर में निर्दिष्ट त्रुटि संदेश

runtime.error(message)

पैरामीटर message (series string) त्रुटि संदेश

input

input

इनपुट को स्क्रिप्ट सेटिंग्स के इनपुट टैब पेज में जोड़ें, यह आपको स्क्रिप्ट उपयोगकर्ताओं को कॉन्फ़िगरेशन विकल्प प्रदान करने की अनुमति देता है। यह फ़ंक्शन डिफ़ॉल्ट रूप से डिफ़ॉल्ट के लिए पैरामीटर प्रकार का पता लगाता है और संबंधित इनपुट प्लगइन का उपयोग करता है।

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) स्क्रिप्ट के फ्लोट सेटिंग्स/इनपुट फ्लोट टैग पेज में अनुशंसित इनपुट चर का डिफ़ॉल्ट मान निर्धारित करता है, जिसमें से स्क्रिप्ट उपयोगकर्ता इसे बदल सकता है। स्रोत प्रकार अंतर्निहित फ़ंक्शन गणना स्रोत को निर्दिष्ट करने के लिए अंतर्निहित सरणी फ्लोट चर हैःclosehlc3आदि।
  • 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

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) स्क्रिप्ट के फ़ोल्डर सेटिंग्स / इनपुट फ़ोल्डर टैग पृष्ठ में अन