این بهروزرسانی زبان Pine Script توابعی برای کار با رشتهها و آرایهها اضافه کرده است.
تابع str.format() به شما این امکان را میدهد تا آرگومانهای ورودی را به یک رشته با فرمت مشخص تبدیل کنید:
str.format(formatString, arg0, arg1, ...) -> string
رشته formatString شامل یک زیرنویس N در داخل پرانتز ” {} ” است که آرگومانهای فرمتشده متناظر (arg0، arg1..argN، که میتوانند رشته یا عدد باشند) را جایگزین میکند و الگوهای زیر را شامل میشود.
بنابراین، برای تجزیه رشتهها دیگر نیازی به استفاده از ساختار با استفاده از تابع str.replace_all() نیست:
txt := "Time to {0} some {1}!" txt := str.replace_all(txt, "{0}", close > open ? "buy" : "sell") txt := str.replace_all(txt, "{1}", syminfo.ticker)
اما میتوانید این کار را به روشی جدید، راحتتر و کوتاهتر انجام دهید:
txt = str.format("Time to {0} some {1}!", close > open ? "buy" : "sell", syminfo.ticker)
زیرنویسهای {0} و {1} درون پرانتزها با آرگومانهای ترتیبی متناظر جایگزین میشوند: {0} – نتیجهی اجرای عملگر سهگانه، که رشته “buy” یا “sell” را بر حسب نابرابری قیمتهای close و open برمیگرداند، {1} – syminfo.ticker، نماد فعلی در چارت:
با استفاده از الگوی number ، عدد تبدیل شده به رشته میتواند به نمایشی متفاوت تبدیل شود، برای مثال، به منظور محدود کردن تعداد ارقام اعشاری
str.format("{0,number,#.#}", 1.34) // returns: 1.3
قسمت اعشاری عدد را کنار بگذارید:
str.format("{0,number,#}", 1.34) // returns: 1
برای استفاده رایگان از تریدینگ ویو پرمیوم از چارت آتو تی کریپتو استفاده کنید
با استفاده از تابع str.format() میتوانیم مقدار عددی را به نوع صحیح تبدیل کنیم:
str.format("{0,number,integer}", 1.34) // نتیجه: 1
برای دریافت اطلاعات مالی:
str.format("میزان گردش نقدی به {0,number,currency} رسید", 1340000)
نتیجه: “میزان گردش نقدی به $1,340,000.00 رسید”.
برای دریافت درصدها:
str.format("انتظار بازده {0,number,percent} - {1,number,percent} است", 0.1, 0.2)
نتیجه: انتظار بازده 10% – 20% است.
تابع str.format() از الگوی date برای فرمت دهی تاریخ/زمان پشتیبانی میکند.
این اسکریپت تعداد ماهها، هفتهها و روزها را نمایش میدهد:
//@version=4 study("str_format_date") // فرمت دهی رشته با الگوی تاریخ txt = str.format("تاریخ نوار کنونی: {0,date, y-MM-d'.' n M 'ماه n' F 'هفته n' D 'روز n' }", timenow) // چاپ برچسب var l1 = label.new(na, na, color = #FFFFFF00) label.set_x(l1, bar_index) label.set_yloc(l1, yloc.belowbar) label.set_text(l1, txt) plot(close
فقط یک متغیر timenow به تابع str.format() که شامل نمای زمان UNIX است، ارسال میشود: تاریخ، زمان و منطقه زمانی جاری برای تبادل یک نماد در چارت. رشته با استفاده از نمادهای y, M, D, F (سال، ماه، روز سال، هفته ماه)، کاراکتر ویژه n برای خط شکنی، و نقل قولهای تک ‘ برای قرار دادن متن بین کاراکترها فرمت میشود.
این اسکریپت رشتههای فرمت شده را به برچسب و نتیجه مرتبط تابع str.format() با کاراکترهای مختلف خروجی میدهد:
//@version=4 study("str_format_date_time") // ایجاد متغیر تاریخ-زمان: 2021.05.04. 14:30:59 t = timestamp("GMT+0", 2021, 05, 04, 14, 30, 59) // تابع برای سمت چپ برچسب f_print_left(_text) => var _label = label.new(bar_index, na, _text, xloc.bar_index, yloc.price, color(na), label.style_label_right, color.green, size.large, text.align_right), label.set_xy(_label, bar_index, 0), label.set_text(_label, _text) // تابع برای سمت راست برچسب f_print_right(_text)
برای استفاده رایگان از تریدینگ ویو پرمیوم از چارت آتو تی کریپتو استفاده کنید.
“`html
var _label = label.new(bar_index, na, _text, xloc.bar_index, yloc.price, color(na), label.style_label_left, color.red, size.large, text.align_left), label.set_xy(_label, bar_index, 0), label.set_text(_label, _text)
var string format =
“{0,date,y.MM.dd hh:mm:ss}n” +
“{1,date,short}n” +
“{2,date,medium}n” +
“{3,date,long}n” +
“{4,date,full}n” +
“{5,date,h a z (zzzz)}n” +
“{6,time,short}n” +
“{7,time,medium}n” +
“{8,time,long}n” +
“{9,time,full}n” +
“{10,time,hh:mm:ss}n” +
“{11,time,HH:mm:ss}n”
// printing format string
f_print_left(format)
// printing formatted string
f_print_right(str.format(format, t, t, t, t, t, t, t, t, t, t, t, t))
ستون چپ برچسب حاوی کاراکترهای محصور در {} است، و ستون راست نتیجه تابع
str.format
میباشد:
متغیر t به تابع str.format() ارسال میشود که نمایشی از زمان UNIX را شامل میشود: تاریخ، زمان و منطقه زمانی کنونی.
نوآوری بعدی تابع array.from() است که میتواند تعدادی متغیر ورودی از یکی از نوعهای زیر را دریافت کند: float، int، bool، string، label، line، color و آرایهای از نوع مربوطه را بازمیگرداند. این تابع به شما امکان میدهد یک آرایه را اعلام کنید، مقادیر اولیه را به آن اختصاص دهید و نتیجه را در تنها یک خط کد به هر متغیر نسبت دهید.
قبلاً برای ایجاد یک آرایه و پر کردن آن با مقادیر اولیه، باید از تابع array.new() و همچنین توابع array.push() یا array.set() استفاده میکردید:
برای استفاده رایگان از تریدینگ ویو پرمیوم از چارت آتو تی کریپتو استفاده کنید
“““html
color[] plotColors = array.new_color(size=0);
array.push(plotColors, color.red);
array.push(plotColors, color.green);
array.push(plotColors, #0000FF);
حالا برای ایجاد آرایهای که شامل رنگهای چارتها باشد، میتوانید فقط با یک خط این کار را انجام دهید:
plotColors = array.from(color.red, color.green, #0000FF);
این تابع بهطور خودکار آرایه plotColors را بر اساس آرگومانهای دریافتی به نوع color[] تبدیل میکند:
//@version=4
study(title=”array_from”);
f_arr (series1, series2, color1, color2) =>
[ array.from(series1, series2), array.from(color1, color2) ];
[lines, colors] = f_arr(close, open, color.red, color.green);
plot ( array.get(lines, 0), color = array.get(colors, 0));
plot ( array.get(lines, 1), color = array.get(colors, 1));
اطلاعات در مورد توابع str.format() و array.from() همیشه در راهنمای مرجع ما در دسترس است.
اگر میخواهید از بهروزرسانیهای Pine Script مطلع شوید، بخش یادداشتهای انتشار را بررسی کنید. حساب PineCoders نیز در کانال تلگرامی Squawk Box خود بهروزرسانیها را پخش میکند، همچنین در توییتر و چت عمومی Pine Script در TradingView.
ما امیدواریم که این بهبودها برای شما مفید باشند و لطفاً نظرات خود را با ما در میان بگذارید. ما TradingView را برای کاربران خود میسازیم و از شنیدن نظرات شما درباره نوآوریهایمان لذت میبریم.
برای استفاده رایگان از تریدینگ ویو پرمیوم از چارت آتو تی کریپتو استفاده کنید.
“`