عمليات روبوتات cBot¶
تتناول هذه المقالة دورة حياة روبوت cBot في cTrader CLI. تعرّف على كيفية تشغيل روبوت cBot من الطرفية، وعرض النسخ قيد التشغيل وإيقافها، واستضافة روبوت cBot على خادم VPS أو خادم سحابي باستخدام Docker، وإجراء اختبار عكسي له بالاعتماد على البيانات التاريخية.
المتطلبات المسبقة ¶
- تم تثبيت cTrader CLI.
- جهّز cTrader ID وملف بيانات الاعتماد ورقم حسابك.
- تصدير روبوت cBot كملف
.algoمُجمَّع لاستهداف .NET 8.
الاطلاع على البيانات الوصفية لروبوت cBot ¶
قبل تشغيل روبوت cBot، استخدم metadata لعرض المعلمات التي يقبلها. تتضمن المخرجات اسم كل خاصية في روبوت cBot ونوعها.
ctrader-cli metadata <path-to-algo-file>
استخدم أسماء المعلمات الواردة في مخرجات البيانات الوصفية عند تمرير المعلمات عبر سطر الأوامر أو ملف .cbotset.
تشغيل روبوت cBot ¶
شغّل روبوت cBot باستخدام run. مسار ملف .algo هو الوسيطة الأولى. يجب تحديد --account و--symbol و--period.
ctrader-cli run <path-to-algo-file> --account=<account-id> --symbol=<symbol> --period=<period>
ثلاث طرق لتمرير المعلمات.
| المصدر | متى يُستخدم | مثال |
|---|---|---|
| القيم الافتراضية | عندما تكون المعلمات الحالية لروبوت cBot مناسبة بالفعل. | ctrader-cli run /opt/mycbot.algo --account=1234567 --symbol=EURUSD --period=h1 |
| عبر سطر الأوامر | لتغيير قيمة أو قيمتين دون إنشاء ملف. | ctrader-cli run /opt/mycbot.algo --account=1234567 --symbol=EURUSD --period=h1 --Periods=15 --ConsolidationPeriods=3 |
ملف .cbotset | لإعادة استخدام مجموعة من القيم في عمليات تشغيل متعددة؛ صدّر الملف من تطبيق cTrader لسطح المكتب. | ctrader-cli run /opt/mycbot.algo /opt/mysettings.cbotset --account=1234567 --symbol=EURUSD --period=h1 |
هناك خياران اختياريان مهمان للتشغيل دون مراقبة.
| الخيار | الغرض |
|---|---|
--full-access | يشغّل روبوت cBot دون قيود على حقوق الوصول عندما يحتاج إلى قراءة الملفات المحلية أو الكتابة فيها أو الاتصال بالشبكة. |
--exit-on-stop | ينهي عملية cTrader CLI عندما يتوقف روبوت cBot من تلقاء نفسه؛ وهو مفيد في النصوص البرمجية والحاويات. |
تشغيل روبوت cBot على خادم VPS أو خادم سحابي ¶
يمكن تشغيل أداة تعمل عبر الطرفية فقط على خادم Linux صغير بكفاءة، مما يسمح لروبوت cBot بالعمل باستمرار بتكلفة أقل مقارنة بجهاز مكتبي. تُعدّ صورة Docker الخاصة بـ cTrader CLI أكثر الطرق قابليةً للنقل لهذا الغرض.
نزّل أحدث صورة:
docker pull ghcr.io/spotware/ctrader-console:latest
شغّل روبوت cBot داخل حاوية. يربط الخيار --mount مجلدًا من الجهاز المضيف بالحاوية، بينما تمرّر خيارات -e إعدادات التكوين عبر متغيرات البيئة:
docker run -d -it \
--name ctrader.console.run.mybot \
--mount type=bind,src=/cAlgo/Robots,dst=/mnt/Robots \
-e CTID='mycid' \
-e PWD-FILE='/mnt/Robots/ctrader-cli.pwd' \
-e ACCOUNT='9102302' \
-e SYMBOL='EURUSD' \
-e PERIOD='H1' \
ghcr.io/spotware/ctrader-console:latest run "/mnt/Robots/My bot.algo" --environment-variables
| الجزء | المعنى |
|---|---|
--name ctrader.console.run.mybot | يحدد اسم الحاوية. |
--mount type=bind,src=...,dst=... | يربط مجلدًا من الجهاز المضيف بالمسار /mnt/Robots داخل الحاوية. |
-e CTID='mycid' | يضبط cTrader ID بوصفه متغير بيئة. |
-e PWD-FILE='/mnt/Robots/ctrader-cli.pwd' | يحدد مسار ملف كلمة المرور داخل الحاوية. |
-e ACCOUNT='9102302' | يحدد رقم حساب التداول. |
-e SYMBOL='EURUSD' | يحدد الرمز. |
-e PERIOD='H1' | يحدد الإطار الزمني. |
"<path>" | مسار ملف روبوت cBot داخل الحاوية. |
--environment-variables | يوجّه cTrader CLI لقراءة إعدادات التكوين من متغيرات البيئة. |
ملاحظة
تتوفر جميع ميزات cTrader CLI في صورة Docker، بما فيها الاختبار العكسي والتحسين.
التشغيل من تطبيق cTrader لسطح المكتب ¶
لست بحاجة إلى إتقان سطر الأوامر للاستفادة من cTrader CLI.
- في تطبيق cTrader لسطح المكتب، جهّز روبوت cBot بالمعلمات التي تفضلها.
- انقر بزر الماوس الأيمن على نسخة محلية من روبوت cBot واختر بدء التشغيل في عملية خارجية. يبدأ cTrader CLI تلقائيًا ويشغّل النسخة بصورة مستقلة.
- أغلق تطبيق سطح المكتب لتوفير موارد المعالج وذاكرة RAM. يواصل روبوت cBot العمل ضمن عملية cTrader CLI.
عرض روبوتات cBot وإيقافها ¶
اعرض نسخ روبوتات cBot التي تعمل حاليًا على الحساب:
ctrader-cli cbots --ctid=letstrade --password=secret --account=1234567 -q
أوقف نسخة قيد التشغيل باستخدام معرّفها الذي يظهر في مخرجات الأمر run:
ctrader-cli stop --ctid=letstrade --password=secret --account=1234567 -q --instance=<instance-id>
لإيقاف جميع روبوتات cBot قيد التشغيل دفعةً واحدة، افتح واجهة الأوامر التفاعلية وشغّل stop all yes. تنتهي عملية cTrader CLI عند توقف آخر نسخة.
إجراء اختبار عكسي لروبوت cBot ¶
اختبر روبوت cBot باستخدام البيانات التاريخية مع backtest. مسار ملف .algo هو الوسيطة الأولى، ويمكن أن يليه ملف .cbotset اختياري. ويتطلب الاختبار رمزًا وإطارًا زمنيًا ونطاقًا من التواريخ:
ctrader-cli backtest <path-to-algo-file> [<path-to-cbotset-file>] --account=<account-id> --symbol=<symbol> --period=<period> --start=<start-date> --end=<end-date> --data-mode=<data-mode>
خيارات سياق الاختبار ¶
ترد خيارات سياق الاختبار بعد إدخال backtest في مرجع أوامر CLI. المدخلات الإلزامية الوحيدة هي --start و--end و--data-mode. تغطي الخيارات الاختيارية الرصيد الأولي والعمولات والسبريد ومصادر البيانات وملفات التقارير.
أوضاع البيانات ¶
| القيمة | الوصف |
|---|---|
open | يستخدم أسعار افتتاح الإطار الزمني الأساسي؛ سريع ولكنه أقل دقة في تتبّع الحركة داخل كل شمعة. |
m1 | يستخدم بيانات الدقيقة الواحدة التي تم تنزيلها من الخادم. |
m1-csv | يستخدم بيانات الدقيقة الواحدة المقدمة عبر --data-file. |
tick-csv | يستخدم بيانات التيك المقدمة عبر --data-file. |
ticks | يستخدم بيانات التيك المنزّلة من الخادم؛ وهو الوضع الأكثر دقةً والأبطأ، ومطلوب للأطر الزمنية المعتمدة على التيك والنطاق وRenko. |
نصيحة
اضبط --data-dir على مجلد تبقى بياناته محفوظة بين مرات التشغيل، حتى يعيد cTrader CLI استخدام بيانات الأسعار التي نزّلها بدلًا من تنزيلها مجددًا لكل اختبار عكسي. في Docker، اربط هذا المجلد بدليل على الجهاز المضيف للحفاظ على البيانات بعد توقف الحاوية.
مثال تطبيقي ¶
أجرِ اختبارًا عكسيًا على نموذج روبوت cBot باستخدام ملف معلمات .cbotset واحد:
ctrader-cli backtest "C:/test/sample martingale.algo" C:/test/special-parameters.cbotset \
--ctid=letstrade --pwd-file=C:/test/password.pwd --account=1234567 --symbol=EURUSD --period=h1 \
--start="01/01/2025 12:34" --end="31/01/2025 20:56" \
--balance=10000 --commission=30 --commission-type=UsdPerMillionUsdVolume --spread=1 --data-mode=m1
مخرجات الاختبار العكسي ¶
يعرض cTrader CLI تقدم التنفيذ باستمرار في الطرفية، ثم يطبع ملخصًا عند الانتهاء. توجد النتائج الكاملة في مجلد Backtesting بجوار ملف .algo، مع مجلد فرعي مستقل لكل عملية تشغيل:
…/data/{cBotName}/{BacktestingInstanceID}/Backtesting
| الملف | المحتويات |
|---|---|
| الأحداث (JSON) | كل حدث تداول مهم، مثل فتح المراكز وإغلاقها. |
| السجل (TXT) | بدء تشغيل روبوت cBot وإيقافه وإجراءات التداول ونتائجها. |
المعلمات (.cbotset) | المعلمات والقيم المستخدمة في الاختبار العكسي. |
| التقرير (HTML) | تقرير مرئي يعرض إحصاءات التداول وسجل أوامر التداول، ويمكن فتحه في متصفح الويب. |
يحفظ --report و--report-json التقارير في مسار محدد، بالإضافة إلى المجلد المذكور أعلاه.
سلوك Algo API في cTrader CLI ¶
تتصرف بعض العناصر في واجهة برمجة تطبيقات cTrader Algo بشكل مختلف عند تشغيل روبوت cBot في cTrader CLI لعدم وجود واجهة رسومية.
| عنصر API | السلوك في cTrader CLI |
|---|---|
MessageBox | يُرجع MessageBoxResult.None. |
Window | يتم تجاهل جميع الأساليب ولا تظهر أي نافذة. |
Notifications.PlaySound | Ignored. |
Chart.TakeChartshot | يُرجع null. |