بکتست بدون نگاه به آینده یعنی هر معامله فقط با دادهای بازسازی شود که پیش از لحظه تصمیم و اجرای آن در دسترس بوده است. برای ساخت چنین تستی، ابتدا داده را تا زمان شکلگیری سیگنال قفل کنید، سپس دقیقاً مشخص کنید ورود در کلوز همان کندل انجام میشود یا در ابتدای کندل بعد. پس از آن، اسپرد، اسلیپیج، نوع سفارش و محدودیتهای اجرا را در هر رکورد وارد کنید. اگر حد ضرر و حد سود در یک کندل لمس شدند، ترتیب برخورد را با قاعدهای ثابت تعیین کنید. در پایان، همین قوانین را بدون تغییر روی فوروارد تست اجرا و نرخ برد، میانگین R، بیشترین افت سرمایه و معاملات مشکوک را جداگانه ثبت کنید.
مسئله اصلی در این فرایند، پیدا کردن یک نتیجه زیبا نیست؛ مسئله این است که بدانید نتیجه چگونه ساخته شده و آیا معامله در همان لحظه واقعاً قابل اجرا بوده است یا نه. این تفاوت برای پراپتریدر مهم است، چون استراتژی باید علاوه بر داشتن سیگنال، با هزینه اجرا، محدودیت سفارش و قواعد ریسک نیز سازگار باشد.
تعریف عملی نگاه به آینده و نشت اطلاعات
نگاه به آینده زمانی رخ میدهد که منطق بکتست، مستقیم یا غیرمستقیم، از اطلاعاتی استفاده کند که هنگام تصمیمگیری هنوز کامل یا قابل مشاهده نبوده است. نمونه روشن آن، استفاده از بالاترین یا پایینترین قیمت یک کندل پیش از بستهشدن آن است. در چنین حالتی، تست ممکن است نقطه ورود را طوری ثبت کند که معاملهگر در زمان واقعی نمیتوانسته همان اطلاعات را بداند.
نشت اطلاعات فقط به یک اندیکاتور محدود نیست. زمان محاسبه سیگنال، داده مورد استفاده، زمان ارسال سفارش، قیمت فرضی، هزینه اجرا و نتیجه معامله همگی باید با هم سازگار باشند. اگر سیگنال در پایان یک کندل تعریف شده باشد اما ورود با بهترین قیمت همان کندل ثبت شود، زمان مشاهده و زمان اجرا با یکدیگر مخلوط شدهاند.
آزمون سهسؤالی برای تشخیص آلودگی
- در لحظه ثبت سیگنال، آیا تمام دادههای استفادهشده واقعاً کامل و قابل مشاهده بودند؟
- آیا قیمت ثبتشده برای ورود، با نوع سفارش و زمان ارسال سفارش سازگار است؟
- آیا اگر کندل بعدی، اسپرد یا اسلیپیج متفاوتی داشت، قانون اجرا همچنان ثابت میماند؟
اگر پاسخ یکی از این پرسشها مبهم است، معامله باید در فهرست معاملات مشکوک قرار بگیرد؛ نه اینکه صرفاً بر اساس نتیجه نهایی پذیرفته یا حذف شود.
پروتکل پنجمرحلهای بکتست بدون نگاه به آینده
مرحله اول: قفلکردن داده تا زمان سیگنال
برای هر معامله یک زمان دقیق برای شکلگیری سیگنال تعیین کنید. سپس فقط کندلها، قیمتها و دادههایی را مجاز بدانید که تا همان زمان کامل شدهاند. اگر استراتژی از کلوز، سقف، کف یا اندیکاتوری استفاده میکند که به بستهشدن کندل وابسته است، زمان کاملشدن آن را بخشی از قانون بنویسید.
در این مرحله، از بازنویسی دستی داده پس از مشاهده نتیجه معامله خودداری کنید. اگر تعریف سیگنال تغییر کرد، نسخه جدید قانون باید جداگانه ثبت شود تا نتایج دو تعریف با یکدیگر مخلوط نشوند.
مرحله دوم: تفکیک سیگنال، سفارش و اجرا
سیگنال، سفارش و اجرا سه رویداد متفاوتاند. سیگنال میگوید شرایط ورود ایجاد شده است؛ سفارش مشخص میکند با چه نوع دستوری اقدام میکنید؛ اجرا نشان میدهد سفارش در چه قیمتی و با چه هزینهای انجام شده است.
| فیلد کنترلی | پرسش ثبتشونده | خطای رایج |
|---|---|---|
| زمان سیگنال | شرایط ورود دقیقاً چه زمانی کامل شد؟ | استفاده از اطلاعات کندل بعد |
| داده مجاز | در آن لحظه کدام قیمت و کدام کندل قابل مشاهده بود؟ | استفاده از سقف یا کف نهایی کندل باز |
| زمان ارسال سفارش | سفارش بلافاصله ارسال شد یا با تأخیر؟ | ثبت ورود بدون فاصله زمانی |
| قیمت فرضی | قیمت ورود بر اساس نوع سفارش چگونه تعیین شد؟ | فرض پرشدن در قیمت مطلوب بدون قاعده |
| هزینه اجرا | اسپرد و اسلیپیج چگونه وارد شدند؟ | نادیدهگرفتن هزینه در معاملات کوتاهمدت |
استفاده از قیمت بستهشدن برای ورود ذاتاً مجاز یا غیرمجاز نیست؛ اعتبار آن به قانون اجرا بستگی دارد. اگر سیگنال پس از بستهشدن کندل تأیید میشود، باید مشخص کنید سفارش در همان کلوز فرض شده یا در قیمت قابل دسترس پس از آن. این دو فرض نباید در یک تست با هم ترکیب شوند.
مرحله سوم: شبیهسازی اسپرد و اسلیپیج
قیمت نمودار لزوماً همان قیمتی نیست که سفارش با آن اجرا میشود. برای هر معامله، اسپرد و اسلیپیج را با یک روش ثابت در رکورد نگه دارید. روش انتخابی باید با بازار، نوع سفارش و سبک اجرای استراتژی سازگار باشد؛ برای نمونه، نحوه ثبت هزینه در XAU/USD، EUR/USD و BTC/USD ممکن است یکسان فرض نشود.
اگر داده کافی برای بازسازی دقیق هزینه در یک معامله وجود ندارد، آن رکورد را علامتگذاری کنید. حذف هزینههای نامشخص یا جایگزینکردن آن با بهترین حالت، بکتست را قابلاعتمادتر نمیکند. راهنمای سنجش اسپرد و اسلیپیج در اجرای استراتژی میتواند برای طراحی ستونهای هزینه در ژورنال استفاده شود.
مرحله چهارم: تعیین ترتیب برخورد حد ضرر و حد سود
در دادههای کندلی ممکن است در یک بازه، هم سطح حد ضرر و هم سطح حد سود لمس شوند؛ اما ترتیب درون کندل مشخص نباشد. پیش از اجرای تست باید قاعدهای ثابت انتخاب کنید. این قاعده میتواند بر اساس داده ریزتر، ترتیب زمانی قابل مشاهده یا یک فرض محافظهکارانه باشد؛ نکته اصلی این است که برای معاملات مشابه تغییر نکند.
اگر ترتیب واقعی از داده موجود قابل تشخیص نیست، رکورد را با برچسب ابهام نگه دارید و اثر هر فرض را جداگانه بسنجید. نتیجهای که فقط با انتخاب مطلوبتر به دست میآید، نباید بهعنوان خروجی قطعی استراتژی گزارش شود.
مرحله پنجم: بازتولید روی فوروارد تست
پس از نهاییشدن قوانین، تعریف سیگنال، زمان اجرا، هزینهها و ترتیب برخورد را تغییر ندهید. فوروارد تست باید ادامه همان پروتکل باشد، نه فرصتی برای اصلاح قانون پس از مشاهده چند معامله. هر تفاوت میان اجرای تاریخی و اجرای جاری را در یک ستون جدا ثبت کنید تا خطای استراتژی از خطای اجرا قابل تفکیک باشد.
مثال سناریویی: ابهام یک کندل در XAU/USD
فرض کنید در XAU/USD یک سیگنال پس از بستهشدن کندل شکل میگیرد و استراتژی برای معامله، حد ضرر و حد سود از پیش تعیینشده دارد. در کندل بعدی، مسیر قیمت بهگونهای است که هر دو سطح لمس میشوند، اما داده موجود فقط سقف، کف، بازشدن و بستهشدن را نشان میدهد و ترتیب لمس روشن نیست.
- زمان سیگنال را پایان کندل تأییدکننده ثبت کنید، نه زمانی که نتیجه معامله معلوم شده است.
- نوع ورود را مشخص کنید: ورود بر مبنای کلوز تأییدشده یا ورود در ابتدای کندل بعد.
- قیمت فرضی را بر اساس همان نوع ورود و با درنظرگرفتن اسپرد ثبت کنید.
- برای کندل مبهم، قاعده از پیشتعیینشده ترتیب حد ضرر و حد سود را اعمال کنید.
- معامله را با برچسب «نیازمند بررسی ترتیب درون کندل» در گزارش نگه دارید.
در این مثال، انتخاب نتیجه برنده فقط به دلیل لمسشدن حد سود، یا انتخاب نتیجه بازنده فقط به دلیل محافظهکاری، کافی نیست. باید قاعدهای داشته باشید که اگر همین وضعیت در EUR/USD یا BTC/USD نیز تکرار شد، بدون دخالت سلیقهای قابل اجرا باشد.
جدول کنترل نشت اطلاعات برای هر معامله
قالب زیر را میتوان برای بررسی دستی یا ثبت در ژورنال استفاده کرد. هدف آن ساختن زنجیرهای قابل ردیابی از اطلاعات تا نتیجه است.
| بخش | مقدار مورد ثبت | وضعیت کنترل |
|---|---|---|
| بازار و تایمفریم | نماد، بازه زمانی و منبع داده | داده یکسان و بدون ترکیب ناهمگون |
| زمان سیگنال | لحظهای که همه شرایط ورود کامل شد | پیش از مشاهده نتیجه |
| داده مجاز | کندلها و مقادیر قابل مشاهده تا زمان سیگنال | بدون استفاده از کندل آینده |
| زمان ارسال سفارش | لحظه فرضی یا واقعی ارسال | سازگار با قانون استراتژی |
| قیمت فرضی | قیمت ورود و خروج طبق نوع سفارش | همراه با اسپرد و اسلیپیج |
| قواعد خروج | حد ضرر، حد سود و ترتیب برخورد | قاعده ثابت و ثبتشده |
| وضعیت رکورد | عادی، ناقص یا مشکوک | معاملات مشکوک جداگانه گزارش شوند |
روش بکتست قابل بازتولید برای پراپتریدر
قوانین را پیش از دیدن نتیجه بنویسید
قانون باید بهقدری دقیق باشد که دو نفر با داده یکسان، به تصمیمهای متفاوت نرسند. تعریف ورود، خروج، حد ضرر، حد سود، نوع سفارش، زمان فعالشدن سیگنال و نحوه محاسبه هزینهها را پیش از مرور نتایج نهایی ثبت کنید.
برای پراپتریدر، فقط سود و زیان مهم نیست. خروجی باید نشان دهد استراتژی تحت محدودیتهای اجرای واقعی چه رفتاری دارد. بنابراین رکورد هر معامله باید امکان محاسبه نرخ برد، میانگین R، بیشترین افت سرمایه و فهرست معاملات مشکوک را فراهم کند. این معیارها جایگزین قضاوت درباره کیفیت داده نیستند؛ ابزارهایی برای مقایسه نسخههای مختلف همان قانوناند.
نمادها و هزینه اجرا را جداگانه بررسی کنید
اجرای یک منطق روی XAU/USD، EUR/USD و BTC/USD به معنی یکسانبودن کیفیت تست در هر سه بازار نیست. مشخصات داده، فاصله قیمت خرید و فروش، نوع سفارش و امکان ثبت اسلیپیج را برای هر نماد در یک رکورد جدا نگه دارید. اگر قوانین استراتژی یا فرض هزینه برای یک بازار تغییر میکند، خروجی آن بازار را با بازار دیگر ادغام نکنید.
برای جلوگیری از اشتباه در مرحله اجرا، میتوانید از مقایسه انواع سفارش Market، Limit و Stop استفاده کنید و سپس همان نوع سفارش را در بکتست و فوروارد تست حفظ کنید.
نمونه خارج از دوره ساخت قانون
پس از تثبیت قواعد، بخشی از داده را که در تدوین یا اصلاح قانون دخالت نداشته است جداگانه بررسی کنید. این تفکیک کمک میکند نتیجه ناشی از آزمون روی داده مورد استفاده برای طراحی قانون با عملکرد روی داده جدید اشتباه نشود. برای این بخش، اعتبارسنجی استراتژی با دادههای خارج از نمونه چارچوب مکملی ارائه میدهد.
اشتباهات رایج در بکتست و اصلاح آنها
- ورود در بهترین قیمت تاریخی: قیمت ورود را بر اساس نوع سفارش و زمان واقعی فرضشده ثبت کنید، نه مناسبترین نقطه روی نمودار.
- استفاده از کندل کامل برای سیگنال میاندوره: اگر کندل هنوز بسته نشده، سقف و کف نهایی آن اطلاعات آینده محسوب میشوند.
- افزودن هزینهها در پایان: هزینه اجرا باید در رکورد هر معامله و مطابق با منطق همان بازار ثبت شود.
- انتخاب دستی برنده یا بازنده در کندل مبهم: قاعده ترتیب برخورد را از قبل بنویسید و موارد مبهم را علامتگذاری کنید.
- تغییر قانون در فوروارد تست: اختلاف عملکرد را ثبت کنید؛ قانون را فقط برای بهبود ظاهر نتیجه تغییر ندهید.
- ادغام رکوردهای ناقص با داده سالم: معاملات ناقص را جدا نگه دارید تا کیفیت نمونه پنهان نشود.
چکلیست پیش از اعتماد به خروجی
- آیا زمان شکلگیری سیگنال برای هر معامله ثبت شده است؟
- آیا داده استفادهشده تا همان زمان محدود شده است؟
- آیا ورود در کلوز و ورود در ابتدای کندل بعد از هم تفکیک شدهاند؟
- آیا نوع سفارش، زمان ارسال و قیمت فرضی مشخص است؟
- آیا اسپرد و اسلیپیج در رکورد معامله آمدهاند؟
- آیا برای لمس همزمان حد ضرر و حد سود، قاعده ثابت دارید؟
- آیا معاملات مشکوک و ناقص جداگانه فهرست شدهاند؟
- آیا فوروارد تست دقیقاً با همان قوانین بکتست اجرا میشود؟
- آیا نرخ برد، میانگین R، بیشترین افت سرمایه و موارد مشکوک گزارش شدهاند؟
سؤالات متداول
چگونه بفهمم بکتست من دچار نگاه به آینده شده است؟
زمان سیگنال را با تمام دادههای استفادهشده مقایسه کنید. اگر بخشی از کندل آینده، قیمت نهایی یا نتیجه خروج در تصمیم ورود دخالت داشته باشد، رکورد آلوده است و باید بازتعریف یا جداگانه بررسی شود.
آیا استفاده از قیمت بستهشدن کندل برای ورود مجاز است؟
بله، فقط زمانی که قانون دقیقاً مشخص کند سیگنال پس از بستهشدن کندل شکل میگیرد و ورود با همان کلوز یا قیمت بعدی چگونه شبیهسازی میشود. ثبت بهترین قیمت بدون تعریف زمان اجرا معتبر نیست.
اسپرد و اسلیپیج را در بکتست چگونه وارد کنم؟
برای هر معامله و بر اساس نماد، نوع سفارش و فرض اجرای انتخابشده ثبت کنید. اگر هزینه یک رکورد مشخص نیست، آن معامله را با برچسب ابهام نگه دارید و از پنهانکردن آن در آمار نهایی خودداری کنید.
اگر حد ضرر و حد سود در یک کندل لمس شوند، کدامیک باید اول ثبت شود؟
فقط بر اساس قاعدهای که پیش از تست تعیین کردهاید؛ مانند استفاده از داده ریزتر یا فرض محافظهکارانه. این قاعده باید برای تمام موارد مشابه ثابت بماند.
چگونه دادههای بکتست را برای فوروارد تست آماده کنم؟
تعریف سیگنال، زمان اجرا، نوع سفارش، هزینهها و قواعد خروج را قفل کنید، سپس همان قالب ثبت معامله را در فوروارد تست به کار ببرید. هر اختلاف اجرایی را جداگانه ثبت کنید.
جمعبندی
بکتست معتبر از نتیجه مطلوب شروع نمیشود؛ از کنترل اطلاعات و اجرای قابل ردیابی شروع میشود. با قفلکردن داده تا زمان سیگنال، تفکیک سیگنال از سفارش، ثبت اسپرد و اسلیپیج، تعیین ترتیب برخورد سطوح و اجرای همان پروتکل در فوروارد تست، میتوانید بفهمید نتیجه استراتژی تا چه اندازه به شرایط قابلاجرا نزدیک است. برای تحلیل شکنندگی خروجی نیز میتوانید آزمون مونتکارلو برای بکتست استراتژی را بهعنوان مرحله مکمل بررسی کنید.
دیدگاه عملی نوا پراپ این است که هر معامله باید مانند یک پرونده قابل بازبینی ثبت شود: چه چیزی دیده شد، چه زمانی دیده شد، چه سفارشی ارسال شد، با چه هزینهای اجرا شد و کدام فرض به نتیجه منجر شد. چنین ساختاری بهجای اتکا به ظاهر نمودار، کیفیت فرایند اعتبارسنجی را قابل سنجش میکند.