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