ما یک ابزار جدید برای برنامهنویسان Pine معرفی میکنیم — نقشهها، مجموعههایی که دادهها را در قالب جفتهای کلید-مقدار ذخیره میکنند. این ابزار به کاربران این امکان را میدهد که عناصر مرتبط از انواع مختلف را برای دسترسی بعدی در یک اسکریپت به هم متصل کنند. برخلاف سایر مجموعههای Pine، اسکریپتها میتوانند به سرعت به مقادیر نقشه با استفاده از کلیدهای جفتهای کلید-مقدار آنها دسترسی پیدا کنند بدون اینکه نیازی به ایندکس داخلی باشد.
فضای نام map شامل تمام توابع مرتبط با نقشه است. برای ایجاد یک نقشه، از تابع map.new
//@متغیر A نقشهای شامل کلیدهای `int` و مقادیر `line`. m = map.new()
کلیدهای یک نقشه میتوانند از هر نوع بنیادی (int، float، bool، string یا رنگ) باشند و مقادیر آن میتوانند از هر نوع دیگری، حتی نوعهای تعریف شده توسط کاربر، باشند.
پس از ایجاد یک نقشه، شما میتوانید هر یک از توابع فضای نام map را با آن استفاده کنید. به عنوان مثال، میتوانید جفتهای کلید-مقدار را با استفاده از map.put() وارد آن کنید و مقدار مرتبط با یک کلید منحصر به فرد را با استفاده از map.get() بازیابی کنید. همچنین میتوانید یک آرایه از تمام کلیدها یا مقادیر نقشه را با استفاده از map.keys() یا map.values() تولید کنید. برای اطلاعات بیشتر در مورد استفاده از این مجموعههای جدید و توابع مرتبط با آنها، صفحه راهنمای کاربر ما را در مورد نقشهها مشاهده کنید.
در مثال زیر، ما یک اسکریپت ایجاد کردهایم که از نقشهها برای رنگآمیزی پسزمینه نمودار با تغییرات قیمت در هر جلسه استفاده میکند. این اسکریپت از یک نقشه data برای ذخیرهسازی زمان بسته شدن و اطلاعات تغییر قیمت خالص برای هر جلسه روزانه استفاده نموده و نسبت تغییر قیمت جلسه جاری را به میانگین تغییرات در تعدادی از جلسات تاریخی محاسبه میکند. سپس با استفاده از محتوای نقشه colors پسزمینه نمودار را بر اساس این نسبت رنگآمیزی کرده و مقدار نسبت را در پنجره دادهها نمایش میدهد:
//@version=5 indicator("تغییرات جلسه مشخصکننده", overlay = true) // ورودیها sessionInput = input.session("0800-1700", "جلسه") timezone = input.string("America/New_York", "منطقه زمانی") length = input.int(10, "جلسات برای مقایسه") //@متغیر نقشهای از کلیدهای `int` زمان بسته شدن و مقادیر `float` تغییر قیمت. var data = map.new() //@متغیر یک نقشه از کلیدهای `string` و مقادیر `color` برای محاسبه `highlightColor`. var colors = map.new () var float sessionOpen = na float relativeChange = na int closeTime = time_close("D", sessionInput, timezone) // قرار دادن جفتهای (`string`, `color`) در نقشه `colors` در بار اول. if barstate.isfirst
برای استفاده رایگان از تریدینگ ویو پرمیوم از چارت آتو تی کریپتو استفاده کنید
“`html
colors.put(“بنفش”, color.new(color.purple, 50))
colors.put(“نارنجی”, color.new(color.orange, 50))
colors.put(“زرد”, color.new(color.yellow, 50))
if not na(closeTime)
// به روزرسانی قیمت افتتاحیه جلسه.
if na(closeTime[1])
sessionOpen := open
// تخصیص یک مقدار جدید به کلید `closeTime` در نقشه `data`.
data.put(closeTime, math.abs(close – sessionOpen) / sessionOpen)
//@متغیر آرایهای از تغییرات قیمت هر جلسه در نقشه `data`.
sessionHistory = data.values()
//@متغیر تعداد جلسات موجود در نقشه `data`.
dataSize = data.size()
if dataSize >= length
//@متغیر میانگین تغییر قیمت در `length` جلسه.
avgSessionChange = sessionHistory.slice(dataSize – length, dataSize).avg()
relativeChange := data.get(closeTime) / avgSessionChange
//@متغیر رنگی گرادیانی بر اساس `relativeChange` با استفاده از مقادیر در نقشه `colors`.
highlightColor = switch
relativeChange <= 1 => color.from_gradient(relativeChange, 0, 1, colors.get(“بنفش”), colors.get(“نارنجی”))
=> color.from_gradient(relativeChange, 1, 2, colors.get(“نارنجی”), colors.get(“زرد”))
bgcolor(highlightColor, title = “برجستهسازی پسزمینه”)
plot(relativeChange, “نسبت تغییر نسبی”, highlightColor, display = display.data_window)
انتشارات زیر نمونههایی از اسکریپتهای استفاده شده با نقشهها هستند:
حجم/پروفایل بازار توسط SamRecio
پروفایل حجم توسط LuxAlgo
برای استفاده رایگان از تریدینگ ویو پرمیوم از چارت آتو تی کریپتو استفاده کنید
“`
برنامه الگوهای تاریخی توسط ترنداسکوپ
برای اینکه همیشه از ویژگیهای جدید نرمافزار Pine Script® مطلع باشید، به یادداشتهای انتشارات دفترچه راهنما توجه کنید. حساب PineCoders همچنین در تلگرام بهروزرسانیها را ازاسکواک باکس پخش میکند، همچنین میتوانید به اکانت توییتر و از طریق چت عمومی سؤالات و پاسخهای Pine Script® در TradingView دسترسی پیدا کنید.
امیدواریم این قابلیت که درخواست آن زیاد شده است برای شما مفید باشد، لطفاً همچنان نظرات و پیشنهادات خود را به ما ارسال کنید تا بتوانیم پلتفرم را به بهترین شکل ممکن بسازیم. ما TradingView را برای شما ساختهایم و همیشه مشتاق شنیدن نظرات شما هستیم.
— تیم TradingView
برای استفاده رایگان از تریدینگ ویو پرمیوم از چارت آتو تی کریپتو استفاده کنید