اسکریپت های TradingView می توانند در بازه های زمانی زیادی اجرا شوند. با این حال، برخی از ایده های معاملاتی در بازه های زمانی خاص بهترین عملکرد را دارند در حالی که سایر دوره های زمانی مناسب نیستند. به عنوان مثال، یک استراتژی سریع پوسته پوسته کردن، روی نمودار روزانه کار نخواهد کرد.
اما برای ایجاد این تمایز، کد ما باید بداند که آیا بازه زمانی نمودار یک روز است یا بیشتر. بیایید آن را در Pine Script برنامه ریزی کنیم.
عملکرد سفارشی
برای اینکه ببینیم آیا یک اسکریپت از بازه زمانی ۱ روزه یا بالاتر استفاده می کند، ابتدا بازه زمانی فعلی اسکریپت را بررسی می کنیم. سپس آن را با طول 1 روز مقایسه کنید. وقتی اسکریپت از طول نوار یکسان یا بالاتر استفاده می کند، کد ما در یک بازه زمانی 1 روزه و بالاتر اجرا می شود.
برای انجام این مقایسه از تابع timeframe. in_seconds() استفاده می کنیم. این تابع می تواند دو کار را انجام دهد. می تواند طول بازه زمانی اسکریپت را برگرداند. یا می تواند طول هر بازه زمانی خاصی را برگرداند. از آنجایی که تابع در هر دو حالت چند ثانیه را برمی گرداند، می توانیم یکی را با دیگری مقایسه کنیم.
برای استفاده مجدد آسان از کد، اجازه دهید یک تابع سفارشی ایجاد کنیم که ببیند آیا اسکریپت در بازه زمانی ۱ روزه یا بالاتر اجرا می شود یا خیر:
این تابع سفارشی IsDayOrHigherTF() یکی از دو مقدار را برمی گرداند. اگر اسکریپت در بازه زمانی ۱ روزه یا بالاتر محاسبه شود، تابع true را برمی گرداند. اگر بازه زمانی زیر 1 روز باشد، مقدار نادرست دریافت می کنیم.
کد تابع، بازه زمانی اسکریپت را با طول فریم زمانی 1 روزه مقایسه می کند. برای اولین مقدار تابع timeframe. in_seconds() را فراخوانی می کنیم. برای بدست آوردن مقدار دوم، همان تابع را فراخوانی می کنیم، اما اکنون با آرگومان رشته تایم فریم "D". که طول یک بازه زمانی روزانه را برمی گرداند.
Then we see if the script’s time frame is greater than or equal to (>= ) یک بازه زمانی روزانه. وقتی اسکریپت واقعاً در یک دوره 1 روزه یا بالاتر اجرا می شود، درست برمی گردد. در غیر این صورت، با بازه زمانی اسکریپت زیر 1 روز، به عنوان مقدار بازگشتی تابع false دریافت می کنیم.
ویژگی های عملکرد
تابع IsDayOrHigherTF() دارای چند ویژگی قابل توجه است:
- این تابع بر روی هر نمودار مبتنی بر زمان، مانند 15 ثانیه، 30 دقیقه، 8 ساعت، 7 روز و 6 ماه کار می کند.
- همچنین بر روی نمودارهای مبتنی بر قیمت کار می کند. اگرچه ما آن نمودارها را با یک بازه زمانی ثابت پیکربندی نمی کنیم، TradingView همچنان آنها را از داده هایی ایجاد می کند که بازه زمانی مشخصی دارند. و وضوح این بازه همان چیزی است که تابع IsDayOrHigherTF() به آن نگاه می کند.
- بنابراین این تابع در نمودارهای Heikin Ashi، Renko، Line Break، Kagi و Point & Figure درست یا نادرست را برمی گرداند. در این نمودارها، نشان می دهد که TradingView از چه دوره ای برای ایجاد میله های قیمت استفاده کرده است.
- isdayorhighertf () همیشه در نمودارهای محدوده کاذب را برمی گرداند. TradingView بدون در نظر گرفتن طول دامنه ، این نمودارها را از داده های 1 دقیقه ای ایجاد می کند.
نمونه های عملکرد
پس از کپی و چسباندن عملکرد ISDayorHighertf () در اسکریپت ، چند روش برای استفاده از آن وجود دارد.
برای آزمایش اینکه آیا اسکریپت ما در یک نمودار روز یا بالاتر اجرا می شود ، می بینیم که آیا عملکرد درست است یا خیر. وقتی این کار را انجام داد ، می توانیم ، به عنوان مثال ، یک برچسب متن بسازیم که نمودار روز یا بالاتر باشد:
گزینه دیگر این است که صریحاً آزمایش کنید که بازه زمانی یک روز یا بالاتر نیست. برای انجام این کار ، ما اپراتور نه منطقی را قبل از عملکرد ISDayorHighertf () قرار می دهیم. مثلا:
علاوه بر این ، اگر اظهارات ، ما همچنین می توانیم از عملکرد با عبارت سوئیچ و اپراتور مشروط استفاده کنیم (؟ :). و در هر جای دیگری که اسکریپت کاج می تواند یک مقدار واقعی/نادرست را تحمل کند.
بیایید بگوییم که می خواهیم پس زمینه را رنگ آمیزی کنیم وقتی چارچوب زمانی نمودار 1 روز یا بالاتر باشد. برای این کار ، ما به عملکرد BGCOLOR () می نامیم. و ، در داخل آن عملکرد ، اپراتور مشروط را ارزیابی کنید isdayorhighertf ():
اسکریپت مثال
بیایید ببینیم که چگونه یک اسکریپت کامل می تواند از عملکرد isdayorhighertf () استفاده کند. نشانگر زیر با برچسب متن می گوید که آیا بازه زمانی نمودار 1 روز یا بالاتر است. و اگر نمودار از یک بازه زمانی پایین تر استفاده می کند ، فیلمنامه نیز به همان اندازه می گوید. وقتی چارچوب زمانی نمودار را تغییر می دهیم ، متن برچسب با آن تغییر می کند.
کد نشانگر:
ما با عملکرد شاخص () شروع می کنیم. با انجام این کار ، اسکریپت را نامگذاری کرده و آن را روی ساز نمودار پوشانده است.
ما شامل عملکرد سفارشی IsdayorHighertf () در مرحله بعدی هستیم. یک عبارت IF سپس متغیر Barstate. islastConfirmedHistory را بررسی می کند. این متغیر فقط در آخرین نوار تاریخی نمودار صادق است.(این راهی است که فقط یک بار کد بیانیه را اجرا می کند.) ما دو کار را در داخل آن انجام می دهیم.
ابتدا متغیر labeltext را می سازیم. مقدار آن چیزی است که بیانیه IF/Else تنظیم می کند. IF شرط عملکرد ISDayorHighertf () را بررسی می کند. هنگامی که این تابع درست بازگردد ، متن متغیر می گوید اسکریپت از یک بازه زمانی 1 روز یا بالاتر استفاده می کند. در غیر این صورت ، کد دیگر می گوید چارچوب زمانی زیر 1 روز است.
ما برچسب متن را با تابع label. new () ماندگار می کنیم. این برچسب در نزدیکی نوار (نزدیک) ، سه میله در سمت راست (BAR_INDEX + 3) نشان می دهد. این امتیاز سمت چپ (label. style_label_left) است و در #ffffed ، رنگ شش ضلعی برای زرد روشن نشان می دهد. متن برچسب متغیر LabelText است. ما این رشته را با اندازه قلم بزرگ نشان می دهیم (size. large).
وقتی اندیکاتور را در نمودار 4 ساعته درون روز اجرا می کنیم، نشانگر به درستی نشان می دهد که چارچوب زمانی زیر 1 روز است:

اگر نمودار را به روزانه تغییر دهیم، اسکریپت می گوید که بازه زمانی 1 روز یا بیشتر است:

خلاصه
- برای اینکه ببینیم کد روی داده های روزانه اجرا می شود یا نه، ابتدا با تابع timeframe. in_seconds () زمان فریم فعلی آن را دریافت می کنیم.
- سپس از همان عملکرد برای یافتن مدت زمان دوام یک نوار روزانه استفاده کنید.
- زمانی که بازه زمانی اسکریپت بیشتر از آن طول 1 روز باشد، از وضوح نمودار روزانه یا بالاتر استفاده می کند.
منتشر شده در 23 مارس 2022
درمورد من
سلام، من جوس هستم! در TradingCode من اشتیاق خود به برنامه نویسی را با علاقه ام به بازارهای مالی ترکیب می کنم.
من در مورد چیزهایی می نویسم که یاد گرفته ام تا به دیگران کمک کنم تا موفق شوند. تجارت در حال حاضر به اندازه کافی چالش برانگیز است. امیدوارم بتوانم در بخش برنامه نویسی به شما کمک کنم.
من اولین اسکریپت TradingView را در سال 2014 نوشتم. در مدت زمانی که صدها شاخص و استراتژی را در Pine Script کدنویسی کردم.
بهترین استراتژی معاملات...
ما را در سایت بهترین استراتژی معاملات دنبال می کنید
برچسب :
نویسنده : صدرا ذوالریاستین
بازدید : 62
تاريخ : سه
شنبه
22 فروردين
1402 ساعت: 15:40