[TOC]
پائن میں کوڈ کا عام ڈھانچہ:
<version>
<declaration_statement>
<code>
FMZ کے پائین زبان کی حمایت کردہ تشریح کے نشان: ایک سطر کی تشریح//
ایک بار پھر،/* */
مثال کے طور پر مندرجہ ذیل مثالوں میں تبصرے لکھے گئے ہیں:
[macdLine, signalLine, histLine] = ta.macd(close, 12, 26, 9) // 计算MACD指标
/*
plot函数在图表上画出指标线
*/
plot(macdLine, color = color.blue, title='macdLine')
plot(signalLine, color = color.orange, title='signalLine')
plot(histLine, color = color.red, title='histLine')
مندرجہ ذیل شکل میں کمپائلر کی ہدایات کمپائلر کو بتاتی ہیں کہ اسکرپٹ پائن کے کس ورژن میں لکھا گیا ہے:
//@version=5
پہلے سے طے شدہ v5 ورژن، کوڈ میں خارج کر سکتے ہیں//@version=5
。
indicator()
strategy()
بیاناتی بیان اسکرپٹ کی قسم کا تعین کرتا ہے ، جو اس میں کیا اجازت دیتا ہے ، اور اس کا استعمال اور عملدرآمد کا تعین کرتا ہے۔ اسکرپٹ کی اہم خصوصیات جیسے اس کا نام ، جب اسے چارٹ میں شامل کیا جاتا ہے تو یہ کہاں ظاہر ہوگا ، اس کی تعداد کی درستگی اور شکل جس میں یہ ظاہر ہوتا ہے ، اور اس کے چلنے پر اس کے رویے کے کچھ اقدار کو کنٹرول کرتا ہے ، جیسے اس کے چارٹ میں دکھائے جانے والے زیادہ سے زیادہ اعداد و شمار کی تعداد۔ حکمت عملیوں کے ل the ، خصوصیات میں ریورس کو کنٹرول کرنے والی پیرامیٹرز شامل ہیں ، جیسے ابتدائی دارالحکومت ، کمیشن ، سلائیڈ پوائنٹس وغیرہ۔ ایف ایم زیڈ کا پائن کسی حکمت عملی کوڈ میں شامل کرنے کی ضرورت نہیں ہے۔indicator()
یاstrategy()
اس کے علاوہ، اس نے اپنے آپ کو ایک بار پھر اس کے بارے میں سوچا.
اسکرپٹ میں جو لائنیں تبصرے یا کمپائلر کی ہدایات نہیں ہیں وہ جملے ہیں جو اسکرپٹ کے الگورتھم کو نافذ کرتے ہیں۔ ایک جملہ ان میں سے ایک ہوسکتا ہے۔
if
,for
,while
یاswitch
اسی طرح کی ساختجملے کو کئی طریقوں سے ترتیب دیا جا سکتا ہے
空格
یا制表符
(ٹیب بٹن) شروع ہوتا ہے۔ ان کا پہلا کردار بھی اس لائن کا پہلا کردار ہونا ضروری ہے۔ لائن جس میں لائن کی پہلی پوزیشن شروع ہوتی ہے ، تعریف کے مطابق اسکرپٹ کے عالمی دائرہ کار کا حصہ ہے۔local block
ایک مقامی بلاک کو ایک ٹیبلر یا چار خالی جگہوں میں سکیڑنا ہوگا (دوسری صورت میں ، اسے پچھلی لائن کے سلسلہ وار کوڈ میں حل کیا جائے گا ، یعنی اس کو پچھلی لائن کے جاری مواد کے طور پر طے کیا جائے گا) ، اور ہر بلاک نے ایک مختلف مقامی دائرہ کار کی وضاحت کی ہے۔مثال کے طور پر ، تین لوکلز پر مشتمل ، ایک اپنی مرضی کے مطابق فنکشن کے بیان میں ، دو متغیر کے بیان میں اگر ساخت کا استعمال کرتے ہوئے ، مندرجہ ذیل کوڈ:
indicator("", "", true) // 声明语句(全局范围),可以省略不写
barIsUp() => // 函数声明(全局范围)
close > open // 本地块(本地范围)
plotColor = if barIsUp() // 变量声明 (全局范围)
color.green // 本地块 (本地范围)
else
color.red // 本地块 (本地范围)
runtime.log("color", color = plotColor) // 调用一个内置函数输出日志 (全局范围)
لمبی قطاریں متعدد قطاروں میں تقسیم کی جاسکتی ہیں ، یا انہیں "بند" کیا جاسکتا ہے۔ بند شدہ قطاریں کسی بھی تعداد میں خالی جگہوں میں سکڑنا چاہتی ہیں ، جب تک کہ وہ 4 کے ضرب نہ ہوں ((یہ حدود مقیموں کو سکڑنے کے لئے استعمال ہوتی ہیں) ‒)
a = open + high + low + close
اس طرح پیک کیا جا سکتا ہے (نوٹ کریں کہ ہر لائن میں کم ہونے والی خالی جگہوں کی تعداد 4 کے مضارب نہیں ہے):
a = open +
high +
low +
close
ایک طویل پلاٹ ((() کال کو اس میں پیک کیا جاسکتا ہے۔
close1 = request.security(syminfo.tickerid, "D", close) // syminfo.tickerid 当前交易对的日线级别收盘价数据系列
close2 = request.security(syminfo.tickerid, "240", close) // syminfo.tickerid 当前交易对的240分钟级别收盘价数据系列
plot(ta.correlation(close, open, 100), // 一行长的plot()调用可以被包装
color = color.new(color.purple, 40),
style = plot.style_area,
trackprice = true)
صارف کے ذریعہ بیان کردہ فنکشن کے بیانات میں بیانات کو بھی احاطہ کیا جاسکتا ہے۔ تاہم ، چونکہ مقامی ٹکڑے کو نحو کے لحاظ سے سکڑنے کے ساتھ شروع ہونا ضروری ہے ((4 خالی جگہیں یا ایک نشان) ، لہذا جب اسے اگلی لائن میں تقسیم کیا جاتا ہے تو ، بیان کے تسلسل کا حصہ ایک سے زیادہ سکڑنے کے ساتھ شروع ہونا ضروری ہے ((4 خالی جگہوں کے مضامین کے برابر نہیں) ؛ مثال کے طور پر:
test(c, o) =>
ret = c > o ?
(c > o+5000 ?
1 :
0):
(c < o-5000 ?
-1 :
0)
a = test(close, open)
plot(a, title="a")
ٹائم سیریز ایک ڈیٹا کی قسم یا فارمیٹ نہیں ہے، ٹائم سیریز زبان PINE میں ایک بنیادی ساخت کا تصور ہے۔ یہ وقت میں مسلسل تبدیلیوں کی قدر کو ذخیرہ کرنے کے لئے استعمال کیا جاتا ہے، ہر قدر ایک وقت کے نقطہ سے متعلق ہے۔ ٹائم سیریز کے اس تصور کی ساخت کو وقت کے ساتھ ساتھ تبدیلیوں کے اعداد و شمار کے سلسلے میں عملدرآمد اور ریکارڈ کرنے کے لئے استعمال کیا جاتا ہے۔
بلٹ ان متغیراتopen
مثال کے طور پر:open
اگر آپ کو یہ معلوم ہے کہ آپ کے پاس ایک بار بار کی قیمت ہے تو آپ کو یہ معلوم ہونا چاہئے کہ آپ کے پاس ایک بار بار کی قیمت ہے.open
یہ 5 منٹ کے لئے K لائن سائیکل کے اعداد و شمار ہیں.open
متغیر میں ریکارڈ کیا جاتا ہے ہر 5 منٹ کے لئے K لائن BAR (بالم) کی قیمت کھولنا.open
یعنی موجودہ مقام پر K لائن BAR کی کھلی ہوئی قیمت کا حوالہ دیتے ہیں۔ وقت کے سلسلے میں پچھلی قیمت (ماضی کی قیمت) کا حوالہ دینے کے لئے ہم استعمال کرتے ہیں[]
تاریخ کا آپریٹر، جب پالیسی کسی K لائن BAR پر عملدرآمد ہوتی ہےopen[1]
اس کا مطلب یہ ہے کہ موجودہ K لائن BAR کے پچھلے K لائن BAR کی افتتاحی قیمت کا حوالہ دیا گیا ہے۔
اگرچہٹائم سیریزاعداد و شمار کے ڈھانچے کو "آرٹیکل" کے طور پر یاد کرنا آسان ہے، اگرچہ PINE زبان میں بھی آرٹیکل کی اقسام موجود ہیں۔ لیکن یہ وقت کی ترتیب سے بالکل مختلف تصورات ہیں۔
PINE زبان میں اس طرح سے ڈیزائن کردہ ٹائم سیریز کو حکمت عملی کے کوڈ میں آسانی سے حساب لگایا جاسکتا ہے ، اور اس کے لئے لکیری ڈھانچے کی ضرورت نہیں ہوتی ہے ، جیسے کہ صرف PINE زبان کا استعمال کرتے ہوئے بلٹ ان فنکشن۔ta.cum(close)
مثال کے طور پر، ہم نے آخری 14 K لائنوں BAR (یعنی 14 K لائنوں BAR) کے درمیان سب سے زیادہ قیمت اور سب سے کم قیمت کے درمیان فرق کا اوسط حساب کرنا ہے.ta.sma(high - low, 14)
اگر آپ کسی فنکشن کو ٹائم سیریز پر کال کرتے ہیں تو اس کا نتیجہ بھی ٹائم سیریز پر نشان لگا دیتا ہے۔[]
تاریخ کے آپریٹر سے پہلے کی قیمت کا حوالہ دیتے ہیں۔ مثال کے طور پر، ہم لکھ سکتے ہیں کہ اگر موجودہ K لائن BAR کی اختتامی قیمت آخری 10 K لائن BAR میں سے سب سے زیادہ قیمت کی زیادہ سے زیادہ ہے تو ہم لکھ سکتے ہیں:breach = close > ta.highest(close, 10)[1]
یہ بھی لکھا جا سکتا ہے:breach = close > ta.highest(close[1], 10)
◄ لہذاta.highest(close, 10)[1]
اورta.highest(close[1], 10)
اس کے علاوہ، ہم نے اس کے بارے میں کیا سوچا ہے؟
اس کی تصدیق مندرجہ ذیل کوڈ سے کی جا سکتی ہے:
strategy("test pine", "test", true)
a = ta.highest(close, 10)[1]
b = ta.highest(close[1], 10)
plotchar(true, title="a", char=str.tostring(a), location=location.abovebar, color=color.red)
plotchar(true, title="b", char=str.tostring(b), location=location.belowbar, color=color.green)
مندرجہ بالا ٹیسٹنگ کوڈ a اور b کو ہر BAR پر ان کے متعلقہ ٹائم سیریز کی قیمتوں کو آؤٹ پٹ کرتا ہے ، اور یہ دیکھا جاسکتا ہے کہ a اور b کی قیمتیں ہمیشہ برابر رہتی ہیں ، لہذا یہ دونوں نمائندگی کے طریقے برابر ہیں۔
PINE پالیسی کے اندرونی ٹیمپلیٹ "پائن زبان کے تبادلہ کلاس لائبریری" کے لئے پیرامیٹرز کی ترتیب کی وضاحتیں.
定价货币精度
پیرامیٹرز اور اس پیرامیٹر نے آرڈر کی جگہ پر سلائڈ کی قیمت کا تعین کیا۔ مثال کے طور پر ، قیمتوں کا تعین کرنسی کی درستگی کو 2 پر مقرر کیا گیا ہے ، یعنی ، دوسرے نمبر پر دائیں اور 0.01 تک درست ہے۔ پھر ، سلائڈ پوائنٹس کی تعداد ہر پوائنٹ پر 0.01 قیمتوں کا تعین کرنے والی اکائیوں کی نمائندگی کرتی ہے۔ اس وقت ، سلائڈ پوائنٹس کی تعداد 5 پر مقرر کی گئی ہے ، اور آرڈر کی جگہ پر سلائڈ کی قیمت 0.05 ہے ((سلائڈ اشارے آرڈر کی جگہ پر بہتر اور آرڈر کی تکمیل کے لئے زیادہ قیمت کا حصہ) ۔)javascript
حکمت عملی میں کال کریںSetMaxBarLen
فنکشن ایک ہی کام کرتا ہے۔strategy(title = "open long example", pyramiding = 3) // pyramiding 允许的同方向下单的次数
strategy.entry("long1", strategy.long, 0.01) // 市价开多仓,指定分组标签为long1
strategy.entry("long2", strategy.long, 0.02, when = close > ta.ema(close, 10)) // 条件触发,执行下单,市价开多仓
strategy.entry("long3", strategy.long, 0.03, limit = 30000) // 指定(较低的)价格,计划下买单订单,等待成交开仓,限价开仓
strategy(title = "close long example", pyramiding = 2) // pyramiding 允许的同方向下单的次数
strategy.entry("long1", strategy.long, 0.1) // 市价开多仓,指定分组标签为long1
strategy.entry("long2", strategy.long, 0.1) // 市价开多仓,指定分组标签为long2
strategy.close("long1", when = strategy.position_size > 0.1, qty_percent = 50, comment = "close buy entry for 50%") // 平仓,指定平掉分组标签为long1的仓位的50%持仓
strategy.close("long2", when = strategy.position_size > 0.1, qty_percent = 80, comment = "close buy entry for 80%") // 平仓,指定平掉分组标签为long2的仓位的80%持仓
PINE زبان میں ہولڈنگ کا طریقہ کار ایک طرفہ ہولڈنگ کی طرح ہے۔ مثال کے طور پر ، جب ایک سے زیادہ سمت کی پوزیشن ہوتی ہے تو ، اگر فروخت کے لئے آپریشن کے احکامات ، منصوبے وغیرہ ہوتے ہیں تو ، یہ پہلے ایک طرفہ پوزیشن کو ختم کردے گا (تمام کثیر سمتوں کو ختم کردے گا) اور پھر اس کے بعد ایک ٹرگر پر عملدرآمد کرے گا (پہلے سے ہی ہولڈنگ کی سمت کے برعکس)
اگر آپ کسی بھی قیمت کی وضاحت نہیں کرتے ہیں تو ، جب آپ نیچے کی ہدایت کا استعمال کرتے ہیں تو ، مارکیٹ کی قیمت کو ڈیفالٹ کی حیثیت سے دیکھتے ہیں۔ مارکیٹ کی قیمت کے علاوہ ، آپ منصوبہ بندی کی فہرست کے ذریعہ بھی آرڈر کرسکتے ہیں ، منصوبہ بندی کی فہرست فوری طور پر کام نہیں کرتی ہے۔ منصوبہ بندی کی فہرست اس وقت موجود ہے جب پروگرام کی منصوبہ بندی کی قطار میں کوئی پروگرام موجود نہیں ہے ، اور اس کے بعد آپ کو اس کی فہرست میں شامل کیا جاسکتا ہے۔ریئل ڈسک / ریٹیسٹوقت کی حیثیت کی معلومات (یعنی جب حکمت عملی چل رہی ہے تو اس کی حیثیت کا ٹیب) "منصوبہ بندی کے احکامات" ٹیبل میں دیکھا جاتا ہے۔ جب مارکیٹ میں حقیقی وقت کی قیمتوں کی شرائط پوری ہوتی ہیں تو نظام ان احکامات کو ٹرگر کرتا ہے۔ لہذا ان احکامات میں ٹرانزیکشن کی قیمتوں میں معمولی انحراف معمول کی صورت میں ہوتا ہے۔ استعمالstrategy.entry
اور جب ہم ایک فنکشن کو ترتیب دیتے ہیں، تو ہم اس کی وضاحت کر سکتے ہیںlimit
、stop
پیرامیٹرز۔
var isTrade = false
if not barstate.ishistory and not isTrade
isTrade := true
strategy.entry("test 1", strategy.long, 0.1, stop=close*1.3, comment="test 1 order") // stop
strategy.entry("test 2", strategy.long, 0.2, limit=close*0.7, comment="test 2 order") // limit
strategy.entry("test 3", strategy.short, 0.3, stop=close*0.6, limit=close*1.4, comment="test 3 order") // stop-limit
حد کا حکم
آرڈر کی حد مقرر کریں، جب آرڈر ادائیگی کے لئے ہے (یعنی)direction
پیرامیٹر:strategy.long
اس کے علاوہ ، اس کے بعد سے ، اس کے بعد سے ، اس کے بعد سے ، اس کے بعد سے ، اس کے بعد سے ، اس کے بعد سے ، اس کے بعد سے ، اس کے بعد سے ، اس کے بعد سے.
جب آرڈر فروخت کے لئے ہے (یعنی)direction
پیرامیٹر:strategy.short
اس کے علاوہ ، اس کے بعد سے ، اس کے بعد سے ، اس کے بعد سے ، اس کے بعد سے ، اس کے بعد سے ، اس کے بعد سے ، اس کے بعد سے ، اس کے بعد سے ، اس کے بعد سے.
سٹاپ آرڈر
آرڈر کی روک تھام کی قیمت مقرر کریں ، جب آرڈر خریدنے کے لئے ہوتا ہے تو ، آرڈر صرف اس وقت ٹرگر ہوتا ہے جب مارکیٹ کی موجودہ قیمت اس سے زیادہ ہوتی ہے۔ جب آرڈر فروخت کا ہوتا ہے تو ، آرڈر صرف اس وقت ٹرگر ہوتا ہے جب مارکیٹ کی موجودہ قیمت اس سے کم ہوتی ہے۔
سٹاپ-لمٹ آرڈر
ایک ہی وقت میں مقرر کیا جا سکتا ہےlimit
、stop
پیرامیٹرز ، آرڈر کو پہلے قابل قیمت پر متحرک کیا جاتا ہے۔
var ایک کلیدی لفظ ہے جو متغیرات کو تفویض کرنے اور ایک بار شروع کرنے کے لئے استعمال ہوتا ہے۔ عام طور پر ، متغیر تفویض کے نحو میں جس میں کلیدی لفظ var شامل نہیں ہوتا ہے اس کا نتیجہ یہ ہوتا ہے کہ جب بھی ڈیٹا اپ ڈیٹ ہوتا ہے تو متغیر کی قیمتوں میں اضافہ ہوتا ہے۔ اس کے برعکس ، جب کلیدی لفظ var استعمال کرتے ہوئے متغیرات کو تفویض کیا جاتا ہے تو ، اگرچہ ڈیٹا اپ ڈیٹ ہوتا ہے ، لیکن وہ اس کی حالت کو برقرار رکھ سکتے ہیں ، اور اسے صرف اس وقت تبدیل کرسکتے ہیں جب وہ if-expressions میں موجود شرائط کو پورا کرتے ہیں۔
var variable_name = expression
وضاحت:
variable_name
- پائن اسکرپٹ میں صارف متغیر کا کوئی بھی نام اجازت دیتا ہے ((جس میں بڑے اور چھوٹے لکھے ہوئے لاطینی حروف ، اعداد اور نیچے کی لائنیں شامل ہوسکتی ہیں ، لیکن اعداد سے شروع نہیں ہوسکتی ہیں)) ؛expression
- کسی بھی حساباتی اظہار، جیسے کہ ایک باقاعدہ متغیر کی وضاحت کریں۔ ایک حساب کا اظہار اور متغیر کو ایک بار تفویض کریں۔مثالیں
// Var keyword example
var a = close
var b = 0.0
var c = 0.0
var green_bars_count = 0
if close > open
var x = close
b := x
green_bars_count := green_bars_count + 1
if green_bars_count >= 10
var y = close
c := y
plot(a, title = "a")
plot(b, title = "b")
plot(c, title = "c")
متغیر
ایف ایم زیڈ پر ، ریئل ٹائم قیمت ماڈل ، بندش قیمت ماڈل ، اور مارکیٹنگ کے لئے مارکیٹنگ ماڈل میں تقسیم کیا گیا ہے۔var
、varip
ہم نے مندرجہ ذیل کوڈ کا استعمال کرتے ہوئے ٹیسٹ کیا.
strategy("test pine", "test 1", true)
// 测试 var varip
var i = 0
varip ii = 0
// 将策略逻辑每轮改变的i、ii打印在图上
plotchar(true, title="ii", char=str.tostring(ii), location=location.abovebar, color=color.red)
plotchar(true, title="i", char=str.tostring(i), location=location.belowbar, color=color.green)
// 每轮逻辑执行都给i、ii递增1
if true
i := i + 1
ii := ii + 1
ریئل ٹائم قیمت ماڈل
مندرجہ بالا ٹیسٹنگ کوڈ کو دو مراحل میں تقسیم کیا گیا ہے: 1، تاریخی K لائن مرحلہ؛ 2، حقیقی وقت میں K لائن مرحلہ؛ جب حقیقی وقت کی قیمت ماڈل، تاریخی K لائن مرحلے میں، آپ کی قیمتوں کا تعین کرنے کے لئے آپ کی قیمتوں کا تعین کرنے کے لئے آپ کی قیمتوں کا تعین کرنے کے لئے آپ کی قیمتوں کا تعین کرنے کے لئے آپ کی قیمتوں کا تعین کرنے کے لئے.var
、varip
بیان کردہ متغیر i، ii ہر بار جب پالیسی کا کوڈ چلایا جاتا ہے تو اضافہ ہوتا ہے کیونکہ (((if true
لہذا یقینی طور پر اس کے مطابق عملدرآمد کی شرط کوڈ بلاکس) ؛ لہذا آپ کو دیکھ سکتے ہیں کہ نتیجہ K لائن BAR پر ظاہر ہونے والے اعداد میں سے ہر ایک میں اضافہ ہوتا ہے 1؛ جب تاریخ K لائن مرحلے ختم ہوجاتا ہے تو ، حقیقی وقت K لائن مرحلے کا آغاز ہوتا ہے۔var
、varip
یہ ایک حقیقی وقت کی قیمت ماڈل ہے، کیونکہ ایک K لائن BAR میں ہر قیمت کی تبدیلی کے لئے ایک بار پھر حکمت عملی کا کوڈ چلایا جاتا ہے.i := i + 1
اورii := ii + 1
فرق یہ ہے کہ ii ہر بار ترمیم کی جاتی ہے۔ اگرچہ i ہر بار ترمیم کی جاتی ہے ، لیکن اگلے دور میں حکمت عملی کی منطق کو انجام دینے پر اس کی پچھلی قیمت کو بحال کیا جاتا ہے ، جب تک کہ موجودہ K لائن BAR ختم نہ ہو جائے۔ لہذا آپ دیکھ سکتے ہیں کہ متغیر i اب بھی ہر بار بار 1 ہے۔ لیکن متغیر ii ہر بار بار میں کئی بار اضافہ ہوتا ہے۔
اختتامی قیمت کا ماڈل
چونکہ اختتامی قیمت کا ماڈل ہر K لائن BAR کے ختم ہونے پر ایک بار حکمت عملی کا نفاذ کرتا ہے۔ لہذا اختتامی قیمت کے ماڈل میں ، تاریخی K لائن مرحلے اور حقیقی وقت کے K لائن مرحلے کو ایک ہی وقت میں کیا جاتا ہے۔var
、varip
بیان کردہ متغیرات مندرجہ بالا مثالوں میں بڑھتے ہوئے بالکل یکساں طور پر ظاہر ہوتے ہیں ، ہر K لائن BAR میں 1 اضافہ ہوتا ہے۔
varip (var intrabar persist) ایک کلیدی لفظ ہے جو متغیرات کو تفویض اور ایک بار میں شروع کرنے کے لئے استعمال ہوتا ہے۔ یہ var کی کلید کی طرح ہے ، لیکن متغیر کے لئے استعمال کیا جاتا ہے varip بیان کے ساتھ حقیقی وقت میں K لائنوں کی تازہ کاری کے درمیان اس کی قدر برقرار رکھیں۔
varip variable_name = expression
وضاحت:
variable_name
- کسی بھی صارف متغیر کا نام جو پائن اسکرپٹ میں اجازت دیتا ہے ((اس میں بڑے اور چھوٹے لکھے ہوئے لاطینی حروف ، ہندسوں اور نیچے والے خطوط شامل ہوسکتے ہیں ، لیکن اعداد سے شروع نہیں ہوسکتے ہیں)) ؛expression
- کسی بھی حساباتی اظہار، جیسے کہ باقاعدہ متغیر کی تعریف کرتے وقت۔ پہلی K لائن پر، اظہار صرف ایک بار شمار کیا جاتا ہے اور متغیر کو ایک بار تفویض کیا جاتا ہے۔مثالیں
// varip
varip int v = -1
v := v + 1
plot(v)
جب var کا استعمال کیا جاتا ہے تو ، گراف بار_انڈیکس کی قدر واپس کرتا ہے۔ varip کا استعمال کرتے ہوئے ، اسی طرح کا رویہ تاریخی K لائن پر ہوتا ہے ، لیکن حقیقی وقت میں K لائن پر ، یہ گراف ایک قدر واپس کرتا ہے ، جس میں ہر ٹک کے لئے ایک اضافہ ہوتا ہے۔
نوٹصرف سادہ اقسام کے ساتھ استعمال کیا جا سکتا ہے، جیسے float،int،bool،string، اور ان اقسام کی صفوں کے ساتھ۔
ایک Boolean قسم کے متغیر کی قدر کی وضاحت کرتا ہے، یا جب ایک اظہار استعمال کیا جاتا ہےموازنہیامنطقآپریٹرز کی طرف سے شمار کیا جا سکتا ہے کہ اقدار.
نوٹبرائے مہربانی دیکھیںموازنہآپریٹرز اورمنطقآپریٹر کی وضاحت۔
دوبارہ ملیں گے
bool
ایک Boolean قسم کے متغیر کی قدر، اور موازنہ آپریشن، منطقی آپریشن کے نتائج کا اشارہ کرتا ہے۔
نوٹبرائے مہربانی دیکھیںموازنہآپریٹرز اورمنطقآپریٹر کی وضاحت۔
دوبارہ ملیں گے
bool
اگر بیانات بیانات کے بلاکس کی وضاحت کرتے ہیں جو اظہار کی شرائط کو پورا کرنے پر عملدرآمد کرنا ضروری ہے۔ چوتھے ایڈیشن کی پائین اسکرپٹ زبان آپ کو
عام کوڈ:
var_declarationX = if condition
var_decl_then0
var_decl_then1
...
var_decl_thenN
return_expression_then
else if [optional block]
var_decl_else0
var_decl_else1
...
var_decl_elseN
return_expression_else
else
var_decl_else0
var_decl_else1
...
var_decl_elseN
return_expression_else
نوٹ
var_declarationX
- یہ متغیر اگر بیان کی قدر حاصل کرتا ہےcondition
- اگر شرط درست ہے تو جملہ بلاک استعمال کریںthen
منطق میں ((var_decl_then0
,var_decl_then1
وغیرہ۔ اگر شرط غلط ہے تو جملہ بلاک استعمال کریں۔else if
یاelse
منطق میں ((var_decl_else0
,var_decl_else1
وغیرہ) ◄return_expression_then , return_expression_else
- ماڈیول میں آخری اظہار یا بلاکelse سے آنے والا اظہار بیان کی آخری قیمت واپس کرے گا۔ اگر متغیر کا اعلان آخر میں ہوتا ہے تو ، اس کی قیمت نتائج کی قیمت ہوگی۔
اگر بیان کی واپسی کی قدر کی قسم پر منحصر ہےreturn_expression_then
اورreturn_expression_else
ٹائپ کریں۔ TradeView پر چلنے پر ان کی اقسام کو مماثل ہونا ضروری ہے: جب آپ کے پاسelse بلاک میں ایک سٹرنگ ویلیو ہے تو ، پھر اسٹیٹمنٹ بلاک سے ایک انٹیجر ویلیو واپس کرنا ناممکن ہے۔ FMZ پر چلنے پر ، مندرجہ ذیل مثال غلطیاں واپس نہیں کرتی ہے ، جب y ویلیو کو "open" کہا جاتا ہے تو ، جب پلاٹ گراف تیار ہوتا ہے تو اس کی قدر n / a ہوتی ہے۔
مثالیں
// This code compiles
x = if close > open
close
else
open
// This code doesn’t compile by trading view
// y = if close > open
// close
// else
// "open"
plot(x)
چھوڑ سکتے ہیںelse
بلاک۔ اس صورت میں ، اگر شرط غلط ہے تو ، var_declarationX متغیر کے لئے ایک
مثالیں
// if
x = if close > open
close
// If current close > current open, then x = close.
// Otherwise the x = na.
plot(x)
آپ کو ایک سے زیادہ
مثالیں
// if
x = if open > close
5
else if high > low
close
else
open
plot(x)
نظر انداز کیا جا سکتا ہےif
جملے کا نتیجہ قدر ((
مثالیں
if (ta.crossover(high, low))
strategy.entry("BBandLE", strategy.long, stop=low)
else
strategy.cancel(id="BBandLE")
اگر جملے ایک دوسرے کو شامل کر سکتے ہیں:
مثالیں
// if
float x = na
if close > open
if close > close[1]
x := close
else
x := close[1]
else
x := open
plot(x)
'for' لنک کی ساخت ایک سے زیادہ جملوں کو بار بار کرنے کی اجازت دیتی ہے:
[var_declaration =] for counter = from_num to to_num [by step_num]
statements | continue | break
return_expression
var_declaration
- ایک اختیاری متغیر کا اعلان ، جسے واپس کرنے کے ل return_expression کی قدر کے طور پر تفویض کیا جائے گا۔counter
- ری سائیکل ٹائمر کی قدر کو محفوظ کرتا ہے، ری سائیکل کے ہر تکرار میں 1 یا step_num قدر میں اضافہ / کمی؛from_num
- ٹائمٹر کی ابتدائی قیمت۔؛ انٹ / فلوٹ کی حد / اظہار کا استعمال کرنے کی اجازت دیتا ہے۔؛to_num
- ٹائمر کی حتمی قیمت۔ جب ٹائمر to_num سے بڑا ہوتا ہے ((یا to_num سے کم ہوتا ہے جب from_num > to_num ہوتا ہے) تو لپیٹ میں رکاوٹ آتی ہے۔ int/float thresholds/expressions کا استعمال کرنے کی اجازت ہے لیکن وہ صرف لپیٹ کی پہلی تکرار کے دوران ہی جائزہ لیا جاتا ہے۔step_num
- ٹینکر کی بڑھتی ہوئی / گھٹتی ہوئی قیمت۔ یہ اختیاری ہے۔ ڈیفالٹ قیمت + 1 یا -1 ہے ، خاص طور پر from_num یا to_num میں سے کسی ایک پر منحصر ہے۔ جب قیمت استعمال کی جاتی ہے تو ، ٹینکر بھی from_num یا to_num میں سے کسی ایک پر منحصر ہوتا ہے ، لہذا step_num کی + / - علامت اختیاری ہے۔statements | continue | break
- کسی بھی تعداد میں جملے، یا continuous or break keywords کو 4 خالی جگہوں یا tabs میں سکیڑیںreturn_expression
- لوپ کی واپسی کی قیمت ، اگر موجود ہو تو ، var_declaration میں متغیر کو تفویض کی جاتی ہے۔ اگر لوپ کی وجہ سے لوپ سے باہر نکل جاتا ہے تو ، لوپ کی واپسی کی قیمت آخری متغیر کی واپسی کی قیمت ہے جس کو لوپ سے باہر نکلنے سے پہلے تفویض کیا گیا تھا۔continue
- صرف ریورس میں استعمال کیا جا سکتا ہے کہ مطلوبہ الفاظ. یہ ریورس کے اگلے تکرار پر عملدرآمد کے نتیجے میں.break
- واپس آنے کے لئے کلیدی الفاظ.
مثالیں
// Here, we count the quantity of bars in a given 'lookback' length which closed above the current bar's close
qtyOfHigherCloses(lookback) =>
int result = 0
for i = 1 to lookback
if close[i] > close
result += 1
result
plot(qtyOfHigherCloses(14))
دوبارہ ملیں گے
for...in
while
for...in
یہ ساخت صف کے ہر عنصر کے لئے متعدد بیانات کی تکرار کی اجازت دیتی ہے۔ یہ کسی بھی پیرامیٹر کے ساتھ استعمال کیا جاسکتا ہے:array_element
آپ کو اس کے بارے میں مزید جاننے کی ضرورت ہے۔[index, array_element]
❖ دوسری شکل لوپ کی تقریب کو متاثر نہیں کرتی ❖ یہ ایٹم سیٹ کے پہلے متغیر میں موجودہ تکرار کے انڈیکس کو ٹریک کرتی ہے۔
[var_declaration =] for array_element in array_id
statements | continue | break
return_expression
[var_declaration =] for [index, array_element] in array_id
statements | continue | break
return_expression
var_declaration
- ایک اختیاری متغیر کا اعلان، جو کہ لوپ کے لئے دیا جائے گاreturn_expression
اس کی قیمت ہے۔index
- موجودہ تکرار انڈیکس کے اختیارات متغیر کا سراغ لگاتا ہے۔ ▲ انڈیکس 0 سے شروع ہوتا ہے۔ ▲ متغیر لپیٹ میں غیر متغیر ہے۔ ▲ جب استعمال کیا جاتا ہے تو اسے ایک میں بھی شامل ہونا ضروری ہے۔array_element
اس کے علاوہ، ہم نے اس کے بارے میں کیا سوچا ہے؟array_element
- جس میں ہر مسلسل صف کے عناصر کے متغیرات شامل ہیں جو اس لکیری میں کام کرنے کے لئے ہیں۔ یہ متغیر لکیری میں غیر متغیر ہے۔array_id
- سرپل بار بار چلنے والی صفوں کی شناخت۔statements | continue | break
- کسی بھی تعداد میں جملے، یا continuous or break keywords کو 4 خالی جگہوں یا tabs میں سکیڑیںreturn_expression
- ایک loop کے واپسی کی قدر کے لئے مختص کیا جاتا ہےvar_declaration
اندرونی متغیرات، اگر موجود ہوں۔ اگر لوپ لوپ کو چھوڑ دیتا ہے تو اس کی واپسی کی قیمت لوپ سے باہر نکلنے سے پہلے آخری تفویض شدہ متغیر ہے۔continue
- صرف ریورس میں استعمال کیا جا سکتا ہے کہ مطلوبہ الفاظ. یہ ریورس کے اگلے تکرار پر عملدرآمد کے نتیجے میں.break
- واپس آنے کے لئے کلیدی الفاظ.
لپیٹ میں صف کے عناصر یا ان کے سائز کو تبدیل کرنے کی اجازت دیتا ہے۔
یہاں ہم استعمال کرتے ہیںfor...in
ایک واحد پیرامیٹر کی شکل میں یہ طے کیا جاتا ہے کہ ہر K لائن پر کتنے K لائنوں کی OHLC قیمت قریبی حد سے زیادہ ہے:
مثالیں
// Here we determine on each bar how many of the bar's OHLC values are greater than the SMA of 'close' values
float[] ohlcValues = array.from(open, high, low, close)
qtyGreaterThan(value, array) =>
int result = 0
for currentElement in array
if currentElement > value
result += 1
result
plot(qtyGreaterThan(ta.sma(close, 20), ohlcValues))
یہاں، ہم نے استعمال کیا ہے کے لئے... میں دو شرائط کی شکل میں ہمارےisPos
اور اس کے بعد آپ کو اس کے بعد ایک بار پھر اس کا جواب دینا ہوگا.true
جب وہ ہمارے اندر ہیں،valuesArray
اعداد و شمار میں مساوی اقدار صحیح وقت پر ہیں:
مثالیں
// for...in
var valuesArray = array.from(4, -8, 11, 78, -16, 34, 7, 99, 0, 55)
var isPos = array.new_bool(10, false)
for [index, value] in valuesArray
if value > 0
array.set(isPos, index, true)
if barstate.islastconfirmedhistory
runtime.log(str.tostring(isPos))
دوبارہ ملیں گے
for
while
array.sum
array.min
array.max
while
اسٹیٹمنٹ مقامی کوڈ بلاکس کی شرائط کی تکرار کی اجازت دیتا ہے۔
variable_declaration = while boolean_expression
...
continue
...
break
...
return_expression
وضاحت:variable_declaration
- اختیاری متغیر بیانات۔return expression
اس متغیر کے لئے ابتدائیہ قدر فراہم کی جا سکتی ہے۔boolean_expression
- اگر یہ سچ ہے تو، عملدرآمدwhile
جملہ کا مقامی بلاک۔ اگر یہ غلط ہے تو ،while
جملے کے بعد اسکرپٹ پر عملدرآمد جاری رکھیں۔continue
- continue
کلیدی الفاظ کی وجہ سے اگلے آئٹم تک ری سائیکلنگ شاخیں ہوتی ہیں۔break
- break
مطلوبہ الفاظ کے نتیجے میں اسکرپٹ کے عملدرآمد میں رکاوٹ پیدا ہوتی ہے۔while
جملے کے بعد دوبارہ شروع کریں۔return_expression
- فراہم کرتا ہےwhile
جملے کی واپسی کی قیمت کے لئے اختیاری لائنیں.
مثالیں
// This is a simple example of calculating a factorial using a while loop.
int i_n = input.int(10, "Factorial Size", minval=0)
int counter = i_n
int factorial = 1
while counter > 0
factorial := factorial * counter
counter := counter - 1
plot(factorial)
نوٹابتدائیwhile
لائن کے بعد مقامی کوڈ بلاک کو چار خالی جگہوں یا ایک ٹائم لائن میں کم کرنا ضروری ہے۔while
چکر لگاناwhile
پچھلے بول اظہار کو بالآخر غلط ہونا ضروری ہے، یا اسے عملدرآمد کرنا ہوگاbreak
。
سوئچ آپریٹر شرائط اور اظہار کی قدر کے مطابق کنٹرول کو کئی بیانات میں سے کسی ایک میں منتقل کرتا ہے۔
[variable_declaration = ] switch expression
value1 => local_block
value2 => local_block
...
=> default_local_block
[variable_declaration = ] switch
boolean_expression1 => local_block
boolean_expression2 => local_block
...
=> default_local_block
اس کا مطلب یہ ہے کہ آپ کو اس کے بارے میں مزید جاننے کی ضرورت ہے۔
مثالیں
// Switch using an expression
string i_maType = input.string("EMA", "MA type", options = ["EMA", "SMA", "RMA", "WMA"])
float ma = switch i_maType
"EMA" => ta.ema(close, 10)
"SMA" => ta.sma(close, 10)
"RMA" => ta.rma(close, 10)
// Default used when the three first cases do not match.
=> ta.wma(close, 10)
plot(ma)
اس کا مطلب یہ ہے کہ آپ کو اس کے بارے میں مزید جاننے کی ضرورت نہیں ہے۔
مثالیں
strategy("Switch without an expression", overlay = true)
bool longCondition = ta.crossover( ta.sma(close, 14), ta.sma(close, 28))
bool shortCondition = ta.crossunder(ta.sma(close, 14), ta.sma(close, 28))
switch
longCondition => strategy.entry("Long ID", strategy.long)
shortCondition => strategy.entry("Short ID", strategy.short)
واپسی کی قیمتایک لفظ کے آخری حصے کی قدر۔
نوٹصرف انجام دے سکتے ہیںlocal_block
مثال یاdefault_local_block
ایک۔۔۔۔۔۔۔default_local_block
صرف اور صرف=>
نشان کے ساتھ ساتھ متعارف کرایا جاتا ہے، اور صرف اس وقت جب پچھلے بلاک کو انجام نہیں دیا جاتا ہے؛ اگرswitch
بیان کا نتیجہ ایک متغیر کو تفویض کیا جاتا ہے اور اس کی وضاحت نہیں کی جاتی ہےdefault_local_block
اگر آپ نے اسے نہیں کیا توlocal_block
یہ جملہ واپس آ جاتا ہےna
◄ ہو جائے گاswitch
جب جملے کے نتائج متغیر کو تفویض کیے جاتے ہیں، تو تمامlocal_block
مثالیں ایک ہی قسم کی قدر واپس کرنا ضروری ہے۔
دوبارہ ملیں گے
if
?:
سیریز ایک کلیدی لفظ ہے جو ڈیٹا سیریز کی قسم کی نمائندگی کرتا ہے۔ واضح استعمال۔series
عام طور پر مطلوبہ الفاظ کی ضرورت نہیں ہوتی ہے۔
متغیرات کو تفویض کرنے کے لئے استعمال کیا جاتا ہے، لیکن صرف جب متغیرات کا اعلان کیا جاتا ہے (پہلی بار استعمال) ؛
انتباہی آپریٹر، بائیں جانب متغیرات کو انتباہ دیتا ہے۔ اس کا استعمال پہلے بیان کردہ متغیرات کے لئے کیا جاتا ہے۔
اس کے برابر نہیں ہے۔ اس کا اطلاق کسی بھی قسم کے اظہار پر ہوتا ہے۔
expr1 != expr2
واپسی کی قیمتایک بل ویلیو، یا بل ویلیو سیریز۔
ماڈل ((پوری عددی اعشاریہ) ؛ عددی اظہار کے لئے لاگو ہوتا ہے۔
expr1 % expr2
واپسی کی قیمتانٹیجرز یا فلوٹ پوائنٹس، یا اقدار کی ایک سیریز.
نوٹپائین اسکرپٹ میں، جب عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی عددی
مثال: -1٪ 9 = -1 - 9 * truncate ((-1/9) = -1 - 9 * truncate ((-0.111) = -1 - 9 * 0 = -1.
ماڈیولر اشارے↑ عددی اظہار کے لئے استعمال ہوتا ہے۔
expr1 %= expr2
مثالیں
// Equals to expr1 = expr1 % expr2.
a = 3
b = 3
a %= b
// Result: a = 0.
plot(a)
واپسی کی قیمتانٹیجرز یا فلوٹ پوائنٹس، یا اقدار کی ایک سیریز.
ضربات۔٭ عددی اظہار کے لیے استعمال ہوتی ہیں۔٭
expr1 * expr2
واپسی کی قیمتانٹیجرز یا فلوٹ پوائنٹس، یا اقدار کی ایک سیریز.
ضرب کا اشارہ۔٭ عددی اظہار کے لیے۔٭
expr1 *= expr2
مثالیں
// Equals to expr1 = expr1 * expr2.
a = 2
b = 3
a *= b
// Result: a = 6.
plot(a)
واپسی کی قیمتانٹیجرز یا فلوٹ پوائنٹس، یا اقدار کی ایک سیریز.
اضافی یا یکتا صحیح نمبر۔ عددی اظہار یا سٹرنگ کے لئے استعمال ہوتا ہے۔
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)
واپسی کی قیمتسٹرنگ کے لئے، expr1 اور expr2 کے سلسلے کو واپس لاتا ہے۔ اعداد کے لئے، ایک انٹیجر یا فلوٹ پوائنٹ کی قدر، یا اقدار کی ایک سیریز واپس لاتا ہے۔
نوٹآپ اعداد کے ساتھ ریاضیاتی آپریٹرز اور متغیرات کی تعداد کے ساتھ استعمال کرسکتے ہیں۔ آپریٹرز کو عناصر پر لاگو کیا جاتا ہے جب آپریٹرز کو استعمال کیا جاتا ہے۔
ضابطہ تخفیف یا ایک منفی عددیہ۔ عددی اظہار کے لئے لاگو ہوتا ہے۔
expr1 - expr2
- expr
واپسی کی قیمتعددی یا فلوٹ پوائنٹ کی قدر، یا اقدار کی ایک سیریز لوٹاتا ہے:
ثنائی پلاسٹک +'واپسی exp1 مائنس exp2//
ایک یوآن-
expr کے منفی جملے واپس کرتا ہے۔
نوٹآپ اعداد کے ساتھ ریاضیاتی آپریٹرز اور متغیرات کی تعداد کے ساتھ استعمال کرسکتے ہیں۔ آپریٹرز کو عناصر پر لاگو کیا جاتا ہے جب آپریٹرز کو استعمال کیا جاتا ہے۔
ذیلی ضابطے کا تعین کریں۔ یہ عددی اظہار کے لیے استعمال ہوتا ہے۔
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)
واپسی کی قیمتاگر expression1 true کا جائزہ لیا جاتا ہے تو expression2 true کا جائزہ لیا جاتا ہے، ورنہ expression3 true کا۔ صفر کی قدر ((0 اور NaN+، Infinity-Infinity) false کے طور پر سمجھا جاتا ہے، اور دیگر تمام اقدار true کے طور پر سمجھا جاتا ہے۔
نوٹاگر آپ کو اس کی ضرورت نہیں ہے تو ، براہ کرم 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
واپسی کی قیمتایک بل ویلیو، یا بل ویلیو سیریز۔
واضح طور پر بیان کردہ متغیرات یا پیرامیٹرز کے لیے استعمال ہونے والے بول کی قسم کے مطلوبہ الفاظ۔ متغیر "بول" کی قدر true، false یا na ہو سکتی ہے۔
مثالیں
// bool
bool b = true // Same as `b = true`
b := na
plot(b ? open : close)
نوٹمتغیر کے بیان میں واضح طور پر قسم کا ذکر کرنا اختیاری ہے ، جب تک کہ یہ نا کے ساتھ شروع نہ ہو جائے۔ قسم کے نظام کے صارف دستی صفحے پر پائن کی قسم کے بارے میں مزید معلومات حاصل کریں۔
دوبارہ ملیں گے
var
varip
int
float
color
string
true
false
مثالیں
// int
int i = 14 // Same as `i = 14`
i := na
plot(i)
نوٹمتغیر کے بیان میں واضح طور پر قسم کا ذکر کرنا اختیاری ہے ، جب تک کہ یہ نا کے ساتھ شروع نہ ہو جائے۔ قسم کے نظام کے صارف دستی صفحے پر پائن کی قسم کے بارے میں مزید معلومات حاصل کریں۔
دوبارہ ملیں گے
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)
نوٹمتغیر کے بیان میں واضح طور پر قسم کا ذکر کرنا اختیاری ہے ، جب تک کہ یہ نا کے ساتھ شروع نہ ہو جائے۔ قسم کے نظام کے صارف دستی صفحے پر پائن کی قسم کے بارے میں مزید معلومات حاصل کریں۔
دوبارہ ملیں گے
var
varip
int
float
bool
str.tostring
str.format
رنگ کی قسم کے مطلوبہ الفاظ جو واضح طور پر متغیرات یا پیرامیٹرز کا اعلان کرتے ہیں۔
مثالیں
// color
color textColor = color.green
if barstate.islastconfirmedhistory
runtime.log("test", textcolor = textColor)
نوٹرنگین حروف کی شکل درج ذیل ہے: #RRGGBB یا #RRGGBBAA ؛ حروف 00 سے FF تک کے سولہ عددی اقدار کی نمائندگی کرتے ہیں (عشریاتی 0 سے 255 تک) ، جہاں RR ، GG اور BB رنگوں کے سرخ ، سبز اور نیلے رنگ کے پہلوؤں کی قدر ہیں۔ AA رنگ کی شفافیت (یا الفا پہلوؤں کی اختیاری قدر ہے ، جس میں 00 پوشیدہ ہے ، FF شفاف نہیں ہے۔ جب AA درست نہیں ہے تو ، FF کا استعمال کریں۔ سولہ عددی حروف بڑے یا چھوٹے ہوسکتے ہیں۔ متغیر کے بیان میں واضح طور پر قسم کا ذکر کرنا اختیاری ہے ، جب تک کہ یہ نا کے ساتھ شروع نہ ہو جائے۔ قسم کے نظام کے صارف دستی صفحے پر پائن کی قسم کے بارے میں مزید معلومات حاصل کریں۔
دوبارہ ملیں گے
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
جب فنکشن کو بلایا جاتا ہے تو پیرامیٹرز کو منتقل کیا جاسکتا ہے ، پیرامیٹر ناموں کی تفویض کی جاسکتی ہے ، متغیرات کو براہ راست پیرامیٹرز کی جگہ پر منتقل کیا جاسکتا ہے ، اور اس میں مخلوط استعمال کی بھی حمایت کی جاسکتی ہے۔ مثال کے طور پر:
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
>=
دوبارہ ملیں گے
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: 2022-01-26 09:00:00
end: 2024-02-01 15:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_CTP","currency":"FUTURES"}]
*/
// 图表地址https://www.datadata.cn/queries/a10ea45c-1674-48ef-b414-cc17a7e4a548
var chart_data = "https://www.datadata.cn/api/v1/query/a10ea45c-1674-48ef-b414-cc17a7e4a548/data"
add_investor = request.data(chart_data, "$.add_investor")
idx_price = request.data(chart_data, "$.close_price")
plot(add_investor, "股市新增人口")
plot(idx_price, "股指价格")
// 反指交易
avg_investor = ta.ema(add_investor[1], 30)
if strategy.position_size == 0
if add_investor > avg_investor*1.1
runtime.log("新增人口:", add_investor, "近30天平均:", avg_investor, "#ff0000")
strategy.entry("Enter Short", strategy.short)
else if add_investor < avg_investor*0.9
runtime.log("新增人口:", add_investor, "近30天平均:", avg_investor, "#ff0000")
strategy.entry("Enter Long", strategy.long)
واپسی کی قیمتپیرامیٹرزattribute
اعداد و شمار کی مخصوص سیریز۔
پیرامیٹرز
url
(simple string) درخواست کردہ ڈیٹا ماخذ کا یو آر ایل ، ڈیٹا ماخذ کا جواب دینے والے ڈیٹا فارمیٹ کی ضرورت ہے (کم از کم وقت ، ڈیٹا کی خصوصیات پر مشتمل ہے):{"data": [], "schema": ["time", "data"]}
مثال کے طور پر، اعداد و شمار کی شکل کا حوالہ دیتے ہوئے:{
"data": [
[1430438400000, "2015年04月", "{\"add_investor\" : 497.53, \"close_price\" : 4441.655}"],
[1433116800000, "2015年05月", "{\"add_investor\" : 415.87, \"close_price\" : 4611.744}"]
// ...
],
"schema": ["time", "date", "data"]
}
attribute
(simple string) صفات کا نام بتاتا ہے اور مطلوبہ ڈیٹا واپس کرتا ہے۔ مثال کے طور پر:"$.add_investor"
استعمال کریں$.
بطور سابقہ، صفات کا نام ڈیٹا فیلڈ میں صفات کے ساتھ مطابقت رکھتا ہے جو درخواست کردہ ڈیٹا ماخذ پر جواب دیا جاتا ہےایک اور قسم / قرارداد کی ضرورت ہے۔
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
(سادہ سٹرنگ) وقت کا دورانیہ۔ خالی سٹرنگ کو چارٹ کے موجودہ وقت کے دورانیے کے طور پر تشریح کیا جائے گا۔expression
(series int/float/bool/color) کو request.security سے کال کر کے حساب لگایا جا سکتا ہے اور ایک اظہار واپس آ سکتا ہے۔ یہ ایک سیریز یا ایسے عناصر پر مشتمل ایک سیٹ ہو سکتی ہے جسے سیریز میں تبدیل کیا جا سکتا ہے۔gaps
(barmerge_gaps) درخواست کردہ ڈیٹا کو ضم کرنے کی پالیسی ((ڈیٹا کو خود بخود او ایچ ایل سی کے اہم اعداد و شمار کے ساتھ ضم کرنے کی ضرورت ہے) ؛ ممکنہ اقدار: barmerge.gaps_on ، barmerge.gaps_off ؛ barmerge.gaps_on - درخواست کردہ ڈیٹا کو ممکنہ فرق کے ساتھ ضم کیا گیا ((na قدر) ؛ 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) سامان کی کرنسی سے متعلقہ قیمت (مثلا OHLC) کو تبدیل کرتا ہے۔ پھر تبدیل شدہ قیمت کے مطابق کرنسی کا حساب لگاتا ہے۔ استعمال شدہ تبادلوں کی شرح FX_IDC جوڑی کے پچھلے دن کی روزانہ شرح تبادلہ پر مبنی ہے۔ (متعلقہ K لائن کے حساب سے) ؛ اختیاری۔ ڈیفالٹ قیمت syminfo.currency ہے۔ ممکنہ قدر: ISO 4217 فارمیٹ کرنسی کوڈ (مثلا نوٹاس فنکشن کا استعمال کرتے ہوئے پن اسکرپٹ کوڈ کو تاریخی ریکارڈ اور حقیقی وقت کے اعداد و شمار کے لئے مختلف حسابات انجام دینے کی اجازت دیتا ہے۔اگر آپ درخواست کردہ سامان کے لئے اضافی پیرامیٹرز کی وضاحت کرنا چاہتے ہیں، جیسے ٹرانزیکشن ٹائم فریم یا ایڈجسٹمنٹ ٹائپ، تو آپ کو اس کی ضرورت نہیں ہے۔您可以使用ticker.new() فنکشن۔
اس فنکشن کو فرق منتقل کرنے کے لئے ٹکر ٹکر متغیر کا استعمال نہیں کیا جاسکتا ہے۔ آپ ٹکر استعمال کرسکتے ہیں۔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
اگر آپ نے اس میں سے کسی ایک کو منتخب کیا ہے تو ، آپ کو اس میں سے کسی ایک کو منتخب کرنا ہوگا۔
پیرامیٹرز
source
(series string) ماخذ سٹرنگstr
(series string) تلاش کرنے کے لئے سب سٹرنگ۔دوبارہ ملیں گے
str.endswith
ایک نئی سٹرنگ واپس کرتا ہے، یہ ہےsource
سٹرنگ کا ذیلی سٹرنگ.begin_pos
ایک مخصوص انڈیکس کے حروف سے شروع ہوتا ہے اور اس میں توسیع کرتا ہےsource
سٹرنگ کے
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) نکالے جانے والے ذیلی تار کا آغاز مقام ہے۔ یہ خصوصی ہے۔ (extracted substring includes characters from that location)end_pos
(series int) اختتامی پوزیشن۔ یہ خصوصی ہے۔ (extracted string does not include characters from that position) ؛ اختیاری ہے۔source
سٹرنگ کی لمبائی۔نوٹسٹرنگ انڈیکس 0 سے شروع ہوتا ہے۔ اگرbegin_pos
کے برابر ہےend_pos
، ایک خالی سٹرنگ لوٹاتا ہے۔
دوبارہ ملیں گے
str.contains
str.pos
str.match
str.tonumber(string)
واپسی کی قیمتاگر اس میں درست اعداد شامل ہیں تو ، یہ تار کا فلوٹ ٹائپ ہے ، ورنہ یہ نا ہے۔
پیرامیٹرز
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[]) فارمیٹ کرنے کی قدر ہے۔نوٹغیر حوالہ شدہ طرز میں موجود تمام قوسین کو متوازن رکھنا ضروری ہے۔ مثال کے طور پر،
سٹرنگ میں موجود حروف کی تعداد کے برابر عدد واپس کرتا ہے۔
str.length(string)
واپسی کی قیمتسٹرنگ میں حروف کی تعداد۔
پیرامیٹرز
string
(series string) ماخذ سٹرنگواپس ایک نئی سٹرنگ جس میں تمام حروف کو چھوٹا کیا گیا ہے۔
str.lower(source)
واپسی کی قیمتتمام حروف کو چھوٹے حروف میں تبدیل کر دیا گیا ہے۔
پیرامیٹرز
source
(series string) تبدیل کرنے کے لئے سٹرنگ۔دوبارہ ملیں گے
str.upper
واپس ایک نئی سٹرنگ جس میں تمام حروف بڑے میں تبدیل کیے گئے ہیں۔
str.upper(source)
واپسی کی قیمتتمام حروف کو بڑے سائز کی نئی سٹرنگ میں تبدیل کردیا گیا ہے۔
پیرامیٹرز
source
(series string) تبدیل کرنے کے لئے سٹرنگ۔دوبارہ ملیں گے
str.lower
اگر میچ ہوregex
ایک باقاعدہ اظہار، واپس آتا ہےsource
سٹرنگ کا نیا سب سٹرنگ، دوسری صورت میں واپس آتا ہے
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) // "EXCHAN
وُہوآناگر آپ چاہتے ہیں کہ ایک ہی وقت میں کئی ٹرانزیکشنز چلیں تو آپ کو کیا کرنا چاہئے؟
ہلکے بادلبراہ کرم مجھے بتائیں، کیا پائن زیادہ ٹرانزیکشن کر سکتا ہے؟ کیا یہ جے ایس کی طرح ٹرانزیکشنز کو گھوم سکتا ہے؟ شکریہ۔
لیزا20231مزید تفصیلات کے لیے شکریہ
فنکاریواہ! یہ پائن اسکرپٹ پلیٹ فارم پر اوکیکس کی سمیلیٹر کا استعمال کیسے کرتا ہے؟
فنکاریاس کا مطلب یہ ہے کہ ٹریڈنگ ویو پلیٹ فارم کی حکمت عملی کو براہ راست کاپی کیا جا سکتا ہے اور اسے ایجاد کنندہ پلیٹ فارم پر استعمال کیا جا سکتا ہے۔
چھوٹا سا خوابPINE زبان صرف ایک قسم کی حکمت عملی کر سکتی ہے ، اور متعدد قسم کی حکمت عملی کو بہتر طور پر پائیتھون ، جاوا اسکرپٹ ، سی ++ میں ڈیزائن کیا جاسکتا ہے۔
چھوٹا سا خواباوہ ، ہاں ، او کے ایکس خاص ہے ، ان کا ماڈل ماحول اور اصلی ڈسک کا ماحول ایک ہی ایڈریس ہے ، صرف دوسری جگہوں پر فرق ہے۔ لہذا ماڈل ڈسک میں سوئچ کرنے کے لئے بیس ایڈریس کو تبدیل کرنے کا کوئی طریقہ نہیں ہے۔
ہلکے بادلاوککس ڈسک کا استعمال نہیں کیا جا سکتا ہے۔
چھوٹا سا خواباس طرح کے مختلف فن تعمیر کے مسائل کو حل نہیں کیا جاسکتا کیونکہ ہر ایکسچینج میں مختلف انٹرفیس ہیں اور انٹرفیس کی تعدد کی حد بھی مختلف نہیں ہے۔ اس سے بہت سارے مسائل پیدا ہوتے ہیں۔
چھوٹا سا خواباچھا، شکریہ کہ آپ نے تجاویز دی ہیں، اور اس کی ضرورت کی اطلاع دیں۔
ہلکے بادلیہ JS کے ساتھ مل کر کام کرنے کے لئے بہتر محسوس ہوتا ہے، جس میں مختلف تجارتی طریقوں کو بہتر طور پر اپنانے کے لئے بہتر ہے.
رجحان شکاریکیا ہم بعد میں کئی اقسام پر غور کریں گے؟ اختتامی قیمت ہر قسم کے ذریعے چلتی ہے۔
چھوٹا سا خوابہم نے اس کے بارے میں کیا سوچا ہے؟
ہلکے بادلاچھا، بہت شکریہ۔
چھوٹا سا خوابہیلو، PINE کی زبان کی حکمت عملی صرف ایک قسم کی ہے.
چھوٹا سا خوابآپ کا شکریہ کہ آپ نے میری مدد کی ہے۔ دستاویزات کو مزید بہتر بنایا جائے گا۔
چھوٹا سا خوابہاں ہاں۔۔۔۔۔
چھوٹا سا خوابPINE ٹیمپلیٹ کلاس لائبریری ، جس کی پیرامیٹرز پر تبادلہ کرنے والے تبادلے کا بیس ایڈریس مقرر کیا جاسکتا ہے۔ دستاویز کا آغاز: PINE زبان کے تبادلہ کلاس لائبریری ٹیمپلیٹ پیرامیٹرز۔