Operasi cBot¶
Artikel ini membahas siklus hidup cBot di cTrader CLI. Pelajari cara menjalankan cBot dari terminal, menampilkan dan menghentikan instance yang aktif, meng-host cBot di VPS atau server cloud dengan Docker, serta melakukan backtesting menggunakan data historis.
Prasyarat ¶
- cTrader CLI sudah diinstal.
- cTrader ID, file kredensial, dan nomor akun Anda sudah siap.
- cBot telah diekspor sebagai file
.algoyang dikompilasi untuk .NET 8.
Membaca metadata cBot ¶
Sebelum menjalankan cBot, gunakan metadata untuk menampilkan parameter yang diterimanya. Keluaran mencantumkan nama dan tipe setiap properti cBot.
ctrader-cli metadata <path-to-algo-file>
Gunakan nama parameter dari keluaran metadata saat memberikan parameter melalui baris perintah atau file .cbotset.
Menjalankan cBot ¶
Mulai cBot dengan run. Jalur file .algo adalah argumen pertama. --account, --symbol, dan --period wajib ditentukan.
ctrader-cli run <path-to-algo-file> --account=<account-id> --symbol=<symbol> --period=<period>
Ada tiga cara untuk memberikan parameter.
| Sumber | Kapan digunakan | Contoh |
|---|---|---|
| Nilai default | Ketika parameter default cBot sudah sesuai kebutuhan. | ctrader-cli run /opt/mycbot.algo --account=1234567 --symbol=EURUSD --period=h1 |
| Dari baris perintah | Ketika ingin mengubah satu atau dua nilai tanpa membuat file. | ctrader-cli run /opt/mycbot.algo --account=1234567 --symbol=EURUSD --period=h1 --Periods=15 --ConsolidationPeriods=3 |
File .cbotset | Ketika ingin menggunakan kembali sekumpulan nilai dalam beberapa proses eksekusi; ekspor file dari aplikasi desktop cTrader. | ctrader-cli run /opt/mycbot.algo /opt/mysettings.cbotset --account=1234567 --symbol=EURUSD --period=h1 |
Dua opsi tambahan penting untuk proses yang berjalan tanpa pengawasan.
| Opsi | Fungsi |
|---|---|
--full-access | Menjalankan cBot tanpa pembatasan hak akses saat perlu membaca atau menulis file lokal atau mengakses jaringan. |
--exit-on-stop | Mengakhiri proses cTrader CLI ketika cBot berhenti dengan sendirinya; berguna untuk skrip dan container. |
Menjalankan cBot di VPS atau server cloud ¶
Alat yang hanya membutuhkan terminal dapat berjalan dengan baik pada instance Linux kecil. Dengan begitu, cBot dapat berjalan terus-menerus dengan biaya lebih rendah daripada menggunakan komputer desktop. Menggunakan image Docker cTrader CLI adalah cara paling portabel untuk melakukannya.
Unduh image terbaru:
docker pull ghcr.io/spotware/ctrader-console:latest
Jalankan cBot di dalam container. Opsi --mount menghubungkan folder host ke lokasi di dalam container; opsi -e meneruskan konfigurasi melalui variabel lingkungan:
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 | Arti |
|---|---|
--name ctrader.console.run.mybot | Menetapkan nama container. |
--mount type=bind,src=...,dst=... | Memetakan folder host ke jalur /mnt/Robots di dalam container. |
-e CTID='mycid' | Menetapkan cTrader ID sebagai variabel lingkungan. |
-e PWD-FILE='/mnt/Robots/ctrader-cli.pwd' | Menetapkan jalur file kata sandi di dalam container. |
-e ACCOUNT='9102302' | Menetapkan nomor akun trading. |
-e SYMBOL='EURUSD' | Menetapkan simbol. |
-e PERIOD='H1' | Menetapkan rentang waktu. |
"<path>" | Jalur file cBot di dalam container. |
--environment-variables | Menginstruksikan cTrader CLI untuk membaca konfigurasi dari variabel lingkungan. |
Catatan
Semua fitur cTrader CLI tersedia di image Docker, termasuk backtesting dan optimasi.
Memulai dari aplikasi desktop cTrader ¶
Anda tidak perlu menguasai baris perintah untuk memanfaatkan cTrader CLI.
- Di aplikasi desktop cTrader, siapkan cBot dengan parameter yang Anda inginkan.
- Klik kanan instance cBot lokal, lalu pilih Mulai dalam proses eksternal. cTrader CLI akan dimulai secara otomatis dan menjalankan instance tersebut secara independen.
- Tutup aplikasi desktop untuk menghemat penggunaan CPU dan RAM. cBot akan terus berjalan dalam proses cTrader CLI.
Menampilkan dan menghentikan cBot ¶
Tampilkan instance cBot yang saat ini berjalan pada akun:
ctrader-cli cbots --ctid=letstrade --password=secret --account=1234567 -q
Hentikan instance yang berjalan menggunakan pengenal yang ditampilkan pada keluaran run:
ctrader-cli stop --ctid=letstrade --password=secret --account=1234567 -q --instance=<instance-id>
Untuk menghentikan semua cBot yang sedang berjalan sekaligus, buka shell interaktif dan jalankan stop all yes. Proses cTrader CLI berakhir ketika instance terakhir berhenti.
Melakukan backtesting cBot ¶
Jalankan cBot menggunakan data historis dengan backtest. Jalur file .algo adalah argumen pertama, yang dapat diikuti file .cbotset opsional. Pengujian juga memerlukan simbol, rentang waktu, dan rentang tanggal:
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>
Opsi konteks pengujian ¶
Opsi konteks pengujian tercantum setelah entri backtest dalam referensi CLI. Hanya --start, --end, dan --data-mode yang wajib diisi. Opsi tambahan mencakup saldo awal, komisi, spread, sumber data, dan file laporan.
Mode data ¶
| Nilai | Deskripsi |
|---|---|
open | Menggunakan harga pembukaan dari rentang waktu dasar; cepat, tetapi kurang akurat dalam mencerminkan pergerakan harga di dalam setiap bar. |
m1 | Menggunakan data satu menit yang diunduh dari server. |
m1-csv | Menggunakan data satu menit yang disediakan melalui --data-file. |
tick-csv | Menggunakan data tick yang disediakan melalui --data-file. |
ticks | Menggunakan data tick yang diunduh dari server; ini adalah mode paling akurat, tetapi juga paling lambat. Wajib untuk rentang waktu tick, range bar, dan Renko. |
Kiat
Atur --data-dir ke folder yang disimpan di antara proses eksekusi agar cTrader CLI dapat menggunakan kembali data harga yang sudah diunduh, bukan mengunduhnya lagi untuk setiap backtesting. Di Docker, petakan folder ini ke direktori host agar data tetap tersimpan setelah container dihentikan.
Contoh praktik ¶
Lakukan backtesting pada cBot contoh dengan satu file 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
Keluaran backtesting ¶
cTrader CLI terus menampilkan progres di terminal, lalu memberikan ringkasan saat selesai. Hasil lengkap tersimpan di folder Backtesting di samping file .algo, dengan subfolder tersendiri untuk setiap eksekusi:
…/data/{cBotName}/{BacktestingInstanceID}/Backtesting
| File | Isi |
|---|---|
| Peristiwa (JSON) | Setiap peristiwa trading penting, seperti pembukaan dan penutupan posisi. |
| Log (TXT) | Mulai dan berhentinya cBot, aktivitas trading, serta hasilnya. |
Parameter (.cbotset) | Parameter dan nilai yang digunakan dalam backtesting. |
| Laporan (HTML) | Laporan visual berisi statistik trading dan riwayat order yang dapat dibuka di browser web. |
--report dan --report-json juga menyimpan laporan ke jalur yang ditentukan, selain ke folder di atas.
Perilaku Algo API dalam cTrader CLI ¶
Sebagian anggota cTrader Algo API berperilaku berbeda ketika cBot dijalankan melalui cTrader CLI karena antarmuka grafis tidak tersedia.
| Anggota API | Perilaku dalam cTrader CLI |
|---|---|
MessageBox | Mengembalikan MessageBoxResult.None. |
Window | Semua metode diabaikan dan tidak ada jendela yang ditampilkan. |
Notifications.PlaySound | Ignored. |
Chart.TakeChartshot | Mengembalikan null. |