همه بهروزرسانیهای Pine نیازی به انتشار یک پست جداگانه ندارند، اما هرگز نمیدانید که ممکن است یک قابلیت جدید برای کدنویسی اسکریپتهایتان مفید باشد. در این پست، به بهبودهای اخیر اشاره شده است که ممکن است از چشمتان پنهان مانده باشد.
کلیدواژه varip برای زمانی که میخواهید دادههایی را پیگیری کنید و تغییرات آنها را در داخل هر باری در زمان واقعی ببینید، کاربردی است. تمامی متغیرهای عادی Pine تحت فرایندی به نام rollback قرار دارند، به این صورت که با هر داده جدید، وضعیت متغیر به مقدارش در بار قبلی بازنشانی میشود قبل از ارزیابی دادههای جدید. اما کلیدواژه varip این مشکل را حل میکند و به شما این امکان را میدهد که مقدار فعلی یک متغیر را با مقدار آن در تیک قبلی (نه بار قبلی) مقایسه کنید، که این قابلیت دنیای جدیدی از امکانات را برایتان باز میکند. به چارت تیک ایجاد شده توسط یکی از ویژنهای Pine یعنی LonesomeTheBlue نگاهی بیندازید:
https://www.tradingview.com/script/ygNO2G1V-Tick-Chart/
برای اطلاعات بیشتر، به آموزش عمیق در مورد varip توسط PineCoders مراجعه کنید:
https://www.tradingview.com/script/ppQxBISk-Using-varip-variables-PineCoders/
برای کسانی که به ریاضیات بیشتری در Pine نیاز داشتند، اکنون مجموعهای از توابع و ثابتهای جدید مرتبط با ریاضیات داریم:
- ثابتهای جدید math.pi، math.phi، math.rphi و math.e
- عملکرد جدید round() — این تابع اکنون به شما این امکان را میدهد که دقت گرد کردن را تعیین کنید، بهجای اینکه همیشه به نزدیکترین عدد صحیح گرد کنید
- median()
- mode()
- range()
- todegrees()
- toradians()
- random()
اینجا یک استراتژی برای کسانی که همچنین عاشق ریسک هستند: تمام ورودها و خروجها بر اساس درصدهای مشخص شده در ورودیها به صورت تصادفی انجام میشود.
برای استفاده رایگان از تریدینگ ویو پرمیوم از چارت آتو تی کریپتو استفاده کنید
در اینجا با استفاده از تابع random() میتوانیم به طور تصادفی تصمیمگیری کنیم:
//@version=4 strategy("احساس شانس میکنم", overlay=true) seed = input(1, "بذر، برای recalculation استراتژی افزایش دهید", minval=1) entryPerc = input(20.0, "شانس ورود، %", minval=0.0, maxval=100.0) exitPerc = input(10.0, "شانس خروج، %", minval=0.0, maxval=100.0) roll = random(0, 100, seed) positionSize = floor(random(1, (strategy.equity / close), seed)) if roll < entryPerc strategy.entry("ورود بلند من", strategy.long, qty=positionSize) if roll < exitPerc strategy.close_all()
در تحولی دیگر، عملگر تخصیص := با عملگرهای ریاضی ترکیب شده است تا عملگرهای تخصیص جدیدی مانند +=، -=، *=، /= و %= ایجاد کند. این امکان را به شما میدهد تا اسکریپتهای خود را مرتبتر و کوتاهتر بنویسید: به جای اینکه از a := a + 1 استفاده کنید، میتوانید به سادگی بنویسید a += 1. این یک پیشرفت کوچک، اما کاملاً مفید است.
اگر تاکنون به تبدیل یک رشته به عدد نیاز داشتید، تابع جدید tonumber() این امکان را برای شما فراهم میکند. به عنوان مثال، در اسکریپت زیر، tonumber() به همراه سایر توابع مرتبط با رشته مثل str.split() و str.replace_all() به شما این امکان را میدهد که یک فیلد ورودی رشتهای به چندین مقدار عددی صحیح بازگرداند که سپس به عنوان طول برای محاسبات SMA استفاده میشوند. هیچ دلیل قانعکنندهای برای انجام این کار به این صورت به جای روش مناسب و راحت "هر SMA یک ورودی جداگانه دارد" وجود ندارد... اما اگر به آن نیاز دارید، اینجا موجود است:
//@version=4 study("SMAs من", overlay=true) sma_lengths = input("5, 10, 20, 30, 50", title = "طولهای SMA (با ویرگول جدا شدهاند)") 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() به شما اجازه میدهد تا زمان بسته شدن یک بار را از یک بازه زمانی و جلسه مشخص بگیرید (برخلاف متغیر قبلی time_close که فقط با بازه زمانی/جلسه چارت کار میکرد). این برای کشیدن خطوط و برچسبها در آینده بهطور دقیقتر بسیار مفید است. برای مشاهده آن، به تحلیل JayRogers در مورد اندیکاتور نقطه محوری مراجعه کنید:
https://www.tradingview.com/script/7EwXUkBE-Pivotal-Multi-Pivot-Selector/
با پارامتر جدید 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 مطلع شوید، یادداشتهای بروزرسانی Release Notes را در دفترچه راهنمای کاربریمان بررسی کنید. گروه PineCoders همچنین اخبار مربوط به بروزرسانیها را در کانال تلگرام Squawk Box، در توییتر و در چت عمومی Pine Script در TradingView پخش میکنند.
امیدواریم این بهبودها برای شما مفید باشد. لطفاً به ارسال نظرات خود ادامه دهید. ما TradingView را برای کاربران خود میسازیم و از شنیدن نظراتتان لذت میبریم.
برای استفاده رایگان از تریدینگ ویو پرمیوم از چارت آتو تی کریپتو استفاده کنید