این اکسپرت یک ربات اسکالپر مبتنی بر استراتژی بازگشت قیمت به میانگین متحرک (Mean Reversion) است. ایده اصلی این است که پس از یک حرکت قوی در جهت روند، قیمت برای لحظاتی به سمت میانگین متحرک کند (EMA 740) بازگردد، سپس با تأیید مجدد از سوی میانگین سریع (EMA 39)، استوکاستیک و ADX، دوباره در جهت روند اصلی حرکت کند. ربات سعی میکند دقیقاً در همان نقطه بازگشتِ تأییدشده، وارد معامله شود و از حرکت بعدی سود بگیرد. برای مدیریت شرایط نامطلوب نیز یک سیستم هجینگ هوشمند در نظر گرفته شده است.
اندیکاتورها و ابزارهای تحلیلی
ربات از چهار اندیکاتور اصلی برای تصمیمگیری استفاده میکند:
- دو میانگین متحرک نمایی (EMA): یک EMA سریع با دوره ۳۹ و یک EMA کند با دوره ۷۴۰. این دو نقش تعیین روند و شناسایی نقاط بازگشت را بر عهده دارند.
- استوکاستیک (Stochastic): با تنظیمات ثابت K=5، D=5 و Slowing=5 برای شناسایی نقاط خروج از اشباع خرید/فروش. سطوح آستانه ۲۰ (اشباع فروش) و ۸۰ (اشباع خرید) ملاک عمل هستند.
- شاخص حرکتی میانگین (ADX): با دوره ۱۴ برای فیلتر کردن بازارهای بیش از حد رونددار. اگر ADX بالای ۳۷ باشد، سیگنال صادر نمیشود تا از ورود در انتهای روندهای قوی جلوگیری شود.
- الگوی کندل استیک: رنگ کندل (سبز یا قرمز) برای تشخیص شکستهای صعودی و نزولی بررسی میشود.

فرآیند اسکن و تحلیل کندلها
در هر کندل جدید، اکسپرت ۱۰۰ کندل گذشته را از قدیمیترین به جدیدترین اسکن میکند و برای هر کندل چهار شرط اصلی را به صورت همزمان بررسی میکند. موقعیت کندلهایی که هر شرط در آنها برقرار است در بافرهای جداگانه ذخیره میشود. سپس در انتهای اسکن، توالی و همپوشانی این چهار شرط با یکدیگر سنجیده میشود. اگر فاصله کندلهای حاوی شروط مختلف از یکدیگر حداکثر ۳ کندل باشد و ترتیب وقوع آنها منطبق بر الگوی تعریفشده باشد (شکست EMA سریع قبل از بازگشت به EMA کند)، یک سیگنال معتبر صادر میشود. همچنین برای جلوگیری از سیگنالهای مکرر، فاصله حداقل ۳ کندل با آخرین سیگنال همنوع الزامی است.
ویدیو جامع آموزش ربات معاکله گر Super Scalper EMAs برای متاتریدر 4
چهار شرط اصلی برای سیگنال خرید
برای صدور سیگنال خرید، هر چهار شرط زیر باید همجهت و همپوشان باشند:
- شرط روند: قیمت باز و بسته شدن کندل، هر دو بالای EMA کند (۷۴۰) باشند و EMA سریع (۳۹) نیز بالای EMA کند قرار گرفته باشد. این تأیید میکند که روند کلی صعودی است.
- شرط بازگشت (Retracement): کندل جاری باید کمترین فاصله را با EMA کند در میان ۳ کندل قبلی و ۳ کندل بعدی خود داشته باشد. علاوه بر این، فاصله قیمت (فاصله سایه پایینی در کندل صعودی تا EMA) باید از اندازه کل بدنه کندل (High – Low) کوچکتر باشد. این یعنی قیمت واقعاً به میانگین نزدیک شده و صرفاً یک کندل بزرگ نیست.
- شرط شکست (Breakout): قیمت باید از زیر EMA سریع (۳۹) به بالای آن عبور کرده باشد. به عبارت دیگر، کندل با قیمت باز زیر EMA سریع و قیمت بسته شدن بالای آن باشد (کندل سبز). این مورد نشاندهنده از سرگیری حرکت صعودی پس از بازگشت است.
- شرط استوکاستیک: خط اصلی استوکاستیک باید از زیر سطح ۲۰ به بالای آن کراس کرده باشد، یعنی بازار از شرایط اشباع فروش خارج شده و آماده حرکت صعودی است.
چهار شرط اصلی برای سیگنال فروش
برای سیگنال فروش، تمامی شروط بالا در حالت قرینه خود برقرار میشوند:
- شرط روند: قیمت زیر EMA کند و EMA سریع زیر EMA کند باشد (روند نزولی).
- شرط بازگشت: کندل جاری (با در نظر گرفتن سایه بالایی) نزدیکترین فاصله را با EMA کند در بازه ۳ کندل اطراف خود داشته باشد و این فاصله از اندازه بدنه کندل کوچکتر باشد.
- شرط شکست: قیمت از بالای EMA سریع به زیر آن عبور کرده باشد (کندل قرمز).
- شرط استوکاستیک: خط اصلی از بالای سطح ۸۰ به پایین کراس کرده باشد (خروج از اشباع خرید).
فیلتر ADX و مدیریت روندهای قوی
در هر دو سیگنال خرید و فروش، یک فیلتر حیاتی وجود دارد: مقدار ADX (با دوره ۱۴) باید کمتر از ۳۷ باشد. اگر ADX بالای ۳۷ باشد، حتی در صورت برقراری هر چهار شرط دیگر، سیگنالی صادر نخواهد شد. منطق پشت این فیلتر آن است که ADX بالا نشاندهنده یک روند بسیار قوی است و در چنین شرایطی، بازگشتهای کوچک معمولاً قابل اعتماد نیستند و احتمال ادامه روند بدون اصلاح معتبر وجود دارد. این ویژگی از ورودهای کاذب در بازارهای پرروند جلوگیری میکند.
سیستم حد ضرر دینامیک
حد ضرر در این اکسپرت صرفاً یک عدد ثابت نیست، بلکه به صورت دوبخشی و پویا محاسبه میشود:
- بخش اول (فاصله ثابت): معادل stopLossDeltaPoints (پیشفرض ۵۰ پوینت) از قیمت ورود فاصله میگیرد.
- بخش دوم (فاصله دینامیک): بسته به نوع معامله، فاصله قیمت ورود تا EMA سریع یا EMA کند (به اضافه اسپرد) محاسبه و به حد ضرر اضافه میشود. برای معاملات خرید، فاصله اسک تا EMA سریع و برای فروش، فاصله بید تا EMA کند در نظر گرفته میشود.
این مکانیزم باعث میشود در بازارهای پرنوسان که قیمت نوسانات بیشتری دارد، حد ضرر به طور خودکار بازتر شود و از بسته شدن زودهنگام معامله جلوگیری کند. سپس این مقدار با حداقل فاصله مجاز بروکر (Stop Level + Spread + Trailing Delta) مقایسه شده و در صورت لزوم اصلاح میشود.

مکانیزم تریلینگ استاپ و زمانبندی آن
برخلاف بسیاری از رباتها که تریلینگ استاپ را در هر تیک اجرا میکنند، این اکسپرت بهروزرسانی حد ضرر شناور را بر اساس یک تایمر ۵ دقیقهای انجام میدهد. این رویکرد باعث کاهش بار پردازشی و جلوگیری از ارسال درخواستهای مکرر به سرور میشود. تریلینگ استاپ تنها زمانی فعال میشود که قیمت حداقل به اندازه takeProfitActivationPoints (پیشفرض ۱۰ پوینت) از قیمت ورود فاصله گرفته باشد. پس از فعال شدن، حد ضرر جدید در فاصله trailingStopDeltaPoints (پیشفرض ۸۴۰ پوینت) پشت قیمت فعلی تنظیم میشود. نکته قابل توجه اینجاست که مقدار ۸۴۰ پوینت (حدود ۸۴ پیپ در جفتارزهای ۴ رقمی) برای یک استراتژی اسکالپینگ بسیار بزرگ است و اساساً حد ضرر تقریباً باز میماند مگر آنکه بازگشت قابل توجهی رخ دهد.
سیستم هجینگ و دو استراتژی آن
بخش هجینگ یکی از ویژگیهای متمایز این اکسپرت است که به دو صورت کاملاً متفاوت عمل میکند:
- هجینگ همجهت با روند (ProTrend): در این حالت، ربات آخرین معامله خرید و آخرین معامله فروش را شناسایی میکند. اگر قیمت فعلی به اندازه distance (پیشفرض ۱۰ پوینت) از قیمت آخرین معامله خرید فاصله داشته باشد، یک خرید جدید باز میشود. همین منطق برای فروش نیز اعمال میشود. این روش در واقع نوعی میانگینگیری در جهت روند است.
- هجینگ خلاف جهت روند (ContraTrend): این روش پیچیدهتر است. ربات آخرین معامله را شناسایی کرده و:
- اگر فقط یک معامله باز باشد و قیمت به اندازه distance در خلاف جهت حرکت کند، یک معامله در جهت مخالف باز میشود (خنثیسازی یا قفل کردن).
- اگر بیش از یک معامله باز باشد و قیمت خلاف جهت حرکت کند، یک معامله دیگر در همان جهت باز میشود (میانگینگیری معکوس).
استراتژیهای خروج از هج
اکسپرت دو روش کاملاً متمایز برای بستن معاملات هج (و تمام معاملات) ارائه میدهد:
- روش تریلینگ استاپ (TrailingStop): در این روش، هیچ بسته شدن خودکاری رخ نمیدهد. هر معامله به صورت جداگانه با حد ضرر شناوری که طبق تایمر ۵ دقیقهای بهروزرسانی میشود مدیریت میشود و معامله تنها زمانی بسته میشود که قیمت به حد ضرر برخورد کند.
- روش بستن سریع (CloseASAP): این روش برای اسکالپینگ بسیار مناسب است. در هر بار اجرای تابع تریلینگ (یعنی هر ۵ دقیقه)، سود خالص کل حساب محاسبه میشود. اگر Equity حساب از Balance بیشتر باشد (یعنی در سود کلی باشیم)، تمامی معاملات باز بدون استثنا و به صورت یکجا بسته میشوند. این یک مکانیزم جمعآوری سریع سود است که از برگشت سودهای کوچک جلوگیری میکند. در صورت بروز خطای Requote (کد ۱۳۸)، ربات تا ۳ بار با فاصله ۱ ثانیه و با قیمت جدید تلاش میکند.
محدودیتهای مدیریت سفارشات
اکسپرت دارای چندین لایه محدودیت برای جلوگیری از ورودهای بیرویه و رعایت قوانین بروکر است:
- محدودیت تعداد: حداکثر تعداد معاملات خرید (maxOpenBuyOrders) و فروش (maxOpenSellOrders) به صورت جداگانه قابل تنظیم است و پیشفرض هر دو ۱ است.
- محدودیت Magic Number: به طور پیشفرض، تنها معاملاتی که با Magic Number اختصاصی MAGICMA (پیشفرض 3937) باز شدهاند مدیریت میشوند، مگر اینکه گزینه AllOrders روی true تنظیم شود که در این صورت تمام معاملات سیمبول جاری را مدیریت میکند.
- اعتبارسنجی حجم: قبل از هر معامله، تابع CheckVolumeValue حجم درخواستی را با حداقل، حداکثر و گام مجاز بروکر مقایسه میکند و در صورت عدم تطابق، معامله را متوقف میسازد.
- اعتبارسنجی مارجین: تابع CheckMoneyForTrade بررسی میکند که مارجین آزاد حساب برای باز کردن معامله کافی باشد.
- حداقل بالانس: حساب باید حداقل ۱۰ دلار موجودی داشته باشد، در غیر این صورت هشداری روی نمودار نمایش داده میشود و معاملهای باز نمیشود.
سیستم ثبت وقایع و اشکالزدایی
ربات دارای سیستم گزارشی نسبتاً دقیقی است:
- تمام تلاشهای ناموفق برای باز کردن یا تغییر معاملات با کد خطا و توضیحات در پنجره Experts ثبت میشود.
- برای خطاهای خاص و مهم مانند خطای ۱ (ERR_NO_RESULT) و خطای ۱۳۰ (ERR_INVALID_STOPS)، جزئیات کاملی شامل نوع سفارش، مقدار استاپ لاس و تیک پروفیت پیشنهادی چاپ میشود که به عیبیابی کمک میکند.
- پس از معاملات موفق نیز پیام تأیید با شماره تیکت ثبت میشود.
- فلشهای سبز و قرمز روی نمودار، نقاطی که سیگنال خرید یا فروش در آنها صادر شده را به صورت بصری مشخص میکنند و با حذف اکسپرت، این فلشها نیز پاک میشوند.

در ادامه، نتایج حاصل از تست استراتژی ScalperEMAEASimple در بازه زمانی ۱۴ آوریل تا ۱۲ می ۲۰۲۵ (حدود یک ماه) روی جفتارز EURUSD در تایمفریم ۱ دقیقه را در چهار بخش بررسی میکنم:
عملکرد کلی و سودآوری
این استراتژی در طول دوره تست با سرمایه اولیه ۱۰,۰۰۰ دلار، به سود خالص نهایی ۴۰۱.۲۷ دلار (معادل ۴.۰۱٪ بازدهی) دست یافته است. سود ناخالص کل ۱,۵۷۹.۱۶ دلار و ضرر ناخالص کل ۱,۱۷۷.۸۹ دلار بوده که نسبت سود به ضرر (Profit Factor) عدد ۱.۳۴ را نشان میدهد. این عدد اگرچه بالای ۱ است و نشاندهنده سودآوری سیستم میباشد، اما چندان بالا نیست و حاشیه امنیت محدودی دارد. میانگین سود هر معامله (Expected Payoff) معادل ۵.۰۲ دلار بوده است. نکته قابل توجه این است که حداکثر افت سرمایه (Maximal Drawdown) تنها ۴.۹۸٪ (معادل ۵۰۶.۳۲ دلار) بوده که برای یک استراتژی اسکالپینگ عددی نسبتاً کنترلشده محسوب میشود و نشاندهنده مدیریت ریسک نسبتاً محافظهکارانه سیستم است.
آمار معاملات و نرخ موفقیت
در مجموع ۸۰ معامله در این دوره انجام شده که از این تعداد، ۴۸ معامله فروش (۶۰٪) و ۳۲ معامله خرید (۴۰٪) بوده است. نرخ موفقیت کلی (Win Rate) تنها ۳۳.۷۵٪ است، به این معنا که از هر ۱۰۰ معامله، حدود ۶۶ معامله با ضرر بسته میشود. این نرخ پیروزی پایین، مشخصه بسیاری از استراتژیهای اسکالپینگ مبتنی بر نسبت ریسک به ریوارد بالا است. میانگین سود معاملات برنده ۵۸.۴۹ دلار و میانگین ضرر معاملات بازنده ۲۲.۲۲ دلار بوده که نسبت میانگین سود به میانگین ضرر تقریباً ۲.۶۳ است. این نسبت مطلوب توضیح میدهد که چرا با وجود نرخ موفقیت پایین، سیستم همچنان سودآور باقی مانده است. بزرگترین سود منفرد ۱۱۷.۳۰ دلار و بزرگترین ضرر منفرد ۳۰.۸۷ دلار ثبت شده است.
گراف نتیجه تست ربات

رفتار معاملاتی و الگوهای مشاهدهشده
بررسی دقیق تاریخچه معاملات نشان میدهد که استراتژی تمایل شدیدی به باز کردن معاملات پشت سر هم (Martingale-style averaging) در زمان ضرر دارد. برای مثال، در بازه ۱۶ آوریل بین ساعات ۱۷:۰۳ تا ۲۲:۲۳، ربات ۷ معامله فروش متوالی باز کرده که ۶ تای آنها با ضرر بسته شدهاند (مجموعاً حدود ۱۳۰ دلار ضرر). این الگو در تاریخهای ۲۱ آوریل (۸ معامله متوالی با ۷ ضرر)، ۲۳ آوریل (۷ معامله با ۵ ضرر)، و ۷ تا ۸ می (سری طولانی معاملات خرید با ضررهای متوالی) نیز تکرار شده است. نکته جالب اینجاست که سیستم درست در آخرین معاملات این سریها، با سودهای نسبتاً بزرگ (بین ۴۰ تا ۱۱۷ دلار) خارج میشود و زیانهای قبلی را جبران میکند. این رفتار دقیقاً مطابق با منطق هجینگ ProTrend و ContraTrend است که در کد مشاهده کردیم. همچنین تریلینگ استاپ با مقادیر تنظیمشده (فعالسازی در ۶۰۰ پوینت و فاصله ۲۰۰ پوینت) به خوبی عمل کرده و اجازه داده سودهای بزرگ حفظ شوند، اما در مقابل، برخی معاملات کوچک با ضررهای -۲۱.۵۰ تا -۲۶ دلار بسته شدهاند.
تنظیمات پارامتر های ربات هنگاه تست در استراتژی تستر

نتیجه تست ربات به صورت خلاصه

نقاط قوت و ضعف در نتایج تست
نقاط قوت: مهمترین دستاورد این تست، کنترل عالی Drawdown است. حداکثر افت ۴.۹۸٪ برای استراتژیای که از averaging استفاده میکند بسیار خوب است و نشان میدهد سیستم از باز کردن بیرویه معاملات در خلاف جهت جلوگیری میکند. نسبت ریسک به ریوارد ۲.۶۳ نیز بسیار مطلوب است. همچنین بزرگترین رشته ضرر متوالی ۱۷ معامله با مجموع ضرر ۳۸۲.۵۸ دلار بوده که سیستم توانسته آن را تحمل کند و همچنان به سوددهی ادامه دهد. نقاط ضعف: نرخ موفقیت ۳۳.۷۵٪ از نظر روانشناسی برای معاملهگران دشوار است، زیرا باید دورههای طولانی ضرر را تحمل کنند. همچنین کیفیت مدلسازی تست تنها ۲۴.۹۲٪ است که برای تایمفریم ۱ دقیقه نسبتاً پایین محسوب میشود و ممکن است نتایج واقعی کمی متفاوت از این تست باشند. وابستگی شدید سیستم به چند معامله بزرگ (۹ معامله برنده متوالی در یک مقطع، مجموعاً ۴۲۵ دلار سود) نشان میدهد که سودآوری کل استراتژی به عملکرد در چند روز خاص گره خورده و در صورت عدم وقوع آن شرایط، ممکن است کل دوره منفی شود. اسپرد ۱۰ پوینتی نیز برای اسکالپینگ روی M1 عدد قابل توجهی است و فشار مضاعفی بر معاملات کوچک وارد میکند.
تنظیمات پارامترهای ورودی اکسپرت به شرح زیر هستند:

- MAGICMA=3937— شماره جادویی برای شناسایی معاملات این اکسپرت از سایر معاملات.
- lotSize=0.1— حجم ثابت هر معامله (در اینجا ۰.۱ لات).
- maxOpenBuyOrders=1— حداکثر تعداد مجاز معاملات خرید همزمان.
- maxOpenSellOrders=1— حداکثر تعداد مجاز معاملات فروش همزمان.
- AllOrders=true— مدیریت تمام معاملات سیمبول، صرفنظر از شماره جادویی.
- periodEMAFast=39— دوره میانگین متحرک نمایی سریع برای شناسایی شکستها.
- periodEMASlow=200— دوره میانگین متحرک نمایی کند برای تشخیص روند و بازگشت.
- strategy=0— انتخاب نوع استراتژی (فقط SCALPEREMAs با مقدار 0 فعال است).
- stopLossDeltaPoints=200— فاصله پایه حد ضرر از قیمت ورود به پوینت.
- takeProfitActivationPoints=600— میزان سود لازم برای فعالسازی تریلینگ استاپ.
- trailingStopDeltaPoints=200— فاصله تریلینگ استاپ از قیمت فعلی به پوینت.
- hedgeStrategy=0— استراتژی هج (0 برای ProTrend همجهت با روند، 1 برای ContraTrend خلاف روند).
- hedgeCloseStrategy=1— روش خروج هج (0 برای تریلینگ استاپ، 1 برای CloseASAP بستن سریع).
- distance=50— حداقل فاصله قیمت برای ورود معاملات هج به پوینت.
پارامترهای استوکاستیک شامل K=5، D=5، Slowing=5 و سطوح اشباع ۲۰ و ۸۰ و همچنین آستانه ADX روی ۳۷، همگی در کد هاردکد شدهاند و کاربر نمیتواند آنها را تغییر دهد.





