Ana içeriğe geç

cBot işlemleri

Bu makalede, cTrader CLI'de bir cBot'un yaşam döngüsü ele alınmaktadır. cBot'u terminalden çalıştırmayı, çalışan örnekleri listeleyip durdurmayı, Docker ile bir VPS veya bulut sunucusunda barındırmayı ve geçmiş veriler üzerinde geriye dönük test yapmayı öğrenin.

Ön koşullar

  • cTrader CLI yüklü olmalıdır.
  • cTrader ID, kimlik bilgileri dosyanız ve hesap numaranız hazır olmalıdır.
  • cBot, .NET 8 için derlenmiş bir .algo dosyası olarak dışa aktarılmış olmalıdır.

cBot meta verilerini okuma

Bir cBot'u çalıştırmadan önce kabul ettiği parametreleri listelemek için metadata komutunu kullanın. Çıktıda her cBot özelliğinin adı ve türü gösterilir.

ctrader-cli metadata <path-to-algo-file>

Parametreleri komut satırından veya .cbotset dosyasından belirtirken meta veri çıktısındaki parametre adlarını kullanın.

cBot çalıştırma

run komutuyla bir cBot başlatın. İlk argüman .algo dosyasının yoludur. --account, --symbol ve --period zorunludur.

ctrader-cli run <path-to-algo-file> --account=<account-id> --symbol=<symbol> --period=<period>

Parametreleri aktarmanın üç yolu vardır.

Kaynak Ne zaman kullanılır? Örnek
Varsayılan değerler cBot'un mevcut parametreleri zaten istediğiniz gibi çalışıyorsa. ctrader-cli run /opt/mycbot.algo --account=1234567 --symbol=EURUSD --period=h1
Komut satırından Dosya oluşturmadan bir veya iki değeri değiştirmek için. ctrader-cli run /opt/mycbot.algo --account=1234567 --symbol=EURUSD --period=h1 --Periods=15 --ConsolidationPeriods=3
.cbotset dosyası Aynı değerleri farklı çalıştırmalarda yeniden kullanmak için; dosyayı cTrader masaüstü uygulamasından dışa aktarın. ctrader-cli run /opt/mycbot.algo /opt/mysettings.cbotset --account=1234567 --symbol=EURUSD --period=h1

Gözetimsiz çalıştırmalar için iki isteğe bağlı seçenek önemlidir.

Seçenek Amaç
--full-access cBot'un yerel dosyaları okuması veya yazması ya da ağa erişmesi gerektiğinde, erişim hakkı kısıtlamaları olmadan çalıştırılmasını sağlar.
--exit-on-stop cBot kendi kendine durduğunda cTrader CLI işlemini sonlandırır; betiklerde ve konteynerlerde kullanışlıdır.

VPS veya bulut sunucusunda cBot çalıştırma

Yalnızca terminal üzerinden kullanılan bir araç, küçük bir Linux sunucusunda da sorunsuz çalışır. Böylece cBot, masaüstü bilgisayara kıyasla daha düşük maliyetle kesintisiz çalışabilir. Bunu yapmanın en taşınabilir yolu cTrader CLI Docker imajını kullanmaktır.

En son imajı indirin:

docker pull ghcr.io/spotware/ctrader-console:latest

Bir konteynerde cBot çalıştırın. --mount seçeneği ana makinedeki bir klasörü konteynere bağlar; -e seçenekleri ise yapılandırmayı ortam değişkenleri üzerinden aktarır:

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
Bileşen Anlamı
--name ctrader.console.run.mybot Konteynere ad verir.
--mount type=bind,src=...,dst=... Ana makinedeki klasörü konteyner içindeki /mnt/Robots yoluna bağlar.
-e CTID='mycid' cTrader ID'yi ortam değişkeni olarak ayarlar.
-e PWD-FILE='/mnt/Robots/ctrader-cli.pwd' Konteyner içindeki parola dosyasının yolunu ayarlar.
-e ACCOUNT='9102302' İşlem hesabı numarasını ayarlar.
-e SYMBOL='EURUSD' Sembolü ayarlar.
-e PERIOD='H1' Zaman aralığını ayarlar.
"<path>" Konteyner içindeki cBot dosyasının yolu.
--environment-variables cTrader CLI'nin yapılandırmayı ortam değişkenlerinden okumasını sağlar.

Not

Geriye dönük test ve optimizasyon dahil, cTrader CLI'nin tüm özellikleri Docker imajında kullanılabilir.

cTrader masaüstü uygulamasından başlatma

cTrader CLI'den yararlanmak için komut satırına hâkim olmanız gerekmez.

  1. cTrader masaüstü uygulamasında istediğiniz parametrelerle bir cBot hazırlayın.
  2. Yerel cBot örneğine sağ tıklayıp Harici işlemde başlat seçeneğini belirleyin. cTrader CLI otomatik olarak açılır ve örneği bağımsız şekilde çalıştırır.
  3. CPU ve RAM kullanımını azaltmak için masaüstü uygulamasını kapatın. cBot, cTrader CLI işleminde çalışmaya devam eder.

cBot’ları listeleme ve durdurma

Hesapta şu anda çalışan cBot örneklerini listeleyin:

ctrader-cli cbots --ctid=letstrade --password=secret --account=1234567 -q

Çalışan örneği, run komutunun çıktısında gösterdiği tanımlayıcıyla durdurun:

ctrader-cli stop --ctid=letstrade --password=secret --account=1234567 -q --instance=<instance-id>

Çalışan tüm cBot'ları aynı anda durdurmak için etkileşimli kabuğu açıp stop all yes komutunu çalıştırın. Son örnek durduğunda cTrader CLI işlemi sona erer.

cBot üzerinde geriye dönük test yapma

backtest komutuyla cBot'u geçmiş veriler üzerinde test edin. İlk argüman .algo dosyasının yoludur; ardından isteğe bağlı bir .cbotset dosyası gelebilir. Test için ayrıca bir sembol, zaman aralığı ve tarih aralığı gerekir:

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>

Test ortamı seçenekleri

Test ortamı seçenekleri, CLI başvuru belgelerindeki backtest girdisinin ardından listelenir. Yalnızca --start, --end ve --data-mode zorunludur. İsteğe bağlı seçenekler başlangıç bakiyesini, komisyonu, spread'i, veri kaynaklarını ve rapor çıktılarını kapsar.

Veri modları

Değer Açıklama
open Temel zaman aralığının açılış fiyatlarını kullanır; hızlıdır ancak her bar içindeki hareketleri daha düşük doğrulukla yansıtır.
m1 Sunucudan indirilen bir dakikalık verileri kullanır.
m1-csv --data-file üzerinden sağlanan bir dakikalık verileri kullanır.
tick-csv --data-file üzerinden sağlanan tick verilerini kullanır.
ticks Sunucudan indirilen tick verilerini kullanır; en doğru ancak en yavaş moddur. Tick, aralık ve Renko zaman aralıkları için zorunludur.

İpucu

cTrader CLI'nin indirilen fiyat verilerini her geriye dönük test için yeniden indirmek yerine tekrar kullanabilmesi için --data-dir seçeneğini çalıştırmalar arasında korunan bir klasöre ayarlayın. Docker'da konteyner durduktan sonra verileri korumak için bu klasörü ana makinedeki bir dizine bağlayın.

Uygulamalı örnek

Tek bir .cbotset parametre dosyası kullanarak örnek bir cBot üzerinde geriye dönük test çalıştırın:

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

Geriye dönük test çıktısı

cTrader CLI, ilerlemeyi terminale sürekli aktarır ve tamamlandığında bir özet gösterir. Tüm sonuçlar .algo dosyasının yanındaki Backtesting klasöründedir; her çalıştırma için ayrı bir alt klasör oluşturulur:

…/data/{cBotName}/{BacktestingInstanceID}/Backtesting
Dosya İçerik
Olaylar (JSON) Pozisyon açma ve kapatma gibi tüm önemli işlem olayları.
Günlük (TXT) cBot'un başlatılması, durdurulması, alım satım işlemleri ve sonuçları.
Parametreler (.cbotset) Geriye dönük testte kullanılan parametreler ve değerler.
Rapor (HTML) Bir web tarayıcısında açılan, işlem istatistiklerini ve emir geçmişini gösteren görsel rapor.

--report ve --report-json, raporları yukarıdaki klasöre ek olarak belirli bir yola kaydeder.

cTrader CLI’de Algo API davranışı

Grafik arayüz bulunmadığından bazı cTrader Algo API üyeleri, cBot cTrader CLI'de çalışırken farklı davranır.

API üyesi cTrader CLI'deki davranış
MessageBox MessageBoxResult.None döndürür.
Window Tüm metotlar yok sayılır ve hiçbir pencere gösterilmez.
Notifications.PlaySound Ignored.
Chart.TakeChartshot null döndürür.