ข้ามไปที่เนื้อหา

เรียกใช้ cBot ตลอด 24 ชั่วโมง

หาก cBot ทำงานได้เฉพาะตอนเปิดแล็ปท็อปไว้ ก็อาจไม่ตอบโจทย์เมื่อเซสชันการเทรดเริ่มตอนตีสาม คำแนะนำนี้อธิบายวิธีตรวจสอบพารามิเตอร์ cBot เริ่มทำงานบนเซิร์ฟเวอร์ระยะไกล ตรวจสอบว่า cBot ยังทำงานอยู่ และหยุดอย่างถูกต้องเมื่อเซสชันสิ้นสุด

เคล็ดลับ

ตั้งค่าข้อมูลเข้าสู่ระบบในตัวแปร shell เพียงครั้งเดียว คำสั่งในโหมดอินเทอร์แอกทีฟทั้งหมดด้านล่างจะใช้ตัวแปรเหล่านี้ร่วมกัน ทำให้ขั้นตอนกระชับและนำสคริปต์ไปใช้ในสภาพแวดล้อมอื่นได้ง่าย

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

1. ดูพารามิเตอร์ของ cBot

metadata แสดงชื่อและประเภทพารามิเตอร์ที่ cBot รองรับ เพื่อให้คุณทราบว่าต้องส่งตัวเลือกใดไปยัง run หรือใช้คีย์ใดในไฟล์ .cbotset metadata เป็นคำสั่งในโหมดแบตช์ที่รับ --ctid และ --pwd-file ได้โดยตรง

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

2. บันทึกชุดพารามิเตอร์

ไฟล์ .cbotset เป็นไฟล์ข้อความธรรมดาที่มีคู่ค่า key=value หนึ่งคู่ต่อบรรทัด การแก้ไขและนำไฟล์นี้กลับมาใช้ซ้ำทำได้ง่ายกว่าการใช้บรรทัดคำสั่งยาว ๆ

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

ใช้ชื่อพารามิเตอร์ที่ metadata แสดงในขั้นตอนที่ 1

3. เริ่ม cBot บน VPS

คำสั่ง run ใช้ได้ทั้งโหมดแบตช์และโหมดอินเทอร์แอกทีฟ ในโหมดแบตช์ (ไม่มี -q) คำสั่งจะรับ --ctid และ --pwd-file โดยตรงโดยไม่ต้องใช้ -q และโปรเซส CLI จะทำงานต่อไปจนกว่า cBot จะหยุด เรียกใช้บน VPS ภายใต้การดูแลของเครื่องมือจัดการโปรเซส เช่น systemd, tmux, screen หรือ Docker image อย่างเป็นทางการ และใช้ --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 จะทำให้โปรเซส CLI สิ้นสุดเมื่อ cBot หยุด ซึ่งช่วยให้ systemd หรือ Docker ตรวจสอบและจัดการได้ง่ายขึ้น

หากต้องการเรียกใช้ cBot บนเซิร์ฟเวอร์เป็นเวลานาน ให้ใช้คำสั่งเดียวกันภายใน Docker image อย่างเป็นทางการของ cTrader CLI Docker image รองรับตัวเลือกเดียวกันและสิ้นสุดเมื่อได้รับสัญญาณเดียวกัน ดูคำแนะนำ Docker ฉบับเต็มได้ในบทความ cBots

4. ตรวจสอบว่า cBot กำลังทำงาน

ในเทอร์มินัลอีกหน้าต่างหนึ่ง ให้ใช้ cbots เพื่อแสดงอินสแตนซ์ cBot ทั้งหมดที่กำลังทำงานในบัญชี ผลลัพธ์มี ID ของอินสแตนซ์ที่ต้องใช้ในขั้นตอนถัดไป

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

5. ตรวจสอบราคาสดขณะที่ cBot ทำงาน

ขณะที่ cBot ทำงาน คุณสามารถใช้ price ในเทอร์มินัลอีกหน้าต่างหนึ่งเพื่อตรวจสอบราคาตลาดโดยไม่กระทบอินสแตนซ์ที่กำลังทำงาน

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

6. หยุด cBot เมื่อเซสชันสิ้นสุด

stop หยุดอินสแตนซ์ตาม ID ที่ระบุ นำ ID จากผลลัพธ์ cbots ในขั้นตอนที่ 4 มาใช้

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

หากเปิด CLI ใน shell แบบอินเทอร์แอกทีฟ ให้เพิ่ม all และ yes เพื่อหยุดอินสแตนซ์ที่กำลังทำงานทั้งหมดพร้อมกัน: stop all yes

7. รวมขั้นตอนเป็นสคริปต์เรียกใช้ที่มีการจัดการ

บันทึกชุดคำสั่งทั้งหมดเป็น start-cbot.sh และเรียกใช้ผ่าน systemd งาน cron หรือไปป์ไลน์การปรับใช้ สคริปต์บันทึกชุดพารามิเตอร์ เริ่ม cBot ในเบื้องหลัง รอการยืนยันว่าทำงานแล้ว และแสดง ID ของอินสแตนซ์ไว้ใช้ภายหลัง

#!/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

หากต้องการหยุดอินสแตนซ์นั้นภายหลัง ให้เรียกใช้ stop ตามขั้นตอนที่ 6 ID ของอินสแตนซ์จะไม่เปลี่ยนระหว่างการสอบถาม cbots หลายครั้ง จึงบันทึกไว้ครั้งเดียวแล้วนำมาใช้ซ้ำได้

เอกสารอ้างอิงคำสั่ง cTrader CLI แสดงตัวเลือกทั้งหมดที่ใช้กับคำสั่งในขั้นตอนนี้

คำเตือน

cTrader CLI เป็นเครื่องมือสำหรับการเทรดและระบบอัตโนมัติ เครื่องมือนี้ไม่ได้ให้คำแนะนำด้านการเงิน การลงทุน กฎหมาย หรือภาษี คำสั่งที่ใช้ส่งหรือแก้ไขคำสั่งซื้อขายอาจทำให้เกิดการเทรดจริงและการขาดทุน ตรวจสอบทุกคำสั่งก่อนเรียกใช้ ทดสอบในบัญชีทดลองก่อน และปกป้องข้อมูลประจำตัวของคุณ