April 9, 2021
ما الجديد في لغة Pine البرمجية ؟

لا تتطلب جميع تحديثات Pine منشور مدونة منفصل، لكنك لا تعرف أبدًا متى قد تكون ميزة جديدة مفيدة للبرامج النصية الخاصة بك. يعرض هذا المنشور التحسينات الأخيرة التي ربما قد تكون لم تعرف عنها بعد

تعد الكلمة الأساسية varip مفيدة عندما تريد تتبع بعض البيانات وكيف تتغير داخل العمود البياني في الوقت الفعلي. تخضع جميع متغيرات Pine العادية لما يُعرف باسم التراجع ، حيث يتم إعادة تعيين حالة المتغير إلى قيمته في العمود البياني السابق قبل تقييم البيانات الجديدة في كل علامة بيانات جديدة. تفلت الكلمة الأساسية varip من هذا وتمكنك من مقارنة القيمة الحالية للمتغير بقيمته في العلامة السابقة (على عكس العمود السابق) ، مما يفتح عالمًا جديدًا بالكامل من الاحتمالات. ألقِ نظرة على رسم التك البياني الذي تم إنشاؤه بواسطة أحد معالجات Pine Wizards LonesomeTheBlue:

لمعرفة المزيد ، اقرأ البرنامج التعليمي التفصيلي حول varip بواسطة PineCoders:
لأولئك منكم الذين أرادوا المزيد من الرياضيات في باين ، لدينا الآن مجموعة كاملة من الدوال والثوابت المتعلقة بالرياضيات:
– ثوابت جديدة: Math.pi و math.phi و math.rphi و math.e
– دالة Round () الجديدة – تتيح لك الدالة الآن تحديد دقة التقريب ، بدلاً من التقريب دائمًا إلى أقرب عدد صحيح
– median()
– mode()
– range()
– todegrees()
– toradians()
– random()
إليك إستراتيجية لأولئك منكم الذين يرغبون أيضًا في المخاطرة: يتم اختيار جميع المداخل والمخارج بشكل عشوائي استنادًا إلى النسب المئوية المحددة في قسم المدخلات ، كل ذلك بفضل الدالة random() :
//@version=4
strategy("I’m feeling lucky", overlay=true)
seed = input(1, "Seed, increase to recalculate the strategy", minval=1)
entryPerc = input(20.0, "Entry chance, %", minval=0.0, maxval=100.0)
exitPerc = input(10.0, "Exit chance, %", minval=0.0, maxval=100.0) 
roll = random(0, 100, seed)
positionSize = floor(random(1, (strategy.equity / close), seed))
if roll < entryPerc
    strategy.entry("My Long Entry Id", strategy.long, qty=positionSize)
if roll < exitPerc
    strategy.close_all()

في تطور آخر ، تم دمج : = عامل التخصيص مع عوامل التشغيل الحسابية لإنشاء عوامل تعيين جديدة + = ، – = ، * = ، / = و ،٪ =. هذه تسمح لك بترتيب وتقصير البرامج النصية الخاصة بك: بدلاً من استخدام: = a + 1 ، يمكنك ببساطة كتابة + = 1. تحسين صغير ، ولكنه مناسب تمامًا.

إذا وجدت نفسك بحاجة إلى تحويل سلسلة إلى رقم ، فإن دالة tonumber() الجديدة تمكنك من القيام بذلك بالضبط. على سبيل المثال ، في البرنامج النصي أدناه ، يسمح tonumber() ، جنبًا إلى جنب مع الدوال الأخرى المتعلقة بالسلسلة مثل str.split() و str.replace_all() ، لحقل إدخال سلسلة واحد بإرجاع عدة قيم صحيحة يتم استخدامها بعد ذلك كأطوال لحسابات SMA. لا يوجد سبب مقنع للقيام بذلك بهذه الطريقة بدلاً من طريقة “إدخال منفصل لكل من SMAs” الصحيحة والمريحة … ولكن إذا كنت بحاجة إليها ، فهي هنا:

//@version=4
study("My SMAs", overlay=true)
sma_lengths = input("5, 10, 20, 30, 50", title = "SMA Lengths (separated by comma)")
sma_lengths_array = str.split(str.replace_all(sma_lengths, " ", ""), ",")
sma_len(index) =>
    index > array.size(sma_lengths_array) - 1 ? 10 :
     int(tonumber(array.get(sma_lengths_array, index)))
sma0 = sma(close, sma_len(0))
sma1 = sma(close, sma_len(1))
sma2 = sma(close, sma_len(2))
sma3 = sma(close, sma_len(3))
sma4 = sma(close, sma_len(4))
plot(sma0, color=color.blue)
plot(sma1, color=color.red)
plot(sma2, color=color.green)
plot(sma3, color=color.orange)
plot(sma4, color=color.purple)

لقد أضفنا متغير time_tradingday ، والذي يُرجع طابع UNIX الزمني لبداية يوم التداول. سيكون هذا مفيدًا عند تحليل الرموز التي يتم تداولها بين عشية وضحاها ، مثل EURUSD ، حيث يبدأ التداول يوم الأحد بينما من الناحية الفنية ، يكون يوم التداول في الواقع يوم الاثنين.

تتيح لك دالة ()time_close الجديدة الحصول على وقت إغلاق عمود بياني من إطار زمني محدد وجلسة محددة (على عكس المتغير الزمني الموجود سابقًا ، والذي يعمل فقط مع الإطار الزمني / جلسة الرسم البياني). هذا مفيد بشكل خاص للرسومات ، مما يتيح لك رسم الخطوط والتسميات في المستقبل بدقة أكبر. لرؤيتها أثناء العمل ، تحقق من رأي JayRogers في مؤشر النقاط المحورية:

باستخدام المعامل format.percent الجديد مع study()، يمكن الآن تنسيق إخراج البرنامج النصي تلقائيًا كنسبة مئوية. شاهده في العمل من خلال مؤشر Aroon المدمج الخاص بنا:
//@version=4
study(title="Aroon", shorttitle="Aroon", overlay=false, format=format.percent, precision=2, resolution="")
length = input(14, minval=1)
upper = 100 * (highestbars(high, length+1) + length)/length
lower = 100 * (lowestbars(low, length+1) + length)/length
plot(upper, "Aroon Up", color=#FF6A00)
plot(lower, "Aroon Down", color=#0094FF)

تتيح لك ثلاثة متغيرات جديدة ، وهي session.ismarket و session.ispremarket و session.ispostmarket ، إمكانية التحقق من جزء الجلسة اليومية التي يرتبط بها العمود البياني الحالي. لاحظ أن الساعات الممتدة تظهر فقط على الرسوم البيانية خلال اليوم ، وفقط عندما يتم تمكين الخيار صراحةً من خلال الإعدادات.

إذا كنت تريد التعرف على تحديثات Pine بمجرد حدوثها ، فراقب ملاحظات الإصدار في دليل المستخدم الخاص بنا. تبث PineCoders أيضًا أخبارًا عن التحديثات في قناة Squawk Box TelAegram ، وعلى Twitter وفي الدردشة العامة Pine Script على TradingView.

نأمل أن تجد هذه التحسينات مفيدة. الرجاء الاستمرار في إرسال ملاحظاتك إلينا. نحن نبني TradingView لمستخدمينا ونحب أن نسمع منك.

أسرع طريقة لمتابعة الأسواق

فتح الرسم البياني