رتا ہے۔ لیکن ایف ایم زیڈ پر اس طرح کی کوئی سخت پابندی نہیں ہے۔ مندرجہ بالا کوڈ عام طور پر کام کرسکتا ہے۔
ذیل میں ہم مختلف آپریٹرز کے استعمال پر نظر ڈالتے ہیں۔
دو قسم کے تفویض آپریٹرز ہیں:=
、:=
ہم نے اس سبق کے ابتدائی حصے میں کچھ مثالوں میں بھی دیکھا ہے۔
=
آپریٹر کا استعمال متغیرات کو انیشیال کرنے یا ان کا اعلان کرنے کے لئے کیا جاتا ہے۔=
ابتداء، اعلان اور تفویض کے بعد متغیر اس کے بعد ہر بار پر اس قدر کے ساتھ شروع ہو جائے گا۔ یہ سبھی درست متغیر کے بیانات ہیں:
a = close // 使用内置变量赋值给a
b = 10000 // 使用数值赋值
c = "test" // 使用字符串赋值
d = color.green // 使用颜色值赋值
plot(a, title="a")
plot(b, title="b")
plotchar(true, title="c", char=str.tostring(c), color=d, overlay=true)
نوٹسa = close
اسٹیٹمنٹ ، ہر بار پر متغیر a اس بار کی موجودہ اختتامی قیمت ہے ((close) ◄ دیگر متغیراتb
、c
、d
یہ FMZ پر ردعمل کے نظام میں ٹیسٹ کیا جا سکتا ہے، جس کے نتیجے میں ڈرائنگ سے دیکھا جا سکتا ہے.
:=
ایک موجودہ متغیر کو ایک قدر دوبارہ تفویض کرنے کے لئے استعمال کیا جاتا ہے، جو آسانی سے استعمال کے طور پر سمجھا جا سکتا ہے:=
آپریٹر ایک متغیر کی قدر کو تبدیل کرنے کے لئے استعمال کیا جاتا ہے جو پہلے سے ہی اعلان کیا گیا ہے.
اگر استعمال کیا جاتا ہے:=
ایک آپریٹر کو غیر ابتدائی یا اعلان شدہ متغیر کو تفویض کرنے سے غلطی پیدا ہوتی ہے ، جیسے:
a := 0
تو،:=
تفویض آپریٹر عام طور پر پہلے سے موجود متغیرات کو دوبارہ تفویض کرنے کے لئے استعمال کیا جاتا ہے ، جیسے:
a = close > open
b = 0
if a
b := b + 1
plot(b)
فیصلہ کریں اگرclose > open
(یعنی موجودہ BAR سورج کی لکیر ہے) ، a متغیر حقیقی قدر ہے ((true) ◄ تو اگر بیان کے مقامی بلاک میں کوڈ پر عملدرآمدb := b + 1
، تفویض آپریٹر کا استعمال کرتے ہوئے:=
b کو ایک بار پھر قدر دی جائے، اور ایک 1 ◄ کا اضافہ کیا جائے۔ اس کے بعد plot فنکشن کا استعمال کرتے ہوئے ، ہر بار میں b کی قدر کو ایک وقت کی ترتیب میں ، ایک لائن میں ، ایک چارٹ پر ڈرائنگ کریں۔
کیا ہم یہ مانتے ہیں کہ اگر ہم ایک بار بار بار بار بار بار بار بار بار بار بار بار بار بار بار بار بار بار بار بار بار بار بار بار 1 جمع کرتے ہیں؟ بالکل نہیں، یہاں ہم نے متغیر b کو 0 کے طور پر شروع کرنے کے لئے کوئی کلیدی لفظ استعمال نہیں کیا ہے۔b=0
یہ ہر بار بار پر کیا جاتا ہے، تو آپ دیکھ سکتے ہیں کہ اس کوڈ کو چلانے کا نتیجہ یہ ہے کہ ہر بار b کو 0 پر ری سیٹ کیا جاتا ہے، اگر a سچ ہے، تو اس کا مطلب یہ ہے کہclose > open
تو اس کوڈ کو چلانے کے وقت b کو 1 جمع کیا جائے گا، جب پلاٹ فنکشن ڈرائنگ میں b 1 ہو جائے گا، لیکن اگلے کوڈ کو چلانے کے وقت b کو دوبارہ 0 دیا جائے گا۔ یہ بھی پائن زبان کے ابتدائی افراد کے لئے ایک آسان جگہ ہے۔
اس کے علاوہ، ہم نے اس کے بارے میں بات کی ہے کہ اس کی وضاحت کرنے کے لئے دو کلیدی الفاظ ہیں:var
、varip
یہ ایک ایسا لفظ ہے جس کے بارے میں ہم پہلے بھی سبق میں بات کر چکے ہیں، لیکن ہم نے اس کے بارے میں تفصیل سے بات نہیں کی تھی۔ آئیے اس لفظ کی وضاحت کرتے ہیں:
var تقسیم کرنے اور ایک بار شروع کرنے والے متغیرات کے لئے کلیدی لفظ ہے۔ عام طور پر ، متغیرات کو تفویض کرنے کی ترکیب جس میں کلیدی لفظ var شامل نہیں ہوتا ہے اس کا نتیجہ یہ ہوتا ہے کہ ہر بار جب ڈیٹا کو اپ ڈیٹ کیا جاتا ہے تو متغیرات کی قدر کو ڈھانپ دیا جاتا ہے۔ اس کے برعکس ، جب کلیدی لفظ var استعمال کیا جاتا ہے تو ، متغیرات کو تقسیم کیا جاتا ہے ، اگرچہ ڈیٹا کو اپ ڈیٹ کیا جاتا ہے ، لیکن وہ اپنی حالت کو برقرار رکھ سکتے ہیں۔
ہم اس مثال کو استعمال کرتے ہیں، لیکن ہم اس کا استعمال کرتے ہیں جب ہم b کو ایک قدر دیتے ہیںvar
کلیدی الفاظ:
a = close > open
var b = 0
if a
b := b + 1
plot(b)
var
کلیدی لفظ b کو صرف ابتدائی پہلی تفویض پر عملدرآمد کرنے دیتا ہے ، اور اس کے بعد ہر بار حکمت عملی کی منطق پر عمل درآمد کرتے وقت b کو دوبارہ 0 پر نہیں رکھا جاتا ہے ، لہذا چلنے کے وقت کھینچی گئی لائنوں سے یہ مشاہدہ کیا جاسکتا ہے کہ b موجودہ K لائن BAR کے وقت ظاہر ہونے والی این لائن BAR کی تعداد ہے۔
var بیانات کے متغیرات کو نہ صرف عالمی سطح پر لکھا جاسکتا ہے بلکہ اس کوڈ کے بلاکس میں بھی لکھا جاسکتا ہے ، جیسے اس مثال میں:
strategy(overlay=true)
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")
متغیر ‘a’ سیریز میں پہلی ستون لائن کی اختتامی قیمت کو برقرار رکھتا ہے۔ متغیر ‘b’ سیریز میں پہلے نیلم سبز نیلم کی قیمت کی سلاخوں کی اختتامی قیمت کو برقرار رکھتا ہے۔ متغیر ‘c’ سیریز میں دسویں ٹماٹر کی گرین ٹماٹر کی اختتامی قیمت کو برقرار رکھتا ہے۔
varip
ہم نے اس لفظ کو پہلی بار دیکھا ہے، اور ہم اس لفظ کی تفصیل دیکھ سکتے ہیں:
varip ((var intrabar persist) ایک کلیدی لفظ ہے جو تفویض اور ایک بار شروع ہونے والی متغیرات کے لئے استعمال ہوتا ہے۔ یہ کلیدی لفظ var کی طرح ہے ، لیکن متغیرات جو varip کے بیانات کا استعمال کرتے ہیں وہ K لائن اپ ڈیٹ کے درمیان اپنی اقدار کو برقرار رکھتے ہیں۔
کیا یہ سمجھنے میں مشکل ہے؟ کوئی بات نہیں، ہم مثال کے ساتھ وضاحت کرتے ہیں، یہ سمجھنے میں آسان ہے۔
strategy(overlay=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
i := i + 1
ii := ii + 1
اس ٹیسٹ کوڈ نے “خریداری قیمت ماڈل” اور “ریئل ٹائم قیمت ماڈل” میں مختلف کارکردگی کا مظاہرہ کیا:
ریئل ٹائم قیمت ماڈل:
کیا آپ کو یاد ہے کہ ہم نے پہلے حکمت عملی کے نفاذ کے بارے میں بات کی تھی؟ کیا آپ کو یاد ہے کہ حکمت عملی کے نفاذ کے وقت کو تاریخی بار مرحلے اور حقیقی بار مرحلے میں تقسیم کیا گیا تھا؟var
、varip
بیان کردہ متغیراتi
、ii
حکمت عملی کے کوڈ کے ہر عمل کے دوران اضافے کا عمل انجام دیا جاتا ہے۔ لہذا آپ دیکھ سکتے ہیں کہ K بار لائن پر دکھائے جانے والے اعداد و شمار میں سے ہر ایک میں 1 اضافہ ہوتا ہے۔ جب تاریخی K لائن مرحلہ ختم ہوتا ہے تو ، حقیقی وقت کے K لائن مرحلے کا آغاز ہوتا ہے۔ var ، varp بیانات کے متغیرات میں مختلف تبدیلیاں آنا شروع ہوجاتی ہیں۔ چونکہ یہ حقیقی وقت کی قیمت کا ماڈل ہے ، لہذا حکمت عملی کا کوڈ ایک K لائن BAR کے اندر ہر قیمت میں تبدیلی کے لئے ایک بار پھر عمل میں لایا جاتا ہے۔i := i + 1
اورii := ii + 1
ہر بار ایک بار نافذ کیا جاتا ہے۔ فرق یہ ہے کہ ii ہر بار ترمیم کرتا ہے۔ اگرچہ i ہر بار بھی ترمیم کرتا ہے ، لیکن اگلے مرحلے میں حکمت عملی کے نفاذ کے منطق میں پچھلی قدر کو بحال کیا جائے گا۔ (کیا آپ کو ماڈل پر عملدرآمد کے باب میں ہم نے جو رول آؤٹ میکانزم بتایا تھا وہ یاد ہے؟) ، جب تک کہ موجودہ KBAR لائن ختم نہ ہوجائے اس وقت تک i کی قیمت کو اپ ڈیٹ نہیں کیا جائے گا۔ (یعنی اگلے مرحلے میں حکمت عملی کے منطق پر عملدرآمد کے لئے پچھلی قدر کو دوبارہ بحال نہیں کیا جائے گا۔) لہذا یہ دیکھا جاسکتا ہے کہ متغیر i اب بھی ہر بار میں 1 اضافہ ہوتا ہے۔ لیکن متغیر ii میں ہر بار میں کئی بار اضافہ ہوتا ہے۔
قیمتوں کا تعین: چونکہ اختتامی قیمت کا ماڈل ہر K لائن BAR ختم ہونے پر ایک حکمت عملی کا منطق انجام دیتا ہے۔ لہذا ، اختتامی قیمت کے ماڈل میں ، تاریخی K لائن مرحلے اور حقیقی وقت کے K لائن مرحلے میں ، var ، varp بیانات کے متغیرات مندرجہ بالا مثالوں میں بڑھتی ہوئی کارکردگی کا مظاہرہ کرتے ہیں ، ہر K لائن BAR میں اضافہ ہوتا ہے۔
آپریٹر | مثال دینا |
---|---|
+ | قافیہ |
- | کم کرنا |
* | ضرب |
/ | قانون ختم کرنا |
% | مثالیں تلاش کریں |
+
、-
آپریٹرز کو بائنری آپریٹر کے طور پر بھی استعمال کیا جاسکتا ہے ، یا ایک ہی آپریٹر کے طور پر بھی استعمال کیا جاسکتا ہے۔ دیگر ریاضی کے آپریٹرز کو صرف بائنری آپریٹر کے طور پر استعمال کیا جاسکتا ہے ، اگر وہ ایک ہی آپریٹر کے طور پر استعمال کیے جائیں تو غلطی ہوگی۔
1، عددی آپریٹر دونوں طرف عددی قسم کے ہیں، نتیجہ عددی قسم، عددی یا فلوٹ پوائنٹ نمبر کے مطابق آپریشن کے نتائج کے مطابق ہے.
2، آپریٹر اگر آپریٹر ایک تار ہے+
، تو حساب کے نتیجے میں سٹرنگ ، عددی قدر کو سٹرنگ کی شکل میں تبدیل کیا جائے گا ، اور پھر سٹرنگوں کو ایک ساتھ جوڑ دیا جائے گا۔ اگر یہ دوسرے ریاضی کے آپریٹرز ہیں تو ، سٹرنگ کو عددی قدر میں تبدیل کرنے کی کوشش کی جائے گی ، اور پھر کام کیا جائے گا۔
3، اگر اس میں سے کوئی آپریٹنگ نمبر na ہے تو ، اس کا نتیجہ خالی ہےna، جب ایف ایم زیڈ پر پرنٹ کیا جائے تو NaN ظاہر ہوگا۔
a = 1 + 1
b = 1 + 1.1
c = 1 + "1.1"
d = "1" + "1.1"
e = 1 + na
runtime.log("a:", a, ", b:", b, ", c:", c, ", d:", d, ", e:", e)
// a: 2 , b: 2.1 , c: 11.1 , d: 11.1 , e: NaN
ایف ایم زیڈ پر پائن زبان یہاں اور ٹریڈنگ ویو پر پائن زبان میں تھوڑا سا فرق ہے ، ایف ایم زیڈ پر پائن زبان متغیر کی قسم کی ضروریات کے لئے زیادہ سخت نہیں ہے۔ مثال کے طور پر:
a = 1 * "1.1"
b = "1" / "1.1"
c = 5 % "A"
plot(a)
plot(b)
plot(c)
ایف ایم زیڈ پر کام کیا جاسکتا ہے ، لیکن تجارتی نظارے میں اس کی قسم کی غلطی کی اطلاع دی جائے گی۔ جب ریاضی کے آپریٹر کے دونوں اطراف میں آپریٹنگ نمبر سٹرنگ ہوتے ہیں تو ، سسٹم سٹرنگ کو عددی قدر میں تبدیل کرنے کے بعد حساب کرے گا۔ اگر غیر عددی سٹرنگ کا حساب نہیں لگایا جاسکتا ہے تو ، سسٹم کے آپریشن کا نتیجہ خالی ہے
موازنہ آپریٹرز بائنری آپریٹرز ہیں۔
آپریٹر | مثال دینا |
---|---|
< | سے کم |
> | سے زیادہ |
<= | سے کم کے برابر |
>= | سے بڑا برابر ہے |
== | برابر |
!= | عدم مساوات |
ٹیسٹ کی مثال:
a = 1 > 2
b = 1 < 2
c = "1" <= 2
d = "1" >= 2
e = 1 == 1
f = 2 != 1
g = open > close
h = na > 1
i = 1 > na
runtime.log("a:", a, ", b:", b, ", c:", c, ", d:", d, ", e:", e, ", f:", f, ", g:", g, ", h:", h, ", i:", i)
// a: false , b: true , c: true , d: false , e: true , f: true , g: false , h: false , i: false
جیسا کہ آپ دیکھ سکتے ہیں، موازنہ آپریٹر کا استعمال بہت آسان ہے، لیکن یہ بھی سب سے زیادہ آپریٹر ہے جو ہم حکمت عملی لکھنے کے دوران استعمال کرتے ہیں. آپ اعداد و شمار کا موازنہ کر سکتے ہیں، اور آپ بلٹ ان متغیرات کا موازنہ کر سکتے ہیں، جیسےclose
、open
انتظار کرو
ایف ایم زیڈ پر ٹریڈنگ ویو کے پائن کے ساتھ فرق ہے ، جیسا کہ آپریٹنگ آپریٹرز کے ساتھ ہوتا ہے۔ ایف ایم زیڈ میں خاص طور پر سخت قسم کی ضروریات نہیں ہیں ، لہذا اس طرح کے بیاناتd = "1" >= 2
ایف ایم زیڈ پر غلطی کی اطلاع نہیں دی جاتی ہے ، عملدرآمد کے وقت سٹرنگ کو پہلے عددی قدر میں تبدیل کیا جاتا ہے ، اور پھر اس کا موازنہ کیا جاتا ہے۔ تجارتی منظر پر غلطی کی اطلاع دی جاتی ہے۔
آپریٹر | کوڈ علامت | مثال دینا |
---|---|---|
نہیں | not | واحد آپریٹر، غیر آپریٹنگ |
اور | and | بائنری آپریٹر، کے ساتھ (اور) آپریشن |
یا | or | بائنری آپریٹرز، یا آپریشنز |
جب آپ منطقی آپریٹرز کے بارے میں بات کرتے ہیں تو ، آپ کو درست اقدار کی میز کے بارے میں بھی بات کرنا ہوگی۔ جیسا کہ ہم نے ہائی اسکول میں سیکھا تھا ، صرف یہاں ہم جانچ اور سیکھنے کے لئے ریٹرننگ سسٹم میں ہیں:
a = 1 == 1 // 使用比较运算符构成的表达式,结果为布尔值
b = 1 != 1
c = not b // 逻辑非操作符
d = not a // 逻辑非操作符
runtime.log("测试逻辑操作符:and", "#FF0000")
runtime.log("a:", a, ", c:", c, ", a and c:", a and c)
runtime.log("a:", a, ", b:", b, ", a and b:", a and b)
runtime.log("b:", b, ", c:", c, ", b and c:", b and c)
runtime.log("d:", d, ", b:", b, ", d and b:", d and b)
runtime.log("测试逻辑操作符:or", "#FF0000")
runtime.log("a:", a, ", c:", c, ", a or c:", a or c)
runtime.log("a:", a, ", b:", b, ", a or b:", a or b)
runtime.log("b:", b, ", c:", c, ", b or c:", b or c)
runtime.log("d:", d, ", b:", b, ", d or b:", d or b)
runtime.error("stop")
اس کے علاوہ، ہم نے اس بات کو یقینی بنایا ہے کہ ہم اس بات کو یقینی بنائیں گے کہ ہم اس بات کو یقینی بنائیں کہ ہم اس بات کو یقینی بنائیں کہ ہم اس بات کو یقینی بنائیں کہ ہم اس بات کو یقینی بنائیں کہ ہم اس بات کو یقینی بنائیں کہ ہم اس بات کو یقینی بنائیں کہ ہم اس بات کو یقینی بنائیں کہ ہم اس بات کو یقینی بنائیں کہ ہم اس بات کو یقینی بنائیں کہ ہم اس بات کو یقینی بنائیں کہ ہم اس بات کو یقینی بنائیں کہ ہم اس بات کو یقینی بنائیں کہ ہم اس بات کو یقینی بنائیں کہ ہم اس بات کو یقینی بنائیں کہ ہم اس بات کو یقینی بنائیں کہ ہم اس بات کو یقینی بنائیں کہ ہم اس بات کو یقینی بنائیں.runtime.error("stop")
جملہ ایک بار پرنٹ کرنے کے بعد ، غیر معمولی غلطیاں پھینک دی گئیں تاکہ پیمائش رک جائے۔ اس کے بعد آپ آؤٹ پٹ کی معلومات کو دیکھ سکتے ہیں ، آپ کو معلوم ہوگا کہ پرنٹ کردہ مواد اور درست ٹیبل دراصل ایک جیسے ہیں۔
ٹرپل آپریٹر کا استعمال? :
آپریشنل اعداد کے ساتھ مل کر تین جہتی اظہارcondition ? valueWhenConditionIsTrue : valueWhenConditionIsFalse
ہم نے اس سے پہلے کے سبق میں بھی واقف ہو چکے ہیں۔ تینوں کا اظہار، تینوں آپریٹر کا مطلب یہ ہے کہ اس میں آپریشن کی تعداد تین ہے۔
condition ? valueWhenConditionIsTrue : valueWhenConditionIsFalse
کیا آپ جانتے ہیں؟condition
یہ فیصلہ کرنے کی شرط ہے، اگر سچ کے لئے اظہار کی قدر ہے:valueWhenConditionIsTrue
اگرcondition
اس کا مطلب یہ ہے کہvalueWhenConditionIsFalse
。
یہاں کچھ مثالیں ہیں جن کا استعمال عملی طور پر نہیں کیا جاسکتا ہے، لیکن یہ آپ کو دکھانے کے لئے آسان ہے:
a = close > open
b = a ? "阳线" : "阴线"
c = not a ? "阴线" : "阳线"
plotchar(a, location=location.abovebar, color=color.red, char=b, overlay=true)
plotchar(not a, location=location.belowbar, color=color.green, char=c, overlay=true)
اگر آپ کے پاس ایک کراس اسٹار ہے تو ، اس سے کوئی فرق نہیں پڑتا ہے۔ مثلث کے اظہار کو بھی شامل کیا جاسکتا ہے ، جیسا کہ ہم نے پچھلے سبق میں کیا تھا۔
a = close > open
b = a ? math.abs(close-open) > 30 ? "阳线" : "十字星" : math.abs(close-open) > 30 ? "阴线" : "十字星"
c = not a ? math.abs(close-open) > 30 ? "阴线" : "十字星" : math.abs(close-open) > 30 ? "阳线" : "十字星"
plotchar(a, location=location.abovebar, color=color.red, char=b, overlay=true)
plotchar(not a, location=location.belowbar, color=color.green, char=c, overlay=true)
اور اس کا مطلب یہ ہے کہcondition ? valueWhenConditionIsTrue : valueWhenConditionIsFalse
میںvalueWhenConditionIsTrue
、valueWhenConditionIsFalse
اور اس کے بجائے ایک اور مثلث کا استعمال کیا گیا ہے۔
تاریخ کے آپریٹر کا استعمال کریں[]
، حوالہ دیتے وقت کی سیریز پر تاریخی اقدار یہ تاریخی اقدار اسکرپٹ کے چلنے پر موجودہ K لائن BAR سے پہلے K لائن BAR پر متغیرات کی اقدار ہیں []
آپریٹر متغیر، اظہار، فنکشن کال کے بعد استعمال ہوتا ہے۔[]
اس مربع قوسین میں موجود مقدار وہ مقدار ہے جو ہم حوالہ دینے والے تاریخی اعداد و شمار کی موجودہ K لائن BAR سے دوری ہے۔ مثال کے طور پر اگر میں پچھلی K لائن BAR کی اختتامی قیمت کا حوالہ دوں تو یہ لکھا جائے گا:close[1]
。
ہم نے پچھلے کورسز میں اس طرح کی تحریر دیکھی ہے:
high[10]
ta.sma(close, 10)[1]
ta.highest(high, 10)[20]
close > nz(close[1], open)
[]
آپریٹر صرف ایک بار ایک ہی قدر پر استعمال کیا جا سکتا ہے، لہذا یہ لکھنا غلط ہے، اور یہ غلطی کرے گا:
a = close[1][2] // 错误
آپ یہاں دیکھ سکتے ہیں، کچھ طلباء کہتے ہیں، آپریٹر[]
اور اس کا مطلب یہ ہے کہ یہ سیریز کے ڈھانچے کے لئے استعمال کیا جاتا ہے، اور یہ سیریز کے ڈھانچے کے لئے استعمال کیا جاتا ہے، اور یہ سیریز کے ڈھانچے کے لئے استعمال کیا جاتا ہے.
ذیل میں ہم ایک مثال کے ذریعے پائن زبان میں سیریز اور صف میں فرق کو واضح کریں گے۔
strategy("test", overlay=true)
a = close
b = close[1]
c = b[1]
plot(a, title="a")
plot(b, title="b")
plot(c, title="c")
اگرچہa = close[1][2]
اس طرح لکھنا غلط ہو سکتا ہے، لیکن:
b = close[1]
c = b[1]
اور اگر آپ اسے الگ الگ لکھیں تو اس میں کوئی غلطی نہیں ہوگی، اور اگر آپ اسے عام طور پر آرٹیکل کے طور پر سمجھیں تو، آپ کو اس کے بارے میں کچھ بھی نہیں ملے گا.b = close[1]
اس کے بعد، b ایک عددی ہونا چاہئے، تاہمc = b[1]
، b پھر بھی ایک بار پھر تاریخی اقدار کا حوالہ دینے کے لئے تاریخی آپریٹر کا استعمال کیا جاسکتا ہے۔ جیسا کہ پائن زبان میں سیریز کا تصور اتنا سادہ نہیں ہے جتنا کہ صف۔ اس کو قریب کی آخری بار پر تاریخی اقدار کے طور پر سمجھا جاسکتا ہے ، b بھی ایک ٹائم سیریز ڈھانچہ ہے ، اور اس کی تاریخی اقدار کا حوالہ جاری رکھ سکتا ہے۔ لہذا ہم دیکھتے ہیں کہ ڈرائنگ کی گئی تین لائنوں میں سے ، a ، b ، c ، b لائنیں a لائن سے ایک بار سست ہیں ، اور b لائنیں b لائن سے ایک بار سست ہیں۔
ہم گراف کو سب سے بائیں طرف کھینچ سکتے ہیں اور دیکھ سکتے ہیں کہ پہلی K لائن پر ، b اور c کی قیمتیں خالی ہیں ((na) ) ۔ یہ اس لئے ہے کہ جب اسکرپٹ پہلی K لائن BAR پر عملدرآمد ہوتا ہے تو ، ایک یا دو ادوار کی تاریخی قیمت کا حوالہ دیتے وقت یہ نہیں ہوتا ہے ، یہ موجود نہیں ہے۔ لہذا ہمیں حکمت عملی لکھتے وقت اکثر اس بات پر توجہ دینے کی ضرورت ہے کہ آیا تاریخی اعداد و شمار کا حوالہ دیتے وقت خالی اقدار کا حوالہ دیا جائے گا ، اگر اس میں محتاط نہ ہوں تو خالی اقدار کا استعمال کرنے سے حساب کتاب کے مختلف سلسلے پیدا ہوسکتے ہیں ، اور یہاں تک کہ حقیقی وقت پر اثر انداز ہوسکتے ہیں۔ عام طور پر ہم کوڈ میں BAR استعمال کرتے ہیں۔na
、nz
اس کے علاوہ، ہم نے پہلے بھی اس کے بارے میں بات کی ہےnz
、na
فنکشن ، کیا آپ کو یاد ہے کہ یہ کس باب میں ہے؟) خاص طور پر خالی اقدار کے معاملات کے لئے ، جیسے:
close > nz(close[1], open) // 当引用close内置变量前一个BAR的历史值时,如果不存在,则使用open内置变量
یہ ایک ایسا طریقہ ہے جس میں ممکنہ طور پر صفر کی طرف اشارہ کیا گیا ہے.
ہم نے پائن زبان کے بہت سے آپریٹرز سیکھے ہیں، یہ آپریٹرز اور آپریٹنگ نمبر کے مختلف مجموعوں کے ذریعے اظہار بناتے ہیں۔ تو جب اظہار میں حساب کرتے ہیں تو ان آپریشنوں کی ترجیح کیا ہوتی ہے؟ جیسے ہم نے اسکول میں سیکھا تھا چار اصولوں کا آپریشن، ضرب کو ضرب دینے کے لئے ترجیح دی جاتی ہے، اور پھر جمع کو کم کرنے کے لئے.
ترجیحات | آپریٹر |
---|---|
9 | [] |
8 | ایک عنصر آپریٹر کے طور پر +`` 、``-`` اور not “ |
7 | * 、/ 、% |
6 | بائنری آپریٹرز میں + - ` |
5 | > 、< 、>= 、<= |
4 | == 、!= |
3 | and |
2 | or |
1 | ?: |
اعلیٰ ترجیح والے اظہار کے حصے پہلے آپریشن کرتے ہیں، اگر ترجیح ایک جیسی ہو تو بائیں سے دائیں آپریشن کریں۔ اگر کسی حصے کو پہلے آپریشن کرنے پر مجبور کرنا ہو تو ، استعمال کیا جاسکتا ہے()
اس حصے کے اظہار کو پہلے کام کرنے کے لئے مجبور کریں
ہم نے پہلے ہی سیکھا ہے کہ کس طرح ایک متغیر کا اعلان کیا جاتا ہے، اور اس کے لئے کون سے قواعد ہیں؟
var
。
2، مطلوبہ الفاظ کا استعمالvarip
。
3، کچھ نہیں لکھنا۔var
、varip
کلیدی الفاظ کے بارے میں ہم نے پہلے ہی سیکھا ہے اور اس کے بارے میں مزید بات نہیں کریں گے۔ مثال کے طور پر ، اگر متغیر کے اعلان کے انداز میں کچھ نہیں لکھا گیا ہے تو:i = 1
اس کے علاوہ، ہم نے پہلے بھی کہا ہے کہ اس طرح کی ایک متغیر کا اعلان اور اس کی قدر، ہر K لائن BAR پر عملدرآمد کیا جاتا ہے.
int i = 0
float f = 1.1
ٹریڈنگ ویو پر ٹائپنگ زیادہ سخت ہے، اگر ٹریڈنگ ویو پر مندرجہ ذیل کوڈ استعمال کیا جائے تو غلطی کا سامنا کرنا پڑتا ہے:
baseLine0 = na // compile time error!
آخر میں، ایک متغیر کا اعلان اس طرح لکھا جا سکتا ہے:
// [<declaration_mode>] [<type>] <identifier> = value
声明模式 类型 标识符 = 值
یہاں ایک تفویض آپریٹر استعمال کیا جاتا ہے:=
متغیر کے اعلان کے وقت متغیر کو ایک قدر عطا کرنا۔ جب قدر دی جاتی ہے تو ، قدر تار ، اعداد ، تاثرات ، فنکشن کال ، یا کسی اور چیز کی طرح ہوسکتی ہے۔if
、 for
、while
یاswitch
مثال کے طور پر: ((ان ڈھانچے کے کلیدی الفاظ، جملے کے استعمال ہم بعد کے سبق میں تفصیل سے وضاحت کریں گے، دراصل ہم نے پہلے سبق میں سادہ if جملے کی تفویض سیکھا ہے، آپ کو واپس دیکھ سکتے ہیں))
یہاں ہم ان پٹ فنکشن کے بارے میں بات کریں گے، یہ فنکشن ایک ایسا فنکشن ہے جسے ہم اکثر استعمال کرتے ہیں جب ہم حکمت عملی تیار کرتے ہیں۔ یہ فنکشن ڈیزائننگ کی حکمت عملی میں بہت اہم ہے۔
ان پٹ فنکشن:
input函数,参数defval、title、tooltip、inline、group
ایف ایم زیڈ پر ان پٹ فنکشن اور ٹریڈنگ ویو پر کچھ مختلف ہے ، لیکن یہ فنکشن حکمت عملی کے پیرامیٹرز کے لئے ان پٹ کے طور پر استعمال کیا جاتا ہے۔ ذیل میں ہم ایک مثال کے ذریعہ ایف ایم زیڈ پر ان پٹ فنکشن کے استعمال کی تفصیل دیتے ہیں:
param1 = input(10, title="参数1名称", tooltip="参数1的描述信息", group="分组名称A")
param2 = input("close", title="参数2名称", tooltip="参数2的描述信息", group="分组名称A")
param3 = input(color.red, title="参数3名称", tooltip="参数3的描述信息", group="分组名称B")
param4 = input(close, title="参数4名称", tooltip="参数4的描述信息", group="分组名称B")
param5 = input(true, title="参数5名称", tooltip="参数5的描述信息", group="分组名称C")
ma = ta.ema(param4, param1)
plot(ma, title=param2, color=param3, overlay=param5)
متغیرات کا اعلان کرتے وقت متغیرات کو قدر دینے کے لئے ، اکثر استعمال کیا جاتا ہے ان پٹ فنکشن ، ایف ایم زیڈ پر ان پٹ فنکشن ایف ایم زیڈ پالیسی انٹرفیس میں خود بخود کنٹرول ڈرائنگ کرتا ہے جو پالیسی پیرامیٹرز کو ترتیب دینے کے لئے استعمال ہوتا ہے۔ ایف ایم زیڈ پر معاون کنٹرولز میں فی الحال عددی ان پٹ باکس ، ٹیکسٹ ان پٹ باکس ، ڈراپ ڈاؤن باکس ، بُل ویلیو چیک آؤٹ ہے۔ اور پالیسی پیرامیٹرز گروپ کو ترتیب دینے ، پیرامیٹرز کی ترتیب کے لئے متن کی معلومات جیسے فنکشن کو ترتیب دینے کے لئے استعمال کیا جاسکتا ہے۔
ہم ان پٹ فنکشن کے کچھ اہم پیرامیٹرز کے بارے میں بات کرتے ہیں:
الگ الگ متغیرات کے اعلانات اور ان کی قدر کے علاوہ ، پائن زبان میں متغیرات کا ایک مجموعہ بیان کیا جاتا ہے اور اس کی قدر دی جاتی ہے:
[变量A,变量B,变量C] = 函数 或者 ```if```、 ```for```、```while```或```switch```等结构
سب سے زیادہ عام طور پر ہم استعمال کرتے ہیںta.macd
جب فنکشن MACD اشارے کا حساب لگاتا ہے تو ، چونکہ MACD اشارے ایک کثیر سطحی اشارے ہے ، لہذا اعداد و شمار کے تین سیٹوں کا حساب لگایا جاتا ہے۔ لہذا یہ لکھا جاسکتا ہے:
[dif,dea,column] = ta.macd(close, 12, 26, 9)
plot(dif, title="dif")
plot(dea, title="dea")
plot(column, title="column", style=plot.style_histogram)
ہم مندرجہ بالا کوڈ کا استعمال کرتے ہوئے MACD چارٹ کو ڈرائنگ کرنے کے لئے بہت آسان ہے، نہ صرف بلٹ ان افعال ایک سے زیادہ متغیرات واپس کر سکتے ہیں، بلکہ اپنی مرضی کے مطابق افعال بھی کئی اعداد و شمار واپس کر سکتے ہیں.
twoEMA(data, fastPeriod, slowPeriod) =>
fast = ta.ema(data, fastPeriod)
slow = ta.ema(data, slowPeriod)
[fast, slow]
[ema10, ema20] = twoEMA(close, 10, 20)
plot(ema10, title="ema10", overlay=true)
plot(ema20, title="ema20", overlay=true)
if جیسے ڈھانچے کو ایک سے زیادہ متغیرات کے طور پر تفویض کرنے کا طریقہ بھی اوپر کی طرح ہی ہے۔ اگر آپ دلچسپی رکھتے ہیں تو آپ کوشش کر سکتے ہیں۔
[ema10, ema20] = if true
fast = ta.ema(close, 10)
slow = ta.ema(close, 20)
[fast, slow]
plot(ema10, title="ema10", color=color.fuchsia, overlay=true)
plot(ema20, title="ema20", color=color.aqua, overlay=true)
کچھ افعال کو مقامی کوڈ کے بلاکس میں لکھنا ناممکن ہے جن میں مشروط شاخیں ہیں ، بنیادی طور پر مندرجہ ذیل چند افعال:
barcolor(), fill(), hline(), indicator(), plot(), plotcandle(), plotchar(), plotshape()
ٹریڈنگ ویو پر غلطی کی اطلاع مرتب کرے گا۔ ایف ایم زیڈ پر پابندیاں اتنی سخت نہیں ہیں ، لیکن ٹریڈنگ ویو پر شرائط پر عمل کرنے کی بھی سفارش کی گئی ہے۔ مثال کے طور پر ، اگرچہ ایف ایم زیڈ پر غلطی کی اطلاع نہیں دی جاتی ہے ، لیکن اس طرح کی تحریر کی سفارش نہیں کی جاتی ہے۔
strategy("test", overlay=true)
if close > open
plot(close, title="close")
else
plot(open, title="open")
مثال:
var lineColor = na
n = if bar_index > 10 and bar_index <= 20
lineColor := color.green
else if bar_index > 20 and bar_index <= 30
lineColor := color.blue
else if bar_index > 30 and bar_index <= 40
lineColor := color.orange
else if bar_index > 40
lineColor := color.black
else
lineColor := color.red
plot(close, title="close", color=n, linewidth=5, overlay=true)
plotchar(true, title="bar_index", char=str.tostring(bar_index), location=location.abovebar, color=color.red, overlay=true)
نوٹ: فیصلہ کرنے کے لئے استعمال ہونے والے اظہار، بول کی قدر لوٹاتا ہے۔ احتیاط سے سکریپ کریں۔ زیادہ سے زیادہ صرف ایک دوسری شاخ ہوسکتی ہے۔ تمام شاخوں کے اظہار درست نہیں ہیں ، اور اگر کوئی دوسری شاخ نہیں ہے تو ، واپس آنا۔
x = if close > open
close
plot(x, title="x")
چونکہ جب K لائن BAR نائن لائن ہوتی ہے، یعنی close < open، تو if جملے کے بعد کا اظہار false ہوتا ہے۔ اس لیے if کا لوکل کوڈ بلاک پر عملدرآمد نہیں کیا جاتا ہے۔ اس وقت بھی کوئی else شاخ نہیں ہوتی۔ اس لیے if جملہ واپس کرتا ہے کہ na。 x کو na کے طور پر تفویض کیا جاتا ہے۔ یہ نقطہ ڈرائنگ گراف پر نہیں کھینچا جا سکتا۔ ہم ڈرائنگ گراف پر بھی اس کا مشاہدہ کرسکتے ہیں۔
سوئچ اسٹیٹمنٹ بھی ایک شاخ ساختہ اسٹیٹمنٹ ہے جو کچھ شرائط کے مطابق مختلف راستوں کو انجام دینے کے لئے ڈیزائن کیا گیا ہے۔ سوئچ اسٹیٹمنٹ میں عام طور پر درج ذیل اہم نکات ہیں۔
1، سوئچ کے بیانات اور اگر بیانات کی طرح، اقدار واپس کر سکتے ہیں. 2۔ دوسرے زبانوں میں سوئچ کے بیانات کے برعکس ، سوئچ ڈھانچے کو انجام دیتے وقت ، اس کے کوڈ میں صرف ایک مقامی بلاک کو انجام دیا جاتا ہے ، لہذا بریک کا اعلان غیر ضروری ہے (یعنی بریک جیسے کلیدی الفاظ لکھنے کی ضرورت نہیں ہے) ۔ 3۔ سوئچ کی ہر شاخ ایک مقامی کوڈ بلاک لکھ سکتی ہے ، اور اس مقامی کوڈ بلاک کی آخری سطر واپسی کی قیمت ہے (یہ قدر کا ایک ذیلی سیٹ ہوسکتا ہے) ۔ اگر کوئی شاخ نہیں ہے تو مقامی کوڈ بلاک پر عملدرآمد کیا جاتا ہے ، واپس لوٹتا ہے 4، سوئچ ڈھانچے میں اظہار کا فیصلہ کرنے کی پوزیشن ، سٹرنگ ، متغیر ، اظہار یا فنکشن کال لکھ سکتے ہیں۔ 5۔ سوئچ ایک واپسی کی قیمت کی وضاحت کرنے کی اجازت دیتا ہے ، جو ڈھانچے میں کسی اور صورت میں عملدرآمد کے لئے استعمال ہونے والی ڈیفالٹ ویلیو کے طور پر استعمال ہوتا ہے۔
سوئچ کو دو اقسام میں تقسیم کیا گیا ہے۔ ہم مثال کے طور پر دیکھتے ہیں کہ اسے کس طرح استعمال کیا جاتا ہے۔
1، جس میں اظہار ہےswitch
مثال کے طور پر
// input.string: defval, title, options, tooltip
func = input.string("EMA", title="指标名称", tooltip="选择要使用的指标函数名称", options=["EMA", "SMA", "RMA", "WMA"])
// input.int: defval, title, options, tooltip
// param1 = input.int(10, title="周期参数")
fastPeriod = input.int(10, title="快线周期参数", options=[5, 10, 20])
slowPeriod = input.int(20, title="慢线周期参数", options=[20, 25, 30])
data = input(close, title="数据", tooltip="选择使用收盘价、开盘价、最高价...")
fastColor = color.red
slowColor = color.red
[fast, slow] = switch func
"EMA" =>
fastLine = ta.ema(data, fastPeriod)
slowLine = ta.ema(data, slowPeriod)
fastColor := color.red
slowColor := color.red
[fastLine, slowLine]
"SMA" =>
fastLine = ta.sma(data, fastPeriod)
slowLine = ta.sma(data, slowPeriod)
fastColor := color.green
slowColor := color.green
[fastLine, slowLine]
"RMA" =>
fastLine = ta.rma(data, fastPeriod)
slowLine = ta.rma(data, slowPeriod)
fastColor := color.blue
slowColor := color.blue
[fastLine, slowLine]
=>
runtime.error("error")
plot(fast, title="fast" + fastPeriod, color=fastColor, overlay=true)
plot(slow, title="slow" + slowPeriod, color=slowColor, overlay=true)
پہلے ہم نے ان پٹ فنکشن سیکھا تھا، یہاں ہم ان پٹ سے ملتے جلتے دو فنکشنز سیکھتے ہیں:input.string
、input.int
فنکشن
input.string
اس کے علاوہ، یہ ایک سٹرنگ کو واپس کرنے کے لئے استعمال کیا جاتا ہے.input.int
یہ فنکشن عددی عددی کو واپس کرنے کے لئے استعمال کیا جاتا ہے۔ مثال کے طور پر، یہ اصل میں ایک نیا عنصر ہے.options
پیرامیٹرز کا استعمالoptions
پیرامیٹرز کو ایک منتخب کردہ اقدار پر مشتمل ایک صف میں منتقل کیا جا سکتا ہے۔ مثال کے طور پر مثال میںoptions=["EMA", "SMA", "RMA", "WMA"]
اورoptions=[5, 10, 20]
(نوٹ کریں کہ ایک سٹرنگ ٹائپ ہے اور ایک عددی قسم) ۔ اس طرح پالیسی انٹرفیس پر کنٹرول کو مخصوص عددی اقدار درج کرنے کی ضرورت نہیں ہے ، لیکن کنٹرول نیچے والے خانے میں تبدیل ہوجاتا ہے ، اور اختیارات کے اختیارات میں فراہم کردہ اختیارات کو منتخب کرتا ہے۔
متغیر فنک کی قدر ایک تار کے طور پر ہے ، متغیر فنک سوئچ کے اظہار کے طور پر ((یہ متغیر ، فنکشن کال ، اظہار ہوسکتا ہے) ، اس بات کا تعین کرنے کے لئے کہ سوئچ میں کون سا شاخ ہے۔ اگر متغیر فنک سوئچ میں کسی بھی شاخ پر اظہار سے مماثل نہیں ہوتا ہے (یعنی مساوی ہے) ، تو ڈیفالٹ برانچ کوڈ بلاک پر عملدرآمد کریں ، جو عملدرآمد کرے گاruntime.error("error")
فنکشن کی وجہ سے حکمت عملی کو غیر معمولی طور پر روک دیا گیا ہے.
ہمارے اوپر ٹیسٹ کوڈ میں سوئچ کے ڈیفالٹ برانچ کوڈ بلاک کی آخری لائن runtime.error کے بعد ہم نے شامل نہیں کیا[na، na] جیسے کوڈ کو واپسی کی قدر کو مطابقت دینے کے لئے ، ٹریڈنگ ویو پر اس مسئلے پر غور کرنے کی ضرورت ہے ، اگر قسم متضاد نہیں ہے تو غلطی کی اطلاع دی جائے گی۔ لیکن ایف ایم زیڈ پر اس طرح کے مطابقت پذیر کوڈ کو نظرانداز کیا جاسکتا ہے کیونکہ اس کی قسم کی سختی سے ضرورت نہیں ہے۔ لہذا ایف ایم زیڈ پر اگر ، سوئچ برانچنگ واپسی کی قدر کی قسم مطابقت کے مسئلے پر غور کرنے کی ضرورت نہیں ہے۔
strategy("test", overlay=true)
x = if close > open
close
else
"open"
plotchar(true, title="x", char=str.tostring(x), location=location.abovebar, color=color.red)
ایف ایم زیڈ پر کوئی غلطی نہیں ہوگی ، لیکن تجارتی نظارے میں غلطی ہوگی۔ کیونکہ if شاخوں کی قسم متضاد ہے۔
2، کوئی اظہار نہیںswitch
ہم دیکھیں گےswitch
اس کا ایک اور استعمال یہ ہے کہ اس کو بغیر کسی اظہار کے لکھا جائے گا۔
up = close > open // up = close < open
down = close < open
var upOfCount = 0
var downOfCount = 0
msgColor = switch
up =>
upOfCount += 1
color.green
down =>
downOfCount += 1
color.red
plotchar(up, title="up", char=str.tostring(upOfCount), location=location.abovebar, color=msgColor, overlay=true)
plotchar(down, title="down", char=str.tostring(downOfCount), location=location.belowbar, color=msgColor, overlay=true)
ٹیسٹ کوڈ کی مثال میں دیکھا جاسکتا ہے کہ سوئچ برانچنگ کی شرائط پر عملدرآمد کرنے والے مقامی کوڈ بلاکس کو حقیقی کے طور پر مماثل کرے گا۔ عام طور پر سوئچ کے بیان کے بعد برانچنگ کی شرائط کو ایک دوسرے سے متصادم ہونا ضروری ہے۔ یعنی مثال میں اوپر اور نیچے ایک ساتھ سچے نہیں ہوسکتے ہیں۔ چونکہ سوئچ صرف ایک برانچنگ کے مقامی کوڈ بلاک پر عملدرآمد کرسکتا ہے ، لہذا دلچسپی رکھنے والوں کو کوڈ میں یہ جملہ مل سکتا ہے:up = close > open // up = close < open
تبصرے میں تبدیل کریں ، اور نتائج کو دیکھیں۔ آپ کو پتہ چل جائے گا کہ سوئچ شاخ صرف پہلی شاخ پر عملدرآمد کرسکتی ہے۔ اس کے علاوہ ، اس بات پر بھی توجہ دی جانی چاہئے کہ سوئچ کی شاخ میں فنکشن کال نہ کریں۔ فنکشن کو ہر بار پر کال نہیں کیا جاسکتا ہے جس سے اعداد و شمار کے حساب سے کچھ پریشانی ہوسکتی ہے۔switch
مثال کے طور پر ، ایکسپلوریشن برانچ طے شدہ ہے اور حکمت عملی کے عمل میں تبدیل نہیں ہوگی۔)
返回值 = for 计数 = 起始计数 to 最终计数 by 步长
语句 // 注释:语句里可以有break,continue
语句 // 注释:最后一条语句为返回值
for کے جملے کا استعمال بہت آسان ہے، for لوپ ایک قدر واپس کر سکتا ہے ((یا ایک سے زیادہ اقدار واپس کر سکتا ہے،[a، b، c] جیسی شکلیں) ٫٫ جیسا کہ اوپر کے جھوٹے کوڈ میں “واپسی کی قیمت” کی پوزیشن کو تفویض کیا گیا ہے۔ for کے بیان کے بعد ایک “کاؤنٹ” متغیر کے بعد استعمال کیا جاتا ہے جو سائیکل کی تعداد کو کنٹرول کرتا ہے ، دوسری اقدار کا حوالہ دیتا ہے ، وغیرہ ٫٫ “کاؤنٹ” متغیر کو سائیکل کے آغاز سے پہلے “ابتدائی گنتی” کے طور پر تفویض کیا جاتا ہے ، پھر “قدم” کی ترتیب کے مطابق اضافہ ہوتا ہے ، جب “کاؤنٹ” متغیر “حتمی گنتی” سے زیادہ ہوتا ہے تو سائیکل رک جاتا ہے۔
for لوپ میں استعمال ہوتا ہےbreak
کلیدی لفظ: جب عملدرآمدbreak
اس جملے کے بعد، یہ سائیکل رک گیا
for لوپ میں استعمال ہوتا ہےcontinue
کلیدی لفظ: جب عملدرآمدcontinue
جملے کے بعد، سائیکل کو نظر انداز کریںcontinue
اس کے بعد کا کوڈ ، براہ راست اگلے دورے پر عمل درآمد کرے گا۔ for بیان آخری دورے پر عملدرآمد کے وقت کی واپسی کی واپسی کرتا ہے۔ اگر کوئی کوڈ عملدرآمد نہیں ہوتا ہے تو ، خالی واپسی کی واپسی ہوتی ہے۔
ذیل میں ہم ایک سادہ مثال پیش کرتے ہیں:
ret = for i = 0 to 10 // 可以增加by关键字修改步长,暂时FMZ不支持 i = 10 to 0 这样的反向循环
// 可以增加条件设置,使用continue跳过,break跳出
runtime.log("i:", i)
i // 如果这行不写,就返回空值,因为没有可返回的变量
runtime.log("ret:", ret)
runtime.error("stop")
for ... in
جملے کی دو شکلیں ہیں، جن کی وضاحت مندرجہ ذیل فرضی کوڈ سے کی جاتی ہے۔
返回值 = for 数组元素 in 数组
语句 // 注释:语句里可以有break,continue
语句 // 注释:最后一条语句为返回值
返回值 = for [索引变量, 索引变量对应的数组元素] in 数组
语句 // 注释:语句里可以有break,continue
语句 // 注释:最后一条语句为返回值
آپ دیکھ سکتے ہیں کہ دونوں شکلوں میں بنیادی فرق صرف for کی ورڈ کے بعد آنے والے مواد میں ہے، ایک یہ ہے کہ ایک متغیر کو صف کے عناصر کے حوالہ کے طور پر استعمال کیا جائے۔ ایک یہ ہے کہ ایک متغیر کا استعمال کیا جائے جس میں انڈیکس متغیر، صف کے عناصر کے متغیرات کی ایک ذیلی سیٹ کی ساخت کا حوالہ دیا جائے۔ دوسری واپسی کی قیمت کا قاعدہ ہے، اور بریک، جاری رکھنے اور اس طرح کے قواعد اور for لوپ کے مطابق ہیں۔ ہم نے بھی ایک سادہ مثال کے ساتھ استعمال کی وضاحت کی ہے۔
testArray = array.from(10, 20, 30, 40, 50, 60, 70, 80, 90, 100)
for ele in testArray // 修改成 [i, ele]的形式:for [i, ele] in testArray , runtime.log("ele:", ele, ", i:", i)
runtime.log("ele:", ele)
runtime.error("stop")
جب آپ کو انڈیکس کی ضرورت ہو تو استعمال کریںfor [i, ele] in testArray
ہسپانوی
for سرکلر ایپلی کیشن
جب پائن زبان کے ذریعہ فراہم کردہ بلٹ ان افعال کو استعمال کرکے کچھ لوپ لوجیکل حساب کتاب کی جاسکتی ہے ، تو یہ براہ راست لوپ ڈھانچے کا استعمال کرکے لکھا جاسکتا ہے ، یا اس کو بلٹ ان افعال کے ذریعہ سنبھالا جاسکتا ہے۔ ہم دو مثالیں پیش کرتے ہیں۔
1، اوسط حساب
جب آپ سرکلر ڈھانچے کا استعمال کرتے ہیں:
length = 5
var a = array.new(length)
array.push(a, close)
if array.size(a) >= length
array.remove(a, 0)
sum = 0
for ele in a
sum += ele
avg = sum / length
plot(avg, title="avg", overlay=true)
م