اگر خطا پس از بررسی خطاها باقی می ماند ، پس از درخواست های عملکرد Security () به کدام داده ها مراجعه کنید. برای بهینه سازی به استدلال سوم عملکرد نگاه کنید. در اینجا یک ترفند کوچک برای کاهش تماس های عملکردی () وجود دارد: - بگویید ما می خواهیم تفاوت بین باز و بسته روزانه وجود داشته باشد. ما می توانیم آن را با 2 درخواست امنیتی کدگذاری کنیم: security(tickerid، "D"، open) - security(tickerid، "D"، close) . اما ما همچنین می توانیم آرگومان سوم Security() را برای محاسبه ای مانند این تنظیم کنیم: security(tickerid، "D"، open-close) . این همان داده ها را به ما می دهد، اما فقط با یک درخواست امنیتی.
برای درک اینکه کدام موقعیت ها باعث ایجاد خطای «اسکریپت درخواست های بیش از حد اوراق بهادار» TradingView می شود، بیایید ببینیم چه کدی درخواست اوراق بهادار است و چه چیزی نیست.
# تماس های امنیتی در TradingView Pine چیست؟
با تابع Security() TradingView می توانیم داده های قیمت را از ابزارهای دیگر و/یا بازه های زمانی در اسکریپت خود بارگیری کنیم (TradingView، n. d.). این امکان محاسبه با داده های ابزارها و بازه های زمانی کاملاً متفاوت از نمودار فعلی را فراهم می کند.
هر بار که اطلاعاتی را با امنیت() درخواست می کنیم، TradingView آن داده ها را برای ما بارگیری می کند. از آنجایی که این برای سرورهای TradingView منابع فشرده است، یک محدودیت وجود دارد: یک اسکریپت می تواند 40 درخواست مختلف با امنیت() ارسال کند (TradingView Wiki، 2018).
چهل درخواست در حال حاضر زیاد است. اما هر فراخوانی ()security به عنوان یک درخواست حساب نمی شود. به عنوان مثال این اسکریپت را در نظر بگیرید:
) مقدار A
در اینجا دو فراخوان امنیتی () متفاوت دریافت کردیم. اما چه تعداد درخواست داده داریم؟فقط یکی. دلیلش این است که فراخوانی ()security در خط 8 استفاده نمی شود: فقط در آنجا قرار دارد. TradingView به اندازه ای هوشمند است که داده هایی را که استفاده نمی شوند واکشی نمی کند، و بنابراین این فراخوان امنیتی () در حداکثر 40 درخواست حساب نمی شود.
چیز دیگر این است که هر بار که امنیت() را اجرا می کنیم یک درخواست داده می کنیم (TradingView Wiki، 2018). اما این بدان معنا نیست که هر خط کد با امنیت() در آن یک فراخوان امنیتی است. آنچه مهم است این است که چند بار امنیت () واقعاً اجرا می شود. به عنوان مثال این اسکریپت را ببینید:
) dailyrangeدر اینجا Security () تفاوت بین قیمت های روزانه بالا و پایین ابزار را برمی گرداند. اما ما این داده ها را فقط با یک تماس امنیتی () دریافت می کنیم. ما فقط به جای برقراری دو تماس امنیتی جداگانه () ، یکی برای بالا و دیگری برای قیمت های پایین ، از بیان بالا و پایین استفاده کردیم.
در اینجا نمونه های دیگری از عبارات ما می توانیم به امنیت منتقل کنیم ():
- امنیت (Tickerid ، "D" ، EMA (نزدیک ، 10)): EMA 10 نوار قیمت های بسته را برمی گرداند.
- امنیت (Tickerid ، "D" ، SMA (نزدیک ، 5)-SMA (نزدیک ، 45)): تفاوت بین SMA 5 بار و 45 بار از قیمت های نزدیک روزانه را برمی گرداند.
- security(tickerid, "D", close>باز): هنگامی که نزدیک روزانه از باز است ، صادقانه باز می گردد.
اکنون بیایید یک اسکریپت به عنوان مثال را کشف کنیم که خطای "اسکریپت" TradingView را ایجاد می کند و خطای اوراق بهادار زیادی را درخواست می کند.
# مثال خطا: شاخصی که بیش از حد اوراق بهادار درخواست می کند
بنابراین ما نباید بیش از 40 درخواست داده را در یک اسکریپت واحد انجام دهیم. خوشبختانه این حد بسیار زیاد است که به ندرت در خطای TradingView "درخواست های اسکریپت بیش از حد بسیاری از اوراق بهادار" را اجرا می کنیم. اما در اینجا یک اسکریپت پیچیده غیر ضروری است که به آن خطا می پردازد:
سپس در اسکریپت دیگر داده های BTC/USD و AUD/CAD را ترسیم می کنیم:
این نسخه تنظیم شده هنوز هم داده های مشابه را محاسبه می کند. اما اکنون ما امنیت () مبلغ متوسط قیمت های باز ، بالا ، پایین ، نزدیک ، میانه و متوسط نزدیک به قاب زمانی روزانه و هفتگی را دریافت می کنیم. این بدان معناست که ما داده های مشابه را با 2 تماس امنیتی () واکشی می کنیم ، که درخواست های داده اسکریپت را از 48 به 8 کاهش می دهد.
# خلاصه
با عملکرد امنیتی () TradingView ، داده های قیمت را از سایر بازه های زمانی و/یا ابزارهای دیگر بارگیری می کنیم. به این ترتیب ما می توانیم با داده های هر ساز و بازه زمانی مورد نظر ، مستقل از نمودار اسکریپت ما ، با داده ها محاسبه کنیم.
بارگیری داده ها با امنیت () با این حال محدود است: ما می توانیم حداکثر 40 درخواست داده را در یک شاخص یا یک اسکریپت استراتژی واحد انجام دهیم. این حد به اندازه کافی بالا است که به ندرت در آن قرار می گیریم. اما هنگامی که ما این کار را انجام می دهیم ، TradingView پیام خطای "درخواست اسکریپت بسیاری از اوراق بهادار" را تولید می کند.
این خطا یک محدودیت TradingView است ، به این معنی که ما همیشه نمی توانیم آن را برطرف کنیم. اما ما می توانیم در اطراف آن کار کنیم. ابتدا بررسی کنید که آیا تماس های عملکردی غیر ضروری () در کد شما وجود دارد یا خیر. اگر وجود دارد ، آنها را برداشته و اسکریپت را ذخیره کنید تا ببینید که آیا این خطا را برطرف می کند یا خیر.
گزینه دیگر بهینه سازی تماس های امنیتی () ما است. استدلال سوم این عملکرد یک عبارت را می پذیرد. ما به طور معمول از یک متغیر داده قیمت در آنجا استفاده می کنیم (مانند نزدیک یا زیاد). اما ما همچنین می توانیم یک محاسبه را مستقیماً به امنیت () ، مانند نزدیک یا EMA (نزدیک ، 20) منتقل کنیم.
اگر امنیت () بهینه سازی ها مانع از خطای "اسکریپت" TradingView نمی شود ، خطای اوراق بهادار را بیش از حد درخواست می کند ، باید کد اسکریپت را بین چندین اسکریپت تقسیم کنید تا هرکدام کمتر از 40 درخواست داده ایجاد کنند.
منابع
TradingView (n. d.). کتابچه راهنمای مرجع زبان اسکریپت کاج. برگرفته در تاریخ 26 ژوئیه 2018 ، از https://www. tradingview. com/study-script-reference/
TradingView Wiki (2018 ، 22 ژوئن). خطاهای تلفیقی کاج. برگرفته در 26 ژوئیه 2018 ، از https://www. tradingview. com/wiki/pine_compilation_errors
منتشر شده در 30 ژوئیه 2018.
# آموزش های مربوط به TradingView
چگونه خطای "نتوانسته عملکرد یا مرجع عملکرد" را پیدا کنیم؟TradingView با نام کارکردها کاملاً دقیق است. وقتی نام یک تابع را اشتباه می کنیم ، خطای "نتوانسته عملکرد را پیدا نکنید" دریافت خواهیم کرد. چگونه می توان اشتباه برنامه نویسی "ناسازگار ورودی" را در TradingView اصلاح کرد؟برنامه نویسی اسکریپت های کاج یک کار دقیق است. هنگامی که یک شخصیت واحد از دست رفته است یا ما از شخصیت اشتباه استفاده کرده ایم ، خطاهای TradingView با "ورودی ناسازگار". چه چیزی باعث ایجاد خطای TradingView با "نمی شود با استدلال ها"؟با آرگومان مقادیر را به توابع TradingView منتقل می کنیم. وقتی از استدلال اشتباه استفاده می کنیم یا یکی را فراموش می کنیم ، خطای "نمی توان با استدلال ها را نمی توان تماس گرفت". در اینجا نحوه رفع خطای "متغیر" TradingView از قبل اعلام شده است که متغیر TradingView فقط یک بار ایجاد می شود. اگر سعی کنیم دو بار همان متغیر را اعلام کنیم ، خطای "متغیر قبلاً اعلام شده" را دریافت می کنیم. چگونه خطای "پایان خط بدون ادامه" TradingView را اصلاح کنیم؟هنگامی که خطای "پایان خط پایان" TradingView را دریافت می کنیم ، مشکلات تورفتگی در نشانگر یا استراتژی اسکریپت کاج ما وجود دارد.
در kodify. net خوش آمدید! این وب سایت با هدف کمک به افرادی مانند شما که منحنی برنامه نویسی خود را کاهش می دهند ، کمک می کند. امیدوارم مقالات را با کارهای برنامه نویسی خود مفید پیدا کنید.
می خواهی بیشتر در مورد من بدانی؟صفحه را بررسی کنید.
برای کسب اطلاعات در مورد بسیاری از ویژگی های اسکریپت کاج ، به تمام آموزش های TradingView مراجعه کنید
سایر مقالات TradingView
معاملات با سفارش بازار: TradingView's Strategy. Close () و Strategy. Close_All () توابع برنده شدن ، از دست دادن و حتی معاملات در TradingView: The Strategy. Wintrades ، Strategy. LossTrades و Strategy. Eventrades متغیرها ترسیم یک استراتژی TradingView در میله های قیمت ساز - در اینجا چگونه آورده شده است دریافت داده های تاریخی با اپراتور ارجاع تاریخ چه کد می تواند ببیند که آیا یک استراتژی TradingView طولانی ، کوتاه یا مسطح بوده است؟