اگر یک کاربر از این اسکریپت می خواست دو هشدار اسکریپت مجزا از این اسکریپت ایجاد کند ، یعنی یکی فقط در Longs و یکی فقط در شلوارک ، پس او نیاز دارد: - فقط "Detect Longs" را در ورودی ها انتخاب کنید و اولین هشدار اسکریپت را روی اسکریپت ایجاد کنید.
- فقط در ورودی ها فقط "Detect Shorts" را انتخاب کرده و هشدار اسکریپت دیگری را روی اسکریپت ایجاد کنید.
در استراتژی ها
تماسهای عملکردی هشدار () می توانند در استراتژی ها به همان روش در مطالعات استفاده شوند. در حالی که هشدارهای اسکریپت در مورد استراتژی ها از رویدادهای پر کردن سفارش برای ایجاد هشدارها در هنگام پر کردن سفارش دهنده کارگزار ، هشدار (هشدار () می توان از مزیت استفاده کرد تا سایر رویدادهای هشدار را در استراتژی ها ایجاد کند.
این استراتژی هنگام حرکت RSI در برابر تجارت برای سه میله متوالی ، تماس های عملکردی هشدار () ایجاد می کند:
اگر یک کاربر هشدار اسکریپت را از این استراتژی ایجاد کرده و شامل هر دو برنامه پر کردن سفارش و تماس های عملکردی هشدار () در هشدار خود باشد ، هشدار هر زمان که سفارش اجرا شود ، یا هنگامی که یکی از هشدار () تماس ها توسط اسکریپت اجرا می شود ، هشدار می شود. در تکرار بسته شدن نوار Realtime ، یعنی وقتی Barstate. IsrealTime و Barstate. isconfirmed هر دو درست هستند. وقایع عملکرد هشدار () در اسکریپت فقط با بسته شدن نوار زمان واقعی ، هشدار را تحریک می کند زیرا Alert. freq_once_per_bar_close آرگومان مورد استفاده برای پارامتر FREQ در هشدار () است.
سفارش رویدادهای پر کردن
هنگامی که یک هشدار اسکریپت از یک مطالعه ایجاد می شود ، فقط می تواند در تماس های عملکردی هشدار () ایجاد شود. با این حال ، هنگامی که یک هشدار اسکریپت از یک استراتژی ایجاد می شود ، کاربر می تواند مشخص کند که رویدادهای پر کردن سفارش نیز باعث هشدار اسکریپت می شود. یک رویداد پر کردن سفارش هر رویدادی است که توسط شبیه ساز کارگزار ایجاد می شود که باعث می شود یک دستور شبیه سازی شده اجرا شود. این معادل سفارش تجارت است که توسط یک کارگزار/مبادله پر می شود. سفارشات لزوماً هنگام قرار دادن اجرا نمی شوند. در یک استراتژی ، اجرای سفارشات فقط با تجزیه و تحلیل تغییرات در متغیرهای داخلی مانند Strategy. OpentRades یا Strategy. Position_Size قابل تشخیص و پس از واقعیت است. هشدارهای اسکریپت پیکربندی شده در رویدادهای پر از سفارش از این رو مفید هستند که باعث می شود در لحظه دقیق اجرای یک سفارش ، هشدارها را ایجاد کند ، قبل از اینکه منطق یک اسکریپت بتواند آن را تشخیص دهد.
رمزگذارهای کاج می توانند پیام هشدار ارسال شده هنگام اجرای سفارشات خاص را سفارشی کنند. در حالی که این یک پیش نیاز برای ایجاد رویدادهای پر از سفارش نیست ، پیام های هشدار سفارشی می توانند مفید باشند زیرا اجازه می دهند نحو سفارشی با هشدارها به منظور هدایت سفارشات واقعی به موتور اجرای شخص ثالث ، به عنوان مثال درج شوند. مشخص کردن پیام های هشدار سفارشی برای رویدادهای پر کردن سفارش خاص با استفاده از پارامتر Alert_Message در توابع که می توانند سفارشات ایجاد کنند: استراتژی.) ، استراتژی. entry () ، استراتژی.) و استراتژی.
آرگومان مورد استفاده برای پارامتر Alert_Message یک "رشته سری" است ، بنابراین می توان با استفاده از هر متغیر موجود در اسکریپت ، به صورت پویا ساخته شد ، تا زمانی که به قالب رشته تبدیل شود.
بیایید به یک استراتژی که در آن از پارامتر Alert_Message در هر دو استراتژی خود استفاده می کنیم ، نگاهی بیندازیم.
- ما از پارامتر stop در فراخوانی های strateg. entry() خود استفاده می کنیم که دستور توقف خرید و توقف فروش را ایجاد می کند. این امر مستلزم آن است که سفارش های خرید فقط زمانی اجرا می شوند که قیمت بالاتر از بالای نواری باشد که در آن سفارش انجام می شود، و سفارش های فروش تنها زمانی اجرا می شوند که قیمت کمتر از پایین ترین قیمت در نواری که در آن سفارش انجام می شود، باشد.
- فلش های بالا/پایین که با plotchar() رسم می کنیم هنگام سفارش ها ترسیم می شوند. هر تعداد نوار ممکن است قبل از اجرای واقعی سفارش بگذرد و در برخی موارد سفارش هرگز اجرا نمی شود زیرا قیمت شرایط لازم را برآورده نمی کند.
- از آنجایی که ما از همان آرگومان شناسه برای همه سفارش های خرید استفاده می کنیم، هر سفارش خرید جدیدی که قبل از برآورده شدن شرایط سفارش قبلی انجام شود، جایگزین آن سفارش می شود. همین امر در مورد سفارشات فروش نیز صدق می کند.
- متغیرهای موجود در آرگومان alert_message زمانی که دستور اجرا می شود، ارزیابی می شوند، بنابراین زمانی که هشدار فعال می شود.
When the alert_message parameter is used in a strategy’s order-generating strategy.*() function calls, script users must include the> placeholder in the “Create Alert” dialog box’s “Message” field when creating script alerts on order fill events . This is required so the alert_message argument used in the order-generating strategy.*() function calls is used in the message of alerts triggering on each order fill event . When only using the>مکان نگهدار در فیلد "پیام" و پارامتر alert_message فقط در برخی از استراتژی های تولید سفارش وجود دارد. فراخوانی تابع استراتژی.*() از پارامتر alert_message استفاده نمی کند.
در حالی که سایر مکان ها را می توان در فیلد «پیام» کادر گفتگوی «ایجاد هشدار» توسط کاربران ایجاد هشدار درباره رویدادهای تکمیل سفارش استفاده کرد، نمی توان از آنها در آرگومان alert_message استفاده کرد.
رویدادهای "alertcondition()"
تابع ()alertcondition به برنامه نویسان اجازه می دهد تا رویدادهای شرط هشدار فردی را در مطالعات Pine ایجاد کنند. یک مطالعه ممکن است حاوی بیش از یک تماس ()alertcondition باشد. هر فراخوانی به alertcondition() در یک اسکریپت یک هشدار متناظر قابل انتخاب در منوی کشویی "شرط" کادر گفتگوی "Create Alert" ایجاد می کند.
در حالی که وجود فراخوانی ()alertcondition در یک اسکریپت استراتژی Pine باعث خطای کامپایل نمی شود، نمی توان هشدارهایی از آنها ایجاد کرد.
تابع alertcondition() دارای امضای زیر است:
مقدار "سری BOOL" (درست یا نادرست) را شرط می کند که تعیین می کند که هشدار چه زمانی شروع می شود. این یک استدلال مورد نیاز است. هنگامی که مقدار صحیح است ، هشدار باعث می شود. وقتی مقدار نادرست باشد ، هشدار باعث نمی شود. برخلاف تماس های عملکردی () هشدار () ، تماس های هشدار () باید از ستون صفر یک خط شروع شود ، بنابراین نمی توان در بلوک های مشروط قرار گرفت. عنوان A آرگومان اختیاری "Const String" که نام وضعیت هشدار را تنظیم می کند ، همانطور که در قسمت "Create Alert" کادر گفتگوی "وضعیت" در نمودار UI ظاهر می شود. در صورت عدم ارائه استدلالی ، از "هشدار" استفاده می شود. یک آرگومان اختیاری "رشته" را پیام دهید که پیام متنی را برای نمایش در هنگام شروع هشدار مشخص می کند. متن در قسمت "پیام" کادر گفتگوی "ایجاد هشدار" ظاهر می شود ، از جایی که کاربران اسکریپت می توانند هنگام ایجاد هشدار ، آن را تغییر دهند. از آنجا که این استدلال باید یک "رشته" باشد ، باید در زمان تلفیقی شناخته شود و بنابراین نمی تواند نوار را متفاوت کند. با این حال ، این می تواند دارای متغیرهایی باشد که در زمان اجرا توسط مقادیر پویا جایگزین می شوند که ممکن است نوار را به نوار تغییر دهد. برای یک لیست به بخش Flailers این صفحه مراجعه کنید.
عملکرد AlertCondition () شامل یک پارامتر FREQ نیست. فراوانی هشدارهای هشدار () توسط کاربران در کادر گفتگوی "ایجاد هشدار" تعیین می شود.
با استفاده از یک شرایط
در اینجا نمونه ای از ایجاد کد AlertCondition () رویدادها وجود دارد:
از آنجا که ما دو تماس هشدار دهنده () در اسکریپت خود داریم ، دو هشدار مختلف در قسمت "وضعیت" کادر گفتگوی "ایجاد هشدار" در دسترس خواهد بود: "هشدار طولانی" و "هشدار کوتاه".
اگر می خواستیم مقدار RSI را در هنگام وقوع صلیب درج کنیم ، نمی توانیم به سادگی مقدار آن را با استفاده از toString (R) به رشته پیام اضافه کنیم ، همانطور که می توانستیم در یک تماس () هشدار یا در یک استدلال Alert_Message در یک استراتژی. با این حال ، ما می توانیم آن را با استفاده از یک مکان نگهدارنده بگنجانیم. این دو گزینه دیگر را نشان می دهد:
- The first line uses the>مکان یابی ، جایی که شماره طرح با ترتیب طرح در فیلمنامه مطابقت دارد.
- The second line uses the> type of placeholder, which must include the title of the plot() call used in our script to plot RSI. Double quotes are used to wrap the plot’s title inside the>نگهدارنده مکاناین امر مستلزم آن است که ما از نقل قول های منفرد برای بسته بندی رشته پیام استفاده کنیم.
- با استفاده از یکی از این روشها ، می توانیم هر مقدار عددی را که توسط مطالعه ما ترسیم شده است ، درج کنیم ، اما از آنجا که رشته ها نمی توانند ترسیم شوند ، از متغیر رشته ای نمی توان استفاده کرد.
با استفاده از شرایط ترکیب
اگر می خواهیم به کاربران اسکریپت امکان ایجاد یک هشدار واحد را از یک مطالعه با استفاده از تماس های متعدد هشدار دهنده () ارائه دهیم ، باید گزینه هایی را در ورودی های اسکریپت ارائه دهیم که از طریق آن کاربران شرایطی را که می خواهند قبل از ایجاد آن ایجاد کنند ، نشان می دهدواد
این اسکریپت یکی از راه های انجام آن را نشان می دهد:
توجه داشته باشید که چگونه تماس AlertCondition () مجاز به ایجاد یکی از دو شرط است. هر شرایط فقط می تواند هشدار را ایجاد کند اگر کاربر قبل از ایجاد هشدار ، آن را در ورودی های اسکریپت فعال کند.
متقاضیان
از این متغیرها می توان در استدلال پیام تماسهای هشدار دهنده () استفاده کرد. هنگامی که هشدار باعث ایجاد هشدار می شود ، آنها با مقادیر پویا جایگزین می شوند. آنها تنها راه برای درج مقادیر پویا (مقادیری که می توانند نوار را در نوار متفاوت داشته باشند) در پیام های هشدار دهنده () قرار می دهند.
توجه داشته باشید که کاربران در حال ایجاد هشدارهای هشدار () از کادر گفتگوی "ایجاد هشدار" در نمودارهای UI همچنین قادر به استفاده از این متغیرها در قسمت "پیام" کادر گفتگو هستند.
> Exchange of the symbol used in the alert (NASDAQ, NYSE, MOEX, etc.). Note that for delayed symbols, the exchange will end with “_DL” or “_DLY.” For example, “NYMEX_DL.”> Retus the timeframe of the chart the alert is created on. Note that Range charts are calculated based on 1m data, so the placeholder will always retu “1” on any alert created on a Range chart.> ,> ,> ,> ,> Corresponding values of the bar on which the alert has been triggered.> ,> , […],>مقدار شماره نقشه مربوطه. به منظور ظاهر در فیلمنامه ، توطئه ها از صفر تا 19 شماره گذاری می شوند ، بنابراین فقط می توان از یکی از 20 قطعه اول استفاده کرد. به عنوان مثال ، نشانگر "حجم" داخلی دارای دو سری خروجی است: حجم و حجم MA ، بنابراین می توانید از موارد زیر استفاده کنید:
>این مکان نگهدارنده می تواند در صورت نیاز به مراجعه به طرح با استفاده از آرگومان عنوان مورد استفاده در یک تماس () استفاده شود. توجه داشته باشید که علائم نقل قول مضاعف (") باید در داخل مکان نگهدارنده برای بسته بندی آرگومان عنوان استفاده شود. این امر مستلزم استفاده از یک علامت نقل قول واحد (') برای بسته بندی رشته پیام است:
<> Ticker of the symbol used in the alert (AAPL, BTCUSD, etc.).> Retus the time at the beginning of the bar. Time is UTC, formatted as yyyy-MM-ddTHH:mm:ssZ , so for example: 2019-08-27T09:56:00Z .> Current time when the alert triggers, formatted in the same way as>واددقت به نزدیکترین دوم ، صرف نظر از بازه زمانی نمودار است.
اجتناب از تکرار با هشدارها
متداول ترین نمونه های بازپرداخت بازرگانان می خواهند با هشدارها از آن جلوگیری کنند ، مواردی هستند که باید در هنگام نوار واقعی از هشدار جلوگیری کنند و در حالی که در نزدیکی آن قرار نمی گرفت ، در برخی از نقاط در بعضی مواقع از تحریک هشدار جلوگیری کنند. این می تواند هنگام برآورده شدن این شرایط اتفاق بیفتد:
- محاسبات مورد استفاده در شرط ایجاد هشدار می تواند در نوار زمان واقعی متفاوت باشد. این مورد در مورد هر محاسبه با استفاده از بالا ، کم یا نزدیک ، به عنوان مثال ، که تقریباً تمام شاخص های داخلی را شامل می شود ، اتفاق می افتد. همچنین در نتیجه هرگونه تماس امنیتی () با استفاده از یک بازه زمانی بالاتر از نمودار ، هنگامی که نوار فعلی بازه زمانی بالاتر هنوز بسته نشده است ، مورد خواهد بود.
- هشدار می تواند قبل از بسته شدن نوار زمان واقعی ، با هر فرکانس غیر از "یک بار در هر نوار نزدیک" شروع شود.
ساده ترین راه برای جلوگیری از این نوع بازپرداخت ، پیکربندی فرکانس تحریک هشدارها است ، بنابراین آنها فقط در بسته شدن نوار زمان واقعی شروع می کنند. هیچ پاناسه وجود ندارد. اجتناب از این نوع بازپرداخت همیشه مستلزم انتظار برای اطلاعات تأیید شده است ، این بدان معنی است که معامله گر برای دستیابی به قابلیت اطمینان باید فوری را فدا کند.
توجه داشته باشید که انواع دیگر بازپرداخت مانند مواردی که در بخش بازپرداخت نشانگر ما مستند شده است ، ممکن است با ایجاد هشدارها در نزدیکی میله های زمان واقعی ، قابل پیشگیری نباشد.