گفتید فرایند معامله کاغذیتان یکشبه از کار افتاد. پیش از تصمیم بعدی دوباره راهاندازیاش کردید، خطایی ندیدید و فرض کردید از همانجایی که مانده بود ادامه داده است. بعد برای داراییای که از قبل داشتید سفارش خرید ثبت کرد. میخواهید بدانید آیا راهبرد ایرادی دارد.
ممکن است داشته باشد. اما اول بررسی کنید آیا فرایندی که دوباره راهاندازی شده همان چیزهایی را میداند که حساب کاغذی میداند. راهاندازی مجدد مسئلهای در بازیابی وضعیت است: موقعیتها، نقدینگی، سفارشهای باز و هرگونه حافظه راهبردی که بر تصمیم بعدی اثر میگذارد، باید با هم سازگار باشند. دوباره بهکار انداختن کد بخش ساده ماجراست.
پیش از ازکارافتادن، راهبرد چه باوری داشت؟
آخرین تصمیمی را که فرایند پیش از توقف گرفت یادداشت کنید. برای هر ابزار معاملاتی، موقعیت موردنظر، موقعیت واقعی حساب، سفارشهای معوق و وضعیت سیگنالی را ثبت کنید که بر اقدام بعدی اثر میگذارد. اگر این سوابق را ندارید، نمیتوانید بفهمید راهاندازی مجدد وضعیت را بازیابی کرده یا فقط راهبردی تازه را مقداردهی اولیه کرده است.
فرض کنید راهبرد ساعتی شما وقتی سیگنال روند مثبت میشود 1 واحد میخرد و تا منفیشدن آن نگه میدارد. فرایند ساعت 14:00 سفارش خرید را ثبت میکند، اما پیش از ثبت پذیرش سفارش از کار میافتد. محل معامله کاغذی سفارش را اجرا میکند. هنگام راهاندازی مجدد، راهبرد هیچ موقعیت ثبتشدهای نمیبیند و سیگنال همچنان مثبت است؛ پس دوباره سفارش خرید میفرستد. سیگنال رفتاری سازگار دارد. حافظه راهبرد از داراییهای حساب کهنه است.
به همین دلیل، پیش از مجازکردن سفارشهای جدید باید موقعیت فعلی حساب را با وضعیت ذخیرهشده راهبرد تطبیق دهید. تصویر لحظهای محلی میتواند مفید باشد، اما مرجع نهایی برای آنچه واقعاً اجرا شده، حساب یا محل معامله است.
کدام وضعیتها باید پس از راهاندازی مجدد باقی بمانند؟
از وضعیتی شروع کنید که میتواند سفارش بعدی را تغییر دهد. برای هر بهروزرسانی، سابقهای پایدار همراه با برچسب زمانی و نسخه نگه دارید؛ پیش از تغییر منطق بازیابی، نسخهای کپی کنید تا بعداً بتوانید خرابی را بازپخش کنید.
| وضعیت | اهمیت | بررسی بازیابی |
|---|---|---|
| موقعیتها و نقدینگی | میزان در معرض ریسک بودن و قدرت خرید موجود را تعیین میکنند | مقادیر ذخیرهشده را با حساب کاغذی مقایسه کنید |
| سفارشهای باز | ممکن است سفارشی هنگام خاموشبودن فرایند اجرا شده باشد | وضعیت سفارش را استعلام کنید و اجراهای جزئی را تطبیق دهید |
| حافظه سیگنال | عبور از آستانه، دورههای توقف و مدت نگهداری ممکن است چند تصمیم را دربر بگیرند | آخرین ورودیهای تصمیم ثبتشده را بازیابی کنید |
| آخرین رویداد پردازششده | تعیین میکند راهبرد از کجا مصرف داده را از سر بگیرد | رویدادهای بعد از آن نقطه را بدون اعمال دوباره بازپخش کنید |
نادیدهگرفتن حافظه سیگنال آسان است. راهبردی که بر پایه تقاطع معامله میکند ممکن است مقدار اندیکاتور روز گذشته را ذخیره کند تا تقاطع تازهای را تشخیص دهد. اگر با مقداری خالی شروع کند، ممکن است وضعیت موجود را رویدادی تازه تلقی کند. زمانسنج دوره توقف هم همین مسئله را دارد: راهاندازی مجدد نباید بیسروصدا قاعدهای را که قرار بوده پایدار بماند بازنشانی کند.
چطور بازیابی را تکرارپذیر کنید؟
برای هر سفارش، شناسه مشتری پایداری بسازید که از اجرای راهبرد و تصمیمی که سفارش از آن آمده مشتق شده باشد. اگر فرایند پس از پایان مهلت زمانی دوباره تلاش کند، میتواند بررسی کند آیا آن تصمیم پیشتر سفارشی ایجاد کرده است یا نه، بهجای اینکه سفارش تکراری ثبت کند. تغییرات وضعیت را فقط پس از تأیید رویداد متناظر حساب ثبت کنید و شناسههای سفارش و اجرا را که دلیل تغییر را روشن میکنند نگه دارید.
سپس همان نقطهای را آزمایش کنید که باعث رخدادتان شد. راهبرد را تا یک تصمیم اجرا کنید، وضعیت را ذخیره کنید، متوقفش کنید و با موقعیتها و تاریخچه سفارش حساب کاغذی بازیابیاش کنید. تصمیم بعدی و سفارشهای حاصل را با اجرای بدون وقفه مقایسه کنید. این کار را با سفارش نیمهاجراشده و نیز با خرابی میان ارسال و تأیید دریافت سفارش تکرار کنید. اجرای ازسرگرفتهشده نباید موقعیت تازهای بسازد یا اقدامی کاملشده را تکرار کند.
گزارش بازیابی نگه دارید: آخرین رویداد پردازششده، زمان تصویر لحظهای حساب، وضعیت سفارشهای باز، نسخه بازیابیشده راهبرد و نخستین تصمیم پس از راهاندازی مجدد. این گزارش عبارت «دوباره بالا آمد» را به چیزی تبدیل میکند که بتوانید ممیزیاش کنید.
پس از راهاندازی مجدد به چه چیزی اعتماد کنید؟
فقط زمانی به فرایند اعتماد کنید که وضعیت حساب و راهبرد با هم تطبیق داشته باشند، وضعیت سفارشهای معلق مشخص باشد و تصمیم بعدی با تصمیمی که از اجرای پیوسته انتظار دارید مطابقت کند. اگر نمیتوانید اختلافی را توضیح دهید، ارسال سفارش کاغذی را متوقف کنید و رد رویدادها را بررسی کنید. فعالبودن فرایند ثابت نمیکند که راهبرد بازیابی شده است.
بخش مفید خرابی را همین حالا پیدا کردهاید: فرضی را آشکار کرد که اجرای عادی هرگز مجبور به روبهروشدن با آن نبود. راهاندازی مجدد را به سناریویی تکرارپذیر تبدیل کنید تا پیش از آنکه دوباره از راهبرد بخواهید معامله کند، بدانید چه چیزهایی در حافظه دارد.
← همهٔ مطالب


