با ادامه بهبودهایی که شما درخواست کردهاید در زبان برنامهنویسی ما، ممکن است حفظ هماهنگی با این تغییرات چالشبرانگیز باشد. این پست به مهمترین افزودنیهای اخیر ما میپردازد تا شما از آنها غافل نشوید.
آزمونهای بازگشتی واقعیتر در نمودارهای هایکن آشی
آزمونهای بازگشتی که در نمودارهای هایکن آشی انجام میشوند معمولاً نتایج غیرقابلاعتمادی تولید میکنند زیرا شبیهساز کارگزاری همیشه سفارشات را با استفاده از قیمتهای نمودار پر میکند، که در مورد نمودارهای HA این قیمتها مصنوعی هستند. ویژگی جدیدی به نام “پر کردن سفارشات با استفاده از OHLC استاندارد” این مشکل را کاهش میدهد. با استفاده از این ویژگی، استراتژیهای اجرا شده در نمودارهای HA سفارشات را با قیمتهای واقعی بازار پر خواهند کرد که شبیهتر به نحوه رفتار استراتژی شما در زمان واقعی است.
کاربران استراتژی میتوانند این ویژگی را در تب “ویژگیها” استراتژیها فعال کنند. این ویژگی بهطور پیشفرض غیرفعال است.
توجه داشته باشید که این فقط رفتار استراتژیهای اجرا شده در نمودارهای HA را تغییر میدهد. در سایر نوعهای نمودار مصنوعی مانند رنکو، آزمون بازگشتی همچنان سفارشات را با قیمتهای نمودار مصنوعی پر میکند، صرفنظر از تنظیمات این ویژگی.
پارامتر جدید display برای توابع input.*()
یک پارامتر جدید display به شما کنترل بیشتری بر روی نمایش مقادیر ورودی در کنار نام اسکریپت میدهد. چهار آرگومان قابل استفاده وجود دارد: display.status_line، display.data_window، display.all و display.none. امکان ترکیب این آرگومانها با استفاده از علامتهای جمع یا کم وجود دارد و صرفنظر از آرگومان استفاده شده، مقادیر ورودی همیشه در تب “ورودیها” تنظیمات اسکریپت نمایش داده خواهد شد.
این پارامتر جدید به شما اجازه میدهد تا مقادیر ورودی را از خط وضعیت پنهان کنید در حالی که معمولاً باید در آنجا ظاهر شوند، یا مقادیر ورودی که معمولاً پنهان هستند را نمایش دهید، مانند ورودیهای بولی، رنگ یا تاریخ. با استفاده از این پارامتر جدید، شما میتوانید ورودیها را در کنار نام اسکریپت در پنجره دادهها نشان دهید. نمایش پیشفرض ورودیها در صورت عدم استفاده از پارامتر تغییر نمیکند.
//@version=5 indicator("RSI") rsiLengthInput = input.int(14, minval=1, title="طول RSI", display=display.data_window+display.status_line) rsiSourceInput = input.source(close, "منبع", display=display.data_window) rsi = ta.rsi(rsiSourceInput, rsiLengthInput) plot(rsi, "RSI")
توابع داخلي جدید برای دسترسی به اطلاعات ابزار
ما سه تابع داخلی به فضای نام syminfo اضافه کردیم: syminfo.sector، syminfo.industry و syminfo.country. این توابع رشتههایی را ارائه میدهند که اطلاعات بیشتری در مورد نماد فعلی به شما میدهند. اطلاعات کشور به فرمت ISO 3166-1 alpha-2 ارائه میشود.
غیرفعالسازی هشدارها برای سفارشات اجرایی در استراتژیها
شما اکنون میتوانید هشدارهای مربوط به سفارشات فردی در استراتژیها را با استفاده از disable_alert = true در توابعی که برای ایجاد این سفارشات استفاده میشوند غیرفعال کنید. به عنوان مثال:
//@version=5 strategy("استراتژی من", overlay=true) longCondition = ta.crossover(ta.sma(close, 14), ta.sma(close, 28)) if (longCondition) strategy.entry("Long", strategy.long, alert_message = "به خرید بروید!") strategy.exit("خروج", "Long", profit = 300, loss = 100, disable_alert = true)
این کار برای فیلتر کردن سفارشات خاص زمانی که شما از تابع alert() برای تولید پیامهای سفارشی برای هشدارها یا وبهوکها در حین اجرای استراتژی استفاده میکنید مفید است.
تغییر محاسبات برای حداکثر افت و صعود در استراتژیها
محاسبه حداکثر افت…
برای استفاده رایگان از تریدینگ ویو پرمیوم از چارت آتو تی کریپتو استفاده کنید
حداکثر افزایش موجودی بهگونهای بهبود یافته است که پتانسیل سرمایهای که میتوانسته در یک معامله بهدست آید، در نظر گرفته شده است. پیش از این، تنها مقادیر سرمایه در نقاط ورود و خروج بررسی میشد که میتوانست منجر به نتایج نادرستی برای حداکثر کاهش و افزایش موجودی شود. روشهای جدید در مقالات مرکز راهنما در مورد حداکثر کاهش و افزایش موجودی توضیح داده شدهاند.
پشتیبانی از اصلاحکننده varip در انواع تعریف شده توسط کاربر
اصلاحکننده varip که به متغیرها اجازه میدهد مقادیر خود را بین هر بار اجرای اسکریپت در همان میله حفظ کنند، اکنون میتواند به فیلدهای انواع تعریف شده توسط کاربر اعمال شود. توجه داشته باشید که فیلدهایی که با استفاده از varip تعریف نشدهاند، در هر میله به حالت اولیه باز میگردند، بنابراین مقادیر تخصیص یافته به آنها در هنگام اجرای چندباره در همان میله حفظ نخواهد شد، حتی اگر شیء شامل آنها با varip ایجاد شده باشد.
بهعنوان مثال:
//@version=5 indicator("فیلد `varip`") type TypeWithVaripField varip int varipCounter = 0 int counter = 0 varip TypeWithVaripField myCounter = TypeWithVaripField.new(0) // این فیلد بین اجراهای اسکریپت مقادیر را حفظ میکند. myCounter.varipCounter := myCounter.varipCounter + 1 // این فیلد این کار را نمیکند چون با `varip` اعلام نشده است. myCounter.counter := myCounter.counter + 1 plot(myCounter.varipCounter, "myCounter.varipCounter") plot(myCounter.counter, "myCounter.counter")
درخواست نرخ تبدیل ارز
ما یک تابع جدید request.currency_rate() اضافه کردهایم که به شما این امکان را میدهد تا نرخ تبدیل از یک ارز به ارز دیگر را دریافت کنید. این تابع به دو پارامتر نیاز دارد: from و to که هر کدام باید یک کد رشته سهحرفی مطابق با ISO 4217 باشند.
در اینجا یک مثال برای تبدیل قیمت یک ابزار به پوند بریتانیا (GBP) آورده شده است:
//@version=5 indicator("بستن به پوند بریتانیا") rate = request.currency_rate(syminfo.currency, "GBP") plot(close * rate)
توابع جدید در فضای نام array
چهار تابع جدید برای آرایهها اضافه شده است:
- array.first() — اولین عنصر آرایه را برمیگرداند.
- array.last() — آخرین عنصر آرایه را برمیگرداند.
- array.every() — اگر هر عنصر آرایه درست باشد، true برمیگرداند؛ در غیر این صورت، false.
- array.some() — اگر حداقل یکی از عناصر آرایه درست باشد، true برمیگرداند؛ در غیر این صورت، false.
برای آگاهی از ویژگیهای جدید Pine Script®، به یادداشتهای انتشار در راهنمای کاربری دقت کنید. حساب PineCoders همچنین بهروز رسانیها را از Squawk Box در تلگرام، حساب توییتر خود و از چت عمومی سؤالات و پاسخهای Pine Script® در TradingView منتشر میکند.
ما معتقدیم این ویژگیهای پرتقاضا برای شما مفید خواهند بود و لطفاً نظرات و پیشنهادات خود را برای ما ارسال کنید تا بتوانیم این پلتفرم را به بهترین شکل ممکن بسازیم. ما TradingView را برای شما طراحی کردهایم و همیشه آماده شنیدن نظرات شما هستیم.
تیم TradingView
برای استفاده رایگان از تریدینگ ویو پرمیوم از چارت آتو تی کریپتو استفاده کنید