Crypto Quant: การซื้อขายแบบเป็นโปรแกรมของ BTC โดยใช้ Binance และ Backtrader — ส่วนที่ 2 จาก 3 PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.

Crypto Quant: การซื้อขายแบบเป็นโปรแกรมของ BTC โดยใช้ Binance และ Backtrader — ส่วนที่ 2 จาก 3


Crypto Quant: การซื้อขายแบบเป็นโปรแกรมของ BTC โดยใช้ Binance และ Backtrader — ส่วนที่ 2 จาก 3 PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.

ในส่วนนี้ wต้องการติดตั้ง แบ็คเทรดเดอร์ และทดสอบย้อนกลับโมเดลการซื้อขายบางส่วนกับข้อมูล Binance ที่เรารวบรวมไว้ในส่วนก่อนหน้า

มีบทความและวิดีโอมากมายเกี่ยวกับ Backtrader และการตั้งค่า ไลบรารี Python ยอดนิยมนี้อำนวยความสะดวกให้กับ Quant ของการทดสอบกลยุทธ์การซื้อขายย้อนหลังด้วยข้อมูลในอดีต ตอบคำถามที่เป็นแก่นสาร “การเทรดโดยใช้กลยุทธ์ BUY/SELL จะทำกำไรได้อย่างไร”. นี้รู้สึกเหมือนเล่นแร่แปรธาตุทางคณิตศาสตร์ในตอนแรก แต่ต้องจำไว้ว่าข้อมูลทางประวัติศาสตร์ก็คือประวัติศาสตร์! กลยุทธ์การซื้อขายที่ได้ผลเมื่อวานนี้ไม่น่าจะได้ผลในวันนี้… แต่เราจะกลับไปแก้ไขในไม่ช้า

คำแนะนำในการติดตั้ง Backtrader ('bt') คือ โปรดคลิกที่นี่เพื่ออ่านรายละเอียดเพิ่มเติม. หมายเหตุ: มีปัญหาที่ทราบเกี่ยวกับเวอร์ชันของ mapplotlib ที่สูงกว่า 3.2.0 ดังนั้นจงระวังให้ดี

คู่มือการเริ่มต้นฉบับย่อน่าอ่าน หาเจอ โปรดคลิกที่นี่เพื่ออ่านรายละเอียดเพิ่มเติม.

RSI ที่เพิ่มขึ้น

สิ่งที่เราจะลองกับ Backtrader ที่นี่คือการทดสอบย้อนหลังและ RSI ที่เพิ่มขึ้น (ตัวบ่งชี้กำลังสัมพัทธ์) กลยุทธ์การซื้อขายข้อมูล crypto ในอดีต (สำหรับ BTC) จากช่วงต้นปีที่ผ่านมา

ตัวบ่งชี้โมเมนตัม RSI อธิบายไว้ โปรดคลิกที่นี่เพื่ออ่านรายละเอียดเพิ่มเติม. มันวัดเงื่อนไขการขายมากเกินไปและการซื้อเกินที่สัมพันธ์กันสำหรับสินทรัพย์การซื้อขายที่กำหนดและพารามิเตอร์ของ 'ระยะเวลา' ซึ่งเป็น # ของขีด (ช่วงการซื้อขาย) ย้อนหลัง

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

Backtest.py

การตั้งค่า backtest ของเรา: backtest.py แบ่งปันแล้ว โปรดคลิกที่นี่เพื่ออ่านรายละเอียดเพิ่มเติม. ซึ่งจะจัดเตรียมโครงสร้าง backtest สำหรับการรัน backtest ของเรา ซึ่งจะมีการกำหนดต่อไป นี่เป็นการตั้งค่า 'bt' ที่ค่อนข้างมาตรฐาน มาทบทวนโค้ดนี้กัน โปรดทราบว่ามีตัวอย่างและวิดีโอสอนออนไลน์มากมายเกี่ยวกับ Python backtest ให้เรียนรู้จาก.

ในนิยามคลาส เราสร้างพารามิเตอร์สำหรับกลยุทธ์ RSI ของเรา

  • ละเอียด: หากเราต้องการส่งออกข้อมูลบันทึกระหว่างการทดสอบ backtest
  • มางวด: ระยะเวลาเฉลี่ยเคลื่อนที่ # ของขีดที่ต้องพิจารณา
  • ปริมาณ: จำนวนหุ้นที่จะซื้อ/ขาย
  • บน: ขีดจำกัดบนของตัวบ่งชี้สำหรับการซื้อเกิน
  • ลด: เกณฑ์ที่ต่ำกว่าของตัวบ่งชี้สำหรับการขายมากเกินไป
  • หยุดการสูญเสีย: การตั้งค่าหยุดการขาดทุนสำหรับการขาย

พื้นที่ ต่อไป() ฟังก์ชั่นในคลาสกลยุทธ์ Backtrader คือสิ่งที่เกิดขึ้นหลังจากแต่ละช่วงเวลา 'ขีด' ของข้อมูล นี่คือ buy() หรือ sell() ตามข้อมูล ในกรณีนี้คือตัวบ่งชี้ RSI และเกณฑ์ของเรา

ที่นี่เรากำหนด รันแบ็คเทส() ฟังก์ชั่นที่จะเรียกใช้โดยรหัสของเรา เพิ่มฟังก์ชันกลยุทธ์ RSI ดังกล่าวลงใน มันสมอง ตัวอย่าง.

ทุกสิ่งที่เป็นมาตรฐานของ Backtrader เรามาดูวิธีการเรียกใช้สิ่งนี้กับข้อมูลของเรา

กำลังทดสอบข้อมูลของเราย้อนหลัง

อย่าลืมรับข้อมูล (โดยใช้ขั้นตอนของส่วนสุดท้าย) สำหรับวันที่ 1 ม.ค. ถึง 2 ม.ค. 2021 ซึ่งจะอยู่ในไฟล์ชื่อ: BTCUSDT-20210101–20210102–1m.csv ด้วย 1440 CSV บรรทัด หนึ่งบรรทัดสำหรับแต่ละนาทีของวัน

Here คือรหัสและผลลัพธ์สำหรับการซื้อขาย Bitcoin (BTC) แบบนาทีต่อนาทีในหนึ่งวันนี้

พิจารณาให้ละเอียดยิ่งขึ้น:

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

ผลลัพธ์ 1 ม.ค. bt ด้วยกลยุทธ์ตัวบ่งชี้ RSI มาตรฐาน

บรรทัดสุดท้ายของผลลัพธ์สรุปผลลัพธ์ของการทดสอบย้อนหลังนี้:

/BTCUSDT-20210101-20210102-1m.csv, RSI (Pd 12) (SL 0.0%) (U70 L30) สุทธิ $777.78 (0.78%) WL 18/7 SQN 1.76

RSI period 12, 0 (No) stop-loss, (U) ขีด จำกัด ที่ 70 (L) ขีด จำกัด ที่ 30, กำไรสุทธิ (ในหนึ่งวัน) ที่ $777.78 ด้วยการเทรดที่ชนะ 18 รายการและการเทรดที่ขาดทุน 7 รายการ

ตัวเลขสุดท้ายคือ ตร'หมายเลขคุณภาพระบบ' (SQN) ซึ่งออกแบบมาเพื่อช่วยเหลือผู้ค้าในการกำหนดจุดแข็ง ความปรารถนา คุณภาพของระบบการซื้อขาย กลยุทธ์ที่มีคุณภาพดีถูกมองว่าเป็นกลยุทธ์ที่สามารถซื้อขายได้และมีประสิทธิภาพ*

ค่า SQN ต่อไปนี้แนะนำ "คุณสมบัติ" ต่อไปนี้:

  • 1.6–1.9 ต่ำกว่าค่าเฉลี่ย
  • 2.0–2.4 ค่าเฉลี่ย
  • 2.5–2.9 ดี
  • 3.0–5.0 ยอดเยี่ยม
  • 5.1–6.9 ยอดเยี่ยม
  • 7.0 — จอกศักดิ์สิทธิ์

สูตร SQN :

SquareRoot(NumberTrades) * ค่าเฉลี่ย (TradesProfit) / StdDev (TradesProfit)

โดยปกติ เราจะยืนกรานอย่างน้อย 30 การซื้อขายเพื่อให้ตัวชี้วัดนี้มีนัยสำคัญทางสถิติ แต่เราจะเพิกเฉยต่อสิ่งนี้ในตอนนี้ เนื่องจากเรากำลังทดสอบการทดสอบย้อนหลังของเราในระยะเวลาอันสั้น

คุณสามารถซูมเข้าไปในส่วนต่างๆ ของโครงเรื่องได้ เช่น

ที่นี่เราเห็นสัญญาณซื้อ (ลูกศรขึ้นสีเขียว) เมื่อค่า RSI ลดลงต่ำกว่า 30 จากนั้นสัญญาณขายที่ทำกำไรเป็นและเครื่องหมายกำไร (วงกลมสีน้ำเงิน) เมื่อ RSI สูงกว่า 70 ดูค่าของ RSI ที่มุมขวาล่าง .

กำไร (ในหนึ่งวัน) ที่ 777.78 ดอลลาร์กับการซื้อขายที่ชนะ 18 ครั้งและการซื้อขายที่ขาดทุน 7 ครั้งนั้นค่อนข้างดี โดยเฉพาะสำหรับวันซื้อขายที่ค่อนข้างตื้นเขิน (+1.42%) ลองนึกภาพสิ่งที่เราสามารถทำได้ในวันที่ตลาดขาขึ้นด้วยปริมาณที่สูง!

พารามิเตอร์โมเดล

คุณได้รับ run get_data สำหรับวันต่างๆ และวิเคราะห์สิ่งเหล่านี้แยกกัน สังเกตว่าพารามิเตอร์ RSI ที่แตกต่างกันมีผลกระทบต่อความสามารถในการทำกำไรจากวันหนึ่งไปอีกอย่างไร

ในกรณีของการซื้อขาย BTC ในวันเดียวกัน แต่มีช่วงเวลา RSI ที่ 20 แทนที่จะเป็น 12 ขาดทุน 2/3 และ กำไรสุทธิ -$21.51 (รวมค่าธรรมเนียมการซื้อขาย) นั่นเป็นความแตกต่างอย่างมากจากการทดสอบย้อนหลังครั้งล่าสุด!

คุณยังสามารถทดลองกับขีดจำกัด RSI ที่แตกต่างกัน (นอกเหนือจากค่าเริ่มต้น 70/30) และพารามิเตอร์หยุดการขาดทุน Stop-loss คือคำสั่งขายอัตโนมัติเมื่อราคาต่ำกว่าระดับที่สัมพันธ์กับคำสั่งซื้อที่ดำเนินการ ตามความหมายของชื่อ สิ่งนี้สามารถใช้เพื่อ "หยุดการสูญเสีย" หลังจากเข้าสู่สถานะที่มีความผันผวน

หยุดขาดทุน

วิธีที่เราตั้งค่าการหยุดการขาดทุนมีดังนี้:

  • 0 : ไม่มีการตั้งค่าหยุดการขาดทุน รอให้ตัวบ่งชี้ทริกเกอร์คำสั่งขาย
  • 0.00x : หยุดขาดทุนที่มูลค่า % ต่ำกว่าราคาซื้อ 0.001 ต่ำกว่า 0.1%
  • -0.0x : trailing stop-loss จะติดตามการซื้อขายเมื่อราคาสูงขึ้น 0.01 คือ trailing stop-loss ที่ต่ำกว่าราคาซื้อ 1%

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

ใน backtest.py ของเราเป็นที่ที่เราตั้งค่าโดยใช้ backtrader:

นี่เป็นการวิ่งแบบเดียวกับที่เราเพิ่งวิเคราะห์ แต่ด้วยการหยุดการขาดทุนต่อท้าย 0.1%

กำไรสุทธิ 383.67 เหรียญสหรัฐฯ ชนะ 12 ครั้งและขาดทุน 12 ครั้ง ดีกว่าการสูญเสียครั้งก่อนมาก คุณสามารถเห็นในพล็อตที่ว่าการหยุดการขาดทุนต่อท้ายป้องกันการซื้อขายจำนวนมากจากการขาดทุนเนื่องจากตัวบ่งชี้รอสัญญาณขาย (ซื้อเกิน)

ภายในตัวบ่งชี้เดียว ในการตั้งค่านี้ เรามีการเรียงสับเปลี่ยนที่เป็นไปได้มากมาย:

  • ช่วงระยะเวลาระหว่าง 10 ถึง 30 ช่วง (20 ตัวแปร)
  • การตั้งค่าหยุดการขาดทุน (ลองนึกภาพ 5 ตัวแปรที่ใช้งานได้จริง)
  • เกณฑ์สำหรับการซื้อเกิน/ขายมากเกินไป (ตอนนี้ลองนึกภาพ 5 ตัวแปร)

นั่นจะเป็น 20x5x5 หรือ 500 รูปแบบที่แตกต่างกันในแต่ละวัน. การตรวจสอบเหล่านี้ทีละรายการด้วยมือจะไร้สาระ แต่เราต้องการทราบว่าพารามิเตอร์ใดให้ผลกำไรมากที่สุดและมีคุณภาพการซื้อขายสูงสุดและไม่ได้

การเล่นแร่แปรธาตุ!

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

Source: https://medium.com/@gk_/crypto-quant-programmatic-trading-of-btc-using-binance-and-backtrader-part-2-of-3-d8af44c93e2b?source=rss——-8—————–cryptocurrency

ประทับเวลา:

เพิ่มเติมจาก กลาง