الکس — دو منحنی سرمایه و یک شکایت برایم فرستادی. شکست سقف 20روزه در بکتست تمیز به نظر میرسد. حساب آزمایشی که همان کد را روی همان نمادها اجرا میکند، حدود نصف موقعیتها را باز میکند و بعد در روزهایی حد ضرر میخورد که بکتست حتی پلک هم نزده است. پرسیدی نکند درگاه آزمایشیمان سفارشها را حذف میکند. اینطور نیست. کندلهای روزانهات دو نشست را به هم میچسبانند و حاصل را یک روز مینامند.
نماد میانسرمایهای را که علامت زده بودی از 22 اکتبر بررسی کردم. سقف روزانه فروشنده داده 41.86 دلار است. در ساعات رسمی هیچ معاملهای بالاتر از 41.12 دلار ثبت نشده. آن 41.86 دلار حاصل معاملهای 800 سهمی در 7:41 PM به وقت شرق آمریکا است که در بازاری با فاصله 22 سنتی بین خرید و فروش انجام شده. سیگنالت سقف تازه 20روزه را تشخیص داد و برای بازگشایی بعدی سفارش خرید گذاشت. نشست آزمایشی ما، که اگر تنظیمش را عوض نکنی از 9:30 تا 16:00 به وقت شرق آمریکا اجرا میشود، اصلاً شکست سقف را ندید. چیزی برای خرید وجود نداشت.
سقف درجشده در آن ردیف کدام است؟
در سهام آمریکا، «روزانه» راحتیای است که فروشنده داده فراهم میکند. برای یک تاریخ تقویمی ممکن است دستکم سه کندل متفاوت تحویل بگیری و بیشتر خروجیهای CSV هم نمیگویند کدام را گرفتهای.
| کندل | ساعت | سقف و کف از کجا میآیند | معامله در آن سقف چه معنایی داشت |
|---|---|---|---|
| ساعات رسمی | 9:30-16:00 به وقت شرق آمریکا، بهعلاوه دو حراج | دفتر سفارش پیوسته و معاملات تطبیقی آغاز و پایان | حضور در نشست رسمی، اغلب در حراج |
| تمدیدشده | تقریباً 4:00-9:30 و 16:00-20:00، بسته به کارگزار | معاملات کمحجم پیشگشایش و پس از ساعات رسمی | نشستی که ممکن است حساب نقدیتان اصلاً مجوز معامله در آن را نداشته باشد |
| ترکیبی | هرچه فروشنده داده به هم چسبانده باشد | ترکیبی از موارد بالا، گاهی با لاتهای فرد و معاملات TRF | معاملهای که شاید 80 سهم بوده، روی مظنهای با فاصله زیاد |
کریپتو به تو یاد داد نیمهشب UTC را شروع روز معاملاتی بدانی. سهام چنین الزامی ندارد. موتور تطبیقیای که از حساب نقدیِ صرفاً خرید میتوانی واقعاً به آن دسترسی داشته باشی، ششونیم ساعت تطبیق پیوسته و دو حراج دارد. باقی ساعات، معاملهگران دیگری، فاصله خرید و فروش دیگری و اغلب آخرین قیمت دیگری دارد.
هنوز پوشهای از فایلهای CSV یاهو از 2015 دارم؛ آن موقع مطمئن بودم روی یک شرکت کوچک زیستفناوری، راهبرد Donchian خوبی ساختهام. سقفها از معاملات پس از ساعات رسمی و در پی رویدادهای دوحالته آمده بودند. داشتم وحشت دیگران را روی معاملههای 200سهمی بکتست میکردم و اسمش را کانال گذاشته بودم. تو هم با خوراک داده پولی، نسخه آبرومندانهتری از همان کار را میکنی.
اگر عامل پژوهشیات از فروشنده داده OHLCV روزانه خواسته و نپرسیده کدام نشست، فرض کن داده ترکیبی است. عاملها سراغ پیشفرض راحت میروند. همین راحتی است که 7:41 PM را به دل شکست سقف میکشاند.
چرا حساب آزمایشی از هر دو جهت خراب به نظر میرسد
وقتی نشستِ فایل با نشستِ حساب جور درنیاید، فقط با شمارش کمتر مواجه نمیشوی. سه نوع اختلاف پیش میآید و هر سه را تجربه کردی.
- شکست سقف بر پایه سقف ساعات تمدیدشده. بکتست در بازگشایی رسمی بعدی وارد میشود. حساب آزمایشی اصلاً سیگنالی نداشته. این همان هشت ورودِ بهظاهر گمشده توست.
- حد ضرر زیر کف دیروز، در حالی که کف دیروز از کندل ترکیبی آمده است. بکتست پیشتر با یک سایه قیمت پس از ساعات رسمی خارج شده. حساب آزمایشی که فقط ساعات رسمی را قیمتگذاری میکند، تا روزی در موقعیت میماند که بکتست آن را بدون موقعیت نشان میدهد.
- حد ضرر برعکس: حساب آزمایشی قیمت آخر را با احتساب پیشگشایش ثبت میکند، معاملهای در 5:10 AM تو را خارج میکند و بکتست ساعات رسمی هنوز در موقعیت است، چون آن معامله در کندلش نیست.
ماجرای حد ضرر از شکست سقف ازدسترفته هم تلختر است. ورودهای ازدسترفته به شکل تعداد معامله کمتر دیده میشوند. حد ضررهایی که در بازاری با هفت نفر معاملهگر فعال میشوند، مبلغ متفاوتی را در معاملاتی ثبت میکنند که واقعاً گرفتهای؛ برای همین درگاه را مقصر دانستی.
در کندلهای 1دقیقهای، همین ایراد پنهانتر است. در America/New_York بر اساس نشست فیلتر کن. اگر فایل برچسب نشست نداشته باشد، این فیلتر فقط نمایش است.
پیش از تنظیم دوباره دوره بازنگری، نشست را تثبیت کن
سقف 20روزهات را دوباره با کندلهای روزانه ساعات رسمی، روی همان نمادها و همان تاریخها اجرا کردم. شش شکست سقف باقی میماند. این همان حساب آزمایشی است. هشت مورد دیگر به معاملهای مربوط میشد که باید در 7:41 PM و با 800 سهم انجامش میدادی. یک هفته را صرف برازش پارامتر لغزش قیمت حساب آزمایشی به اختلاف نشست نکن.
برای هر سری سهام، این سه مقدار بولی را در قرارداد پژوهش ثبت کن: includes_premarket، includes_afterhours، includes_odd_lots. بعد نشست مجاز راهبرد را انتخاب کن و مدل اجرای سفارش را هم در همان نشست قرار بده. اگر واقعاً ساعات تمدیدشده را میخواهی، صریح بگو و متناسب با 7:41 PM اندازه موقعیت بگیر: فاصله خرید و فروش بیشتر، لغو سفارش کندتر، دفتری که شبیه یک مظنه به نظر میرسد اما در واقع فقط یک لات دارد.
اگر فروشنده داده نتواند بگوید هر ردیف روزانه بر پایه کدام نشست است، تا وقتی پاسخ بدهد آن را ترکیبی فرض کن. کتبی از آنها بپرس. نمودار وب جواب نمیدهد. اگر بعداً تصمیم گرفتی راهبرد باید در قیمت پایانی معامله کند، آن موضوع نامه دیگری است: قیمت پایانی رسمی در حراج تعیین میشود و باید در آن شرکت کنی.
با نشست تثبیتشده دوباره اجرا کن. بعد میتوانیم درباره آن شش مورد حرف بزنیم.
← همهٔ مطالب


