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

cTrader CLI

cTrader CLI ช่วยให้นักเทรดสามารถจัดการบัญชีและการดำเนินการเทรดด้วย Algo ได้โดยตรงจากคอนโซลหรือเทอร์มินัลโดยไม่ต้องเปิดหรือพึ่งพาแอปพลิเคชัน cTrader ปกติ ด้วย cTrader CLI ผู้ใช้เพียงแค่พิมพ์คำสั่งลงในเทอร์มินัลแบบข้อความเพื่อเข้าถึงและรันอัลกอริทึม cTrader

cTrader CLI ภายในหนึ่งนาที!

  • รัน cBot บน Windows และ Linux โดยไม่ต้องเปิดหรือพึ่งพาแอป cTrader Windows และประหยัดทรัพยากร RAM และ CPU
  • ควบคุมอินสแตนซ์ cBot ได้อย่างมีประสิทธิภาพมากขึ้นและรัน cBot ภายใต้บัญชีต่างๆ โดยไม่ต้องเปิดหน้าต่างแอปพลิเคชัน cTrader หลายหน้าต่าง
  • สร้างโปรแกรมที่กำหนดเองที่ใช้ cTrader CLI เพื่อเริ่ม หยุด และจัดการอัลกอริทึมการเทรดในภาษาโปรแกรมที่คุณต้องการ
  • ผสานรวม cTrader CLI กับเครื่องมือ AI แบบสร้างสรรค์และใช้ภาษาธรรมชาติในการออกคำสั่งให้กับอัลกอริทึม

คำเตือน

cTrader CLI มีให้ใช้งานใน cTrader เวอร์ชัน 4.8 หรือใหม่กว่า และทำงานกับ Algo .NET 6 ที่ทันสมัยเท่านั้น

วิธีการเปิดใช้งานและการใช้งาน

ผ่าน cTrader Windows

หมายเหตุ

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

ในการรัน cBot ใน cTrader CLI ให้คลิกขวาที่อินสแตนซ์ในเครื่องของ cBot นั้นใน cTrader Windows แล้วเลือก เริ่มในกระบวนการภายนอก

Image title

cTrader CLI จะเปิดใช้งานโดยอัตโนมัติและเริ่มรันอินสแตนซ์โดยไม่ขึ้นกับแอปพลิเคชัน cTrader Windows

หลังจากที่คุณเริ่มอินสแตนซ์ cBot ในกระบวนการภายนอกของ cTrader CLI คุณสามารถปิด cTrader Windows เพื่อประหยัดทรัพยากร CPU และ RAM เนื่องจาก cTrader CLI ไม่จำเป็นต้องให้ cTrader Windows เปิดอยู่

ผ่านคำสั่งของ Windows

คุณสามารถเปิดใช้งาน cTrader CLI จากโปรแกรมคำสั่งใดๆ ใน Windows เช่น Command Prompt หรือ Windows PowerShell

ขั้นแรก ให้นำทางไปยังโฟลเดอร์ที่มี ctrader-cli และคัดลอกเส้นทาง ไฟล์ปฏิบัติการ cTrader CLI มักจะอยู่ในไดเรกทอรีเดียวกันกับแอปพลิเคชัน cTrader Windows ของคุณ:

1
C:\Users\{username}\AppData\Local\Spotware\cTrader\{installationId}

Image title

ขั้นที่สอง เปิด Command Prompt หรือ Windows PowerShell พิมพ์ cd เว้นวรรค แล้ววางเส้นทางที่คุณคัดลอกไว้ก่อนหน้านี้ โค้ดของคุณควรมีลักษณะดังนี้:

1
cd C:\Users\{username}\AppData\Local\Spotware\cTrader\{installationId}

รันโค้ด และโปรแกรมคำสั่งของคุณจะเข้าสู่ไดเรกทอรีที่มีไฟล์ปฏิบัติการ ctrader-cli

สุดท้าย คุณสามารถพิมพ์ ctrader-cli.exe ตามด้วย <command> ที่ถูกต้องและดำเนินการได้ ตัวอย่างเช่น คุณสามารถรัน ctrader-cli.exe periods เพื่อดูช่วงเวลาที่มีอยู่

Image title

เพิ่มตัวแปรเส้นทาง

ข้อมูล

หลังจากที่คุณเพิ่ม cTrader CLI ลงในตัวแปรสภาพแวดล้อม PATH คุณจะไม่จำเป็นต้องนำทางไปยังไดเรกทอรีที่มี ctrader-cli ก่อนที่จะรันคำสั่งในเครื่อง Windows ของคุณอีกต่อไป แทนที่จะเป็นเช่นนั้น คุณจะสามารถรันคำสั่งในตำแหน่งหรือโฟลเดอร์ใดก็ได้โดยเพียงแค่พิมพ์ ctrader-cli ตามด้วย <command>

ขั้นแรก ค้นหาโฟลเดอร์ที่มี ctrader-cli เหมือนที่คุณทำก่อนหน้านี้และคัดลอกเส้นทาง

1
C:\Users\{username}\AppData\Local\Spotware\cTrader\{installationId}

ค้นหา ตัวแปรสภาพแวดล้อม ในเมนู Start ของ Windows คลิก แก้ไขตัวแปรสภาพแวดล้อมของระบบ

Image title

ในหน้าต่าง คุณสมบัติของระบบ คลิก ตัวแปรสภาพแวดล้อม ดับเบิลคลิก Path ภายใต้ ตัวแปรผู้ใช้สำหรับ {username} ในหน้าต่าง แก้ไขตัวแปรสภาพแวดล้อม คลิกปุ่ม ใหม่ แล้ววางเส้นทางที่คุณคัดลอกไว้ก่อนหน้านี้ลงในช่อง

คลิก ตกลง จนกว่าจะปิดกล่องโต้ตอบทั้งหมด

ผ่านอิมเมจ Docker บน Linux

cTrader CLI มีให้บริการเป็น อิมเมจ Docker บน Linux ซึ่งช่วยให้คุณสามารถรัน cBot บนอินสแตนซ์ VPS ของ Linux ราคาถูก เซิร์ฟเวอร์ประสิทธิภาพสูง และแพลตฟอร์มคลาวด์ที่เชื่อถือได้ อิมเมจนี้ยังสามารถใช้บน Windows ผ่าน Docker Desktop (WSL) ในฐานะคอนเทนเนอร์ Docker ได้อีกด้วย

หมายเหตุ

หากคุณเพิ่งเริ่มต้นใช้ Docker ขอแนะนำให้คุณศึกษา เอกสารประกอบ และทำความคุ้นเคยกับแนวคิดที่จำเป็น

อิมเมจ Docker ของ cTrader CLI ถูกเผยแพร่ภายใต้ แพ็คเกจ Github ของ Spotware และมี รุ่น ใหม่ที่ให้บริการพร้อมกับการอัปเดต cTrader Windows ครั้งใหญ่ทุกครั้ง

ในการใช้อิมเมจ Docker ของ cTrader CLI ตรวจสอบให้แน่ใจว่าได้ติดตั้ง Docker บนเครื่องของคุณแล้ว จากนั้นดึงอิมเมจ Docker ของ cTrader CLI เวอร์ชันล่าสุดที่มีอยู่:

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

หลังจากดึงอิมเมจแล้ว คุณต้องสร้างและรันคอนเทนเนอร์ เนื่องจากคอนเทนเนอร์ Docker ทำงานในแซนด์บ็อกซ์เสมือนที่แยกออกจากระบบปฏิบัติการของคุณ คุณต้องอนุญาตให้คอนเทนเนอร์เข้าถึงไฟล์อัลกอริทึม cBot และไฟล์รหัสผ่าน cTID ของคุณอย่างชัดเจน สิ่งนี้สามารถทำได้โดยใช้คุณสมบัติการเมาท์ของ Docker ซึ่งช่วยให้คอนเทนเนอร์สามารถเข้าถึงไดเรกทอรีหรือไฟล์จากระบบโฮสต์ได้

คำสั่งด้านล่างสร้างคอนเทนเนอร์ตามอิมเมจที่ดึงมาและรัน cBot:

1
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
1
2
3
4
5
6
7
8
9
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

พารามิเตอร์ที่เหลือในคำสั่งมีคำอธิบายด้านล่าง:

พารามิเตอร์ คำอธิบาย
--name ctrader.console.run.mybot ระบุชื่อของคอนเทนเนอร์
--mount type=bind,src=/cAlgo/Robots,dst=/mnt/Robots เมาท์ไดเรกทอรีโฮสต์ /cAlgo/Robots ไปยังไดเรกทอรีคอนเทนเนอร์ /mnt/Robots
-e CTID='mycid' ตั้งค่าชื่อผู้ใช้ cTID ของคุณเป็นตัวแปรสภาพแวดล้อม
-e PWD-FILE='/mnt/Robots/ctrader-cli.pwd' กำหนดเส้นทางไปยังไฟล์รหัสผ่าน cTID ของคุณ โดยสัมพันธ์กับจุดเมาท์
-e ACCOUNT='9102302' ตั้งค่าหมายเลขบัญชีเทรดของคุณเป็นตัวแปรสภาพแวดล้อม
-e SYMBOL='EURUSD' ตั้งค่าชื่อสัญลักษณ์เป็นตัวแปรสภาพแวดล้อม
-e PERIOD='H1' ตั้งค่าช่วงเวลาเป็นตัวแปรสภาพแวดล้อม
"/mnt/Robots/My bot.algo" ระบุเส้นทางไปยังไฟล์อัลกอริทึม cBot ของคุณ โดยสัมพันธ์กับจุดเมาท์
--environment-variables แจ้งให้ cTrader CLI ทราบว่ากำลังใช้ตัวแปรสภาพแวดล้อมในการส่งการตั้งค่าการกำหนดค่า

คุณยังสามารถสร้างอิมเมจ Docker ที่พร้อมใช้งานตามอิมเมจ cTrader CLI คัดลอกไฟล์อัลกอริทึมของคุณลงในนั้น แล้วกำหนดค่าตัวแปรสภาพแวดล้อมทั้งหมดและการตั้งค่าอื่นๆ โดยตรงภายในอิมเมจได้

หมายเหตุ

คุณสมบัติทั้งหมดของ cTrader CLI สามารถใช้งานได้เมื่อใช้อิมเมจ Docker รวมถึงการ Backtesting และคำสั่งอื่นๆ ที่อธิบายไว้ในบทความนี้

กรณีการใช้งานทั่วไป

นี่คือรายการการดำเนินการยอดนิยมที่นักเทรดใช้ cTrader CLI:

  • รับสัญลักษณ์ทั้งหมด

    1
    ctrader-cli symbols --ctid=letstrade@email.com --pwd-file=C:/test/password.pwd --account=1234567
    

    การตอบสนอง:

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    [
      {
        "Id": 1,
        "Name": "EURUSD",
        "Description": "Euro vs US Dollar"
      },
    
        .
        .
        .
    
      {
        "Id": 21497,
        "Name": "HONG KONG 50",
        "Description": "HONG KONG 50"
      }
    ]
    
  • รับข้อมูลเมตาของ Algo

    1
    ctrader-cli metadata C:/test/RSI_cBot.algo
    

    การตอบสนอง:

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    {
      "Name": "RSI_cBot",
      "Type": "cBot",
      "AccessRights": "None",
      "BuildTime": "2023-05-11T16:42:56.7421508+03:00",
      "Parameters": [
        {
        "PropertyName": "Quantity",
        "FriendlyName": "Quantity (Lots)",
        "GroupName": "Volume",
        "Type": "Double",
        "DefaultValue": 1.0,
        "MinValue": 0.01
        },
        {
        "PropertyName": "Source",
        "FriendlyName": "Source",
        "GroupName": "RSI",
        "Type": "DataSeries",
        "DefaultValue": {
            "OwnerId": "00000000-0000-0000-0000-000000000000",
            "FriendlyName": "Close",
            "IsStandard": true
        }
        },
        {
        "PropertyName": "Periods",
        "FriendlyName": "Periods",
        "GroupName": "RSI",
        "Type": "Integer",
        "DefaultValue": 14
        }
      ]
    }
    
  • Backtest cBot

    1
    ctrader-cli run C:\test\mycbot.algo -c=letstrade@email.com --pwd-file=C:\test\password.pwd --account=1234567 --symbol=EURUSD --period=h1
    
  • รัน cBot ด้วยพารามิเตอร์เริ่มต้น

    1
    ctrader-cli run C:\test\mycbot.algo -c=letstrade --pwd-file=C:\test\password.pwd --account=1234567 --symbol=EURUSD --period=h1
    
  • รัน cBot ด้วยพารามิเตอร์ที่กำหนดเอง

    1
    ctrader-cli run C:\mycbot.algo -c=letstrade@email.com --pwd-file=C:\test\password.pwd --account=1234567 --symbol=EURUSD --period=h1 --ConsolidationPeriods=3 --Periods=15
    
  • รัน cBot ด้วยพารามิเตอร์ที่บันทึกไว้ในไฟล์

    1
    ctrader-cli run C:\mycbot.algo C:\test\mysettings.cbotset -c=letstrade --pwd-file=C:\test\password.pwd --account=1234567 --symbol=EURUSD --period=h1 
    

การแจกแจงคำสั่ง

cTrader CLI ทำงานเหมือนกับเครื่องมือคำสั่งบรรทัดอื่น ๆ ผู้ใช้พิมพ์ ctrader-cli พร้อมกับคำสั่งที่กำหนดไว้ล่วงหน้าและรันคำสั่งนั้น ตัวอย่างเช่น คำสั่ง periods ใช้ในลักษณะนี้เพื่อแสดงรายการช่วงเวลากราฟทั้งหมดที่อัลกอริทึมสามารถรันได้:

1
ctrader-cli periods

คำสั่งบางคำสั่งมีตัวเลือกหรืออาร์กิวเมนต์ที่ทำตามกฎเหล่านี้:

  • -- เขียนไว้หน้าเวอร์ชันเต็มของตัวเลือก (เช่น --ctid, --symbol) ในขณะที่ - เขียนไว้หน้าเวอร์ชันย่อ (เช่น -c, -s)

  • ค่าของตัวเลือกสามารถระบุโดยใช้ช่องว่าง (เช่น --ctid letstrade, --symbol EURUSD) หรือใช้เครื่องหมายเท่ากับ (เช่น --ctid=letstrade, --symbol=EURUSD)

  • ไม่เหมือนกับตัวเลือก อาร์กิวเมนต์จะถูกพิมพ์ตามที่เป็น พิจารณาเส้นทางไปยังอัลกอริทึม มันเป็นอาร์กิวเมนต์ที่เพียงแค่พิมพ์: C:/test/mycbot.algo

ตัวอย่าง

  • คำสั่งพร้อมตัวเลือก

    คำสั่ง accounts นี้ ซึ่งรับ --ctid และ --pwd-file เป็นตัวเลือก แสดงข้อมูลเกี่ยวกับบัญชีทั้งหมดที่เชื่อมโยงกับ letstrade:

    1
    ctrader-cli accounts --ctid=letstrade --pwd-file=C:/test/password.pwd
    
  • คำสั่งพร้อมอาร์กิวเมนต์

    คำสั่ง metadata นี้ ซึ่งรับเส้นทางไปยัง algo เป็นอาร์กิวเมนต์เดียว แสดงข้อมูลเมตาดาตาที่สำคัญเกี่ยวกับ algo:

    1
    ctrader-cli metadata C:/Users/{username}/Documents/cAlgo/Sources/Robots/mycoolcbot.algo
    

เส้นทางหรือค่าใด ๆ ที่มีช่องว่างต้องระบุโดยใช้เครื่องหมายคำพูดเดี่ยวหรือคู่ดังที่แสดงด้านล่าง:

  • อาร์กิวเมนต์เช่น 'C:/test for cbot/my cbot.algo' หรือ "C:/test for cbot/my cbot.algo"
  • ตัวเลือกเช่น --pwd-file='C:\test for cbot\password.pwd' หรือ --pwd-file="C:\test for cbot\password.pwd" , --start='01/01/2024 12:34' หรือ --start="01/01/2024 12:34" และอื่น ๆ

หมายเหตุ

หากคุณเลือกสไตล์ในการทำบางสิ่ง หลีกเลี่ยงการใช้สไตล์ที่แตกต่างในภายหลังในโค้ดของคุณ ตัวอย่างเช่น เมื่อคุณได้ใช้เครื่องหมายคำพูดเดี่ยว (') สำหรับเส้นทางหรือค่าที่มีช่องว่างแล้ว คุณต้องใช้เครื่องหมายคำพูดเดี่ยวสำหรับเส้นทางหรือค่าอื่น ๆ ที่มีช่องว่างในโค้ดของคุณ

การสร้างไฟล์ PWD หรือ TXT

รหัสผ่านสำหรับ cTrader ID ไม่ได้ระบุโดยตรง แทนที่จะเป็นเช่นนั้น รหัสผ่านจะถูกบันทึกในไฟล์ PWD หรือ TXT และจากนั้นจะใช้ตัวเลือก --pwd-file เพื่อระบุเส้นทางไปยังไฟล์ (เช่น --pwd-file=C:\test\password.pwdหรือ --pwd-file=C:\test\password.txt)

เปิดเอกสารเปล่าในโปรแกรมแก้ไขข้อความเช่น Notepad วางหรือพิมพ์รหัสผ่านของคุณ (โดยไม่มีช่องว่างใด ๆ) จากนั้นบันทึกไฟล์ด้วยนามสกุล .pwd หรือ .txt

คำสั่ง CLI ทั้งหมด

หมายเหตุ

ตัวเลือกที่ไม่จำเป็นสำหรับคำสั่งที่กำหนดจะถูกแสดงในวงเล็บเหลี่ยม เช่น [--broker] ในตารางด้านล่าง เมื่อคุณใช้ตัวเลือกดังกล่าวในโค้ดของคุณ คุณต้องพิมพ์โดยไม่มีวงเล็บเหลี่ยม เช่น --broker

คำสั่ง ฟังก์ชัน ตัวเลือกและอาร์กิวเมนต์ที่รองรับ
--help หรือ -h แสดงรายการคำสั่งที่มีอยู่และอาร์กิวเมนต์ของคำสั่งนั้น
periods แสดงรายการช่วงเวลากราฟที่มีอยู่
accounts แสดงรายการบัญชีที่เชื่อมโยงกับ cTID --ctid หรือ -c, --pwd-file, [--broker], [--environment-variables หรือ -e]
symbols แสดงรายการสัญลักษณ์ที่มีอยู่ --ctid หรือ -c, --pwd-file, --account หรือ -a, [--broker], [--environment-variables หรือ -e]
metadata แสดงข้อมูลเมตาดาตาเกี่ยวกับ cBot หรืออินดิเคเตอร์ <cbot.algo>
run รัน cBot บนสัญลักษณ์เฉพาะด้วยช่วงเวลาที่กำหนด <cbot.algo>, [<params.cbotset>], --ctid หรือ -c, --pwd-file, --account หรือ -a, [--broker], [--environment-variables หรือ -e], --symbol, --period, [--full-access], [--CustomParameter1], …, [--CustomParameterN]
backtest ทำ Backtesting cBot โดยใช้ข้อมูลในอดีตสำหรับช่วงเวลา สัญลักษณ์ และพารามิเตอร์อื่น ๆ ที่ระบุ <cbot.algo>, [<params.cbotset>], --start=<start-time>, --end=<end-time>, --data-mode=<data-mode>, [--data-file=<path>], [--balance=<balance>], [--commission=<commission>], [--spread=<pips>], [--report=<path>], [--report-json=<path>], --ctid=<ctid>, --pwd-file=<path>, --account=<id>, --symbol=<name>, --period=<period>, [--CustomParameter1=<value>], [--environment-variables]

คำอธิบาย

อาร์กิวเมนต์ Explanation
<cbot.algo> เส้นทางไปยังไฟล์ .algo ที่เกี่ยวข้อง (เช่น C:/test/mycbot.algo) ในคำสั่ง run, metadata และ backtest พารามิเตอร์นี้ต้องระบุเป็นอันดับแรก
<params.cbotset> เส้นทางไปยังไฟล์ .cbotset ที่มีค่าพารามิเตอร์สำหรับ cBot (เช่น C:/test/special-parameters.cbotset) ในคำสั่ง run และ backtest พารามิเตอร์นี้ต้องระบุทันทีหลังจาก <cbot.algo>
ตัวเลือก Explanation
--version หรือ -v เวอร์ชันของ cTrader CLI
--ctid หรือ -c ชื่อผู้ใช้หรืออีเมล cTID (เช่น --ctid=letstrade, --ctid=letstrade@email.com)
--pwd-file เส้นทางไปยังไฟล์ PWD หรือ TXT ที่มีรหัสผ่านสำหรับ cTID ที่ระบุ (เช่น --pwd-file=C:/test/password.pwd)
--account หรือ -a หมายเลขบัญชีเทรด (เช่น --account=1234567)
--broker ชื่อของโบรกเกอร์เฉพาะ (เช่น --broker=spotware) ตัวเลือกนี้ใช้เพื่อขจัดความกำกวมในกรณีที่ cTID ที่ระบุมีบัญชีเทรดหลายบัญชีกับโบรกเกอร์ต่าง ๆ ที่มีหมายเลขเดียวกัน
--symbol หรือ -s สัญลักษณ์ที่อัลกอริทึมเทรดหรือดำเนินการ (เช่น --symbol=EURUSD)
--period ช่วงเวลาสำหรับกราฟสัญลักษณ์ (เช่น --period=h1) ในคำสั่ง run และ backtest พารามิเตอร์นี้เป็นสิ่งจำเป็น
--environment-variables หรือ -e หากระบุ จะอนุญาตให้ค่าสำหรับตัวเลือกอื่น ๆ (เช่น ctid) ถูกนำมาจากตัวแปรสภาพแวดล้อมแทนที่จะพิมพ์อย่างชัดเจน
--full-access หากระบุ อัลกอริทึมจะรันโดยไม่มีข้อจำกัดสิทธิ์การเข้าถึงใด ๆ
--CustomParameter1 ค่าของพารามิเตอร์ที่กำหนดเองใด ๆ ที่มีชื่อตรงกับ CustomParameter1 (เช่น --SpecialPeriods=20)
--balance เงินทุนเริ่มต้นสำหรับ backtest (เช่น --balance=10000)
--commission ค่าคอมมิชชั่นต่อล้านสำหรับ backtest (เช่น --commission=30)
--spread สเปรดในหน่วย pips สำหรับ backtest (เช่น --spread=1)
--data-mode Ticks เช่น m1, m1-csv, open เป็นต้น สำหรับ backtest (เช่น --data-mode=m1)
--data-file เส้นทางไปยังไฟล์ CSV ที่มีข้อมูลสำหรับ backtest (เช่น --data-file=C:/test/data.csv)
--start เวลาเริ่มต้นใน UTC ในรูปแบบ DD/MM/YYYY [hh:mm] สำหรับ backtest (เช่น --start=01/01/2024 หรือ --start='01/01/2024 12:34' )
--end เวลาสิ้นสุดใน UTC ในรูปแบบ DD/MM/YYY [hh:mm] สำหรับ backtest (ตัวอย่างเช่น --end=31/08/2024 หรือ --end='31/08/2024 20:56' )
--report เส้นทางไปยังไฟล์ HTML ที่รายงาน backtest ถูกบันทึกไว้ (ตัวอย่างเช่น --report=C:/test/report.html)
--report-json เส้นทางไปยังไฟล์ JSON ที่รายงาน backtest ถูกบันทึกไว้ (ตัวอย่างเช่น --report-json=C:/test/report.json)
--exit-on-stop หากระบุไว้ กระบวนการ CLI จะสิ้นสุดลงเมื่อ cBot หยุดทำงาน

Backtesting ใน cTrader CLI

Backtesting ช่วยให้นักเทรดสามารถใช้ข้อมูลในอดีตเพื่อประเมินประสิทธิภาพและความน่าเชื่อถือของ cBot ค้นพบจุดแข็งหรือจุดอ่อน และทดลองกับพารามิเตอร์ต่างๆ การจำลองการเทรดบนสภาวะตลาดในอดีตด้วย Backtesting ช่วยให้สามารถกำหนดได้ว่าอัลกอริทึมอาจทำงานอย่างไรก่อนที่จะนำเงินจริงไปใช้ในตลาดจริง

หมายเหตุ

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

คำสั่ง

คำสั่ง backtest พร้อมตัวเลือกทั้งหมดที่เป็นไปได้:

1
ctrader-cli backtest <cbot.algo> [<params.cbotset>] --start=<start-time> --end=<end-time> --data-mode=<data-mode> [--data-file=<path>] [--balance=<balance>] [--commission=<commission>] [--spread=<pips>] [--report=<path>] --ctid=<ctid> --pwd-file=<path> --account=<id> --symbol=<name> --period=<period> [--CustomParameter1=<value>] [--environment-variables]

ตัวอย่างคำสั่ง backtest:

1
ctrader-cli backtest 'C:\test\sample martingale.algo' C:\test\special-parameters.cbotset --start='01/01/2024 12:34' --end='31/08/2024 20:56' --balance=10000 --commission=30 --data-mode=m1 --spread=1 --ctid=letstrade --pwd-file=C:\test\password.pwd --account=4791386 

รายงาน

หลังจากที่คำสั่ง backtest ถูกดำเนินการ cTrader CLI จะแสดงข้อมูลเกี่ยวกับพารามิเตอร์ของ Backtesting ก่อน

Image title

เมื่อการดำเนินการ Backtesting เสร็จสิ้น cTrader CLI จะแสดงสรุปผลลัพธ์

Image title

นอกจากนี้ cTrader CLI ยังบันทึกผลลัพธ์ของ Backtesting และรายละเอียดที่เป็นประโยชน์ไว้ในโฟลเดอร์ Backtesting การดำเนินการ Backtesting แต่ละครั้งจะได้รับ InstanceID และโฟลเดอร์ Backtesting ที่ไม่ซ้ำกัน

เส้นทางไปยังอินสแตนซ์ Backtesting ของ cBot เฉพาะ: …\data\{cBotName}\{BacktestingInstanceID}\Backtesting

โฟลเดอร์ข้อมูลในเส้นทางด้านบนมักอยู่ในไดเรกทอรีเดียวกันกับไฟล์อัลกอริทึม cBot ที่ระบุไว้ระหว่างการทำ Backtesting

Image title

ไฟล์ JSON ของเหตุการณ์มีรายละเอียดสำหรับทุกเหตุการณ์การเทรดที่สำคัญ

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
[

 {

  "serial": 0,

  "orderId": null,

  "positionId": 1,

  "event": "Create Position",

  "time": 1704146700000,

  "volume": 100000,

  "quantity": 1,

  "type": "Sell",

  "entryPrice": 1.10426,

  "tp": 1.10026,

  "sl": 1.10826,

  "closePrice": null,

  "grossProfit": 0,

  "pips": 0,

  "balance": null,

  "equity": 10000

 },
 .
 .
 .
 {

  "serial": 284,

  "orderId": null,

  "positionId": 143,

  "event": "Create Position",

  "time": 1725023280000,

  "volume": 200000,

  "quantity": 2,

  "type": "Buy",

  "entryPrice": 1.10559,

  "tp": 1.10959,

  "sl": 1.10159,

  "closePrice": null,

  "grossProfit": 0,

  "pips": 0,

  "balance": null,

  "equity": 32340.43

 }

]

ไฟล์ TXT (ข้อความ) ของบันทึกให้ข้อมูลเกี่ยวกับการเริ่มต้น การหยุด การดำเนินการเทรด และผลลัพธ์ของ cBot

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Info | CBot instance [sample martingale, EURUSD, h1] started.

01/01/2024 22:05:00.000 | Trade | Executing Market Order to Sell 100000 EURUSD (SL: 40, TP: 40)

01/01/2024 22:05:00.000 | Trade | → Executing Market Order to Sell 100000 EURUSD (SL: 40, TP: 40) SUCCEEDED, Position PID1

02/01/2024 10:12:00.000 | Info | Closed

02/01/2024 10:12:00.000 | Trade | Executing Market Order to Buy 100000 EURUSD (SL: 40, TP: 40)

02/01/2024 10:12:00.000 | Trade | → Executing Market Order to Buy 100000 EURUSD (SL: 40, TP: 40) SUCCEEDED, Position PID2

02/01/2024 12:22:00.000 | Info | Closed

02/01/2024 12:22:00.000 | Trade | Executing Market Order to Buy 200000 EURUSD (SL: 40, TP: 40)

02/01/2024 12:22:00.000 | Trade | → Executing Market Order to Buy 200000 EURUSD (SL: 40, TP: 40) SUCCEEDED, Position PID3
.

.

.

30/08/2024 13:08:00.000 | Info | Closed

30/08/2024 13:08:00.000 | Trade | Executing Market Order to Buy 200000 EURUSD (SL: 40, TP: 40)

30/08/2024 13:08:00.000 | Trade | → Executing Market Order to Buy 200000 EURUSD (SL: 40, TP: 40) SUCCEEDED, Position PID143

Info | CBot instance [sample martingale, EURUSD, h1] stopped.

ไฟล์ CBOTSET ของพารามิเตอร์มีพารามิเตอร์และค่าที่ใช้ในการดำเนินการ Backtesting

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
{

 "Chart": {

  "Symbol": "EURUSD",

  "Period": "h1"

 },

 "Parameters": {

  "InitialQuantity": "1",

  "StopLoss": "40",

  "TakeProfit": "40"

 }

}

ไฟล์ HTML ของรายงานเป็นรายงาน GUI ที่ให้ภาพรวมของการดำเนินการ Backtesting สถิติการเทรด ประวัติคำสั่ง และรายละเอียดสำคัญอื่นๆ อีกมากมาย สามารถดูได้ในเว็บเบราว์เซอร์ใดก็ได้

Image title

การแก้ไขปัญหาข้อผิดพลาด

ข้อความแสดงข้อผิดพลาด โซลูชัน
ข้อยกเว้นที่ไม่ได้จัดการหรือการใช้งานที่ไม่ถูกต้อง ตรวจสอบโค้ดของคุณอย่างละเอียด แก้ไขข้อผิดพลาดในไวยากรณ์หรือลบคำสั่ง ตัวเลือก หรืออาร์กิวเมนต์ที่ไม่รู้จัก
cTrader CLI ไม่รองรับ cBot ของ .NET 4 คอมไพล์ cBot ของคุณใหม่สำหรับ .NET 6 ในแอปพลิเคชัน cTrader Windows ล่าสุดและใช้ไฟล์ cBot ใหม่
ไม่สามารถสร้างการเชื่อมต่อได้ ตรวจสอบและแก้ไขการเชื่อมต่ออินเทอร์เน็ตบนคอมพิวเตอร์ของคุณ
ข้อมูลประจำตัว cTrader ID ไม่ถูกต้อง ตรวจสอบอีเมล ชื่อผู้ใช้ หรือรหัสผ่าน cTrader ID ที่ระบุอย่างละเอียด
ไม่พบบัญชี ใช้คำสั่ง accounts เพื่อแสดงรายการบัญชีเทรดทั้งหมดที่เชื่อมโยงกับ cTrader ID ของคุณ แล้วระบุหมายเลขที่ถูกต้อง
ชื่อสัญลักษณ์ไม่รู้จัก ใช้คำสั่ง symbols เพื่อแสดงรายการสัญลักษณ์ที่มีอยู่ แล้วระบุสัญลักษณ์ที่ถูกต้อง
ช่วงเวลาไม่รู้จัก ใช้คำสั่ง periods เพื่อแสดงรายการช่วงเวลาที่มีอยู่ แล้วระบุช่วงเวลาที่ถูกต้อง
Stop out (เฉพาะ Backtesting) ปรับปรุงโค้ด cBot ของคุณ เปลี่ยนพารามิเตอร์เพื่อป้องกันมาร์จิ้นคอล หรือทำทั้งสองอย่าง
ไม่มีข้อมูลย้อนหลังสำหรับช่วงเวลาที่ระบุ (เฉพาะ Backtesting) ระบุเส้นทางไปยังไฟล์ที่มีข้อมูลย้อนหลังสำหรับช่วงเวลาที่ระบุ หรือระบุช่วงเวลาอื่น
ต้องการ AccessRights เพิ่มเติม ใช้ --full-access เพื่อให้สิทธิ์ที่สูงขึ้นแก่ cBot
รูปแบบไฟล์ CBOTSET ไม่ถูกต้อง พิจารณาสร้างไฟล์ CBOTSET ของคุณโดยใช้ cTrader Windows เวอร์ชันล่าสุดเพื่อให้แน่ใจว่าถูกต้อง
หมายเลขบัญชีกำกวม ใช้ --broker เพื่อระบุโบรกเกอร์ที่เกี่ยวข้องกับบัญชีอย่างชัดเจนเพื่อหลีกเลี่ยงความกำกวม
cBot ที่ไม่รองรับ สร้าง cBot ของคุณโดยใช้ .NET 6 ใน cTrader Windows ล่าสุด ส่งออก cBot แล้วใช้ไฟล์ที่ส่งออก
การตั้งค่าไม่ถูกต้อง (เฉพาะ Backtesting) ตรวจสอบพารามิเตอร์ทั้งหมดที่ระบุสำหรับ Backtesting อย่างละเอียดและแก้ไขข้อผิดพลาด

cTrader Algo API ใน cTrader CLI

สมาชิก cTrader Algo API บางตัวทำงานแตกต่างกันใน cTrader CLI ตารางด้านล่างแสดงรายการสมาชิกและอธิบายการเปลี่ยนแปลงในพฤติกรรมของพวกเขา

สมาชิก cAlgo API พฤติกรรมใน cTrader CLI
MessageBox ส่งคืน MessageBoxResult.None
Window เมธอดทั้งหมดถูกละเว้น ไม่มีหน้าต่างแสดง
Notifications.PlaySound ถูกละเว้นโดยสิ้นเชิง
Chart.TakeChartshot ส่งคืน null

สรุป

cTrader CLI เป็นฟีเจอร์ที่สำคัญสำหรับนักเทรดที่ต้องการขยายขอบเขตของกิจกรรมการเทรดด้วย Algo เนื่องจากช่วยให้พวกเขาสามารถเรียกใช้และจัดการ cBot ได้อย่างมีประสิทธิภาพด้วยคำสั่งบรรทัดคำสั่งที่ตรงไปตรงมา ผู้ใช้ได้รับการสนับสนุนให้ผสานรวม cTrader CLI กับ API ที่มีประโยชน์และบริการของบุคคลที่สามที่เหมาะกับความต้องการของพวกเขาเสมอ

Image title