≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠
expr1 + expr2
+ expr
واپس کی قدر
سٹرنگ کی بائنری+
ایکسپریس 1 اور ایکسپریس 2 کو ملا کر واپس کریں
عددی عددی یا فلوٹ پوائنٹ کی قیمت، یا اقدار کی ایک سیریز لوٹاتا ہے:
بائنری ‘+’ واپسی expr1 پلس expr2。
ایک میٹرکس + ایک میٹرکس واپس expr ((ایک میٹرکس آپریٹر کی ہم آہنگی کے لئے کچھ بھی شامل نہیں ہے)
نوٹ آپ اعداد کے ساتھ ریاضی کے آپریٹرز اور متغیرات کی صفوں کا استعمال کرسکتے ہیں۔ صفوں کے استعمال کی صورت میں ، آپریٹرز عناصر پر لاگو ہوتے ہیں۔
جمع کا تعین ◄ عددی اظہار یا سٹرنگ کے لئے لاگو ◄
expr1 += expr2
مثال
// Equals to expr1 = expr1 + expr2.
a = 2
b = 3
a += b
// Result: a = 5.
plot(a)
واپس کی قدر سٹرنگ کے لئے ، ایکسپریس 1 اور ایکسپریس 2 کا سلسلہ لوٹاتا ہے۔ اعداد کے لئے ، ایک عددی یا فلوٹ پوائنٹ کی قیمت ، یا اقدار کی ایک سیریز لوٹاتا ہے۔
نوٹ آپ اعداد کے ساتھ ریاضی کے آپریٹرز اور متغیرات کی صفوں کا استعمال کرسکتے ہیں۔ صفوں کے استعمال کی صورت میں ، آپریٹرز عناصر پر لاگو ہوتے ہیں۔
گھٹاؤ یا منفی عدد۔ عددی اظہار پر لاگو ہوتا ہے۔
expr1 - expr2
- expr
واپس کی قدر
ایک عددی یا فلوٹ پوائنٹ کی قیمت، یا اقدار کی ایک سیریز لوٹاتا ہے:
بائنری ‘+’ واپسی expr1 مائنس expr2。
یونٹ-
ایکسپریس کے لئے منفی کو لوٹاتا ہے۔
نوٹ آپ اعداد کے ساتھ ریاضی کے آپریٹرز اور متغیرات کی صفوں کا استعمال کرسکتے ہیں۔ صفوں کے استعمال کی صورت میں ، آپریٹرز عناصر پر لاگو ہوتے ہیں۔
گھٹاؤ کے قانون کی تعیناتی ◄ عددی اظہار پر لاگو ◄
expr1 -= expr2
مثال
// Equals to expr1 = expr1 - expr2.
a = 2
b = 3
a -= b
// Result: a = -1.
plot(a)
واپس کی قدر عددی یا فلوٹ پوائنٹ کی قیمت، یا اقدار کی ایک سیریز
استثناء ◄ عددی اظہار پر لاگو ◄
expr1 / expr2
واپس کی قدر عددی یا فلوٹ پوائنٹ کی قیمت، یا اقدار کی ایک سیریز
عددی اظہار پر لاگو ہوتا ہے۔
expr1 /= expr2
مثال
// Equals to expr1 = expr1 / expr2.
a = 3
b = 3
a /= b
// Result: a = 1.
plot(a)
واپس کی قدر عددی یا فلوٹ پوائنٹ کی قیمت، یا اقدار کی ایک سیریز
سے کم ◄ عددی اظہار کے لئے لاگو ◄
expr1 < expr2
واپس کی قدر بول ویلیو، یا بول ویلیو کی ایک سیریز
سے کم یا برابر ◄ عددی اظہار کے لئے لاگو ◄
expr1 <= expr2
واپس کی قدر بول ویلیو، یا بول ویلیو کی ایک سیریز
کے برابر ہے۔ کسی بھی قسم کے اظہار کے لیے قابل اطلاق ہے۔
expr1 == expr2
واپس کی قدر بول ویلیو، یا بول ویلیو کی ایک سیریز
’=>’ آپریٹر صارف کی وضاحت کی تقریب کے اعلانات کے لئے استعمال کیا جاتا ہے اورswitch
جملوں میں
فنکشن ڈیکلیریشن کی نحو یہ ہے:
<identifier>([<parameter_name>[=<default_value>]], ...) =>
<local_block>
<function_result>
ایک<local_block>
یہ صفر یا اس سے زیادہ پائن جملے ہیں۔
<function_result>
ایک متغیر، ایک اظہار، یا ایک ماڈیول ہے۔
مثال
// single-line function
f1(x, y) => x + y
// multi-line function
f2(x, y) =>
sum = x + y
sumChange = ta.change(sum, 10)
// Function automatically returns the last expression used in it
plot(f1(30, 8) + f2(1, 3))
نوٹ آپ صارف دستی کے اعلانات اور اسکرپٹ لائبریری کے صفحات میں صارف کی وضاحت کے بارے میں مزید معلومات حاصل کرسکتے ہیں۔
سے بڑا ◄ عددی اظہار پر لاگو ◄
expr1 > expr2
واپس کی قدر بول ویلیو، یا بول ویلیو کی ایک سیریز
سے بڑا یا برابر ◄ عددی اظہار کے لئے لاگو ◄
expr1 >= expr2
واپس کی قدر بول ویلیو، یا بول ویلیو کی ایک سیریز
سہ رخی مشروط آپریٹر۔
expr1 ? expr2 : expr3
مثال
// Draw circles at the bars where open crosses close
s2 = ta.cross(open, close) ? math.avg(open,close) : na
plot(s2, style=plot.style_circles, linewidth=2, color=color.red)
// Combination of ?: operators for 'switch'-like logic
c = timeframe.isintraday ? color.red : timeframe.isdaily ? color.green : timeframe.isweekly ? color.blue : color.gray
plot(hl2, color=c)
واپس کی قدر اگر ایکسپریس 1 کا جائزہ سچ ہے تو ایکسپریس 2 ہے ، ورنہ ایکسپریس 3 ہے۔ صفر کی قیمت ((0 اور NaN + ، انفینٹی ، انفینٹی) کو غلط سمجھا جاتا ہے ، باقی تمام اقدار درست ہیں۔
نوٹ اگر آپ کو اس کی ضرورت نہیں ہے تو ، براہ کرم na کو جیلسی جیلسی کی شاخ کے طور پر استعمال کریں۔ کیا آپ دو یا دو سے زیادہ: آپریٹرز کو مل کر استعمال کر سکتے ہیں؟ (مثال کے طور پر اوپر ملاحظہ کریں) آپ اعداد کے ساتھ ریاضی کے آپریٹرز اور متغیرات کی صفوں کا استعمال کرسکتے ہیں۔ صفوں کے استعمال کی صورت میں ، آپریٹرز عناصر پر لاگو ہوتے ہیں۔
مزید دیکھیے
na
سیریز کے تحت۔ expr1 سیریز کی سابقہ اقدار تک رسائی فراہم کرتا ہے۔ expr2 ماضی کی k لائنوں کی تعداد ہے ، اور اس کی قدر ہونی چاہئے۔ فلوٹ کو نیچے کی طرف گھما دیا جائے گا۔
expr1[expr2]
مثال
// [] can be used to "save" variable value between bars
a = 0.0 // declare `a`
a := a[1] // immediately set current value to the same as previous. `na` in the beginning of history
if high == low // if some condition - change `a` value to another
a := low
plot(a)
واپس کی قدر اعداد کی ایک سیریز
مزید دیکھیے
math.floor
منطق AND。 بول اظہار کے لئے لاگو ہوتی ہے۔
expr1 and expr2
واپس کی قدر بول ویلیو، یا بول ویلیو کی ایک سیریز
منطق OR。 بول اظہار کے لئے لاگو ہوتا ہے。
expr1 or expr2
واپس کی قدر بول ویلیو، یا بول ویلیو کی ایک سیریز
منطق کا ردوبدل ((NOT) ◄ بول اظہار کے لئے لاگو ہوتا ہے ◄
not expr1
واپس کی قدر بول ویلیو، یا بول ویلیو کی ایک سیریز
واضح طور پر بیان کردہ متغیر یا پیرامیٹر کے لئے bool () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () ()
مثال
// bool
bool b = true // Same as `b = true`
b := na
plot(b ? open : close)
نوٹ متغیر کے بیان میں واضح طور پر قسم کا ذکر کرنا اختیاری ہے ، جب تک کہ یہ na کے ساتھ شروع نہ ہو۔ قسم کے نظام کے صارف دستی صفحے پر پائن قسم کے بارے میں مزید معلومات حاصل کریں۔
مزید دیکھیے
var
varip
int
float
color
string
true
false
واضح طور پر متغیر یا پیرامیٹرز کا اعلان کرنے کے لئے استعمال کیا جاتا ہے int () () کی قسم کے کلیدی الفاظ
مثال
// int
int i = 14 // Same as `i = 14`
i := na
plot(i)
نوٹ متغیر کے بیان میں واضح طور پر قسم کا ذکر کرنا اختیاری ہے ، جب تک کہ یہ na کے ساتھ شروع نہ ہو۔ قسم کے نظام کے صارف دستی صفحے پر پائن قسم کے بارے میں مزید معلومات حاصل کریں۔
مزید دیکھیے
var
varip
float
bool
color
string
فلوٹ () کی قسم کے کلیدی الفاظ جو واضح طور پر متغیرات یا پیرامیٹرز کو بیان کرنے کے لئے استعمال ہوتے ہیں۔
مثال
// float
float f = 3.14 // Same as `f = 3.14`
f := na
plot(f)
نوٹ متغیر کے بیان میں واضح طور پر اس قسم کا ذکر کرنا اختیاری ہے ، جب تک کہ یہ na کے ساتھ شروع نہ ہو۔
مزید دیکھیے
var
varip
int
bool
color
string
ایکسپریس ڈیکلیئرڈ متغیر یا پیرامیٹر کے لئے “string” قسم کے کلیدی الفاظ
مثال
// string
string s = "Hello World!" // Same as `s = "Hello world!"`
// string s = na // same as ""
plot(na, title=s)
نوٹ متغیر کے بیان میں واضح طور پر قسم کا ذکر کرنا اختیاری ہے ، جب تک کہ یہ na کے ساتھ شروع نہ ہو۔ قسم کے نظام کے صارف دستی صفحے پر پائن قسم کے بارے میں مزید معلومات حاصل کریں۔
مزید دیکھیے
var
varip
int
float
bool
str.tostring
str.format
“color” کی قسم کے مطلوبہ الفاظ جو ایک واضح طور پر بیان کردہ متغیر یا پیرامیٹرز کے لئے استعمال ہوتے ہیں۔
مثال
// color
color textColor = color.green
if barstate.islastconfirmedhistory
runtime.log("test", textcolor = textColor)
نوٹ رنگین حروف کی شکل مندرجہ ذیل ہے: #RRGGBB یا #RRGGBBAA。 حروف کی جوڑی 00 سے FF کی سولہ عددی اقدار کی نمائندگی کرتی ہے ((0 سے 255 تک دس عددی) ، جہاں RR، GG اور BB جوڑے رنگوں کے سرخ، سبز اور نیلے رنگ کے تناسب کی اقدار ہیں۔ AA رنگ شفافیت ہے ((یا الفا تناسب) ، جہاں 00 پوشیدہ ہے ، ایف ایف غیر شفاف ہے۔ جب AA جوڑی فراہم نہیں کی جاتی ہے تو ، FF استعمال کیا جاتا ہے۔ سولہ عددی حروف بڑے یا چھوٹے لکھے جاسکتے ہیں۔ متغیر کے بیان میں واضح طور پر قسم کا ذکر کرنا اختیاری ہے ، جب تک کہ یہ na کے ساتھ شروع نہ ہو۔ قسم کے نظام کے صارف دستی صفحے پر پائن قسم کے بارے میں مزید معلومات حاصل کریں۔
مزید دیکھیے
var
varip
int
float
string
color.rgb
color.new
صریح طور پر متغیرات یا پیرامیٹرز کا اعلان کرنے کے لئے استعمال کیا جاتا ہےarray.new<type>
,array.from
فنکشن تخلیق کرتا ہے صف کا اعتراض ((یا ID) }}
مثال
// array
array<float> a = na
a := array.new<float>(1, close)
plot(array.get(a, 0))
نوٹ صف کا اعتراض ہمیشہ صف کی شکل میں ہوتا ہے۔
مزید دیکھیے
var
array.new
array.from
PINE زبان کا آبجیکٹ صارف کی وضاحت کی قسم ((UDT) کا ایک مثال ہے ، جسے بغیر کسی طریقہ کار کی کلاس کے طور پر سمجھا جاسکتا ہے ، جس سے صارف کو پالیسی میں اپنی مرضی کے مطابق قسمیں بنانے کی اجازت ملتی ہے جو ایک ہی وجود میں مختلف اقدار کو منظم کرتی ہے۔
قسم کی وضاحت
آئیے ہم آرڈر کی معلومات کو ذخیرہ کرنے کے لئے ایک آرڈر کی قسم کی وضاحت کرتے ہیں:
type order
float price
float amount
string symbol
type
مطلوبہ الفاظ کی قسم کا اعلان تخلیق آبجیکٹ
قسم کا استعمال کرتے ہوئے ایک اچھا اعلان، کال کریںnew()
فنکشن تخلیق آبجیکٹ
order1 = order.new()
order1 = order.new(100, 0.1, "BTC_USDT")
order1 = order.new(amount = 0.1, symbol = "BTC_USDT", price = 100)
آپ خالی اشیاء بھی بنا سکتے ہیں:
order order1 = na
ذیل میں ہم ایک عملی مثال دیکھتے ہیں:
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)
// runtime.log(order1) // 输出 {"data":{"price":46002.8,"amount":1,"symbol":"swap"},"_meta":0,"_type":"order"}
مثال کے طور پر:
order1 = order.new(strategy.opentrades.entry_price(strategy.opentrades - 1), strategy.opentrades.size(strategy.opentrades - 1), syminfo.ticker)
یہ بھی درج ذیل شکل میں لکھا جا سکتا ہے:
order order1 = na
order1 := order.new(strategy.opentrades.entry_price(strategy.opentrades - 1), strategy.opentrades.size(strategy.opentrades - 1), syminfo.ticker)
اشیاء کی اقسام کے لئے var مطلوبہ الفاظ کا استعمال
//@version=5
indicator("Objects using `var` demo")
//@type A custom type to hold index, price, and volume information.
type BarInfo
int index = bar_index
float price = close
float vol = volume
//@variable A `BarInfo` instance whose fields persist through all iterations, starting from the first bar.
var BarInfo firstBar = BarInfo.new()
//@variable A `BarInfo` instance declared on every bar.
BarInfo currentBar = BarInfo.new()
// Plot the `index` fields of both instances to compare the difference.
plot(firstBar.index, "firstBar")
plot(currentBar.index, "currentBar")
جب کسی صارف کی وضاحت شدہ قسم کے آبجیکٹ کی متغیر کو var کلیدی لفظ کا اعلان استعمال کرتے ہوئے تفویض کیا جاتا ہے تو ، یہ کلیدی لفظ خود بخود اس آبجیکٹ کے تمام شعبوں پر لاگو ہوتا ہے۔ اس کا مطلب یہ ہے کہ var کلیدی لفظ کے ذریعہ اعلان کردہ آبجیکٹ ہر تعدد کے درمیان اپنی حالت کو برقرار رکھے گا ، اس کی بجائے کہ ہر تعدد میں اس کی فیلڈ ویلیو کو دوبارہ شروع کیا جائے۔
آپ انڈیکس فیلڈ میں دو آبجیکٹوں کا موازنہ کرکے ان کے درمیان اختلافات کا موازنہ کرسکتے ہیں۔ firstBar.index پہلے سے طے شدہ اقدار کو برقرار رکھے گا اور currentBar.index کو موجودہ بار_انڈیکس کے طور پر دوبارہ شروع کیا جائے گا۔
آبجیکٹ کی قسم Varip مطلوبہ الفاظ کے استعمال کے لئے
//@version=5
indicator("Objects using `varip` fields demo")
//@type A custom type that counts the bars and ticks in the script's execution.
type Counter
int bars = 0
varip int ticks = 0
//@variable A `Counter` object whose reference persists throughout all bars.
var Counter counter = Counter.new()
// Add 1 to the `bars` and `ticks` fields. The `ticks` field is not subject to rollback on unconfirmed bars.
counter.bars += 1
counter.ticks += 1
// Plot both fields for comparison.
plot(counter.bars, "Bar counter", color.blue, 3)
plot(counter.ticks, "Tick counter", color.purple, 3)
پائن میں ، varp کی ورڈ کا استعمال کرتے ہوئے اس بات کی نشاندہی کی جاسکتی ہے کہ اسکرپٹ کے عملدرآمد کے دوران آبجیکٹ کے کھیتوں کو برقرار رکھا جائے گا ، اور غیر تصدیق شدہ کالموں میں واپس نہیں جائیں گے۔ کاؤنٹر قسم کے بیانات میں ، بارس فیلڈ میں ویرپ کی ورڈ استعمال نہیں کیا گیا ہے ، لہذا یہ ہر غیر تصدیق شدہ کالم میں واپس چلا جائے گا۔ جبکہ ٹکس فیلڈ میں ویرپ کی ورڈ استعمال کیا گیا ہے ، لہذا یہ غیر تصدیق شدہ کالم میں واپس نہیں آئے گا۔ counter آبجیکٹ کا اعلان var کی ورڈ کے ساتھ کیا گیا ہے ، لہذا یہ اسکرپٹ کے عملدرآمد کے دوران جاری رہے گا۔ بارس فیلڈ اور ٹکس فیلڈ میں ہر تعدد میں اضافہ ہوتا ہے۔ بارس فیلڈ ہر غیر تصدیق شدہ کالم کے اندر گھومتا ہے ، جبکہ ٹکس فیلڈ نہیں گھومتا ہے۔ آخر میں ، counter.bars اور counter.ticks فیلڈز کا نقشہ تیار کرکے ، ان کے مابین اختلافات کا موازنہ کیا جاسکتا ہے۔ counter.bars کی قدر ہر غیر تصدیق شدہ کالم کے اندر گھومتی ہے ، جبکہ counter.ticks کی قدر اسکرپٹ کے اختتام تک بڑھتی رہتی ہے۔
فیلڈ ویلیو کو تبدیل کریں
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)
مندرجہ ذیل مثال میں، ہم ایک pivot1 آبجیکٹ بناتے ہیں اور اس کے x فیلڈ کو 1000 پر سیٹ کرتے ہیں۔ اس کے بعد، ہم اعلان کرتے ہیں کہ ایک pivot2 میں اس pivot1 آبجیکٹ کے حوالہ جات شامل ہیں، لہذا دونوں ایک ہی مثال کی طرف اشارہ کرتے ہیں۔ لہذا، pivot2.x کو تبدیل کرنے سے pivot1.x کو بھی تبدیل کیا جائے گا کیونکہ دونوں نے 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)
نوٹ کریں کہ ٹریڈنگ ویو کاپی کا طریقہ شارٹ کاپی ہے۔ اگر کسی آبجیکٹ میں مخصوص قسم کے فیلڈز (آرری وغیرہ) ہیں تو اس آبجیکٹ کی شارٹ کاپی میں موجود فیلڈز اس آبجیکٹ کے ساتھ اسی مثال کی طرف اشارہ کریں گے۔ ایف ایم زیڈ پلیٹ فارم براہ راست گہری کاپی کو لاگو کرتا ہے، بغیر کسی اضافی پروسیسنگ کی ضرورت ہوتی ہے، مندرجہ ذیل مثالوں کا حوالہ دیتے ہیں:
ڈیپ کاپی
//@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" // 修改 labelInfo1 的基础类型字段,看是否影响 labelInfo2
labelInfo1.order.price := 999 // 修改 labelInfo1 的复合类型字段,看是否影响 labelInfo2
runtime.log(labelInfo1)
runtime.log(labelInfo2)
runtime.error("stop")
ٹیسٹ کے نتائج،labelInfo.copy ((labelInfo1) پر عملدرآمد کے وقت گہری کاپی کے طور پر،labelInfo1 میں کسی بھی فیلڈ میں ترمیم کرنے سے labelInfo2 کو متاثر نہیں کرے گا۔
پائن زبان کے طریقے (Methods) مخصوص فنکشن ہیں جو کسی خاص مثال کے اندرونی یا صارف کی وضاحت شدہ اقسام سے وابستہ ہیں۔ زیادہ تر معاملات میں ، وہ بنیادی طور پر باقاعدہ افعال کی طرح ہیں ، لیکن مختصر اور آسان گرامر فراہم کرتے ہیں۔ صارف متغیرات پر نقطہ علامتوں کا استعمال کرتے ہوئے براہ راست طریقوں تک رسائی حاصل کرسکتا ہے ، جیسے پائن آبجیکٹ کے کھیتوں تک رسائی حاصل کریں۔ پائن میں تمام خاص قسم کے بلٹ ان طریقے شامل ہیں ، بشمول صف ، میٹرکس ، نقشہ سازی ، بھرنے والی لائنیں وغیرہ۔ یہ طریقے صارف کو اسکرپٹ میں ان اقسام کے خصوصی پروگراموں کو کال کرنے کا ایک آسان طریقہ فراہم کرتے ہیں۔
بلٹ میں طریقہ
مثال کے طور پر، اسکرپٹ کا ایک حصہ:
//@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()
。
نوٹ: فی الحال ایف ایم زیڈ کو سپورٹ نہیں کیا جا رہا ہے۔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)
آپ دیکھ سکتے ہیں کہ کسٹمر کی اپنی مرضی کے مطابق طریقوں کا استعمال کرتے ہوئے مطلوبہ الفاظ کے طریقہ کار کے بیانات: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()
کون سا اوورلوڈ استعمال کیا جائے گا۔ ایف ایم زیڈ پلیٹ فارم میں چونکہ پائن اسکرپٹ کا بنیادی Javascript زبان کے طور پر لاگو کیا گیا ہے ، لہذا عددی قدر کی قسم کو فلوٹ ٹائپ ڈیٹا ((float) کے طور پر فیصلہ کیا جائے گا۔
جب فنکشن کو کال کیا جاتا ہے تو پیرامیٹرز کو منتقل کیا جاتا ہے ، پیرامیٹرز کا نام تفویض کیا جاسکتا ہے ، اور متغیرات کو براہ راست اس کے پیرامیٹر کے مقام پر منتقل کیا جاسکتا ہے ، اور اس میں مخلوط استعمال کی بھی حمایت کی جاتی ہے۔ مثال کے طور پر:
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.period。 ہےنوٹ
کے لئے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 - درخواست کردہ اعداد و شمار کو ممکنہ فرق کے ساتھ ضم کریں (ن) اقدار) ◄ barmerge.gaps_off - درخواست کردہ اعداد و شمار کو مستقل طور پر ضم کیا گیا ہے ، تمام فرقوں سے قبل حالیہ موجودہ اقدار کو پُر کیا گیا ہے۔lookahead
(barmerge_lookahead) درخواست کردہ ڈیٹا انضمام کی حکمت عملی۔ ممکنہ اقدار: barmerge.lookahead_on، barmerge.lookahead_off۔ ورژن 3 کے بعد سے ، barmerge.lookahead_off ڈیفالٹ ہے۔ براہ کرم نوٹ کریں کہ رویہ حقیقی وقت کی طرح ہے ، صرف تاریخ میں مختلف ہے۔ignore_invalid_symbol
(const bool) ایک اختیاری پیرامیٹر۔ اگر کوئی مخصوص شے نہیں ملتی ہے تو ، فنکشن کا سلوک طے کیا جاتا ہے: اگر غلط ہے تو ، اسکرپٹ رک جائے گا اور چلتے وقت غلطی واپس کرے گا۔ اگر سچ ہے تو ، فنکشن واپس آئے گا na اور عملدرآمد جاری رکھے۔currency
(simple string) اشیا کی کرنسی سے متعلقہ قدر ((مثال کے طور پر او ایچ ایل سی) کو اس کرنسی میں تبدیل کرتا ہے۔ اس کے بعد تبادلوں کے بعد کی قدر پر مبنی تبادلوں کی شرح FX_IDC جوڑی کے پچھلے دن کی روزانہ کی شرح تبادلہ پر مبنی ہے۔ (مثال کے طور پر K لائن) ۔ اختیاری ہے۔ ڈیفالٹ syminfo.currency ہے۔ ممکنہ اقدار: ISO 4217 فارمیٹ میں کرنسی کوڈ ((مثال کے طور پر 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
اگر آپ کے پاس ایک مخصوص ذیلی سٹرنگ ہے ، تو اس کا اختتام درست ہے ، ورنہ یہ غلط ہے۔
str.endswith(source, str)
واپس کی قدر
اگرsource
سٹرنگstr
اس کے بعد ، آپ کو اس کی وضاحت کرنے کی ضرورت ہے کہ اس میں موجود سب اسٹرنگ کا اختتام سچ ہے یا غلط
پیرامیٹر
source
(series string) ماخذ سٹرنگstr
(series string) تلاش کرنے کے لئے سب اسٹرنگ مزید دیکھیے
str.startswith
اگرsource
سٹرنگstr
اگر اسکرپٹ میں مخصوص ذیلی سٹرنگ شروع ہوتی ہے تو ، یہ سچ واپس آئے گا ، ورنہ یہ غلط واپس آئے گا۔
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 کی سٹرنگ نمائش فارم。فارمیٹ سٹرنگ اور قدر کو فارمیٹ سٹرنگ میں تبدیل کریں۔ فارمیٹ سٹرنگ میں متن اور ہر فارمیٹ کی جانے والی قدر کے ل large بڑے قوسین میں {} کا ایک اشارہ ہوسکتا ہے۔ ہر اشارے میں ایک اشارے شامل ہوتا ہے جس میں اس کے مطلوبہ پیرامیٹرز کو تبدیل کیا جائے گا ((0 سے شروع ہوتا ہے) ، اور ایک اختیاری فارمیٹ اشارہ۔ اشاریہ اس پیرامیٹر کی جگہ کو str.format پیرامیٹرز کی فہرست میں ظاہر کرتا ہے۔
str.format(formatString, arg0, arg1, ...)
مثال
”`pine // 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) run