[TOC]
پائن میں عام ساخت کا کوڈ مندرجہ ذیل ہے:
<version>
<declaration_statement>
<code>
ایف ایم زیڈ کے پائن زبان کی حمایت کردہ نوٹ علامت: ایک سطر کے نوٹ//
، کثیر سطری نوٹ/* */
، جیسے کہ مندرجہ ذیل مثال میں نوٹس کا طریقہ:
[macdLine, signalLine, histLine] = ta.macd(close, 12, 26, 9) // calculate the MACD indicator
/*
The plot function draws the indicator line on the chart
*/
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()
اعلان بیان اسکرپٹ کی قسم کا تعین کرتا ہے ، جس کے نتیجے میں اس میں کیا اجازت ہے ، اور اس کا استعمال اور عملدرآمد کیسے ہوتا ہے۔ اسکرپٹ کی کلیدی خصوصیات مرتب کریں ، جیسے اس کا نام ، جہاں یہ چارٹ میں شامل ہونے پر ظاہر ہوگا ، اس کی نمائش کرنے والی عددی اقدار کی درستگی اور شکل ، اور کچھ عددی اقدار جو اس کے رن ٹائم رویے پر حکمرانی کرتی ہیں ، مثال کے طور پر ، چارٹ میں ظاہر کرنے کے لئے ڈرائنگ آبجیکٹ کی زیادہ سے زیادہ تعداد۔ حکمت عملیوں کے لئے ، خصوصیات میں وہ دلائل شامل ہیں جو بیک ٹیسٹنگ کو کنٹرول کرتے ہیں ، جیسے ابتدائی سرمایہ ، کمیشن ، سلائپج ، وغیرہ۔ اس کی کوئی ضرورت نہیں ہے کہ ایکindicator()
یاstrategy()
اعلان کا بیان ایک حکمت عملی کوڈ میں شامل ہونا ضروری ہے FMZ کے پائن.
اسکرپٹ میں وہ لائنیں جو تبصرے یا کمپائلر کی ہدایات نہیں ہیں ، جو بیانات ہیں ، جو اسکرپٹ کے الگورتھم کو نافذ کرتے ہیں۔ بیان ان میں سے ایک مواد ہوسکتا ہے۔
if
, for
, while
یاswitch
اور دیگر تعمیراتبیانات کو مختلف طریقوں سے ترتیب دیا جا سکتا ہے
space
یاtab
(ٹیب کی) ۔ ان کا پہلا کردار لائن کا پہلا کردار بھی ہونا چاہئے۔ لائنوں کی پہلی پوزیشن سے شروع ہونے والی لائنیں تعریف کے مطابق اسکرپٹ کے عالمی دائرہ کار کا حصہ ہیں۔local block
ہمیشہ ساخت یا کثیر سطر فنکشن کے اعلانات کے لئے ضروری ہے۔ ایک مقامی بلاک کو ایک ٹیب یا چار خالی جگہوں سے انڈینٹ کرنا ضروری ہے (دوسرے معاملے میں ، اسے پچھلی سطر کے مربوط کوڈ کے طور پر تجزیہ کیا جائے گا ، جو کوڈ کی پچھلی سطر کا مستقل مواد ہے) ، اور ہر مقامی بلاک ایک مختلف مقامی دائرہ کار کی وضاحت کرتا ہے۔مثال کے طور پر، تین مقامی بلاکس شامل کریں، ایک اپنی مرضی کے مطابق فنکشن کے اعلان میں، اور دو متغیر کے اعلان میں اگر ساخت کا استعمال کرتے ہوئے، مندرجہ ذیل کے طور پر:
indicator("", "", true) // Declaration statement (global scope), can be omitted
barIsUp() => // Function declaration (global scope)
close > open // Local block (local scope)
plotColor = if barIsUp() // Variable declaration (global scope)
color.green // Local block (local scope)
else
color.red // Local block (local scope)
runtime.log("color", color = plotColor) // Call a built-in function to output the log (global scope)
لمبی لائنوں کو متعدد لائنوں میں تقسیم کیا جاسکتا ہے ، یا
a = open + high + low + close
یہ اس طرح لپیٹا جا سکتا ہے (نوٹ کریں کہ ہر سطر میں داخل ہونے والے خالی جگہوں کی تعداد 4 کا ضرب نہیں ہے):
a = open +
high +
low +
close
ایک طویل پلاٹ ((() کال کے طور پر لپیٹ کیا جا سکتا ہے:
close1 = request.security(syminfo.tickerid, "D", close) // closing price data series of syminfo.tickerid daily level of the current trading pair
close2 = request.security(syminfo.tickerid, "240", close) // closing price data series of syminfo.tickerid 240-minute level of the current trading pair
plot(ta.correlation(close, open, 100), // Line-long plot() calls can be wrapped
color = color.new(color.purple, 40),
style = plot.style_area,
trackprice = true)
صارف کے ذریعہ بیان کردہ فنکشن کے اعلانات میں بیانات کو بھی لپیٹا جاسکتا ہے۔ تاہم ، چونکہ مقامی بلاک کو نحو کے لحاظ سے ایک انڈینٹ (4 خالی جگہوں یا 1 ٹیب) سے شروع ہونا چاہئے ، لہذا جب اسے اگلی سطر پر تقسیم کیا جائے تو ، بیان کی تسلسل ایک سے زیادہ انڈینٹ (جو خالی جگہوں کے 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")
ٹائم سیریز ڈیٹا ٹائپ یا فارمیٹ نہیں ہے ، اس کے بجائے ، یہ پین زبان میں ایک بنیادی ڈھانچے کا تصور ہے۔ وقت میں مستقل طور پر تبدیل ہونے والی اقدار کو ذخیرہ کرنے کے لئے استعمال کیا جاتا ہے ، ہر قدر وقت کے ایک نقطہ سے مطابقت رکھتی ہے۔ ٹائم سیریز کے تصور کی ساخت وقت کے ساتھ ساتھ تبدیل ہونے والے اعداد و شمار کی ایک سیریز کو پروسیسنگ اور ریکارڈ کرنے کے لئے موزوں ہے۔
بلٹ ان متغیر لے لوopen
مثال کے طور پر،open
بلٹ ان متغیر ہر int نمائندگی BAR کی افتتاحی قیمت ریکارڈ، اگر یہopen
ایک 5 منٹ int نمائندگی مدت کے اعداد و شمار ہے.open
متغیر ہر 5 منٹ int نمائندگی BAR (بار) کی افتتاحی قیمت ریکارڈ کرتا ہے.open
کوڈ میں موجودہ int نمائندگی BAR کی افتتاحی قیمت سے مراد ہے۔ وقت کی سیریز میں پچھلی اقدار (ماضی کی اقدار) کا حوالہ دینے کے لئے ، ہم استعمال کرتے ہیں[]
تاریخ آپریٹر. جب حکمت عملی ایک مخصوص int نمائندگی BAR پر عملدرآمد کیا جاتا ہے،open[1]
معنی موجودہ int نمائندگی BAR کی پچھلی int نمائندگی BAR کی افتتاحی قیمت سے مراد ہے۔
اگرچہوقت کی سیریزاعداد و شمار کی ساخت
پائن زبان میں ڈیزائن وقت سیریز آسانی سے حکمت عملی کوڈ میں اختتامی قیمت کی مجموعی قیمت کا حساب کر سکتے ہیں، اور اس طرح کے لئے لوپ ڈھانچے کا استعمال کرنے کی کوئی ضرورت نہیں ہے، صرف بلٹ میں تقریبta.cum(close)
PINE زبان کا استعمال کیا جاتا ہے۔ ایک اور مثال کے طور پر ، ہمیں آخری 14 انٹ نمائندگی باروں (یعنی ، 14 انٹ نمائندگی باروں کو موجودہ لمحے کے قریب ترین) کی اعلی ترین قیمت اور کم ترین قیمت کے درمیان فرق کی اوسط قیمت کا حساب لگانے کی ضرورت ہے جب کوڈ عمل میں لایا جاتا ہے) ، جسے لکھا جاسکتا ہے:ta.sma(high - low, 14)
ایک وقت سیریز پر ایک تقریب کو کال کرنے کا نتیجہ بھی وقت سیریز پر ایک نشان چھوڑ جائے گا، ایک بار پھر ہم استعمال کرتے ہیں[]
سابقہ اقدار کا حوالہ دینے کے لئے تاریخ آپریٹر۔ مثال کے طور پر ، جب جانچ کرتے ہیں کہ آیا موجودہ انٹ نمائندگی BAR کی اختتامی قیمت آخری 10 انٹ نمائندگی BAR (موجودہ انٹ نمائندگی 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)
مذکورہ بالا ٹیسٹ کوڈ متعلقہ ٹائم سیریز میں ہر BAR پر a اور b کی اقدار کو آؤٹ پٹ کرے گا۔ یہ دیکھا جاسکتا ہے کہ a اور b کی اقدار ہمیشہ برابر ہوتی ہیں ، لہذا یہ دونوں نمائندگی کے طریقے برابر ہیں۔
PINE حکمت عملی کے
Pricing Currency Precision
مثال کے طور پر ، قیمتوں کا تعین کرنسی کی درستگی 2 پر مقرر کی گئی ہے ، جو دوسرے اعشاریہ نقطہ تک درست ہے ، 0.01 تک درست ہے۔ پھر ہر نقطۂ جھکاو کے پوائنٹس 0.01 قیمتوں کا تعین کرنے والے یونٹوں کی نمائندگی کرتے ہیں۔ اس وقت ، جھکاو کا نقطہ 5 پر مقرر کیا جاتا ہے ، اور آرڈر دیتے وقت جھکاو 0.05 ہوتا ہے (جھکاو قیمت کے اس حصے سے مراد ہے جو بہتر اور معذور آرڈر کی تجارت کے لئے آرڈر دیتے وقت اوور فلو ہوتا ہے) ۔SetMaxBarLen
میںjavascript
srategy.strategy(title = "open long example", pyramiding = 3) // The number of orders placed in the same direction allowed by pyramiding
strategy.entry("long1", strategy.long, 0.01) // Open a long position at the market price, specify the group label as long1
strategy.entry("long2", strategy.long, 0.02, when = close > ta.ema(close, 10)) // The condition is triggered, the order is executed, and the market price opens a long position
strategy.entry("long3", strategy.long, 0.03, limit = 30000) // Specify the (lower) price, plan to place a buy order, wait for a deal to open a position, and open a position at a limit price
strategy(title = "close long example", pyramiding = 2) // The number of orders placed in the same direction allowed by pyramiding
strategy.entry("long1", strategy.long, 0.1) // Open a long position at the market price, specify the group label as long1
strategy.entry("long2", strategy.long, 0.1) // Open a long position at the market price, specify the group label as long2
strategy.close("long1", when = strategy.position_size > 0.1, qty_percent = 50, comment = "close buy entry for 50%") // To close a position, specify to close 50% of the positions whose group label is long1
strategy.close("long2", when = strategy.position_size > 0.1, qty_percent = 80, comment = "close buy entry for 80%") // To close a position, specify to close 80% of the positions whose group label is long2
PINE زبان کا پوزیشن میکانزم ایک طرفہ پوزیشن سے ملتا جلتا ہے۔ مثال کے طور پر ، لمبی سمت میں پوزیشن رکھتے وقت (لمبی پوزیشن) ، اگر فروخت کے آپریشن کا آرڈر ، منصوبہ بند آرڈر وغیرہ (پوزیشن کی مخالف سمت میں) ہے تو ، عمل درآمد شروع ہوجائے گا ، اور لمبی سمت میں پوزیشن پہلے بند ہوجائے گی۔ (تمام لمبی پوزیشنوں کو بند کریں) ، اور پھر ٹرگر شدہ آرڈر کو انجام دیں (بند سے پہلے کی پوزیشن کے مقابلے میں مخالف سمت میں) ۔
آرڈر کی جگہ کا حکم کا استعمال کرتے ہوئے ایک آرڈر کی جگہ جب، اگر کوئی قیمت مخصوص نہیں ہے، تو ڈیفالٹ ایک مارکیٹ آرڈر ہے. مارکیٹ آرڈر کے علاوہ، آپ کو بھی ایک منصوبہ بندی کے حکم کے ذریعے ایک آرڈر رکھ سکتے ہیں، جو فوری طور پر ایک آرڈر رکھنے کے لئے کام نہیں کرتا. منصوبہ بندی کے حکم پروگرام کے منصوبہ بندی کے حکم قطار میں موجود ہے جب یہ متحرک نہیں ہے، اور اس کے دوران حالت کی معلومات کی strategy.entry
ایک آرڈر رکھنے کے لئے تقریب، ہم وضاحت کر سکتے ہیںlimit
, stop
arguments.
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 variable_name = expression
وضاحت:
variable_name
- پائن اسکرپٹ میں صارف متغیر کا کوئی بھی نام قابل اجازت ہے (اس میں بڑے اور چھوٹے لاطینی حروف ، نمبر اور underscores (_) شامل ہوسکتے ہیں ، لیکن یہ ایک نمبر سے شروع نہیں ہوسکتا ہے) ۔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)
// Test var varip
var i = 0
varip ii = 0
// Print the i and ii changed in each round of the strategy logic on the graph
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)
// Each round of logic execution increments i and ii by 1
if true
i := i + 1
ii := ii + 1
ریئل ٹائم قیمت ماڈل
مندرجہ بالا ٹیسٹ کوڈ دو مراحل میں عملدرآمد کیا جاتا ہے: 1. تاریخی int نمائندگی کا مرحلہ۔ 2. ریئل ٹائم int نمائندگی کا مرحلہ۔ ریئل ٹائم قیمت ماڈل میں ، تاریخی int نمائندگی کا مرحلہ ، متغیر i اور ii کے ذریعہ اعلان کیا گیا ہے۔var
, varip
حکمت عملی کوڈ کے عملدرآمد کے ہر راؤنڈ میں incrementally پر عملدرآمد کر رہے ہیں (کیونکہif true
لہذا ، یہ دیکھا جاسکتا ہے کہ بیک ٹیسٹ کے نتیجے کی int نمائندگی BAR پر دکھائے جانے والے اعداد کو ایک ایک کرکے 1 سے بڑھایا جاتا ہے۔ جب تاریخی int نمائندگی کا مرحلہ ختم ہوجاتا ہے تو ، ریئل ٹائم int نمائندگی کا مرحلہ شروع ہوتا ہے۔var
, varip
اعلان شدہ متغیرات مختلف طریقے سے تبدیل ہونا شروع ہوجاتے ہیں۔ کیونکہ یہ ایک حقیقی وقت کی قیمت کا ماڈل ہے ، لہذا حکمت عملی کا کوڈ ایک بار انٹ نمائندگی BAR میں ہر قیمت میں تبدیلی کے لئے ایک بار انجام دیا جائے گا ،i := i + 1
اورii := ii + 1
ایک بار عملدرآمد کیا جائے گا۔ فرق یہ ہے کہ ii ہر بار ترمیم کی جاتی ہے۔ اگرچہ i کو بھی ہر بار ترمیم کی جاتی ہے ، لیکن جب اگلے راؤنڈ میں حکمت عملی کی منطق عمل میں لائی جاتی ہے تو پچھلی قیمت بحال ہوجائے گی ، اور جب تک موجودہ انٹ نمائندگی BAR مکمل نہیں ہوجاتی (یعنی ، اگلے راؤنڈ میں حکمت عملی کی منطق عمل میں لائی جاتی ہے تو پچھلی قیمت بحال نہیں ہوگی) تک i کی قدر کو اپ ڈیٹ نہیں کیا جائے گا۔ لہذا یہ دیکھا جاسکتا ہے کہ متغیر i ہر بار کے لئے 1 سے بڑھتا ہے۔ لیکن متغیر ii ہر بار کے لئے کئی بار جمع ہوتا ہے۔
اختتامی قیمت کا ماڈل
چونکہ اختتامی قیمت ماڈل حکمت عملی منطق صرف ایک بار فی int نمائندگی بار چلا جاتا ہے پر عملدرآمد کرتا ہے. لہذا متغیرات کی طرف سے اعلان کیا جاتا ہےvar
اورvarip
مندرجہ بالا مثال میں مکمل طور پر ایک ہی عمل کو بند کرنے کی قیمت کے ماڈل میں، دونوں تاریخی int نمائندگی مرحلے میں اور حقیقی وقت int نمائندگی مرحلے میں، 1 فی int نمائندگی BAR کی طرف سے اضافہ.
varp (var intrabar persist) ایک کلیدی لفظ ہے جو متغیرات کو تفویض کرنے اور ایک بار شروع کرنے کے لئے استعمال ہوتا ہے۔ یہ var کلیدی لفظ سے ملتا جلتا ہے ، لیکن varip کے ساتھ اعلان کردہ متغیر لائو موم بتی کی تازہ کاریوں کے درمیان اپنی قدر برقرار رکھتا ہے۔
varip variable_name = expression
وضاحت:
variable_name
- پائن اسکرپٹ میں صارف متغیر کا کوئی بھی نام قابل اجازت ہے (اس میں بڑے اور چھوٹے حرفی لاطینی حروف ، نمبر ، اور underscores (_) شامل ہوسکتے ہیں ، لیکن یہ ایک نمبر سے شروع نہیں ہوسکتا ہے) ۔expression
- کوئی بھی ریاضیاتی اظہار، جیسے باقاعدہ متغیرات کی وضاحت کرنے کا وقت۔ پہلی K لائن بار پر، اظہار کا اندازہ لگایا جاتا ہے اور متغیر کو صرف ایک بار تفویض کیا جاتا ہے۔مثال
// varip
varip int v = -1
v := v + 1
plot(v)
var استعمال کرتے وقت ، پلاٹ bar_index کی قدر واپس کرے گا۔ varip کے ساتھ ، وہی رویہ تاریخی سلاخوں پر ہوتا ہے ، لیکن زندہ سلاخوں پر ، چارٹ ایک ایسی قیمت واپس کرتا ہے جو ہر ٹک کے لئے ایک بڑھتی ہے۔
تبصرےیہ صرف سادہ اقسام جیسے فلوٹ، int، bool، string، اور ان اقسام کی صفوں کے ساتھ استعمال کیا جا سکتا ہے.
یہ ایک بول متغیر کی قدر کی نمائندگی کرتا ہے، یا ایک قدر ہے کہ ایک اظہار کا استعمال کرتا ہے جب شمار کیا جا سکتا ہےموازنہیامنطقی operator.
تبصرےبرائے مہربانی اس کی تفصیلات ملاحظہ کریںموازنہآپریٹرز اورمنطقی Operators.
یہ بھی ملاحظہ کریں
bool
یہ ایک بول متغیر کی قدر اور موازنہ آپریشنز اور منطقی آپریشنز کا نتیجہ پیش کرتا ہے۔
تبصرےبرائے مہربانی اس کی تفصیلات ملاحظہ کریںموازنہآپریٹرز اورمنطقی Operators.
یہ بھی ملاحظہ کریں
bool
ایک اگر بیان بیانات کا ایک بلاک بیان کرتا ہے جو ایک اظہار کی شرط پوری ہونے پر عملدرآمد ہونا ضروری ہے۔ پائن اسکرپٹ زبان کا ورژن 4 آپ کو
یونیورسل کوڈ:
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
- ماڈیول میں آخری اظہار یا بلاک سے اظہار دوسری صورت میں بیان کی حتمی قیمت واپس کرتا ہے۔ اگر متغیر کو آخری اعلان کیا گیا تھا تو ، اس کی قیمت نتیجہ کی قیمت ہوگی۔
اگر بیان کی واپسی قدر کی قسم کی قسم پر منحصر ہےreturn_expression_then
اورreturn_expression_else
. ٹریڈنگ ویو پر چلتے وقت ، ان کی اقسام کو مماثل ہونا ضروری ہے: جب آپ کے پاس else بلاک میں ایک سٹرنگ ویلیو ہوتا ہے تو ، اس وقت کے بلاک سے عددی قدر واپس کرنا ممکن نہیں ہوتا ہے۔ جب FMZ پر چلتا ہے تو ، مندرجہ ذیل مثال غلطی کی اطلاع نہیں دے گی۔ جب y ویلیو
مثال
// 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)
[var_declaration =] for counter = from_num to to_num [by step_num]
statements | continue | break
return_expression
var_declaration
- ایک اختیاری متغیر اعلامیہ جو لوپ counter
- ایک متغیر جو لوپ کاؤنٹر ویلیو رکھتا ہے ، لوپ کی ہر تکرار پر 1 یا step_num ویلیو میں اضافہ / کمی کرتا ہے۔from_num
to_num
- کاؤنٹر کی حتمی قیمت۔ لوپ تب ٹوٹ جاتا ہے جب کاؤنٹر to_num سے بڑا ہوتا ہے (یا to_num سے کم ہوتا ہے) ۔ step_num
- کاؤنٹر کی اضافہ / کمی کی قیمت۔ یہ اختیاری ہے۔ ڈیفالٹ +1 یا -1 ہے ، اس پر منحصر ہے کہ from_num یا to_num میں سے کون سا بڑا ہے۔ اقدار کا استعمال کرتے وقت ، کاؤنٹر بھی from_num یا to_num کے سب سے بڑے کے مطابق اضافہ / کمی کی جاتی ہے ، لہذا step_num کا +/- نشان اختیاری ہے۔statements | continue | break
- کسی بھی تعداد کے بیانات، یا 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
construct صف میں ہر عنصر کے لئے متعدد بیانات کو دہرانے کی اجازت دیتا ہے۔ یہ کسی بھی دلیل کے ساتھ استعمال کیا جاسکتا ہے: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
- لوپ تکرار کی صف ID.statements | continue | break
- کسی بھی تعداد کے بیانات، یا return_expression
- لوپ کی واپسی کی قیمت میں متغیر کو تفویض کیا جاتا ہےvar_declaration
اگر لوپ continue
ایک کلیدی لفظ جو صرف لوپ میں استعمال کیا جا سکتا ہے۔ یہ لوپ کی اگلی تکرار کو انجام دینے کا سبب بنتا ہے۔break
- چپس سے باہر نکلنے کے لئے کلیدی لفظ.
کسی صف کے عناصر یا ان کے سائز کو لوپ کے اندر تبدیل کرنے کی اجازت دیتا ہے۔
یہاں، ہم ایک دلیل کی شکل کا استعمال کرتے ہیںfor...in
ہر بار کے لیے یہ معلوم کرنے کے لیے کہ کتنے باروں کی 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
اس متغیر کے لئے ایک initialization قدر فراہم کر سکتے ہیں.boolean_expression
- اگر سچ ہے تو، مقامی بلاک کو چلائیںwhile
اگر غلط ہے، اسکرپٹ عملدرآمد کے بعد جاری ہےwhile
statement.
continue
- اسcontinue
مطلوبہ الفاظ کی وجہ سے لوپ اگلے تکرار میں شاخ.break
- اسbreak
مطلوبہ الفاظ لوپ کو ختم کرنے کا سبب بنتا ہے. اسکرپٹ کے عمل کے بعد دوبارہ شروع ہوتا ہےwhile
statement.
return_expression
- اختیاری لائن جس میں واپسی کی قیمت فراہم کی جاتی ہےwhile
statement.
مثال
// 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
وضاحت نہیں کی گئی ہے تو، بیان واپس آتا ہےna
اگرlocal_block
عملدرآمد نہیں کیا جاتا ہے.switch
ایک متغیر کے لئے بیان، تمامlocal_block
مثالیں ایک ہی قسم کی قدر واپس کرنا ضروری ہے.
یہ بھی ملاحظہ کریں
if
?:
سیریز ایک کلیدی لفظ ہے جو ڈیٹا سیریز کی قسم کی نشاندہی کرتا ہے۔ عام طور پر واضح طور پر استعمال کرنے کی ضرورت نہیں ہےseries
keyword.
متغیرات کو اقدار تفویض کرنے کے لئے استعمال کیا جاتا ہے، لیکن صرف جب متغیر اعلان کیا جاتا ہے (پہلی بار استعمال کیا جاتا ہے).
تفویض آپریٹر بائیں جانب متغیر کو قدر تفویض کرتا ہے۔ پہلے سے اعلان شدہ متغیرات کو اقدار تفویض کرنے کے لئے استعمال کیا جاتا ہے۔
کے برابر نہیں ہے۔ کسی بھی قسم کے اظہار پر لاگو ہوتا ہے۔
expr1 != expr2
واپسیبولین ویلیو، یا بولین ویلیوز کا ایک سلسلہ
ماڈیولو (انتہائی باقی) ۔ عددی اظہار پر لاگو ہوتا ہے۔
expr1 % expr2
واپسیعدد یا فلوٹ ویلیو، یا اقدار کی سیریز۔
تبصرےپائن اسکرپٹ میں ، جب عددی باقی کا حساب لگایا جاتا ہے تو ، ضارب کو کاٹ دیا جاتا ہے ، یعنی کم سے کم مطلق قدر کی طرف راؤنڈ کیا جاتا ہے۔ اس کے نتیجے میں آنے والی قیمت کا نشان تقسیم کے برابر ہوگا۔
مثال: -1٪ 9 = -1 - 9 * ٹرنکیٹ(-1/9) = -1 - 9 * ٹرنکیٹ(-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
واپسیبائنری+
کی سٹرنگ expr1 اور expr2 کا مجموعہ واپس کرتا ہے
نمبر ایک عدد یا فلوٹنگ پوائنٹ ویلیو، یا اقدار کا ایک سلسلہ لوٹاتا ہے:
بائنری
تبصرےآپ ریاضیاتی آپریٹرز کو اعداد کے ساتھ ساتھ سیریز متغیرات کے ساتھ بھی استعمال کرسکتے ہیں۔ سیریز کے ساتھ استعمال کی صورت میں آپریٹرز کو عنصر کے لحاظ سے لاگو کیا جاتا ہے۔
اضافی تفویض۔ عددی اظہار یا تاروں پر لاگو ہوتا ہے۔
expr1 += expr2
مثال
// Equals to expr1 = expr1 + expr2.
a = 2
b = 3
a += b
// Result: a = 5.
plot(a)
واپسیتاروں کے لئے، expr1 اور expr2 کے concatenation لوٹاتا ہے. اعداد کے لئے، ایک عدد یا فلوٹ قدر، یا اقدار کی سیریز لوٹاتا ہے.
تبصرےآپ ریاضیاتی آپریٹرز کو اعداد کے ساتھ ساتھ سیریز متغیرات کے ساتھ بھی استعمال کرسکتے ہیں۔ سیریز کے ساتھ استعمال کی صورت میں آپریٹرز کو عنصر کے لحاظ سے لاگو کیا جاتا ہے۔
گھٹاؤ یا یونری مائنس۔ عددی اظہار پر لاگو ہوتا ہے۔
expr1 - expr2
- expr
واپسیایک عدد یا فلوٹنگ پوائنٹ ویلیو، یا اقدار کی سیریز لوٹاتا ہے:
بائنری -
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
statements.
فنکشن ڈیکلیریشن گرائمر یہ ہے:
<identifier>([<argument_name>[=<default_value>]], ...) =>
<local_block>
<function_result>
اے<local_block>
صفر یا اس سے زیادہ پائن اسکرپٹ بیانات ہے.<function_result>
ایک متغیر، ایک اظہار، یا ایک tuple ہے.
مثال
// 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)
واپسیexpr2 اگر expr1 کا اندازہ درست ہے تو ، expr3 دوسری صورت میں۔ صفر کی قیمت (0 اور NaN ، + لامحدود ، - لامحدود) غلط سمجھا جاتا ہے ، کوئی اور قدر درست ہے۔
تبصرےاگر آپ کو اس کی ضرورت نہیں ہے تو
یہ بھی ملاحظہ کریں
na
سیریز سبسکرپٹ۔ سیریز expr1 کی پچھلی اقدار تک رسائی فراہم کرتا ہے۔ expr2 ماضی میں سلاخوں کی تعداد ہے ، اور یہ عددی ہونا ضروری ہے۔ فلوٹ کو نیچے کی طرف گول کیا جائے گا۔
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
منطقی اور. بولین اظہار پر لاگو.
expr1 and expr2
واپسیبولین ویلیو، یا بولین ویلیو کی سیریز۔
منطقی OR۔ بولین اظہار پر لاگو ہوتا ہے۔
expr1 or expr2
واپسیبولین ویلیو، یا بولین ویلیو کی سیریز۔
منطقی رد (NOT) ۔ بولین اظہار پر لاگو ہوتا ہے۔
not expr1
واپسیبولین ویلیو، یا بولین ویلیو کی سیریز۔
مطلوبہ الفاظ کا استعمال متغیر یا دلیل کی
مثال
// 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 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 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 textColor = color.green
if barstate.islastconfirmedhistory
runtime.log("test", textcolor = textColor)
تبصرےرنگین لٹریلز کی شکل مندرجہ ذیل ہے: # آر آر جی جی بی بی یا # آر آر جی جی بی اے اے۔ حروف کے جوڑے 00 سے ایف ایف تک ہیکساڈیسمل اقدار (0 سے 255 تک اعشاریہ میں) کی نمائندگی کرتے ہیں جہاں آر آر ، جی جی اور بی بی جوڑے رنگ
متغیر اعلامیے میں قسم کا واضح طور پر ذکر کرنا اختیاری ہے ، سوائے اس کے کہ جب یہ na کے ساتھ شروع کیا جاتا ہے۔ قسم کے نظام پر صارف دستی صفحے میں پائن اسکرپٹ کی اقسام کے بارے میں مزید معلومات حاصل کریں۔
یہ بھی ملاحظہ کریں
var
varip
int
float
string
color.rgb
color.new
مطلوبہ الفاظ کا استعمال متغیر یا دلیل کی array.new<type>
, array.from
function.
مثال
// 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") // Pass the argument close directly; specify the argument title and assign the string "test plot"
دلیل نام تفویض کی وضاحت کے بعد، آپ اب براہ راست متغیر کو دلیل کے طور پر منتقل نہیں کر سکتے ہیں، اور بعد کے دلائل کو دلیل نام تفویض کی شکل میں لکھا جانا چاہئے.
// plot(close, title="test", color.red) // Although the third argument of plot is the color value, but this will report an error
plot(close, title="test", color=color.red) // Correct writing
plot(close, "test", color.red) // Correct writing
منتقل وقت کی مدت میں تبدیل کریں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)
واپسیایک بار میں سیکنڈ کی تعداد کی ایک int نمائندگی ایکtimeframe
.
دلائل
timeframe
(سادہ تار) ٹائم فریم. اختیاری. ڈیفالٹ ٹائم فریم.پیریڈ ہے.تبصرےکے لئےtimeframe
>=
یہ بھی ملاحظہ کریں
input.timeframe
timeframe.period
ایک ہموار اوسط int نمائندگی قدر کی درخواست کرنے کے لئے ایک ٹکر شناختی بناتا ہے.
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
(سادہ تار) پروڈکٹ کوڈ کی شناخت.یہ بھی ملاحظہ کریں
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"}]
*/
// Chart address 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, "new population in the stock market")
plot(idx_price, "stock market index prices")
// Index reversal trading
avg_investor = ta.ema(add_investor[1], 30)
if strategy.position_size == 0
if add_investor > avg_investor*1.1
runtime.log("new population:", add_investor, "average of last 30 days:", avg_investor, "#ff0000")
strategy.entry("Enter Short", strategy.short)
else if add_investor < avg_investor*0.9
runtime.log("new population:", add_investor, "average of last 30 days:", avg_investor, "#ff0000")
strategy.entry("Enter Long", strategy.long)
واپسیاعداد و شمار کی سیریز جو دلیل کے ذریعہ بیان کی گئی ہےattribute
.
دلائل
url
(سادہ سٹرنگ) مطلوبہ ڈیٹا ماخذ کا یو آر ایل، ڈیٹا ماخذ کے جواب کی ڈیٹا فارمیٹ کے مطابق ہونا ضروری ہے (کم از کم وقت، ڈیٹا صفات شامل کریں):{"data": [], "schema": ["time", "data"]}
آپ مثال میں ڈیٹا فارمیٹ کا حوالہ دے سکتے ہیں:{
"data": [
[1430438400000, "April 2015", "{\"add_investor\" : 497.53, \"close_price\" : 4441.655}"],
[1433116800000, "May 2015", "{\"add_investor\" : 415.87, \"close_price\" : 4611.744}"]
// ...
],
"schema": ["time", "date", "data"]
}
attribute
(سادہ تار) صفات کا نام بتاتا ہے اور مطلوبہ ڈیٹا واپس کرتا ہے۔ مثال کے طور پر:"$.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
(سادہ تار) علامت.timeframe
(سادہ تار) وقت کی مدت۔ ایک خالی تار کو چارٹ کی موجودہ قرارداد کے طور پر تشریح کیا جاتا ہے۔expression
(سیریز int/float/bool/color) ایک اظہار کا حساب لگایا جاسکتا ہے اور request.security کال سے واپس کیا جاسکتا ہے۔ یہ ایک سیریز یا ٹپل ہوسکتا ہے جس میں عناصر شامل ہوں جو سیریز میں ڈالے جاسکتے ہیں۔gaps
(barmerge_gaps) مطلوبہ اعداد و شمار کے لئے ضم کرنے کی حکمت عملی (مطلوبہ اعداد و شمار خود بخود اہم سیریز OHLC ڈیٹا کے ساتھ ضم ہوجاتے ہیں۔ ممکنہ اقدار: barmerge.gaps_on ، barmerge.gaps_off. barmerge.gaps_on - مطلوبہ اعداد و شمار کو ممکنہ خلاؤں (na اقدار) کے ساتھ ضم کیا جاتا ہے۔ barmerge.gaps_off - مطلوبہ اعداد و شمار کو بغیر کسی خلا کے مستقل طور پر ضم کیا جاتا ہے ، تمام خلاؤں کو پچھلے قریب ترین موجودہ اقدار سے بھرا جاتا ہے۔ ڈیفالٹ قیمتبھیک مانگنے والاکیوں حکمت عملی اسکوائر کاپی پائن کی حکمت عملی نہیں کر سکتے ہیں
چھوٹا سا خواباچھا، ہم چیک کریں گے۔
بھیک مانگنے والاچانگ سپر ڈائیونگ کا اصلاح شدہ رجحان ٹریکر
چھوٹا سا خوابہیلو ، براہ کرم بتائیں کہ آپ کی حکمت عملی کیا ہے؟