بکتست یعنی قوانین یک روش معاملاتی را روی گذشته بازار اجرا کنیم و نتیجه را ثبت کنیم. مثلاً بررسی کنیم اگر سه ماه قبل دقیقاً با همین قانون وارد معامله میشدیم، چه تعداد سود و زیان داشتیم و هزینهها چقدر از نتیجه کم میکردند. برای شروع، به ربات یا برنامهنویسی احتیاج ندارید؛ یک نمودار تاریخی، قوانین روشن و برگه ثبت نتیجه کافی است.
بک تست Backtesting چیست و چه چیزی به ما میگوید؟
فرض کنید قانونی دارید: «وقتی این شرایط ایجاد شد، میخرم؛ اگر قیمت به این نقطه رسید، خارج میشوم.» بکتست بررسی میکند این قانون در یک دوره مشخص از گذشته چگونه عمل کرده است. در تست دستی، خودتان نمودار را قدمبهقدم جلو میبرید و تصمیمهای فرضی را ثبت میکنید. در تست خودکار، نرمافزار قوانین نوشتهشده در کد را اجرا میکند.
خروجی خوب فقط یک عدد سود نیست. باید بفهمید روش چند فرصت ساخته، چند زیان پشتسرهم داشته، افت حساب چقدر بوده و آیا با احتساب هزینه هنوز نتیجه مثبتی داشته است. این بررسی ممکن است نشان دهد یک ایده جذاب، در عمل ارزش ادامهدادن ندارد؛ همین نتیجه هم مفید است، چون بدون بهخطرانداختن پول واقعی به دست آمده است.
تفاوت بک تست دستی، خودکار و فوروارد تست
در این درس، منظور از فوروارد تست زنده، تمرین با دادههایی است که از این به بعد میرسند. گزینه Forward در تستر متاتریدر میتواند یک بخش جدا از دادههای تاریخی را آزمایش کند؛ بنابراین هر چیزی که اسم Forward دارد الزاماً تمرین زنده نیست. برای اجرای اکسپرت، راهنمای جداگانه بک تست در متاتریدر ۴ و ۵ را ببینید.
قبل از بک تست گرفتن چه چیزهایی آماده کنیم؟
چهار چیز را از ابتدا بنویسید: نماد و منبع داده، تایمفریم، بازه زمانی و نسخه قوانین. مثلاً «EUR/USD، نمودار یکساعته از یک منبع مشخص، یک بازه ششماهه، نسخه یک». تاریخها را پیش از دیدن نتیجه انتخاب کنید؛ انتخاب فقط هفتههای خوشنتیجه، تصویر قابل اعتمادی نمیسازد.
منطقه زمانی نمودار و ساعت مجاز معامله را هم مشخص کنید. ساعت بروکر و تغییر ساعت تابستانی ممکن است باعث شود یک قانون ساعتی روی دو نمودار، فرصتهای متفاوتی تولید کند. کندلهای ناقص، شکافهای داده و تفاوت قیمت منابع را یادداشت کنید. اگر داده کافی ندارید، محدودیت را در گزارش بنویسید؛ جای خالی داده را با حدس پر نکنید.
قانون قابل تست چه شکلی است؟
«هر وقت بازار خوب بود خرید میکنم» قابل تکرار نیست. باید معلوم باشد کدام کندل بررسی میشود، شرط ورود چیست، سفارش چه زمانی اجرا میشود، حد ضرر و هدف کجا هستند و چه زمانی معامله نمیکنید. اگر دو نفر همان قوانین و داده را ببینند، بهتر است تا حد ممکن به تصمیم یکسان برسند.
برای تمرین روش ثبت، میتوانید یک قانون ساده و کاملاً فرضی بنویسید: اگر کندل یکساعته بسته شد و قیمت پایانش بالاتر از بیشترین قیمت کندل قبلی بود، خرید را در شروع کندل بعد بررسی میکنیم؛ استاپ ثابت ۲۰ پیپ، هدف ۴۰ پیپ، فقط یک معامله باز و خروج زمانی پس از ۱۰ کندل. این قانون توصیه یا استراتژی تأییدشده نیست؛ فقط کمک میکند مراحل آزمایش مبهم نباشند. محدودیت ساعت و نحوه اجرای قیمت را هم پیش از شروع ثبت کنید.
آموزش بک تست دستی استراتژی؛ قدمبهقدم
۱. بخشی از داده را برای آزمون نهایی کنار بگذارید
یک قسمت از تاریخ را برای ساخت و اصلاح قوانین استفاده کنید و قسمت جدیدتر را دستنخورده نگه دارید. مثلاً از یک بازه ششماهه، چهار ماه اول برای توسعه و دو ماه آخر برای آزمون نهایی باشد. این تقسیم صرفاً مثال است؛ طول مناسب به تعداد فرصتها و شرایط بازار بستگی دارد. بخش نهایی نباید در انتخاب تنظیمات نقش داشته باشد.
۲. کندلهای آینده را پنهان کنید
نمودار را از تاریخ شروع باز کنید. ابزار بازپخش کندل، اگر در نرمافزار و حساب شما در دسترس باشد، کمک میکند آینده دیده نشود. تنها عقببردن نمودار کافی نیست اگر هنوز کندلهای بعدی جلوی چشم باشند. هنگام بررسی چند تایمفریم نیز از اطلاعات کندلی استفاده کنید که در آن لحظه واقعاً بسته شده بود، نه شکل نهایی کندل آینده.
۳. تصمیم را قبل از جلو بردن نمودار ثبت کنید
به محض کاملشدن شرط، زمان، جهت، قیمت ورود فرضی، استاپ، هدف و دلیل ورود را بنویسید و تصویر بگیرید. اگر سیگنال با پایان کندل مشخص میشود، نمیتوانید بدون یک فرض اجرایی قابل دفاع، ورود را به ابتدای همان کندل برگردانید. شروع کندل بعد هم ممکن است با فاصله قیمت همراه باشد؛ قیمت دلخواه را جایگزین قیمت قابل اجرا نکنید.
۴. نتیجه را با همان قوانین دنبال کنید
کندلها را یکییکی جلو ببرید تا شرط خروج اتفاق بیفتد. پس از دیدن حرکت قیمت، هدف را عقبوجلو نکنید و زیان را از گزارش حذف نکنید. فرصتهایی که طبق قوانین رد شدهاند نیز با دلیل کوتاه ثبت شوند. اگر شرط ورود را فراموش کردهاید، مورد را بهعنوان خطای اجرا علامت بزنید؛ آن را مخفیانه به یک تصمیم صحیح تبدیل نکنید.
۵. هزینه و نتیجه خالص را اضافه کنید
اسپرد فاصله قیمت خرید و فروش است؛ کمیسیون کارمزد معامله و اسلیپیج اختلاف قیمت مورد انتظار با قیمت اجراست. برای نگهداری شبانه، سواپ یا هزینه جایگزین هم میتواند مطرح باشد. اگر ورود و خروج را با قیمتهای واقعی Bid و Ask حساب کردهاید، اسپرد را دوباره از سود کم نکنید. قیمتهای صرفاً نموداری ممکن است این هزینه را نشان ندهند.

مسیر تمرین بکتست دستی؛ ابتدا تصمیم را ثبت کنید، سپس نمودار را جلو ببرید.
مثال عددی بک تست؛ سود روی نمودار با سود خالص فرق دارد
فرض کنید حساب فرضی دلاری است و EUR/USD را با حجم ۰٫۰۱ لات معامله میکنیم. هر لات استاندارد این جفتارز ۱۰۰ هزار یورو است؛ پس ۰٫۰۱ لات یعنی هزار یورو. در این مثال هر پیپ ۰٫۰۰۰۱ است و ارزش هر پیپ برای این حجم برابر است با هزار ضربدر ۰٫۰۰۰۱، یعنی ۰٫۱۰ دلار.
فاصله استاپ ۲۰ پیپ است؛ بنابراین زیان حرکتی تا استاپ، بدون هزینه و لغزش، ۲۰ ضربدر ۰٫۱۰ یعنی ۲ دلار میشود. هدف ۴۰ پیپی هم ۴ دلار سود ناخالص دارد. این ۲ دلار را واحد مقایسه یا ۱R مینامیم؛ بنابراین برد ناخالص +۲R و باخت ناخالص −۱R است. برای روشنماندن محاسبه، در تمام نمونه حجم و همین ریسک پایه ثابت میمانند.
حالا فرض کنیم در ۱۰ معامله، چهار برد و شش باخت ثبت کردهایم. چهار برد، ۱۶ دلار سود و شش باخت، ۱۲ دلار زیان ساختهاند؛ حاصل پیش از هزینه ۴ دلار است. اگر مجموع هزینه فرضی هر معامله ۰٫۲۰ دلار باشد، هزینه ده معامله ۲ دلار و سود خالص فقط ۲ دلار میشود. این ارقام داده واقعی یک استراتژی نیستند.
اگر هزینه هر معامله بهجای ۰٫۲۰ دلار، ۰٫۵۰ دلار باشد، کل هزینه ۵ دلار و نتیجه خالص یک دلار زیان میشود. پس یک روش با نتیجه ظاهراً مثبت میتواند پس از هزینه منفی شود. در تست واقعی، هزینهها لزوماً ثابت نیستند؛ سناریوی هزینه معمول و هزینه بدتر را جداگانه بررسی کنید و فرض هر دو را بنویسید.

سود پیش از هزینه ۴ دلار و سود خالص پس از هزینه ۲ دلار است.
اگر حد سود و حد ضرر در یک کندل لمس شوند چه کنیم؟
از روی یک کندل معمولی فقط قیمت شروع، بیشترین، کمترین و پایان را میدانیم؛ ترتیب رسیدن قیمت به همه نقاط مشخص نیست. اگر هم هدف و هم استاپ داخل دامنه آن باشند، نمیتوانید صرفاً به نفع معامله فرض کنید اول هدف لمس شده است. برای حل دقیقتر، داده ریزتر معتبر یا تیک لازم است؛ حتی آن هم باید با سمت قیمت اجرای سفارش تطبیق داده شود.
در فایل ثبت بک تست چه بنویسیم و نتیجه را چطور بخوانیم؟
برای هر معامله، تاریخ و ساعت، نماد، تایمفریم، نسخه قوانین، جهت، ورود و خروج، استاپ و هدف، حجم، هزینه، نتیجه خالص، دلیل خروج و نشانی تصویر را ثبت کنید. کنار آن، وضعیت «طبق قانون»، «خطای اجرا» یا «مبهم» بگذارید. فایل CSV همراه این درس، سرستونهای شروع ثبت را دارد و گزارش واقعی یا محاسبهگر خودکار نیست.
در پایان، تعداد معاملات و نرخ برد را حساب کنید: تعداد بردها تقسیم بر کل معاملات، ضربدر صد. در نمونه ما ۴۰ درصد است. میانگین نتیجه خالص هم دو دلار تقسیم بر ده، یعنی ۰٫۲۰ دلار در هر معامله میشود. این میانگین تاریخی است و پیشبینی درآمد نیست. نتیجه را برای خرید و فروش یا دورههای مختلف هم جدا ببینید تا ضعف یک بخش پشت جمع کل پنهان نشود.
دنباله معاملات را نیز حفظ کنید. بیشترین افت از یک اوج حساب تا کف بعدی، دراوداون نام دارد؛ برای نمونه افت از ۱۰۰ به ۹۰ دلار، ده درصد است. فقط نتایج بستهشده، افت شناور داخل معاملات را نشان نمیدهند. تعداد زیانهای متوالی، وابستگی سود به چند معامله استثنایی و تغییر نتیجه با هزینه بیشتر را هم بررسی کنید.
چند معامله یا چند ماه بک تست کافی است؟
عدد جادویی و یکسانی برای همه روشها وجود ندارد. ده معامله این مقاله فقط برای یادگیری حساب است. صد معامله نزدیک به هم در یک شرایط مشابه هم لزوماً اعتبار کافی نمیسازد. روش کممعامله ممکن است برای جمعآوری فرصت، به تاریخ طولانیتری نیاز داشته باشد. هم تعداد فرصت و هم تنوع دورههای آرام، پرنوسان، روندی و خنثی اهمیت دارند.
آزمون نهایی را پس از ثابتکردن قوانین اجرا کنید. اگر بعد از دیدن نتیجه آن، قانون را عوض کنید، دیگر آن بخش دستنخورده نیست و به داده تازه برای ارزیابی نیاز دارید. ثبت همه نسخهها و تغییرها کمک میکند بفهمید نتیجه خوب پس از چند بار تلاش به دست آمده؛ صرفاً بهترین خروجی را انتخاب نکنید.
اشتباههایی که بک تست را غیرواقعی میکنند
دیدن آینده نمودار، انتخاب بهترین ماهها، حذف باختها و تغییر استاپ بعد از مشاهده نتیجه، مهمترین خطاهای تست دستیاند. اندیکاتوری هم که علامتهای گذشتهاش بعداً تغییر میکنند، ممکن است چیزی را نشان دهد که هنگام تصمیم در دسترس نبوده است. نتیجه را با اطلاعات همان لحظه بسنجید، نه نموداری که بعداً کامل شده است.
بیشبرازش یا Overfitting یعنی قوانین را آنقدر دستکاری کنیم که به گذشته خاصی بچسبند. مثلاً بعد از هر باخت یک استثنا اضافه کنیم تا گزارش زیبا شود. این کار ممکن است بهجای کشف یک رفتار تکرارپذیر، اتفاقات گذشته را حفظ کند. نسخه ساده، آزمون دستنخورده و بررسی حساسیت نتیجه به هزینه و تنظیمات، مانعهای مفیدی در برابر این خطا هستند.
تمرین پایان درس: اولین گزارش قابل بررسی را بسازید
یک نماد و یک تایمفریم انتخاب کنید؛ قانون ورود، خروج و هزینه را بنویسید و نسخهگذاری کنید. یک بخش تاریخ را برای ارزیابی نهایی کنار بگذارید. بدون دیدن آینده، چند فرصت نخست را صرفاً برای یادگیری ثبت تمرین کنید؛ سپس تست اصلی را با قواعد ثابت ادامه دهید. گزارش باید شامل داده، فرض اجرا، تعداد معاملات، نتیجه خالص و محدودیتها باشد؛ نه فقط تصویری از یک معامله موفق.
پرسشهای متداول درباره بک تست دستی
آیا بک تست رایگان و بدون ربات ممکن است؟
بله؛ اگر به داده تاریخی و روشی برای پنهانکردن آینده دسترسی دارید، ثبت دستی در یک برگه هم ممکن است. نرمافزار پولی شرط شروع نیست. دسترسی به بازپخش، عمق تاریخ و تایمفریمها به ابزار و نوع حساب بستگی دارد؛ قبل از انتخاب ابزار، محدودیت فعلی آن را بررسی کنید.
بک تست در اکسل انجام میشود؟
اکسل یا ابزار مشابه برای ثبت و محاسبه نتایج مناسب است. خودِ ثبت در اکسل، حرکت قیمت یا اجرای سفارش را شبیهسازی نمیکند؛ داده و تصمیمهای تست باید از روند بررسی نمودار یا یک موتور آزمایش معتبر بیایند.
نتیجه مثبت بک تست یعنی آماده حساب واقعی هستیم؟
خیر. ابتدا کیفیت داده، هزینه، معاملات مبهم و نتیجه بخش دستنخورده را بررسی کنید. سپس اجرای همان قواعد روی دادههای تازه در محیط آزمایشی، مشکلات اجرایی را روشنتر میکند. نتیجه مثبت گذشته، ریسک زیان آینده را حذف نمیکند و مجوز افزایش بیحساب حجم نیست.


