Przejdź do treści

Nieprzerwane uruchamianie cBota

cBot, który działa tylko wtedy, gdy Twój laptop jest włączony, na niewiele się przyda, jeśli sesja zaczyna się o trzeciej nad ranem. Ta instrukcja pokazuje, jak odczytać parametry cBota, uruchomić go na zdalnym serwerze, sprawdzić jego działanie i poprawnie zatrzymać po zakończeniu sesji.

Wskazówka

Ustaw dane logowania w zmiennych powłoki tylko raz. Wszystkie poniższe polecenia interaktywne korzystają z tych samych zmiennych, dzięki czemu kroki są krótsze, a skrypt można łatwo przenosić między środowiskami.

export CTID=letstrade
export ACC=7654321
export PWD_FILE=$HOME/.ctrader/pwd

1. Odczytanie parametrów cBota

metadata wyświetla nazwy i typy parametrów obsługiwanych przez cBota. Dzięki temu dowiesz się, jakie opcje przekazać do run lub jakie klucze umieścić w pliku .cbotset. metadata jest poleceniem wsadowym, które bezpośrednio przyjmuje opcje --ctid i --pwd-file.

ctrader-cli metadata --ctid=$CTID --pwd-file=$PWD_FILE $ALGO

2. Zapisanie zestawu parametrów

Plik .cbotset to zwykły plik tekstowy zawierający jedną parę key=value w każdym wierszu. Łatwiej go edytować i wykorzystywać ponownie niż długi wiersz polecenia.

cat > mycbot.cbotset <<'EOF'
SlowPeriods=20
StopLossPips=30
TakeProfitPips=60
EOF

Użyj nazw parametrów wyświetlonych przez metadata w kroku 1.

3. Uruchomienie cBota na serwerze VPS

run to polecenie, które można uruchamiać zarówno w trybie wsadowym, jak i interaktywnym. W trybie wsadowym (bez -q) bezpośrednio przyjmuje opcje --ctid i --pwd-file bez używania -q, a CLI pozostaje uruchomione do chwili zakończenia działania cBota. Uruchom je na serwerze VPS pod nadzorem menedżera procesów (systemd, tmux, screen, oficjalnego obrazu Docker lub opcji --exit-on-stop).

ctrader-cli run --ctid=$CTID --pwd-file=$PWD_FILE \
    --account=$ACC $ALGO mycbot.cbotset --symbol=EURUSD --period=h1 --exit-on-stop

--exit-on-stop powoduje zakończenie procesu CLI po zatrzymaniu cBota, co ułatwia nadzorowanie go przez systemd lub Docker.

Aby cBot działał przez dłuższy czas na serwerze, uruchom to samo polecenie w oficjalnym obrazie Docker dla cTrader CLI. Obraz przyjmuje te same opcje i kończy działanie po otrzymaniu tych samych sygnałów. Pełną instrukcję dotyczącą Dockera znajdziesz w artykule cBots.

4. Sprawdzenie, czy cBot działa

W drugim terminalu użyj cbots, aby wyświetlić wszystkie instancje cBotów uruchomione obecnie na koncie. Wynik zawiera identyfikator instancji potrzebny w następnym kroku.

ctrader-cli cbots --ctid=$CTID --pwd-file=$PWD_FILE --account=$ACC -q

5. Sprawdzanie cen w czasie rzeczywistym podczas działania cBota

Podczas działania cBota możesz użyć price w osobnym terminalu, aby sprawdzać rynek bez zakłócania działania uruchomionej instancji.

ctrader-cli price --ctid=$CTID --pwd-file=$PWD_FILE --account=$ACC -q --symbol=EURUSD

6. Zatrzymanie cBota po zakończeniu sesji

stop zatrzymuje instancję wskazaną jej identyfikatorem. Odczytaj identyfikator z wyniku cbots w kroku 4.

ctrader-cli stop --ctid=$CTID --pwd-file=$PWD_FILE --account=$ACC -q \
    --instance=13579246

Jeśli CLI zostało uruchomione w powłoce interaktywnej, dodaj all i yes, aby zatrzymać wszystkie działające instancje jednocześnie: stop all yes.

7. Połączenie kroków w skrypt nadzorowanego uruchamiania

Zapisz całą sekwencję jako start-cbot.sh i uruchamiaj ją za pomocą systemd, zadania cron lub potoku wdrożeniowego. Skrypt zapisuje zestaw parametrów, uruchamia cBota w tle, czeka na potwierdzenie uruchomienia i wyświetla identyfikator instancji do późniejszego wykorzystania.

#!/usr/bin/env bash
set -euo pipefail

CTID=letstrade
ACC=7654321
PWD_FILE=$HOME/.ctrader/pwd
ALGO=/opt/mycbot.algo
SYMBOL=EURUSD
PERIOD=h1

cat > /opt/mycbot.cbotset <<'EOF'
SlowPeriods=20
StopLossPips=30
TakeProfitPips=60
EOF

nohup ctrader-cli run --ctid=$CTID --pwd-file=$PWD_FILE \
    --account=$ACC $ALGO /opt/mycbot.cbotset --symbol=$SYMBOL --period=$PERIOD --exit-on-stop \
    > /var/log/mycbot.log 2>&1 &

sleep 10
ctrader-cli cbots --ctid=$CTID --pwd-file=$PWD_FILE --account=$ACC -q

Aby później zatrzymać instancję, wykonaj odpowiednie wywołanie stop z kroku 6. Identyfikator instancji nie zmienia się między kolejnymi zapytaniami cbots, więc wystarczy go raz zapisać i ponownie wykorzystywać.

Dokumentacja referencyjna cTrader CLI zawiera wszystkie dostępne opcje poleceń używanych w tej procedurze.

Ostrzeżenie

cTrader CLI to narzędzie do handlu i automatyzacji. Nie świadczy usług doradztwa finansowego, inwestycyjnego, prawnego ani podatkowego. Polecenia służące do składania lub zmieniania zleceń mogą prowadzić do zawarcia rzeczywistych transakcji i poniesienia strat. Sprawdź każde polecenie przed uruchomieniem, najpierw przetestuj je na koncie demo i chroń swoje dane logowania.