[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
پیرامیٹرز ، آرڈر کو پہلے قابل قیمت پر متحرک کیا جاتا ہے۔
//@version=5
strategy("Percent of Equity Order", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
// 简单的均线交叉策略
longCondition = ta.crossover(ta.sma(close, 14), ta.sma(close, 28))
shortCondition = ta.crossunder(ta.sma(close, 14), ta.sma(close, 28))
// 如果均线交叉条件满足,则买入或卖出
if (longCondition)
strategy.entry("Long", strategy.long)
if (shortCondition)
strategy.entry("Short", strategy.short)
مخصوص کریںdefault_qty_type=strategy.percent_of_equity
پھر سیٹ کریںdefault_qty_value
فیصد تعداد کے طور پر ((0-100) ، 1 یا 1٪؛ اکاؤنٹس میں قیمتوں کا تعین کرنسیوں کی تعداد کے مطابق رقم کا حساب لگانا؛ مثال کے طور پر: موجودہ اکاؤنٹ میں 10000 USDT ہے، 1٪ کو ترتیب دیں، یعنی 100 USDT پیمانے پر رقم کا حساب لگانا؛ فروخت کے وقت موجودہ قیمت پر حساب لگائیں۔
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
PINE زبان کے آبجیکٹ صارف کی وضاحت کردہ قسم (UDT) کی مثال ہیں ، جسے بغیر کسی طریقہ کار کی کلاس کے سمجھا جاسکتا ہے ، جس سے صارف کو پالیسی میں اپنی مرضی کے مطابق قسم بنانے کی اجازت ملتی ہے جس میں ایک ہی ادارے میں مختلف اقدار کا اہتمام ہوتا ہے۔
اقسام کی وضاحت
آئیے آرڈر کی معلومات کو ذخیرہ کرنے کے لئے ایک آرڈر کی قسم کی وضاحت کرتے ہیں:
type order
float price
float amount
string symbol
type
مطلوبہ الفاظ کے اعلان کی قسمیںاشیاء تخلیق کریں
اعلان کردہ اقسام کا استعمال کرتے ہوئے کال کریںnew()
فنکشن تخلیق کرنے والے اشیاء:
order1 = order.new()
order1 = order.new(100, 0.1, "BTC_USDT")
order1 = order.new(amount = 0.1, symbol = "BTC_USDT", price = 100)
اس کے علاوہ، آپ خالی اشیاء بھی بنا سکتے ہیں:
order order1 = na
یہاں ایک حقیقی مثال ہے:
type order
float price
float amount
string symbol
if strategy.position_size == 0 and open > close
strategy.entry("long", strategy.long, 1)
order1 = order.new(strategy.opentrades.entry_price(strategy.opentrades - 1), strategy.opentrades.size(strategy.opentrades - 1), syminfo.ticker)
// runtime.log(order1) // 输出 {"data":{"price":46002.8,"amount":1,"symbol":"swap"},"_meta":0,"_type":"order"}
مثال کے طور پر:
order1 = order.new(strategy.opentrades.entry_price(strategy.opentrades - 1), strategy.opentrades.size(strategy.opentrades - 1), syminfo.ticker)
یہ بھی لکھا جا سکتا ہے:
order order1 = na
order1 := order.new(strategy.opentrades.entry_price(strategy.opentrades - 1), strategy.opentrades.size(strategy.opentrades - 1), syminfo.ticker)
var مطلوبہ الفاظ کے لئے استعمال کردہ آبجیکٹ کی قسم
//@version=5
indicator("Objects using `var` demo")
//@type A custom type to hold index, price, and volume information.
type BarInfo
int index = bar_index
float price = close
float vol = volume
//@variable A `BarInfo` instance whose fields persist through all iterations, starting from the first bar.
var BarInfo firstBar = BarInfo.new()
//@variable A `BarInfo` instance declared on every bar.
BarInfo currentBar = BarInfo.new()
// Plot the `index` fields of both instances to compare the difference.
plot(firstBar.index, "firstBar")
plot(currentBar.index, "currentBar")
جب صارف کی وضاحت کردہ قسم کے اعتراض کے متغیر کو var کلیدی لفظ کے بیان کا استعمال کرتے ہوئے تفویض کیا جاتا ہے تو ، یہ کلیدی لفظ خود بخود اس اعتراض کے تمام شعبوں پر لاگو ہوتا ہے۔ اس کا مطلب یہ ہے کہ var کلیدی لفظ کے ذریعہ بیان کردہ اعتراض ہر تکرار کے درمیان اپنی حالت برقرار رکھے گا ، اس کے بجائے ہر تکرار میں اپنے فیلڈ ویلیو کو دوبارہ شروع کرنے کی ضرورت نہیں ہے۔
آپ دو اشیاء کے انڈیکس فیلڈز کو ڈرائنگ کرکے ان کے مابین فرق کا موازنہ کرسکتے ہیں۔ firstBar.index ہر تکرار میں پہلے سے طے شدہ قدر کو برقرار رکھے گا ، جبکہ currentBar.index ہر تکرار میں موجودہ اندراج کی بار_انڈیکس قدر کو دوبارہ شروع کرے گا۔
مختلف مطلوبہ الفاظ کے لیے استعمال ہونے والے اشیاء کی اقسام
//@version=5
indicator("Objects using `varip` fields demo")
//@type A custom type that counts the bars and ticks in the script's execution.
type Counter
int bars = 0
varip int ticks = 0
//@variable A `Counter` object whose reference persists throughout all bars.
var Counter counter = Counter.new()
// Add 1 to the `bars` and `ticks` fields. The `ticks` field is not subject to rollback on unconfirmed bars.
counter.bars += 1
counter.ticks += 1
// Plot both fields for comparison.
plot(counter.bars, "Bar counter", color.blue, 3)
plot(counter.ticks, "Tick counter", color.purple, 3)
پائین میں ، مختلف قسم کے مطلوبہ الفاظ کا استعمال کرتے ہوئے ، اس بات کی نشاندہی کی جاسکتی ہے کہ اسکرپٹ کے عملدرآمد کے دوران کسی شے کے کھیتوں کو مستقل طور پر برقرار رکھا جاسکتا ہے ، بغیر اس کی تصدیق شدہ کالموں میں گھومنے کے۔ کاؤنٹر کی قسم کے بیان میں ، بارس فیلڈ میں مختلف قسم کے مطلوبہ الفاظ استعمال نہیں کیے جاتے ہیں ، لہذا یہ ہر غیر تصدیق شدہ کالم میں واپس چلتا ہے۔ جبکہ ٹکس فیلڈ میں مختلف قسم کے مطلوبہ الفاظ استعمال کیے جاتے ہیں ، لہذا یہ غیر تصدیق شدہ کالم میں واپس نہیں جاتا ہے۔ counter اعتراض var کی ورڈ کا استعمال کرتے ہوئے اعلان کیا جاتا ہے، لہذا یہ پورے اسکرپٹ کی پھانسی کے دوران جاری رہے گا. ہر تکرار میں ، بارس فیلڈ اور ٹکس فیلڈ میں 1 اضافہ ہوتا ہے۔ بارس فیلڈ ہر غیر تصدیق شدہ کالم میں گھومتا ہے ، جبکہ ٹکس فیلڈ نہیں گھومتا ہے۔ آخر میں ، counter.bars اور counter.ticks فیلڈز کو ڈرائنگ کرکے ان کے مابین اختلافات کا موازنہ کیا جاسکتا ہے۔ counter.bars کی قدر ہر غیر تصدیق شدہ کالم میں پیچھے ہٹ جائے گی ، جبکہ counter.ticks کی قدر اسکرپٹ کے اختتام تک بڑھتی رہے گی۔
فیلڈ ویلیو کو تبدیل کریں
type order
float price
float amount
string symbol
if strategy.position_size == 0 and open > close
strategy.entry("long", strategy.long, 1)
order1 = order.new(strategy.opentrades.entry_price(strategy.opentrades - 1), strategy.opentrades.size(strategy.opentrades - 1), syminfo.ticker)
if strategy.position_size != 0
runtime.log(order1)
order1.price := 999
order1.amount := 100
runtime.log(order1)
runtime.error("stop")
استعمال کیا جا سکتا ہے:=
دوبارہ تفویض کرنے والے آپریٹرز آبجیکٹ فیلڈ کی قدر کو تبدیل کرتے ہیں۔
اشیاء کا مجموعہ
مثال کے طور پر ایک خالی صف کا اعلان کیا جاتا ہے جو صارف کے ذریعہ بیان کردہ آرڈر کی قسم کے اشیاء کو محفوظ کرے گا:
type order
float price
float amount
string symbol
arrOrder = array.new<order>()
order1 = order.new(99, 1, "BTC_USDT")
order2 = order.new(100, 2, "ETH_USDT")
array.push(arrOrder, order1)
array.push(arrOrder, order2)
runtime.log(arrOrder)
runtime.error("stop")
یا
type order
float price
float amount
string symbol
var array<order> arrOrder = na
arrOrder := array.new<order>()
order1 = order.new(99, 1, "BTC_USDT")
order2 = order.new(100, 2, "ETH_USDT")
array.push(arrOrder, order1)
array.push(arrOrder, order2)
runtime.log(arrOrder)
runtime.error("stop")
نقل کرنے والے اشیاء
پائن میں ، اشیاء کو حوالہ جات کے ذریعہ تفویض کیا جاتا ہے۔ جب موجودہ اشیاء کو نئے متغیرات کے لئے تفویض کیا جاتا ہے تو ، دونوں ایک ہی چیز کی طرف اشارہ کرتے ہیں۔
//@version=5
indicator("")
type pivotPoint
int x
float y
pivot1 = pivotPoint.new()
pivot1.x := 1000
pivot2 = pivot1
pivot2.x := 2000
// Both plot the value 2000.
plot(pivot1.x)
plot(pivot2.x)
مندرجہ ذیل مثال میں، ہم ایک pivot1 اعتراض تخلیق کرتے ہیں اور اس کے x فیلڈ کو 1000 پر مقرر کرتے ہیں۔ پھر ہم ایک pivot2 کو اس pivot1 اعتراض کے حوالہ جات پر مشتمل متغیر کا اعلان کرتے ہیں، لہذا دونوں ایک ہی مثال کی طرف اشارہ کرتے ہیں۔ لہذا، pivot2.x کو تبدیل کرنے سے pivot1.x بھی تبدیل ہوجائے گا، کیونکہ دونوں x ایک ہی اعتراض کے فیلڈ کا حوالہ دیتے ہیں۔
اصل اعتراض سے آزاد نقل بنانے کے لئے، اس صورت میں ہم بلٹ میں کاپی ((() طریقہ استعمال کر سکتے ہیں۔ اس مثال میں، ہم pivot2 کو pivot1 اعتراض کی نقل کی مثال کے متغیر کا حوالہ دیتے ہیں. اب، pivot2.x کو تبدیل کرنے سے pivot1.x کو تبدیل نہیں ہوتا، کیونکہ یہ x کو ایک علیحدہ اعتراض کے میدان سے مراد ہے:
//@version=5
indicator("")
type pivotPoint
int x
float y
pivot1 = pivotPoint.new()
pivot1.x := 1000
pivot2 = pivotPoint.copy(pivot1)
pivot2.x := 2000
// Plots 1000 and 2000.
plot(pivot1.x)
plot(pivot2.x)
نوٹ کریں کہ ٹریڈنگ ویو کا کاپی کرنے کا طریقہ چھوٹی کاپی ہے۔ اگر کسی شے میں مخصوص قسم کے فیلڈز ہیں (جیسے صف) تو اس شے کی چھوٹی کاپی میں موجود یہ فیلڈز اس شے کے ساتھ ایک ہی مثال کی طرف اشارہ کریں گے۔ ایف ایم زیڈ پلیٹ فارم کو براہ راست گہری کاپی کرنے کی اجازت دیتا ہے ، جس میں اضافی پروسیسنگ کی ضرورت نہیں ہے۔ مندرجہ ذیل مثالوں کا حوالہ دیا جاسکتا ہے:
گہری نقل
//@version=5
indicator("test deepCopy")
type orderInfo
float price
float amount
type labelInfo
orderInfo order
string labelMsg
labelInfo1 = labelInfo.new(orderInfo.new(100, 0.1), "test labelInfo1")
labelInfo2 = labelInfo.copy(labelInfo1)
labelInfo1.labelMsg := "labelInfo1->2" // 修改 labelInfo1 的基础类型字段,看是否影响 labelInfo2
labelInfo1.order.price := 999 // 修改 labelInfo1 的复合类型字段,看是否影响 labelInfo2
runtime.log(labelInfo1)
runtime.log(labelInfo2)
runtime.error("stop")
ٹیسٹ کے نتائج، labelInfo.copy ((labelInfo1) جب عملدرآمد کیا جاتا ہے تو گہری کاپی کی جاتی ہے، labelInfo1 میں کسی بھی فیلڈ کو تبدیل کرنے سے labelInfo2 پر اثر نہیں پڑے گا۔
پائین زبان کے طریقوں میں مخصوص مثالوں کے اندر اندر یا صارف کی وضاحت کردہ اقسام سے وابستہ خصوصی افعال ہوتے ہیں۔ زیادہ تر معاملات میں ، وہ باقاعدہ افعال کی طرح ہی ہیں ، لیکن مختصر ، زیادہ آسان نحو فراہم کرتے ہیں۔ صارفین کو نقطہ نظر کے ذریعہ متغیرات پر براہ راست رسائی حاصل کرنے کے طریقوں کا استعمال کرنے کی اجازت دیتا ہے ، جیسے پائین آبجیکٹ کے فیلڈز تک رسائی حاصل کرنا۔ پائین میں تمام خاص اقسام کے اندر اندر طریقے شامل ہیں ، بشمول گروپ نمبر ، میٹرکس ، میپنگ ، لائن ، بھرنے والی لائن ، وغیرہ۔ یہ طریقوں سے صارفین کو اسکرپٹ میں ان اقسام کے مخصوص پروگراموں کو فون کرنے کا ایک آسان طریقہ فراہم ہوتا ہے۔
بلٹ ان طریقہ کار
ایک مثال کے طور پر اسکرپٹ کوڈ کا ایک ٹکڑا:
//@version=5
indicator("Custom Sample BB", overlay = true)
float sourceInput = input.source(close, "Source")
int samplesInput = input.int(20, "Samples")
int n = input.int(10, "Bars")
float multiplier = input.float(2.0, "StdDev")
var array<float> sourceArray = array.new<float>(samplesInput)
var float sampleMean = na
var float sampleDev = na
// Identify if `n` bars have passed.
if bar_index % n == 0
// Update the queue.
array.push(sourceArray, sourceInput)
array.shift(sourceArray)
// Update the mean and standard deviaiton values.
sampleMean := array.avg(sourceArray)
sampleDev := array.stdev(sourceArray) * multiplier
// Calculate bands.
float highBand = sampleMean + sampleDev
float lowBand = sampleMean - sampleDev
plot(sampleMean, "Basis", color.orange)
plot(highBand, "Upper", color.lime)
plot(lowBand, "Lower", color.red)
اس کے مترادف میں لکھا جا سکتا ہے:
//@version=5
indicator("Custom Sample BB", overlay = true)
float sourceInput = input.source(close, "Source")
int samplesInput = input.int(20, "Samples")
int n = input.int(10, "Bars")
float multiplier = input.float(2.0, "StdDev")
var array<float> sourceArray = array.new<float>(samplesInput)
var float sampleMean = na
var float sampleDev = na
// Identify if `n` bars have passed.
if bar_index % n == 0
// Update the queue.
sourceArray.push(sourceInput)
sourceArray.shift()
// Update the mean and standard deviaiton values.
sampleMean := sourceArray.avg()
sampleDev := sourceArray.stdev() * multiplier
// Calculate band values.
float highBand = sampleMean + sampleDev
float lowBand = sampleMean - sampleDev
plot(sampleMean, "Basis", color.orange)
plot(highBand, "Upper", color.lime)
plot(lowBand, "Lower", color.red)
آپ دیکھ سکتے ہیں کہ PINE کی حمایت کی ہےMethods
اس کے بعد، کوڈarray.avg(sourceArray)
اس کے علاوہ، آپ کو اپنے صارفین کے لئے ایک طریقہ کار کے طور پر لکھ سکتے ہیں:sourceArray.avg()
◄
نوٹ: ایف ایم زیڈ فی الحال معاون نہیں ہے۔array.avg
اس طرح کی کالیں۔
صارف کے ذریعہ بیان کردہ طریقے
پائن صارف کو کسی بھی بلٹ ان یا صارف کے ذریعہ بیان کردہ قسم کے کسی بھی اعتراض کے ساتھ استعمال کرنے کے لئے ایک کسٹم طریقہ کی وضاحت کرنے کی اجازت دیتا ہے۔ تعریف کا طریقہ بنیادی طور پر تعریف کے افعال کی طرح ہے ، لیکن اس میں دو اہم اختلافات ہیں:
1، طریقہ مطلوبہ الفاظ کو فنکشن کے نام سے پہلے ہونا ضروری ہے۔ 2، طریقہ کار کے پیرامیٹرز، جن میں سے پہلے پیرامیٹر کی قسم کو واضح طور پر بیان کیا جانا چاہئے، کیونکہ یہ اس قسم کی قسم کا مطلب ہے جس سے طریقہ کار سے منسلک کیا جائے گا۔
مثال کے طور پر، مندرجہ ذیل کوڈ میں سے کسی کوڈ کو صارف کی اپنی مرضی کے مطابق طریقہ کے طور پر احاطہ کرتا ہے، جس میں بلین اشارے کا حساب لگایا جاتا ہے:
//@version=5
indicator("Custom Sample BB", overlay = true)
float sourceInput = input.source(close, "Source")
int samplesInput = input.int(20, "Samples")
int n = input.int(10, "Bars")
float multiplier = input.float(2.0, "StdDev")
var array<float> sourceArray = array.new<float>(samplesInput)
var float sampleMean = na
var float sampleDev = na
// Identify if `n` bars have passed.
if bar_index % n == 0
// Update the queue.
sourceArray.push(sourceInput)
sourceArray.shift()
// Update the mean and standard deviaiton values.
sampleMean := sourceArray.avg()
sampleDev := sourceArray.stdev() * multiplier
// Calculate band values.
float highBand = sampleMean + sampleDev
float lowBand = sampleMean - sampleDev
plot(sampleMean, "Basis", color.orange)
plot(highBand, "Upper", color.lime)
plot(lowBand, "Lower", color.red)
تبدیلی:
//@version=5
indicator("Custom Sample BB", overlay = true)
float sourceInput = input.source(close, "Source")
int samplesInput = input.int(20, "Samples")
int n = input.int(10, "Bars")
float multiplier = input.float(2.0, "StdDev")
var array<float> sour
وُہوآناگر آپ چاہتے ہیں کہ ایک ہی وقت میں کئی ٹرانزیکشنز چلیں تو آپ کو کیا کرنا چاہئے؟
ہلکے بادلبراہ کرم مجھے بتائیں، کیا پائن زیادہ ٹرانزیکشن کر سکتا ہے؟ کیا یہ جے ایس کی طرح ٹرانزیکشنز کو گھوم سکتا ہے؟ شکریہ۔
لیزا20231مزید تفصیلات کے لیے شکریہ
فنکاریواہ! یہ پائن اسکرپٹ پلیٹ فارم پر اوکیکس کی سمیلیٹر کا استعمال کیسے کرتا ہے؟
فنکاریاس کا مطلب یہ ہے کہ ٹریڈنگ ویو پلیٹ فارم کی حکمت عملی کو براہ راست کاپی کیا جا سکتا ہے اور اسے ایجاد کنندہ پلیٹ فارم پر استعمال کیا جا سکتا ہے۔
ایجاد کاروں کی مقدار - خوابPINE زبان صرف ایک قسم کی حکمت عملی کر سکتی ہے ، اور متعدد قسم کی حکمت عملی کو بہتر طور پر پائیتھون ، جاوا اسکرپٹ ، سی ++ میں ڈیزائن کیا جاسکتا ہے۔
ایجاد کاروں کی مقدار - خواباوہ ، ہاں ، او کے ایکس خاص ہے ، ان کا ماڈل ماحول اور اصلی ڈسک کا ماحول ایک ہی ایڈریس ہے ، صرف دوسری جگہوں پر فرق ہے۔ لہذا ماڈل ڈسک میں سوئچ کرنے کے لئے بیس ایڈریس کو تبدیل کرنے کا کوئی طریقہ نہیں ہے۔
ہلکے بادلاوککس ڈسک کا استعمال نہیں کیا جا سکتا ہے۔
ایجاد کاروں کی مقدار - خواباس طرح کے مختلف فن تعمیر کے مسائل کو حل نہیں کیا جاسکتا کیونکہ ہر ایکسچینج میں مختلف انٹرفیس ہیں اور انٹرفیس کی تعدد کی حد بھی مختلف نہیں ہے۔ اس سے بہت سارے مسائل پیدا ہوتے ہیں۔
ایجاد کاروں کی مقدار - خواباچھا، شکریہ کہ آپ نے تجاویز دی ہیں، اور اس کی ضرورت کی اطلاع دیں۔
ہلکے بادلیہ JS کے ساتھ مل کر کام کرنے کے لئے بہتر محسوس ہوتا ہے، جس میں مختلف تجارتی طریقوں کو بہتر طور پر اپنانے کے لئے بہتر ہے.
رجحان شکاریکیا ہم بعد میں کئی اقسام پر غور کریں گے؟ اختتامی قیمت ہر قسم کے ذریعے چلتی ہے۔
ایجاد کاروں کی مقدار - خوابہم نے اس کے بارے میں کیا سوچا ہے؟
ہلکے بادلاچھا، بہت شکریہ۔
ایجاد کاروں کی مقدار - خوابہیلو، PINE کی زبان کی حکمت عملی صرف ایک قسم کی ہے.
ایجاد کاروں کی مقدار - خوابآپ کا شکریہ کہ آپ نے میری مدد کی ہے۔ دستاویزات کو مزید بہتر بنایا جائے گا۔
ایجاد کاروں کی مقدار - خوابہاں ہاں۔۔۔۔۔
ایجاد کاروں کی مقدار - خوابPINE ٹیمپلیٹ کلاس لائبریری ، جس کی پیرامیٹرز پر تبادلہ کرنے والے تبادلے کا بیس ایڈریس مقرر کیا جاسکتا ہے۔ دستاویز کا آغاز: PINE زبان کے تبادلہ کلاس لائبریری ٹیمپلیٹ پیرامیٹرز۔