این ربات معاملهگر (Expert Advisor) که بر پایه اندیکاتور سفارشی “کارپنکو” طراحی شده، یک سیستم معاملاتی مبتنی بر تقاطع دو خط سیگنال در تایمفریم چهار ساعته است. ربات با دریافت سیگنال از کندل مشخص (پیشفرض کندل اول)، زمانی که خط اصلی اندیکاتور خط سیگنال را به سمت بالا قطع کند، سیگنال خرید و در صورت قطع به سمت پایین، سیگنال فروش صادر میکند و بهطور همزمان پوزیشنهای مخالف را میبندد. این اکسپرت دارای قابلیتهای مدیریت سرمایه انعطافپذیر شامل محاسبه حجم لات بر اساس درصدی از بالانس، مارجین آزاد یا مقدار ثابت است و امکان تنظیم حد ضرر و حد سود بهصورت نقطهای را فراهم میکند. کاربر میتواند مجوز باز و بسته شدن پوزیشنهای خرید و فروش را بهطور مستقل فعال یا غیرفعال کند و سیستم با بررسی تشکیل کندلهای جدید، از معاملات تکراری جلوگیری مینماید.
شیوه فعالیت این ربات بر پایه تحلیل تقاطع دو خط در اندیکاتور سفارشی کارپنکو استوار است. در هر کندل جدید در تایمفریم تنظیمشده (پیشفرض چهار ساعته)، ربات دو بافر اطلاعاتی را از اندیکاتور دریافت میکند: بافر اول شامل خط اصلی اندیکاتور و بافر دوم شامل خط سیگنال است. سیستم با مقایسه موقعیت این دو خط در کندل قبلی و کندل جاری، سیگنالهای معاملاتی را تشخیص میدهد. به این صورت که اگر در کندل قبل، خط اصلی بالای خط سیگنال باشد و در کندل جاری به زیر آن نفوذ کند، سیگنال فروش فعال میشود و برعکس، عبور خط اصلی از زیر به بالای خط سیگنال، سیگنال خرید را ایجاد میکند. دریافت سیگنالها تنها در لحظه تشکیل کندل جدید انجام میشود تا از معاملات مکرر و ناخواسته جلوگیری گردد.
پس از شناسایی سیگنال، ربات وارد فاز اجرای معاملات میشود که شامل دو بخش بستن پوزیشنهای فعلی و باز کردن پوزیشنهای جدید است. هنگامی که سیگنال خرید صادر میشود، ربات ابتدا تمام پوزیشنهای فروش موجود روی نماد جاری را میبندد (در صورتی که مجوز بستن فروش توسط کاربر فعال باشد) و سپس یک پوزیشن خرید جدید با حجم محاسبهشده باز میکند. به همین ترتیب، سیگنال فروش نیز موجب بسته شدن پوزیشنهای خرید قبلی و باز شدن یک پوزیشن فروش تازه میشود. این فرآیند کاملاً خودکار و بدون دخالت کاربر انجام میپذیرد و کاربر میتواند از طریق پارامترهای ورودی، مجوز باز و بسته شدن هر نوع پوزیشن را بهطور مستقل کنترل کند.
بخش مدیریت سرمایه ربات، حجم معاملات را بر اساس یکی از پنج روش انتخابی توسط کاربر تعیین میکند. در روش “Fixed Lot”، حجم لات دقیقاً برابر با عدد واردشده در پارامتر MM است. چهار روش دیگر حجم را بهصورت داینامیک و بر اساس سرمایه حساب محاسبه میکنند: دو روش بر مبنای بالانس حساب و دو روش بر مبنای مارجین آزاد که عدد MM بهعنوان کسری از این مقادیر در نظر گرفته میشود. پس از محاسبه حجم اولیه، ربات آن را با محدودیتهای کارگزار (حداقل و حداکثر حجم مجاز و گام تغییرات لات) تطبیق داده و نرمالسازی میکند تا از رد شدن سفارشات جلوگیری شود. همچنین حد ضرر و حد سود بهصورت نقطهای و با احتساب انحراف مجاز قیمت (Deviation) در سفارشات اعمال میگردد.
عملکرد کلی ربات بر مبنای یک چرخه پیوسته در هر تیک قیمتی است که ابتدا از محاسبه کامل بافرهای اندیکاتور اطمینان حاصل کرده، سپس تاریخچه قیمتی را بارگذاری میکند و با بررسی تشکیل کندل جدید، سیگنالهای معاملاتی را بهروزرسانی مینماید. برای جلوگیری از خطاهای اجرایی، سیستم از متغیرهای استاتیک برای حفظ وضعیت سیگنالها در بین تیکها استفاده میکند و در صورت بروز هرگونه مشکل در کپی دادههای اندیکاتور، پرچم محاسبه مجدد (Recount) را فعال میسازد تا در تیک بعدی تلاش دوباره انجام شود. این مکانیزم اطمینانبخشی، همراه با امکان تنظیم پارامترهای کلیدی مانند دوره اندیکاتور، طول تاریخچه محاسباتی و شماره کندل سیگنالدهنده، ربات را به ابزاری منعطف و قابل شخصیسازی برای استراتژیهای معاملاتی مختلف تبدیل کرده است.

بررسی بک تست ربات Karpenko
بررسی ورودیها و حجم معاملات
گزارش نشان میدهد ربات در بازهی یکساله روی EURUSD با تایمفریم M1 و لوریج 1:400 تست شده و تعداد معاملات بسیار زیاد است: حدود 76 هزار معامله و بیش از 152 هزار ورود و خروج. این حجم بالا نشان میدهد استراتژی بسیار اسکالپمحور است و تقریباً در تمام ساعات شبانهروز فعال بوده. نمودارهای “Entries by hours/days/months” تأیید میکنند که ورودیها در تمام ساعتها پخش شدهاند، اما بیشترین فعالیت در ساعات همپوشانی سشنهای اروپا–آمریکا دیده میشود. این رفتار میتواند منجر به هزینههای اسپرد، اسلیپیج، و تأثیرات نویز بیشتر شود.


رفتار سود و زیان، و کیفیت مدیریت ریسک
نتایج نشان میدهد ربات دارای Profit Factor = 0.33 و Recovery Factor = -1 است که عملاً به معنی ناسازگاری استراتژی و ضعف مدیریت ریسک است. میزان Gross Profit = 48,455 USD اما Gross Loss = -148,426 USD است؛ یعنی زیانها سه برابر سودها هستند. نمودارهای MFE/MAE نیز نشان میدهند ربات معمولاً با رسیدن به بیشترین حرکت مطلوب (MFE) به سود کوچک بسنده کرده ولی در ضررها اجازه برگشت نداده و ضررها عمیق شدهاند. این مشخصهی کلاسیک استراتژیهایی است که حد ضرر را بزرگ میگذارند یا به ضرر اجازه گسترش میدهند.


افت سرمایه و پایداری بلندمدت
گزارش افت سرمایه نشان میدهد Equity Drawdown Absolute ≈ 99,971 USD یعنی تقریباً کل حساب از بین رفته است. شیب نمودار بالانس رو به پایین و تقریباً خطی است که به معنی این است که ربات هیچ مرحلهی ریکاوری نداشته و راندمان آن در بلندمدت منفی پایدار بوده. تعداد معاملات سودده فقط 16.65% بوده، در حالی که معاملات زیانده بیش از 83% را تشکیل میدهند. حتی با این تعداد زیاد معاملات، نتایج نشان میدهد استراتژی از نظر آماری هیچ مزیت (edge) قابل اتکا ندارد و Z‑Score بسیار پایین کیفیت تصادفی بودن نتایج را تأیید میکند.

نتیجهگیری کلی و پیشنهادها
خروجی تست نشان میدهد این نسخه از ربات از نظر مدیریت ریسک، ساختار ورودها، و منطق خروجها بهینه نیست و هیچ مزیت معاملاتی پایدار ندارد. نسبت سود به ضرر نامتعادل، میانگین ضرر بزرگتر از میانگین سود، و تعداد معاملات بسیار زیاد باعث شده هزینههای پنهان بازار نیز عملکرد را بدتر کنند. پیشنهاد میشود ربات را با تغییرات اساسی شامل: بازنگری کامل در حد سود/ضرر، محدود کردن زمانهای معاملاتی به ساعات نقدشوندگی بالا، کاهش تعداد سیگنالها، و استفاده از فیلترهای روند و نوسان مجدداً طراحی کنید. همچنین، تست روی چند دیتای مختلف و انجام بهینهسازی منعطف میتواند کمک کند عملکرد واقعیتر و پایدارتر ارزیابی شود.
تنظیمات ربات Karpenko
بخش اول: پارامترهای مدیریت سرمایه و ریسک (Money Management)
این بخش تعیین میکند که حجم هر معامله چگونه محاسبه شود و سطوح حد ضرر و حد سود در چه نقاطی قرار گیرند.
MM (Fraction of financial resources from deposit per deal): این پارامتر هسته اصلی محاسبه حجم معامله است. مقدار آن بسته به روش انتخابشده در MMMode، یا بهعنوان یک حجم ثابت لات (مثلاً 0.1 لات) تفسیر میشود یا بهعنوان کسری از سرمایه حساب.
مثال: اگر MMMode روی BALANCE و MM روی 0.01 تنظیم شود، ربات 1% از بالانس حساب را بهعنوان مارجین برای باز کردن معامله در نظر میگیرد.
MMMode (Method for determining the lot size): این پارامتر منطق تفسیر MM را مشخص میکند. یکی از پنج گزینه زیر است:
LOT(Fixed lot): مقدارMMمستقیماً بهعنوان حجم معامله (لات) استفاده میشود. سادهترین و پرکاربردترین روش.FREEMARGIN: حجم لات بر اساس کسری (MM) از مارجین آزاد (Free Margin) حساب محاسبه میشود.BALANCE: حجم لات بر اساس کسری (MM) از بالانس (Balance) حساب محاسبه میشود.LOSSFREEMARGINوLOSSBALANCE: این دو گزینه از نظر فرمول محاسباتی مشابه دو گزینه قبلی هستند و برای مدیریت سرمایه پیشرفتهتر یا استراتژیهای خاص در نظر گرفته شدهاند.

StopLoss_ (Stop Loss in points): فاصله نقطهای حد ضرر از قیمت ورود. اگر مقدار آن 1000 باشد، برای یک نماد 5 رقمی، حد ضرر 100 پیپ از قیمت ورود فاصله خواهد داشت. مقدار 0 به معنای عدم تنظیم حد ضرر است.
TakeProfit_ (Take Profit in points): فاصله نقطهای حد سود از قیمت ورود. عملکردی مشابه StopLoss_ دارد. مقدار 2000 برای یک نماد 5 رقمی معادل 200 پیپ است.
Deviation_ (Max. price deviation in points): حداکثر انحراف مجاز قیمت (لغزش یا Slippage) به هنگام اجرای سفارشات. اگر قیمت در لحظه ارسال سفارش به اندازه این مقدار تغییر کند، سرور کارگزار همچنان مجاز به اجرای معامله است.
بخش دوم: مجوزهای معاملاتی (Trading Permissions)
این بخش کنترل کاملی بر جهتگیری استراتژی به شما میدهد. با این چهار کلید میتوانید ربات را به یک سیستم فقط خرید، فقط فروش یا ترکیبی از هر دو با قوانین خروج دلخواه تبدیل کنید.
BuyPosOpen (Permission to enter long positions): اگر true باشد، ربات مجاز به باز کردن پوزیشنهای خرید (Long) بر اساس سیگنال دریافتی است. در غیر این صورت، سیگنالهای خرید نادیده گرفته میشوند.
SellPosOpen (Permission to enter short positions): کلید مجوز برای باز کردن پوزیشنهای فروش (Short). عملکردی مشابه پارامتر بالا دارد.
BuyPosClose (Permission to exit long positions): تعیین میکند که آیا سیگنال فروش (که سیگنال مخالف خرید است) باید پوزیشنهای خرید موجود را ببندد یا خیر. اگر false باشد، پوزیشن خرید تا رسیدن به حد ضرر یا سود باز میماند.
SellPosClose (Permission to exit short positions): مجوز بستن پوزیشنهای فروش با رسیدن سیگنال خرید. اگر false باشد، پوزیشن فروش حتی با سیگنال مخالف نیز بسته نخواهد شد.
بخش سوم: پارامترهای اندیکاتور و سیگنالیابی (Indicator & Signal Parameters)
این تنظیمات به هسته محاسباتی ربات مربوط میشوند و رفتار خطوط اندیکاتور و نحوه دریافت سیگنال از آنها را کنترل میکنند.
InpInd_Timeframe (Indicator timeframe): تایمفریم کندلهایی که اندیکاتور کارپنکو بر اساس آنها محاسبه میشود. نکته بسیار مهم این است که ربات میتواند روی یک تایمفریم (مثلاً نمودار 15 دقیقهای) اجرا شود، اما از سیگنالهای اندیکاتور در تایمفریم دیگری (مثلاً PERIOD_H4) استفاده کند. این قابلیت برای فیلتر کردن نویز و معامله در جهت روند بلندمدت کاربرد دارد.
Basic_MA (MA Period): دوره یا طول میانگین متحرک (Moving Average) اصلی که اساس محاسبات خطوط اندیکاتور کارپنکو را تشکیل میدهد. مقدار 144 یک تنظیم رایج برای شناسایی روند در تایمفریمهای بالاست.
History (History period – bars for calculation): تعداد کندلهای گذشته که اندیکاتور برای محاسبه مقادیر خود از آنها استفاده میکند. این پارامتر برای “گرم شدن” و پایداری محاسبات اندیکاتور ضروری است و مقدار 500 کندل دقت تاریخی خوبی را فراهم میکند.
SignalBar (Bar number for receiving the entry signal): شماره کندلی که سیگنال ورود از روی آن خوانده میشود. مقدار 1 به معنای آخرین کندل کاملشده (کندل بلافاصله قبل از کندل جاری) است. این پارامتر به تعیین تأخیر در ورود کمک میکند؛ مقدار 0 یعنی ورود بر اساس کندل در حال تشکیل (که میتواند سیگنالهای کاذب بدهد) و مقدار 2 یعنی ورود با یک کندل تأخیر که محافظهکارانهتر است.





