SDK | Backtesting System🎴
مقدمه
بکتستر SDK | Backtesting System ™ Signals 🎴 یه اسکریپته که به کاربرا این امکان رو میده تا با استفاده از قابلیتهای ابزارSDK |Signals™ Buy/Sell Toolkit 🎴 بکتست انجام بدن. تو این اسکریپت کلی امکانات فراهم شده تا بکتستها هم کاملتر و هم متنوعتر باشن. جزئیات مربوط به هر کدوم از اجزای اصلی سیستم تو صفحات بعدی توضیح داده شده.
توضیحات مهم
💡بکتستها تضمینی برای نتایج آینده نیستن. تست کردن استراتژیها روی دادههای مصنوعی معمولاً نتایج واقعی و دقیق از عملکرد استراتژی ارائه نمیده. بهتره بکتستها رو روی نمودارهایی که قیمتهای بسته شدن واقعی رو نشون میدن انجام بدید.
قانون CFTC 4.41
نتایج فرضی یا شبیهسازی شده یه سری محدودیت دارن. برخلاف سوابق واقعی معاملات، این نتایج بازتابدهندهی معاملات واقعی نیستن. از اونجایی که معاملات واقعاً اجرا نشدن، ممکنه تأثیر عواملی مثل نبود نقدینگی رو کمتر یا بیشتر از واقعیت نشون بدن.
Entry Rules
بکتستر SDK | Backtesting System ™ Signals 🎴 از قابلیتهای متنوع ابزار SDK |Signals™ Buy/Sell Toolkit 🎴 استفاده میکنه، مثل سیگنالهای تاییدی ، سیگنالهای خالف روند ، تا قوانین ورود به استراتژی رو به صورت دقیق و قابل تنظیم مشخص کنه.
به طور پیشفرض، بکتست روی ۲۰۰۰ کندل اخیر انجام میشه. این مقدار رو میتونید از تنظیمات Backtest Window تغییر بدید
Sensitivity
Sensitivity یکی از تنظیمات کلیدی این اندیکاتوره که میزان حساسیت به تغییرات سیگنالها و شرایط بازار رو تعیین میکنه. این گزینه مستقیماً روی نحوه شناسایی نقاط ورود و خروج تأثیر میذاره.
به طور پیشفرض مقدار Sensitivity برابر 12 هست، اما میتونید این مقدار رو با توجه به شرایط بازار و استراتژی خودتون تغییر بدید.
مقدار پایینترباعث میشه اندیکاتور کمتر به تغییرات کوچک بازار واکنش نشون بده و سیگنالهای کمتری تولید کنه اما دقیقتر عمل کنه.
مقدار بالاتر باعث افزایش واکنشپذیری اندیکاتور به تغییرات جزئی بازار میشه و سیگنالهای بیشتری تولید میکنه، اما ممکنه نویز بیشتری هم داشته باشه.
BEHAVIOR
بخش Behavior نحوه عملکرد اندیکاتور رو در مدیریت معاملات و واکنش به سیگنالها تنظیم میکنه. این تنظیمات به شما اجازه میدن تا رفتار معاملات رو با استراتژی خودتون تطبیق بدید.
Opposite Exit
این گزینه مشخص میکنه که آیا معامله فعلی با ظاهر شدن سیگنال مخالف بسته بشه یا نه.اگر در حالت لانگ هستید و سیگنال شورت ظاهر بشه، معامله لانگ بسته و معامله شورت باز میشه.
Builtin Exit
این گزینه به اندیکاتور اجازه میده از سیستم خروج داخلی خودش استفاده کنه. از تنظیمات داخلی (مانند حد سود یا حد ضرر از پیشتعریفشده) برای بستن معاملات استفاده میشه
SHORT/ LONG CONDITIONS
کاربرا میتونن قوانین ورود به معاملات لانگ (خرید) و شورت (فروش) رو از بخش تنظیمات LONG CONDITIONS و SHORT CONDITIONS مشخص کنن و از گزینههای موجود استفاده کنن.
Signal Type
-Normal
-Strong
وقتی سیگنال مشخصشده توسط کاربر ظاهر بشه، وارد معامله میشه. کاربرا میتونن بین الگوریتم سیگنالهای تاییدی (Confirmation) یا مخالف (Contrarian) یکی رو انتخاب کنن (برای لانگ و شورت میتونن الگوریتمهای متفاوتی استفاده کنن). این تنظیمات به حساسیت (Sensitivity) بستگی داره.
Smart Trail
-Normal
-Bullish
-Bearish
وارد معامله بشید اگه Smart Trail به صعودی یا نزولی تغییر وضعیت بده یا اگه در حال حاضر صعودی یا نزولی باشه.
Trend Tracer
-Normal
-Bullish
-Bearish
وارد معامله بشید اگه Trend Tracer به صعودی یا نزولی تغییر وضعیت بده یا اگه در حال حاضر صعودی یا نزولی باشه.
Trend Catcher
-Normal
-Bullish
-Bearish
وارد معامله بشید اگه Trend Catcher به صعودی یا نزولی تغییر کنه یا اگه در حال حاضر صعودی یا نزولی باشه
Neo Cloud
-Normal
-Bullish
-Bearish
وارد معامله بشید اگه Neo Cloud به صعودی یا نزولی تغییر کنه یا اگه در حال حاضر صعودی یا نزولی باشه.
Trend Strength
-Normal
-Bullish
-Bearish
وارد معامله بشید اگه قدرت روند (Trend Strength) بیشتر یا کمتر از مقدار مشخصشده باشه.
💡میتونید چندتا شرط رو همزمان فعال کنید. ، بکتستر فقط وقتی سفارش رو اجرا میکنه که همه شرایط درست باشن.
FIXED TPS & SLS
کاربرا میتونن با تنظیم حد سود و حد ضرر، مدیریت سرمایه رو تو بکتستها انجام بدن. این سفارشها رو میشه از بخش تنظیمات FIXED TPS & SLS فعال و مقدارشون رو تغییر داد.
💡حد سود و حد ضرر بر اساس قیمتی که قبل از معامله ثبت شده تعیین میشه و ممکنه دقیقاً همون قیمتی که کاربر مشخص کرده اجرا نشه.
تو تنظیمات میتونید با فعال کردن گزینهها، حد سود و حد ضرر رو برای سفارشهای مشخص فعال کنید. راههای مختلفی برای تنظیم حد سود و حد ضرر وجود داره که در ادامه توضیح داده شده.
Price (قیمت)
حد سود و حد ضرر رو روی قیمتی که مشخص میکنید تنظیم میکنه.
Currency (واحد پول)
حد سود و حد ضرر رو با فاصله مشخصی (بر اساس مقدار ارز) از قیمت بسته شدن قبل از ورود به معامله لانگ یا شورت تعیین میکنه.
% (درصد)
حد سود و حد ضرر رو با درصد مشخصی از قیمت بسته شدن قبل از ورود به معامله لانگ یا شورت تنظیم میکنه.
ATR
حد سود و حد ضرر رو با فاصله N برابر میانگین دامنه واقعی (ATR) از قیمت بسته شدن قبل از ورود به معامله لانگ یا شورت تنظیم میکنه، که N یه ضریبه و شما اون رو مشخص میکنید.
💡برای تنظیم حد سود و حد ضرر از (ATR) با دوره 200 کندل استفاده میشه.
Exit Conditions
کاربرا میتونن هر معاملهای رو با سود یا ضرر ببندن، با استفاده از شرایط عبوری خاصی که از یه منبع خارجی انتخاب کردن یا از خروجیهای داخلی ما. این شرایط خروج رو میتونید تو بخش تنظیمات EXIT CONDITIONS فعال کنید.
External Exits(خروج های خارجی)
خروج با حد سود
شرایط خروج حد سود برای معاملات لانگ یا شورت به این صورت عمل میکنه که وقتی شرط تعیینشده برآورده بشه و معامله در سود باشه، پوزیشن بسته میشه.
شرایط حد سود وقتی فعال میشه که یک سفارش (لانگ یا شورت) مشخص شده باشه و منبع خارجی انتخابشده یکی از این حالتها باشه:
برخورد (Crossing)
برخورد به بالا (Crossing Up)
برخورد به پایین (Crossing Down)
بزرگتر از (Greater Than)
کوچکتر از (Lower Than)
مساوی با (Equal to)
مقداری که کاربر تعیین کرده.
خروج با حد ضرر
شرایط خروج حد ضرر برای معاملات لانگ یا شورت باعث میشه وقتی شرط تعیینشده برآورده بشه و معامله در ضرر باشه، پوزیشن بسته بشه.
شرایط حد ضرر وقتی فعال میشه که یک سفارش (لانگ یا شورت) مشخص شده باشه و منبع خارجی انتخابشده یکی از این حالتها باشه:
برخورد (Crossing)
برخورد به بالا (Crossing Up)
برخورد به پایین (Crossing Down)
بزرگتر از (Greater Than)
کوچکتر از (Lower Than)
مساوی با (Equal to)
مقداری که کاربر تعیین کرده.
Placeholders
کاربرایی که نمیخوان از مقدار عددی برای ارزیابی یه شرط با یه منبع خارجی استفاده کنن، میتونن به جای اون از Placeholder (جاینگهدار) استفاده کنن که امکان استفاده از دادههای قیمتی رو فراهم میکنه. موارد زیر برای Placeholder پشتیبانی میشن:
- open: قیمت باز شدن
- high: بالاترین قیمت
- low: پایینترین قیمت
- close: قیمت بسته شدن
- hl2: میانگین بالاترین و پایینترین قیمت
- ohlc4: میانگین قیمت باز، بالاترین، پایین ترین و بسته شدن
- hlc3: قیمت معمول (میانگین بالاترین، پایین ترین و بسته شدن)
- hlcc4: قیمت وزنی (میانگین بالاترین، پایین ترین و دو برابر بسته شدن)
ADVANCED
کاربرا میتونن بسته به گزینههایی که از منوی کشویی Maximize تو بخش تنظیمات Advanced انتخاب میکنن، روی یکی از موارد زیر تمرکز کنن:
- سود خالص (Net Profit)
- سود یا زیان کلی به دست اومده (هرچی بیشتر باشه، بهتره).
- وین ریت (Winrate)
- درصد معاملات موفق (هرچی بیشتر باشه، بهتره).
Sensitivity
بهینهسازی میتونه روی هر بازهای برای تنظیم Sensitivity (حساسیت) انجام بشه.
💡بهینهسازی تنظیم Sensitivity با استفاده از یک بازه بزرگ از مقادیر یا یک بازه زمانی طولانی برای بکتست میتونه زمان پردازش رو افزایش بده و ممکنه باعث خطاهای تایماوت بشه.
💡نتایج بهینهسازی ممکنه با نتایج بکتست استراتژی فرق داشته باشه. این تفاوت به خاطر نحوه اجرای معاملات در موتور بکتستینگ TradingView نسبت به موتور داخلی اسکریپت برای بهینهسازیه. استفاده از الگوریتمهای سیگنال مختلف برای ورود لانگ یا شورت هم میتونه باعث بشه نتایج بهینهسازی خیلی با بکتست فرق کنه.
حد سود و حد ضرر اگه فعال باشن، توسط موتور داخلی در نظر گرفته میشن، اما باز هم ممکنه اختلاف زیادی بین نتایج بکتست و بهینهسازی وجود داشته باشه.
Warmup Period
دوره Warmup به اسکریپت این امکان رو میده که الگوریتمهای سیگنال رو n کندل قبل از شروع بازه بکتست محاسبه کنه، که n همون دوره Warmup انتخابشده است. این کار باعث میشه سیگنالهایی که بکتست میشن، به سیگنالهای واقعی ابزارSDK |Signals™ Buy/Sell Toolkit 🎴 نزدیکتر باشن و در نتیجه تنظیمات بهینه دقیقتری ارائه بشه.
Display
کاربرا میتونن نتایج بکتست برای مقادیر حساسیت تو بازه بهینهسازی رو تو یه داشبورد که بالای سمت راست نمودارشون نشون داده میشه، ببینن. این داشبورد نتایج رو به ترتیب از بالا به پایین مرتب میکنه و بهترین نتیجه بهینهشده همیشه بالای لیست قرار میگیره.
Dashboard Type
تنظیم Dashboard Type مشخص میکنه چه نوع داشبوردی روی نمودار نمایش داده بشه و چه اطلاعاتی در دسترس کاربر قرار بگیره
Optimization
- این داشبورد تمام نتایج بهینهسازی رو نمایش میده.
- شامل مقادیر مختلف حساسیت و آمارهای مربوط به هر مقدار میشه.
Optimal
کاربرا اگه نمیخوان داشبورد بزرگ روی نمودارشون باشه، میتونن از داشبورد ساده استفاده کنن. این داشبورد فقط مقدار حساسیتی که بهترین نتیجه رو داده و همون آمار مربوطه رو نشون میده.
Sensitivity
- این نوع داشبورد بهطور خاص روی مقادیر حساسیت (Sensitivity) و تاثیر اونها روی نتایج تمرکز داره.
- به کاربر اجازه میده حساسیتهای مختلف رو ارزیابی کنه و بفهمه کدوم مقدار حساسیت برای استراتژیشون بهتر عمل میکنه.
Dashboard Location
کاربرا میتونن جای داشبورد بهینهسازی رو روی نمودار تغییر بدن یا از تنظیمات DISPLAY کلاً مخفیش کنن.
اگه جای داشبورد روی None تنظیم بشه، دیگه روی نمودار دیده نمیشه و بهینهساز هم غیرفعال میشه.