FMZ PINE اسکرپٹ دستاویزات

مصنف:چھوٹا سا خواب, تخلیق: 2022-05-06 14:27:06, تازہ کاری: 2024-02-23 15:36:48

[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()اس کے علاوہ، اس نے اپنے آپ کو ایک بار پھر اس کے بارے میں سوچا.

کوڈ

اسکرپٹ میں جو لائنیں تبصرے یا کمپائلر کی ہدایات نہیں ہیں وہ جملے ہیں جو اسکرپٹ کے الگورتھم کو نافذ کرتے ہیں۔ ایک جملہ ان میں سے ایک ہوسکتا ہے۔

  • متغیر کا اعلان
  • متغیر کی دوبارہ تفویض
  • فنکشن کا اعلان
  • بلٹ ان فنکشن کالز، صارف کی وضاحت کردہ فنکشن کالز
  • ifforwhileیا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 ہے ((سلائڈ اشارے آرڈر کی جگہ پر بہتر اور آرڈر کی تکمیل کے لئے زیادہ قیمت کا حصہ) ۔)
  • متغیر کے طویل ترین دورانیے کی تعداد: چارٹ کے K لائن BAR کی تعداد کو متاثر کرتی ہے، اورjavascriptحکمت عملی میں کال کریںSetMaxBarLenفنکشن ایک ہی کام کرتا ہے۔

مستقبل کے اختیارات

  • قسم کا کوڈ: معاہدہ کا کوڈ ، تبادلے کا اعتراض جب غیر حقیقی تبادلے کا اعتراض ہوتا ہے تو اس کی ضرورت ہوتی ہے۔
  • کم سے کم معاہدے کی تعداد: جب آپ آرڈر دیتے ہیں تو معاہدے کی کم سے کم تجارت ہوتی ہے۔

ڈسک کے اختیارات

  • آٹو بحالی کی پیشرفت: پچھلی پالیسی کو روکنے سے پہلے کی حالت میں خود بخود بحالی۔
  • آرڈر کی دوبارہ کوشش کی تعداد: آرڈر کو منسوخ کرنے کے لئے آرڈر کی واپسی کی کوشش کی جاتی ہے، اس پیرامیٹر کو زیادہ سے زیادہ دوبارہ کوشش کی تعداد کو محدود کرنے کے لئے استعمال کیا جاتا ہے.
  • نیٹ ورک کی پوچھ گچھ کا وقفہ ((ملی سیکنڈ): صرف REST پروٹوکول پر لاگو ہوتا ہے ، نیٹ ورک کی درخواست کے وقفے کو کنٹرول کرتا ہے ، درخواستوں کو زیادہ کثرت سے روکتا ہے ، جو تبادلے کی حد سے باہر ہے۔
  • اکاؤنٹ کی ہم وقت سازی کا وقت (سیکنڈ): اکاؤنٹ کے ڈیٹا کی ہم وقت سازی کا وقت کا دورانیہ۔
  • کھولنے کے بعد پوزیشن مطابقت پذیری کا وقت (ملی سیکنڈ): صرف کچھ تبادلے کے اعداد و شمار میں تاخیر کی وجہ سے دوہری پوزیشنوں کے لئے، مطابقت پذیری کا وقت مقرر کرنا اس طرح کے مسائل کو کم کر سکتا ہے.
  • لیور ضرب: لیور ضرب مقرر کریں۔

فوری تجارت، دیگر ترتیبات

  • ایک ہاتھ کا حجم: ڈیفالٹ ایک ہاتھ کا حجم صرف فوری طور پر قابل عمل ہے۔
  • کم سے کم حجم: کم سے کم حجم۔
  • قیمتوں کا تعین کرنسی کی درستگی: قیمت کی درستگی ، یعنی قیمتوں کی چھوٹی تعداد۔
  • ٹرانزیکشن کی قسم کی درستگی: اگلی مقدار کی درستگی، یعنی اگلی مقدار کی چھوٹی تعداد۔
  • چارج: اس ترتیب کے مطابق کچھ اعداد و شمار کا حساب لگایا جاتا ہے ، 0.002 ایک ہزار میں سے 2 کا مطلب ہے۔
  • منافع اور نقصان کے اعدادوشمار کا وقفہ: صرف حقیقی ڈسک پر منافع اور نقصان کے اعدادوشمار کا استعمال۔
  • ناکام دوبارہ کوشش ((ملی سیکنڈ): نیٹ ورک کی درخواست ناکام ہونے پر دوبارہ کوشش کا وقفہ۔
  • ایجنٹ استعمال کریں: صرف REST پروٹوکول کے لئے درست ہے۔
  • عام غلطیوں کو چھپانا: عام غلطیوں کو چھپانے کے لئے لاگ ان کے علاقے میں۔
  • بیس ایڈریس سوئچ کریں: صرف REST پروٹوکول کے لئے درست ہے۔
  • پیغامات کو ای میل باکس میں بھیجیں، وغیرہ۔

معاہدہ

کھلنا

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اور جب ہم ایک فنکشن کو ترتیب دیتے ہیں، تو ہم اس کی وضاحت کر سکتے ہیںlimitstopپیرامیٹرز۔

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اس کے علاوہ ، اس کے بعد سے ، اس کے بعد سے ، اس کے بعد سے ، اس کے بعد سے ، اس کے بعد سے ، اس کے بعد سے ، اس کے بعد سے ، اس کے بعد سے ، اس کے بعد سے.

  • سٹاپ آرڈر

    آرڈر کی روک تھام کی قیمت مقرر کریں ، جب آرڈر خریدنے کے لئے ہوتا ہے تو ، آرڈر صرف اس وقت ٹرگر ہوتا ہے جب مارکیٹ کی موجودہ قیمت اس سے زیادہ ہوتی ہے۔ جب آرڈر فروخت کا ہوتا ہے تو ، آرڈر صرف اس وقت ٹرگر ہوتا ہے جب مارکیٹ کی موجودہ قیمت اس سے کم ہوتی ہے۔

  • سٹاپ-لمٹ آرڈر

    ایک ہی وقت میں مقرر کیا جا سکتا ہےlimitstopپیرامیٹرز ، آرڈر کو پہلے قابل قیمت پر متحرک کیا جاتا ہے۔

بیانات، منطقی ساخت کے مطلوبہ الفاظ

وار

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")

متغیر a سیریز میں ہر کالم لائن کی پہلی کالم لائن کی اختتامی قیمت برقرار رکھتا ہے۔ متغیر پیمائش b پیمائش میں پہلی پیمائش گرین پیمائش کی قیمت کی بندش کی قیمت برقرار رکھی گئی ہے۔ متغیر پی سی سی نے سیریز میں دسویں پی سی سی کے اختتامی قیمت کو برقرار رکھا۔

ایف ایم زیڈ پر ، ریئل ٹائم قیمت ماڈل ، بندش قیمت ماڈل ، اور مارکیٹنگ کے لئے مارکیٹنگ ماڈل میں تقسیم کیا گیا ہے۔varvaripہم نے مندرجہ ذیل کوڈ کا استعمال کرتے ہوئے ٹیسٹ کیا.

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 لائن مرحلے میں، آپ کی قیمتوں کا تعین کرنے کے لئے آپ کی قیمتوں کا تعین کرنے کے لئے آپ کی قیمتوں کا تعین کرنے کے لئے آپ کی قیمتوں کا تعین کرنے کے لئے آپ کی قیمتوں کا تعین کرنے کے لئے.varvaripبیان کردہ متغیر i، ii ہر بار جب پالیسی کا کوڈ چلایا جاتا ہے تو اضافہ ہوتا ہے کیونکہ (((if trueلہذا یقینی طور پر اس کے مطابق عملدرآمد کی شرط کوڈ بلاکس) ؛ لہذا آپ کو دیکھ سکتے ہیں کہ نتیجہ K لائن BAR پر ظاہر ہونے والے اعداد میں سے ہر ایک میں اضافہ ہوتا ہے 1؛ جب تاریخ K لائن مرحلے ختم ہوجاتا ہے تو ، حقیقی وقت K لائن مرحلے کا آغاز ہوتا ہے۔varvaripیہ ایک حقیقی وقت کی قیمت ماڈل ہے، کیونکہ ایک K لائن BAR میں ہر قیمت کی تبدیلی کے لئے ایک بار پھر حکمت عملی کا کوڈ چلایا جاتا ہے.i := i + 1اورii := ii + 1فرق یہ ہے کہ ii ہر بار ترمیم کی جاتی ہے۔ اگرچہ i ہر بار ترمیم کی جاتی ہے ، لیکن اگلے دور میں حکمت عملی کی منطق کو انجام دینے پر اس کی پچھلی قیمت کو بحال کیا جاتا ہے ، جب تک کہ موجودہ K لائن BAR ختم نہ ہو جائے۔ لہذا آپ دیکھ سکتے ہیں کہ متغیر i اب بھی ہر بار بار 1 ہے۔ لیکن متغیر ii ہر بار بار میں کئی بار اضافہ ہوتا ہے۔

  • اختتامی قیمت کا ماڈل چونکہ اختتامی قیمت کا ماڈل ہر K لائن BAR کے ختم ہونے پر ایک بار حکمت عملی کا نفاذ کرتا ہے۔ لہذا اختتامی قیمت کے ماڈل میں ، تاریخی K لائن مرحلے اور حقیقی وقت کے K لائن مرحلے کو ایک ہی وقت میں کیا جاتا ہے۔varvaripبیان کردہ متغیرات مندرجہ بالا مثالوں میں بڑھتے ہوئے بالکل یکساں طور پر ظاہر ہوتے ہیں ، ہر 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

اگر

اگر بیانات بیانات کے بلاکس کی وضاحت کرتے ہیں جو اظہار کی شرائط کو پورا کرنے پر عملدرآمد کرنا ضروری ہے۔ چوتھے ایڈیشن کی پائین اسکرپٹ زبان آپ کو else if نحو کا استعمال کرنے کی اجازت دیتی ہے۔

عام کوڈ:

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_then0var_decl_then1وغیرہ۔ اگر شرط غلط ہے تو جملہ بلاک استعمال کریں۔else ifیاelseمنطق میں ((var_decl_else0var_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 متغیر کے لئے ایک empty threshold ((na、false یا ) تفویض کیا جاتا ہے:

مثالیں

// if
x = if close > open
    close
// If current close > current open, then x = close.
// Otherwise the x = na.
plot(x)

آپ کو ایک سے زیادہ else if بلاکس استعمال کرنے کی اجازت ہے یا بالکل بھی استعمال نہیں کر سکتے ہیں۔ then , else if , else if کے بلاکس کو چار خالی جگہوں میں منتقل کیا جاتا ہے:

مثالیں

// if
x = if open > close
    5
else if high > low
    close
else
    open
plot(x)

نظر انداز کیا جا سکتا ہےifجملے کا نتیجہ قدر ((var_declarationX= کو نظر انداز کیا جاسکتا ہے) ‒ اگر آپ کو اظہار کے ضمنی اثرات کی ضرورت ہو تو یہ مفید ثابت ہوسکتا ہے ، مثال کے طور پر حکمت عملی کے معاملات میں:

مثالیں

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 کو else شاخ کے طور پر استعمال کریں۔ آپ دو یا دو سے زیادہ استعمال کر سکتے ہیں: آپریٹرز کو ایک ساتھ مل کر ایک جملے کو لاگو کرنے کے لئے جو کہ ایک ہی وقت میں ایک ہی وقت میں ایک ہی وقت میں ایک ہی وقت میں ایک ہی وقت میں ہو سکتا ہے. آپ اعداد کے ساتھ ریاضیاتی آپریٹرز اور متغیرات کی تعداد کے ساتھ استعمال کرسکتے ہیں۔ آپریٹرز کو عناصر پر لاگو کیا جاتا ہے جب آپریٹرز کو استعمال کیا جاتا ہے۔

دوبارہ ملیں گے 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 ((انٹیجر) قسم کے مطلوبہ الفاظ جو واضح طور پر متغیر یا پیرامیٹرز کا اعلان کرتے ہیں۔

مثالیں

// int
int i = 14    // Same as `i = 14`
i := na
plot(i)

نوٹمتغیر کے بیان میں واضح طور پر قسم کا ذکر کرنا اختیاری ہے ، جب تک کہ یہ نا کے ساتھ شروع نہ ہو جائے۔ قسم کے نظام کے صارف دستی صفحے پر پائن کی قسم کے بارے میں مزید معلومات حاصل کریں۔

دوبارہ ملیں گے var varip float bool color string

فلوٹ

ایک قسم کا کلیدی لفظ جو واضح طور پر متغیر یا پیرامیٹرز کا اعلان کرنے کے لئے استعمال ہوتا ہے۔

مثالیں

// float
float f = 3.14    // Same as `f = 3.14`
f := na
plot(f)

نوٹمتغیر کے بیان میں واضح طور پر قسم کا ذکر کرنا اختیاری ہے ، جب تک کہ یہ na کے ساتھ ابتدائی نہ ہو۔

دوبارہ ملیں گے var varip int bool color string

سٹرنگ

واضح طور پر بیان کردہ متغیرات یا پیرامیٹرز کے لئے "string" قسم کے مطلوبہ الفاظ۔

مثالیں

// string
string s = "Hello World!"    // Same as `s = "Hello world!"`
// string s = na // same as "" 
plot(na, title=s)

نوٹمتغیر کے بیان میں واضح طور پر قسم کا ذکر کرنا اختیاری ہے ، جب تک کہ یہ نا کے ساتھ شروع نہ ہو جائے۔ قسم کے نظام کے صارف دستی صفحے پر پائن کی قسم کے بارے میں مزید معلومات حاصل کریں۔

دوبارہ ملیں گے var varip int float bool str.tostring str.format

رنگ

رنگ کی قسم کے مطلوبہ الفاظ جو واضح طور پر متغیرات یا پیرامیٹرز کا اعلان کرتے ہیں۔

مثالیں

// color
color textColor = color.green
if barstate.islastconfirmedhistory
    runtime.log("test", textcolor = textColor)

نوٹرنگین حروف کی شکل درج ذیل ہے: #RRGGBB یا #RRGGBBAA ؛ حروف 00 سے FF تک کے سولہ عددی اقدار کی نمائندگی کرتے ہیں (عشریاتی 0 سے 255 تک) ، جہاں RR ، GG اور BB رنگوں کے سرخ ، سبز اور نیلے رنگ کے پہلوؤں کی قدر ہیں۔ AA رنگ کی شفافیت (یا الفا پہلوؤں کی اختیاری قدر ہے ، جس میں 00 پوشیدہ ہے ، FF شفاف نہیں ہے۔ جب AA درست نہیں ہے تو ، FF کا استعمال کریں۔ سولہ عددی حروف بڑے یا چھوٹے ہوسکتے ہیں۔ متغیر کے بیان میں واضح طور پر قسم کا ذکر کرنا اختیاری ہے ، جب تک کہ یہ نا کے ساتھ شروع نہ ہو جائے۔ قسم کے نظام کے صارف دستی صفحے پر پائن کی قسم کے بارے میں مزید معلومات حاصل کریں۔

دوبارہ ملیں گے var varip int float string color.rgb color.new

صف

واضح طور پر بیان کردہ متغیرات یا پیرامیٹرز کے لئے استعمال کیا جاتا ہے۔array.new<type>,array.fromفنکشن تخلیق صف اعتراضات ((یا ID) ⇒

مثالیں

// array
array<float> a = na
a := array.new<float>(1, close)
plot(array.get(a, 0))

نوٹصف کے اعتراضات کو ہمیشہ سیریز کی شکل میں رکھا جاتا ہے۔

دوبارہ ملیں گے var array.new array.from

بلٹ ان فنکشن

جب فنکشن کو بلایا جاتا ہے تو پیرامیٹرز کو منتقل کیا جاسکتا ہے ، پیرامیٹر ناموں کی تفویض کی جاسکتی ہے ، متغیرات کو براہ راست پیرامیٹرز کی جگہ پر منتقل کیا جاسکتا ہے ، اور اس میں مخلوط استعمال کی بھی حمایت کی جاسکتی ہے۔ مثال کے طور پر:

plot(close, title="test plot")     // 直接传参数 close ;指定参数 title ,赋值字符串"test plot"

ایک بار جب آپ نے کسی پیرامیٹر کا نام تفویض کیا ہے تو ، آپ براہ راست متغیر کو بطور پیرامیٹر منتقل نہیں کرسکتے ہیں۔ اس کے بعد کے پیرامیٹرز کو پیرامیٹر کے نام تفویض کی شکل میں لکھا جانا چاہئے۔

// plot(close, title="test", color.red)    // 虽然plot第三个参数是颜色值,但是这样写就会报错
plot(close, title="test", color=color.red) // 正确写法
plot(close, "test", color.red)             // 正确写法

وقت کا فریم

timeframe.in_seconds وقت کا فریم۔_سیکنڈ میں

کے پاس بھیج دیا جائے گاtimeframeپیرامیٹر کے وقت کی مدت سیکنڈ میں تبدیل کردی گئی ہے۔

timeframe.in_seconds(timeframe)

مثالیں

// Get chart timeframe:
i_tf = input.timeframe("1D")

// Convert timeframe to the int value (number of seconds in 1 Day):
tf = timeframe.in_seconds(i_tf)

plot(tf)

واپسی کی قیمت timeframeکی ایک K لائن میں سیکنڈ کی تعداد کے لئے int نمائندگی کی شکل.

پیرامیٹرز

  • timeframe(simple string) ٹائم فریم۔ آپشنل۔ ڈیفالٹ: timeframe.period۔

نوٹکے لئےtimeframe>= 1M فنکشن سیکنڈوں کی تعداد کا حساب ایک مہینے میں 30.4167 (365/12) دن کے حساب سے کرتا ہے۔

دوبارہ ملیں گے input.timeframe timeframe.period

ٹکر

ticker.heikinashi

ایک کوڈ شناخت کنندہ کی تخلیق کی درخواست کی جاتی ہے تاکہ K کی اوسط لائن کی قیمت کو ہموار کیا جاسکے۔

ticker.heikinashi(symbol)

مثالیں

heikinashi_close = request.security(ticker.heikinashi(syminfo.tickerid), timeframe.period, close)

heikinashi_aapl_60_close = request.security(ticker.heikinashi(syminfo.tickerid), "60", close)
plot(heikinashi_close)
plot(heikinashi_aapl_60_close)

واپسی کی قیمت 股票代码的字符串值,可以提供给request.security函数。

پیرامیٹرز

  • symbol(simple string) تجارتی کوڈ کی شناخت۔

دوبارہ ملیں گے syminfo.tickerid syminfo.ticker request.security

درخواست

request.data

بیرونی اعداد و شمار کی درخواست کریں۔

request.data(url, attribute)

مثالیں

/*backtest
start: 2022-01-26 09:00:00
end: 2024-02-01 15:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_CTP","currency":"FUTURES"}]
*/

// 图表地址https://www.datadata.cn/queries/a10ea45c-1674-48ef-b414-cc17a7e4a548
var chart_data = "https://www.datadata.cn/api/v1/query/a10ea45c-1674-48ef-b414-cc17a7e4a548/data"
add_investor = request.data(chart_data, "$.add_investor")
idx_price = request.data(chart_data, "$.close_price")

plot(add_investor, "股市新增人口")
plot(idx_price, "股指价格")
// 反指交易
avg_investor = ta.ema(add_investor[1], 30)
if strategy.position_size == 0
    if add_investor > avg_investor*1.1
        runtime.log("新增人口:", add_investor, "近30天平均:", avg_investor, "#ff0000")
        strategy.entry("Enter Short", strategy.short)
    else if add_investor < avg_investor*0.9
        runtime.log("新增人口:", add_investor, "近30天平均:", avg_investor, "#ff0000")
        strategy.entry("Enter Long", strategy.long)

واپسی کی قیمتپیرامیٹرزattributeاعداد و شمار کی مخصوص سیریز۔

پیرامیٹرز

  • url(simple string) درخواست کردہ ڈیٹا ماخذ کا یو آر ایل ، ڈیٹا ماخذ کا جواب دینے والے ڈیٹا فارمیٹ کی ضرورت ہے (کم از کم وقت ، ڈیٹا کی خصوصیات پر مشتمل ہے):{"data": [], "schema": ["time", "data"]}مثال کے طور پر، اعداد و شمار کی شکل کا حوالہ دیتے ہوئے:
    {
        "data": [
            [1430438400000, "2015年04月", "{\"add_investor\" : 497.53, \"close_price\" : 4441.655}"],
            [1433116800000, "2015年05月", "{\"add_investor\" : 415.87, \"close_price\" : 4611.744}"]
            // ...
        ],
        "schema": ["time", "date", "data"]
    }  
    
  • attribute(simple string) صفات کا نام بتاتا ہے اور مطلوبہ ڈیٹا واپس کرتا ہے۔ مثال کے طور پر:"$.add_investor"استعمال کریں$.بطور سابقہ، صفات کا نام ڈیٹا فیلڈ میں صفات کے ساتھ مطابقت رکھتا ہے جو درخواست کردہ ڈیٹا ماخذ پر جواب دیا جاتا ہے

request.security

ایک اور قسم / قرارداد کی ضرورت ہے۔

request.security(symbol, timeframe, expression, gaps, lookahead, ignore_invalid_symbol, currency) 

مثالیں

s = request.security(syminfo.tickerid, "D", close)   // 1 Day
plot(s)

expr = ta.sma(close, 10)
s1 = request.security(syminfo.tickerid, "240", expr) // 240 Minutes
plot(s1)

// To avoid difference in calculation on history/realtime you can request not latest values and use merge strategy flags as follows:
s2 = request.security(syminfo.tickerid, "D", close[1], barmerge.gaps_off, barmerge.lookahead_on)
plot(s2)
f() => [open, high]
[o, h] = request.security(syminfo.tickerid, "D", f())
[l, c] = request.security(syminfo.tickerid, "D", [low, close])
plot((o + h + l + c) / 4)

واپسی کی قیمتدرخواست کی سیریز

پیرامیٹرز

  • symbol(simple string) کوڈ۔
  • timeframe(سادہ سٹرنگ) وقت کا دورانیہ۔ خالی سٹرنگ کو چارٹ کے موجودہ وقت کے دورانیے کے طور پر تشریح کیا جائے گا۔
  • expression(series int/float/bool/color) کو request.security سے کال کر کے حساب لگایا جا سکتا ہے اور ایک اظہار واپس آ سکتا ہے۔ یہ ایک سیریز یا ایسے عناصر پر مشتمل ایک سیٹ ہو سکتی ہے جسے سیریز میں تبدیل کیا جا سکتا ہے۔
  • gaps(barmerge_gaps) درخواست کردہ ڈیٹا کو ضم کرنے کی پالیسی ((ڈیٹا کو خود بخود او ایچ ایل سی کے اہم اعداد و شمار کے ساتھ ضم کرنے کی ضرورت ہے) ؛ ممکنہ اقدار: barmerge.gaps_on ، barmerge.gaps_off ؛ barmerge.gaps_on - درخواست کردہ ڈیٹا کو ممکنہ فرق کے ساتھ ضم کیا گیا ((na قدر) ؛ barmerge.gaps_off - درخواست کردہ ڈیٹا کو مسلسل مسلسل ضم کیا گیا ہے ، اور تمام فرقوں نے حالیہ موجودہ قدر کو پہلے سے بھرا ہوا ہے۔ ؛ ڈیفالٹ بارمرج.گپس_آف ہے۔
  • lookahead(barmerge_lookahead) درخواست کردہ ڈیٹا کو ضم کرنے کی پالیسی۔ ممکنہ اقدار: barmerge.lookahead_on، barmerge.lookahead_off۔ ورژن 3 کے بعد سے ، پہلے سے طے شدہ قدر barmerge.lookahead_off ہے۔ نوٹ کریں کہ یہ رویہ حقیقی وقت کے ساتھ ہی ہے ، صرف تاریخ میں مختلف ہے۔
  • ignore_invalid_symbol(const bool) ایک اختیاری پیرامیٹر۔ اگر مخصوص سامان نہیں ملا تو فنکشن کے عمل کا تعین کرتا ہے۔ اگر غلط ہے تو اسکرپٹ رک جائے گا اور جب چلتا ہے تو غلطی واپس آجائے گا۔ اگر سچ ہے تو فنکشن واپس آ جائے گا na اور عملدرآمد جاری رکھے گا۔ ڈیفالٹ غلط ہے۔
  • currency(simple string) سامان کی کرنسی سے متعلقہ قیمت (مثلا OHLC) کو تبدیل کرتا ہے۔ پھر تبدیل شدہ قیمت کے مطابق کرنسی کا حساب لگاتا ہے۔ استعمال شدہ تبادلوں کی شرح FX_IDC جوڑی کے پچھلے دن کی روزانہ شرح تبادلہ پر مبنی ہے۔ (متعلقہ K لائن کے حساب سے) ؛ اختیاری۔ ڈیفالٹ قیمت syminfo.currency ہے۔ ممکنہ قدر: ISO 4217 فارمیٹ کرنسی کوڈ (مثلا USD) کے ساتھ تین حرفی تار یا currency.* نام کی جگہ میں ایک مستقل ، جیسے currency.USD۔

نوٹاس فنکشن کا استعمال کرتے ہوئے پن اسکرپٹ کوڈ کو تاریخی ریکارڈ اور حقیقی وقت کے اعداد و شمار کے لئے مختلف حسابات انجام دینے کی اجازت دیتا ہے۔اگر آپ درخواست کردہ سامان کے لئے اضافی پیرامیٹرز کی وضاحت کرنا چاہتے ہیں، جیسے ٹرانزیکشن ٹائم فریم یا ایڈجسٹمنٹ ٹائپ، تو آپ کو اس کی ضرورت نہیں ہے۔您可以使用ticker.new() فنکشن۔ اس فنکشن کو فرق منتقل کرنے کے لئے ٹکر ٹکر متغیر کا استعمال نہیں کیا جاسکتا ہے۔ آپ ٹکر استعمال کرسکتے ہیں۔ticker.newہک متغیر یا اسٹاک کوڈ کی ایک سٹرنگ نمائندگی کی شکل، جیسے ہک AAPL + MSFT * TSLA ہک؛فی الحال ایک اسکرپٹ میں 40 تک request.security کالز کی اجازت ہے۔ براہ کرم نوٹ کریں کہ اس متغیر/فنکشن کا استعمال کرنے سے اشارے کو دوبارہ ڈرائنگ کیا جا سکتا ہے۔ ریزولوشن پیرامیٹرز کی اجازت دیتا ہے: 1S، 5S، 15S، 30S - سیکنڈ کے وقفے ((گراف کا دورانیہ درخواست کے دورانیے سے کم یا برابر ہونا چاہئے) 1 سے 1440 منٹ تک 1D سے 365D تک 1W سے 52W تک چند ہفتوں میں 1M سے 12M تک چند ماہ

دوبارہ ملیں گے syminfo.ticker syminfo.tickerid timeframe.period ta.correlation barmerge.lookahead_off barmerge.lookahead_on

str

str.contains

اگرsourceسٹرنگ شامل ہےstrاس کے بعد، آپ کو اسکرین شاٹ پر کلک کرنے کی ضرورت ہے۔

str.contains(source, str)

مثالیں

// If the current chart is a continuous futures chart, e.g “BTC1!”, then the function will return true, false otherwise.
var isFutures = str.contains(syminfo.tickerid, "!")
plot(isFutures ? 1 : 0)

واپسی کی قیمتاگرsourceسٹرنگ میں پایاstrاگر آپ کو یہ معلوم نہیں ہے کہ آپ کے پاس کیا ہے تو ، آپ کو یہ معلوم ہونا چاہئے کہ آپ کے پاس کیا ہے۔

پیرامیٹرز

  • source(series string) ماخذ سٹرنگ
  • str(series string) تلاش کرنے کے لئے سب سٹرنگ۔

دوبارہ ملیں گے str.pos str.match

str.endswith

اگرsourceسٹرنگ کے ساتھstrاس کے بعد، آپ کو اس بات کا یقین کرنے کی ضرورت ہے کہ آپ کے مطلوبہ مطلوبہ الفاظ میں سے کسی ایک کے ساتھ آپ کے مطلوبہ الفاظ کے ساتھ آپ کے مطلوبہ الفاظ کے ساتھ آپ کے مطلوبہ الفاظ کے ساتھ آپ کے مطلوبہ الفاظ کے ساتھ آپ کے مطلوبہ الفاظ کے ساتھ آپ کے مطلوبہ الفاظ کے ساتھ آپ کے مطلوبہ الفاظ کے ساتھ آپ کے مطلوبہ الفاظ کے ساتھ آپ کے مطلوبہ الفاظ کے ساتھ آپ کے مطلوبہ الفاظ کے ساتھ آپ کے مطلوبہ الفاظ کے ساتھ آپ کے مطلوبہ الفاظ کے ساتھ آپ کے مطلوبہ الفاظ کے ساتھ آپ کے مطلوبہ الفاظ کے ساتھ آپ کے مطلوبہ الفاظ کے ساتھ آپ کے مطلوبہ الفاظ کے ساتھ آپ کے مطلوبہ الفاظ کے ساتھ آپ کے مطلوبہ الفاظ کے ساتھ آپ کے مطلوبہ الفاظ کے ساتھ آپ کے مطلوبہ الفاظ کے ساتھ آپ کے مطلوبہ الفاظ کے ساتھ آپ کے مطلوبہ الفاظ کے ساتھ آپ کے مطلوبہ الفاظ کے ساتھ آپ کے مطلوبہ الفاظ کے ساتھ آپ کے مطلوبہ الفاظ کے ساتھ آپ کے مطلوبہ الفاظ کے ساتھ آپ کے مطلوبہ الفاظ کے ساتھ آپ کے مطلوبہ الفاظ کے ساتھ آپ کے مطلوبہ الفاظ کے ساتھ آپ کے مطلوبہ الفاظ کے ساتھ آپ کے مطلوبہ الفاظ کے ساتھ آپ کے مطلوبہ الفاظ کے ساتھ آپ کے مطابق

str.endswith(source, str)

واپسی کی قیمتاگرsourceسٹرنگ کے ساتھstrاگر آپ نے اس میں سے کسی ایک کو منتخب کیا ہے تو ، آپ کو اس میں سے کسی ایک کو منتخب کرنا ہوگا۔

پیرامیٹرز

  • source(series string) ماخذ سٹرنگ
  • str(series string) تلاش کرنے کے لئے سب سٹرنگ۔

دوبارہ ملیں گے str.startswith

str.startswith

اگرsourceسٹرنگ کے ساتھstrاس کے بعد، آپ کو اس بات کا یقین کرنے کی ضرورت ہے کہ آپ نے پہلے سے ہی اس بات کا یقین کر لیا ہے کہ آپ نے پہلے سے ہی اس بات کا یقین کر لیا ہے کہ آپ نے پہلے سے ہی اس بات کا یقین کر لیا ہے کہ آپ نے پہلے سے ہی اس بات کا یقین کر لیا ہے کہ آپ نے پہلے سے ہی اس بات کا یقین کر لیا ہے کہ آپ نے پہلے سے ہی اس بات کا یقین کر لیا ہے کہ آپ نے پہلے سے ہی اس بات کا یقین کر لیا ہے کہ آپ نے پہلے سے ہی غلط کیا ہے.

str.startswith(source, str)

واپسی کی قیمتاگرsourceسٹرنگ کے ساتھstrاگر آپ نے اس میں سے کسی ایک کو منتخب کیا ہے تو ، آپ کو اس میں سے کسی ایک کو منتخب کرنا ہوگا۔

پیرامیٹرز

  • source(series string) ماخذ سٹرنگ
  • str(series string) تلاش کرنے کے لئے سب سٹرنگ۔

دوبارہ ملیں گے str.endswith

str.substring

ایک نئی سٹرنگ واپس کرتا ہے، یہ ہےsourceسٹرنگ کا ذیلی سٹرنگ.begin_posایک مخصوص انڈیکس کے حروف سے شروع ہوتا ہے اور اس میں توسیع کرتا ہےsourceسٹرنگ کے end_pos - 1.

str.substring(source, begin_pos)
str.substring(source, begin_pos, end_pos)

مثالیں

sym= "EXCHANGE_NAME:SYMBOL_NAME"
pos = str.pos(sym, ":")        // Get position of ":" character
tkr= str.substring(sym, pos+1) // "SYMBOL_NAME"
if barstate.islastconfirmedhistory
    runtime.log(tkr)

واپسی کی قیمتذیلی سٹرنگ جو ماخذ سٹرنگ سے نکالی گئی ہے۔

پیرامیٹرز

  • source(series string) اس میں سے ذیلی تاروں کی ماخذ تار نکالیں۔
  • begin_pos(series int) نکالے جانے والے ذیلی تار کا آغاز مقام ہے۔ یہ خصوصی ہے۔ (extracted substring includes characters from that location)
  • end_pos(series int) اختتامی پوزیشن۔ یہ خصوصی ہے۔ (extracted string does not include characters from that position) ؛ اختیاری ہے۔sourceسٹرنگ کی لمبائی۔

نوٹسٹرنگ انڈیکس 0 سے شروع ہوتا ہے۔ اگرbegin_posکے برابر ہےend_pos، ایک خالی سٹرنگ لوٹاتا ہے۔

دوبارہ ملیں گے str.contains str.pos str.match

str.tonumber

str.tonumber(string)

واپسی کی قیمتاگر اس میں درست اعداد شامل ہیں تو ، یہ تار کا فلوٹ ٹائپ ہے ، ورنہ یہ نا ہے۔

پیرامیٹرز

  • string(series string) int یا float کے لئے سٹرنگ کی نمائندگی کی شکل۔

str.format

فارمیٹ سٹرنگ اور قدر کو فارمیٹ سٹرنگ میں تبدیل کریں۔ فارمیٹ سٹرنگ میں متن اور ہر فارمیٹ کی جانے والی قدر کے درمیان ایک قبضہ شامل ہوسکتا ہے۔ ہر قبضہ میں انڈیکس شامل ہوتا ہے جس میں اس کی مطلوبہ پیرامیٹرز کو تبدیل کیا جائے گا ((0 سے شروع ہوتا ہے) ، اور ایک اختیاری فارمیٹ اشارے۔ اشاریہ اس پیرامیٹر کو اس کی جگہ دیتا ہے str.format پیرامیٹرز کی فہرست میں۔)

str.format(formatString, arg0, arg1, ...)

مثالیں

// The format specifier inside the curly braces accepts certain modifiers:
// - Specify the number of decimals to display:
s1 = str.format("{0,number,#.#}", 1.34) // returns: 1.3
runtime.log(s1)

// - Round a float value to an integer:
s2 = str.format("{0,number,integer}", 1.34) // returns: 1
runtime.log(s2)

// - Display a number in currency:
s3 = str.format("{0,number,currency}", 1.34) // returns: $1.34
runtime.log(s3)

// - Display a number as a percentage:
s4 = str.format("{0,number,percent}", 0.5) // returns: 50%
runtime.log(s4)

// EXAMPLES WITH SEVERAL ARGUMENTS
// returns: Number 1 is not equal to 4
s5 = str.format("Number {0} is not {1} to {2}", 1, "equal", 4)
runtime.log(s5)

// returns: 1.34 != 1.3
s6 = str.format("{0} != {0, number, #.#}", 1.34)
runtime.log(s6)

// returns: 1 is equal to 1, but 2 is equal to 2
s7 = str.format("{0, number, integer} is equal to 1, but {1, number, integer} is equal to 2", 1.34, 1.52)
runtime.log(s7)

// returns: The cash turnover amounted to $1,340,000.00
s8 = str.format("The cash turnover amounted to {0, number, currency}", 1340000)
runtime.log(s8)

// returns: Expected return is 10% - 20%
s9 = str.format("Expected return is {0, number, percent} - {1, number, percent}", 0.1, 0.2)
runtime.log(s9)

واپسی کی قیمتفارمیٹڈ سٹرنگ۔

پیرامیٹرز

  • formatString(series string) فارمیٹ کی سٹرنگ۔
  • arg0, arg1, ...(series int/float/bool/string/na/int[]/float[]/bool[]/string[]) فارمیٹ کرنے کی قدر ہے۔

نوٹغیر حوالہ شدہ طرز میں موجود تمام قوسین کو متوازن رکھنا ضروری ہے۔ مثال کے طور پر، ab {0} de" اور "ab } de" درست طرز ہیں، لیکن "ab {0} de، ab } de" اور {" درست طرز نہیں ہیں۔

str.length

سٹرنگ میں موجود حروف کی تعداد کے برابر عدد واپس کرتا ہے۔

str.length(string)

واپسی کی قیمتسٹرنگ میں حروف کی تعداد۔

پیرامیٹرز

  • string(series string) ماخذ سٹرنگ

str.lower

واپس ایک نئی سٹرنگ جس میں تمام حروف کو چھوٹا کیا گیا ہے۔

str.lower(source)

واپسی کی قیمتتمام حروف کو چھوٹے حروف میں تبدیل کر دیا گیا ہے۔

پیرامیٹرز

  • source(series string) تبدیل کرنے کے لئے سٹرنگ۔

دوبارہ ملیں گے str.upper

str.upper

واپس ایک نئی سٹرنگ جس میں تمام حروف بڑے میں تبدیل کیے گئے ہیں۔

str.upper(source)

واپسی کی قیمتتمام حروف کو بڑے سائز کی نئی سٹرنگ میں تبدیل کردیا گیا ہے۔

پیرامیٹرز

  • source(series string) تبدیل کرنے کے لئے سٹرنگ۔

دوبارہ ملیں گے str.lower

str.match

اگر میچ ہوregexایک باقاعدہ اظہار، واپس آتا ہےsourceسٹرنگ کا نیا سب سٹرنگ، دوسری صورت میں واپس آتا ہے na.

str.match(source, regex) 

مثالیں

s = input.string("It's time to sell some EXCHANGE_NAME:SYMBOL_NAME!")

// finding first substring that matches regular expression "[\w]+:[\w]+"
var string tickerid = str.match(s, "[\\w]+:[\\w]+")

if barstate.islastconfirmedhistory
    runtime.log(tickerid) // "EXCHAN

مزید

وُہوآناگر آپ چاہتے ہیں کہ ایک ہی وقت میں کئی ٹرانزیکشنز چلیں تو آپ کو کیا کرنا چاہئے؟

ہلکے بادلبراہ کرم مجھے بتائیں، کیا پائن زیادہ ٹرانزیکشن کر سکتا ہے؟ کیا یہ جے ایس کی طرح ٹرانزیکشنز کو گھوم سکتا ہے؟ شکریہ۔

لیزا20231مزید تفصیلات کے لیے شکریہ

فنکاریواہ! یہ پائن اسکرپٹ پلیٹ فارم پر اوکیکس کی سمیلیٹر کا استعمال کیسے کرتا ہے؟

فنکاریاس کا مطلب یہ ہے کہ ٹریڈنگ ویو پلیٹ فارم کی حکمت عملی کو براہ راست کاپی کیا جا سکتا ہے اور اسے ایجاد کنندہ پلیٹ فارم پر استعمال کیا جا سکتا ہے۔

چھوٹا سا خوابPINE زبان صرف ایک قسم کی حکمت عملی کر سکتی ہے ، اور متعدد قسم کی حکمت عملی کو بہتر طور پر پائیتھون ، جاوا اسکرپٹ ، سی ++ میں ڈیزائن کیا جاسکتا ہے۔

چھوٹا سا خواباوہ ، ہاں ، او کے ایکس خاص ہے ، ان کا ماڈل ماحول اور اصلی ڈسک کا ماحول ایک ہی ایڈریس ہے ، صرف دوسری جگہوں پر فرق ہے۔ لہذا ماڈل ڈسک میں سوئچ کرنے کے لئے بیس ایڈریس کو تبدیل کرنے کا کوئی طریقہ نہیں ہے۔

ہلکے بادلاوککس ڈسک کا استعمال نہیں کیا جا سکتا ہے۔

چھوٹا سا خواباس طرح کے مختلف فن تعمیر کے مسائل کو حل نہیں کیا جاسکتا کیونکہ ہر ایکسچینج میں مختلف انٹرفیس ہیں اور انٹرفیس کی تعدد کی حد بھی مختلف نہیں ہے۔ اس سے بہت سارے مسائل پیدا ہوتے ہیں۔

چھوٹا سا خواباچھا، شکریہ کہ آپ نے تجاویز دی ہیں، اور اس کی ضرورت کی اطلاع دیں۔

ہلکے بادلیہ JS کے ساتھ مل کر کام کرنے کے لئے بہتر محسوس ہوتا ہے، جس میں مختلف تجارتی طریقوں کو بہتر طور پر اپنانے کے لئے بہتر ہے.

رجحان شکاریکیا ہم بعد میں کئی اقسام پر غور کریں گے؟ اختتامی قیمت ہر قسم کے ذریعے چلتی ہے۔

چھوٹا سا خوابہم نے اس کے بارے میں کیا سوچا ہے؟

ہلکے بادلاچھا، بہت شکریہ۔

چھوٹا سا خوابہیلو، PINE کی زبان کی حکمت عملی صرف ایک قسم کی ہے.

چھوٹا سا خوابآپ کا شکریہ کہ آپ نے میری مدد کی ہے۔ دستاویزات کو مزید بہتر بنایا جائے گا۔

چھوٹا سا خوابہاں ہاں۔۔۔۔۔

چھوٹا سا خوابPINE ٹیمپلیٹ کلاس لائبریری ، جس کی پیرامیٹرز پر تبادلہ کرنے والے تبادلے کا بیس ایڈریس مقرر کیا جاسکتا ہے۔ دستاویز کا آغاز: PINE زبان کے تبادلہ کلاس لائبریری ٹیمپلیٹ پیرامیٹرز۔