Operasi cBot¶
Artikel ini menerangkan kitaran hayat cBot dalam cTrader CLI. Ketahui cara menjalankan cBot daripada terminal, menyenaraikan dan menghentikan instans yang sedang berjalan, mengehoskan cBot pada VPS atau pelayan awan menggunakan Docker serta menjalankan ujian belakang dengan data sejarah.
Prasyarat ¶
- cTrader CLI telah dipasang.
- cTrader ID, fail kelayakan dan nombor akaun anda telah disediakan.
- cBot telah dieksport sebagai fail
.algoyang dikompil untuk .NET 8.
Membaca metadata cBot ¶
Sebelum menjalankan cBot, gunakan metadata untuk menyenaraikan parameter yang diterimanya. Output menunjukkan nama dan jenis setiap sifat cBot.
ctrader-cli metadata <path-to-algo-file>
Gunakan nama parameter daripada output metadata apabila memberikan parameter melalui baris perintah atau fail .cbotset.
Menjalankan cBot ¶
Mulakan cBot menggunakan run. Laluan fail .algo ialah argumen pertama. --account, --symbol dan --period adalah wajib.
ctrader-cli run <path-to-algo-file> --account=<account-id> --symbol=<symbol> --period=<period>
Terdapat tiga cara untuk memberikan parameter.
| Sumber | Bila digunakan | Contoh |
|---|---|---|
| Nilai lalai | Apabila parameter lalai cBot sudah sesuai untuk tujuan anda. | ctrader-cli run /opt/mycbot.algo --account=1234567 --symbol=EURUSD --period=h1 |
| Melalui baris perintah | Apabila anda mahu mengubah satu atau dua nilai tanpa membuat fail. | ctrader-cli run /opt/mycbot.algo --account=1234567 --symbol=EURUSD --period=h1 --Periods=15 --ConsolidationPeriods=3 |
Fail .cbotset | Apabila anda mahu menggunakan semula satu set nilai dalam beberapa pelaksanaan; eksport fail tersebut daripada aplikasi desktop cTrader. | ctrader-cli run /opt/mycbot.algo /opt/mysettings.cbotset --account=1234567 --symbol=EURUSD --period=h1 |
Dua pilihan tambahan penting untuk pelaksanaan tanpa pengawasan.
| Pilihan | Fungsi |
|---|---|
--full-access | Menjalankan cBot tanpa sekatan hak akses apabila ia perlu membaca atau menulis fail setempat atau mengakses rangkaian. |
--exit-on-stop | Menamatkan proses cTrader CLI apabila cBot berhenti dengan sendirinya; berguna untuk skrip dan kontena. |
Menjalankan cBot pada VPS atau pelayan awan ¶
Alat yang hanya menggunakan terminal boleh berjalan dengan baik pada instans Linux yang kecil. Ini membolehkan cBot berjalan secara berterusan pada kos yang lebih rendah berbanding komputer meja. Menggunakan imej Docker cTrader CLI ialah cara yang paling mudah dipindahkan antara persekitaran.
Muat turun imej terkini:
docker pull ghcr.io/spotware/ctrader-console:latest
Jalankan cBot dalam kontena. Pilihan --mount menghubungkan folder pada hos ke lokasi dalam kontena, manakala pilihan -e memberikan konfigurasi melalui pemboleh ubah persekitaran:
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
| Komponen | Maksud |
|---|---|
--name ctrader.console.run.mybot | Menetapkan nama kontena. |
--mount type=bind,src=...,dst=... | Menghubungkan folder hos ke laluan /mnt/Robots dalam kontena. |
-e CTID='mycid' | Menetapkan cTrader ID sebagai pemboleh ubah persekitaran. |
-e PWD-FILE='/mnt/Robots/ctrader-cli.pwd' | Menetapkan laluan fail kata laluan dalam kontena. |
-e ACCOUNT='9102302' | Menetapkan nombor akaun dagangan. |
-e SYMBOL='EURUSD' | Menetapkan simbol. |
-e PERIOD='H1' | Menetapkan tempoh masa. |
"<path>" | Laluan fail cBot dalam kontena. |
--environment-variables | Mengarahkan cTrader CLI membaca konfigurasi daripada pemboleh ubah persekitaran. |
Nota
Semua fungsi cTrader CLI tersedia dalam imej Docker, termasuk ujian belakang dan pengoptimuman.
Memulakan daripada aplikasi desktop cTrader ¶
Anda tidak perlu mahir menggunakan baris perintah untuk memanfaatkan cTrader CLI.
- Dalam aplikasi desktop cTrader, sediakan cBot dengan parameter pilihan anda.
- Klik kanan pada instans cBot setempat dan pilih Mulakan dalam proses luaran. cTrader CLI akan dilancarkan secara automatik dan menjalankan instans tersebut secara bebas.
- Tutup aplikasi desktop untuk menjimatkan sumber CPU dan RAM. cBot akan terus berjalan dalam proses cTrader CLI.
Menyenaraikan dan menghentikan cBot ¶
Senaraikan instans cBot yang sedang berjalan pada akaun:
ctrader-cli cbots --ctid=letstrade --password=secret --account=1234567 -q
Hentikan instans yang sedang berjalan menggunakan pengecamnya yang ditunjukkan dalam output run:
ctrader-cli stop --ctid=letstrade --password=secret --account=1234567 -q --instance=<instance-id>
Untuk menghentikan semua cBot yang sedang berjalan serentak, buka shell interaktif dan jalankan stop all yes. Proses cTrader CLI tamat apabila instans terakhir berhenti.
Menjalankan ujian belakang cBot ¶
Jalankan cBot menggunakan data sejarah dengan backtest. Laluan fail .algo ialah argumen pertama dan boleh diikuti oleh fail .cbotset pilihan. Ujian ini juga memerlukan simbol, tempoh masa dan julat tarikh:
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>
Pilihan konteks ujian ¶
Pilihan konteks ujian disenaraikan selepas entri backtest dalam dokumentasi rujukan CLI. Hanya --start, --end dan --data-mode diperlukan. Pilihan tambahan merangkumi baki permulaan, komisen, spread, sumber data dan fail laporan.
Mod data ¶
| Nilai | Penerangan |
|---|---|
open | Menggunakan harga pembukaan tempoh masa asas; pantas tetapi kurang tepat untuk pergerakan harga dalam setiap bar. |
m1 | Menggunakan data satu minit yang dimuat turun daripada pelayan. |
m1-csv | Menggunakan data satu minit yang disediakan melalui --data-file. |
tick-csv | Menggunakan data tick yang disediakan melalui --data-file. |
ticks | Menggunakan data tick yang dimuat turun daripada pelayan; mod ini paling tepat tetapi paling perlahan. Wajib bagi tempoh masa tick, bar julat dan Renko. |
Petua
Tetapkan --data-dir kepada folder yang dikekalkan antara pelaksanaan supaya cTrader CLI menggunakan semula data harga yang telah dimuat turun, bukannya memuat turunnya lagi untuk setiap ujian belakang. Dalam Docker, hubungkan folder ini ke direktori hos supaya data dikekalkan selepas kontena berhenti.
Contoh praktikal ¶
Jalankan ujian belakang pada cBot contoh menggunakan satu fail parameter .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
Output ujian belakang ¶
cTrader CLI memaparkan kemajuan secara berterusan dalam terminal, kemudian menunjukkan ringkasan apabila selesai. Hasil lengkap terletak dalam folder Backtesting bersebelahan fail .algo, dengan subfolder berasingan bagi setiap pelaksanaan:
…/data/{cBotName}/{BacktestingInstanceID}/Backtesting
| Fail | Kandungan |
|---|---|
| Peristiwa (JSON) | Setiap peristiwa dagangan penting, seperti pembukaan dan penutupan posisi. |
| Log (TXT) | Permulaan dan penghentian cBot, tindakan dagangan serta hasilnya. |
Parameter (.cbotset) | Parameter dan nilai yang digunakan dalam ujian belakang. |
| Laporan (HTML) | Laporan visual yang menunjukkan statistik dagangan dan sejarah pesanan, yang boleh dibuka dalam pelayar web. |
--report dan --report-json turut menyimpan laporan ke laluan yang ditentukan, selain folder yang dinyatakan di atas.
Tingkah laku Algo API dalam cTrader CLI ¶
Sesetengah ahli cTrader Algo API berfungsi secara berbeza apabila cBot dijalankan melalui cTrader CLI kerana tiada antara muka grafik.
| Ahli API | Tingkah laku dalam cTrader CLI |
|---|---|
MessageBox | Mengembalikan MessageBoxResult.None. |
Window | Semua kaedah diabaikan dan tiada tetingkap dipaparkan. |
Notifications.PlaySound | Ignored. |
Chart.TakeChartshot | Mengembalikan null. |