3 กุญแจสำคัญในการทดสอบย้อนหลังของการเข้ารหัสลับ PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.

3 คีย์ในการทดสอบ backtesting ของ algo

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

3 กุญแจสำคัญในการทดสอบย้อนหลังของการเข้ารหัสลับ PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.

มาเริ่มกันเลย 3 คีย์สำหรับการทดสอบย้อนหลัง:

  • เทียน ค่าต่ำ สำหรับการหยุด
  • การจัดการ ราคาดำเนินการ
  • ซ้ำแล้วซ้ำเล่า เปรียบเทียบ backtest กับความเป็นจริง

นี่หมายถึงการทดสอบย้อนกลับที่แข็งแกร่งคือ ความพยายามมาก (ไม่แปลกใจเลย!) แต่มาเจาะลึกเรื่องนี้กันดีกว่า

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

เอาล่ะoตกลงตามตัวอย่าง ในแผนภูมิด้านล่างสำหรับ BTC ลองจินตนาการว่าเราดำเนินการคำสั่งซื้อที่เส้นสีน้ำเงินบนแท่งเทียนสีเขียวด้านล่าง ประมาณกึ่งกลางจากต่ำไปสูงสำหรับจุดนั้น

จุดต่ำสุดถัดไปอาจทำให้เกิดการหยุดได้หากเป็นจุดหยุดขาดทุนที่แน่น แต่หากโค้ด backtest ของคุณถือว่ามีจุดขายแบบหยุดขาดทุนเมื่อปิด นั่นก็จะไม่เป็นเช่นนั้น ตำแหน่งจะขยายไปข้างหน้าในการจำลองของคุณ มองอย่างใกล้ชิดที่แท่งเทียนสีแดงตามจุดเข้าสีเขียว (กากบาท) ค่าปิดและค่าต่ำแตกต่างกันมาก ในกรณีนี้ กรณีหลังจะแสดงผลกำไรที่มากขึ้น

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

ราคาดำเนินการอาจมีผลกระทบต่อกำไรของการเทรดแบบเรียงซ้อน

พิจารณา 2 ตำแหน่ง ตำแหน่งหนึ่งเข้าเวลา 20.00 น. (เพื่อใช้ตัวเลขกลม) ตำแหน่งที่สองเข้าเวลา 20.50 น. ซึ่งเป็นราคาที่สูงกว่าเล็กน้อย (ซื้อในตลาด) ความแตกต่าง [ค่อนข้างน้อย] ของ 0.50 หน่วยนี้สามารถมีได้ เอฟเฟกต์แบบเรียงซ้อน เกี่ยวกับกำไรของตำแหน่งในช่วงเวลาหนึ่ง ทำไม เนื่องจากในช่วงต่อมา ตำแหน่ง 20.50 อาจถูกหยุด เนื่องจากค่าต่ำอาจต่ำกว่าการตั้งค่าจุดหยุดขาดทุน ในขณะเดียวกันตำแหน่งแรกยังคงดำเนินต่อไปเพื่อทำกำไรอีกหลายครั้ง ความแตกต่างที่ยิ่งใหญ่!

เพื่อจัดการกับสิ่งนี้ เราจำเป็นต้องประมาณราคาที่ดำเนินการของเรา...

สิ่งสำคัญที่ต้องจำไว้ว่างานของการทดสอบย้อนกลับคือการประมาณผลตอบแทนจากแบบจำลอง/กลยุทธ์เมื่อดำเนินการในอดีต

รหัส backtesting ของคุณไม่ทราบว่าราคาการค้าที่ได้รับ (อดีตกาล) ในด้านซื้อหรือขาย

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

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

คุณต้องการให้ผลการทดสอบย้อนหลังของคุณมองโลกในแง่ร้ายเล็กน้อย

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

ซื้อที่ตลาด

นี่คือตัวเลือกบางส่วนให้เลือก สำหรับคำสั่งซื้อในตลาด:

ก) ประมาณการราคาดำเนินการตรงกลาง (หรือระยะทางที่กำหนดไว้ล่วงหน้า) ระหว่างจุดเปิดและปิดของขีด

b) ประมาณการราคาดำเนินการตรงกลาง (หรือระยะทางที่กำหนดไว้ล่วงหน้า) ระหว่าง LOW และ HIGH ของขีด

c) เลือกราคาสุ่มระหว่าง OPEN หรือ LOW และ CLOSE หรือ HIGH

แม้ว่าการเคลื่อนไหวของตลาดมักจะเกิดขึ้นแบบสุ่ม แต่ฉันไม่ชอบ (c) เพราะโค้ด backtest ของคุณ จะไม่เป็น idempotent; มันจะส่งคืนผลลัพธ์ที่แตกต่างกันในแต่ละครั้งที่รันบนข้อมูลเดียวกัน นี่มันยุ่งมาก

ตัวเลือก (b) เน้นถึงตลาดที่มีความผันผวนมากขึ้น ในขณะที่ตัวเลือก (a) น้อยกว่า ขึ้นอยู่กับคุณ แต่ต้องทำการเลือก คุณสามารถใช้ได้ ดัชนีความผันผวนเช่น CVI จากนั้นเลือกตามค่านั้นในช่วงเวลาที่คุณกำลังทดสอบย้อนหลัง

การขายทำกำไรตามคำสั่งจำกัด

นี่คือตัวเลือกบางส่วนให้เลือก เพื่อทำกำไร ขายคำสั่งจำกัด:

ก) ประมาณการราคาดำเนินการตรงกลาง (หรือระยะทางที่กำหนดไว้ล่วงหน้า) ระหว่างราคาเปิดและสูงของขีด

b) ประมาณการราคาดำเนินการในช่วงกลางระหว่าง CLOSE และ HIGH ของขีด

c) เลือกราคาสุ่มระหว่างค่าเทียนข้างต้น

คำสั่งจำกัดการขายหยุดการขาดทุน

นี่คือตัวเลือกบางส่วนให้เลือก สำหรับคำสั่งจำกัดการขายแบบหยุดขาดทุน:

ก) ประมาณการราคาดำเนินการที่อยู่กึ่งกลางระหว่างราคาเปิดและปิดของขีด

b) ประมาณการราคาดำเนินการตรงกลางระหว่าง CLOSE และ LOW ของขีด

c) เลือกราคาสุ่มระหว่างค่าเทียนข้างต้น

สังเกตการใช้ค่า LOW กับ HIGH ขึ้นอยู่กับลำดับ ท่าทาง. คำสั่งขายแบบจำกัดการทำกำไรกำลังจัดการกับราคาที่เพิ่มขึ้น ในขณะที่คำสั่งขายแบบจำกัดการหยุดการขาดทุนกำลังจัดการกับราคาที่ลดลง ทั้งสองมีแนวโน้มที่จะเผชิญกับช่องว่างที่กระโดดเกินค่าขีดจำกัด!

การจัดการกับคำสั่งจำกัดการหยุดการขาดทุนที่ผ่านมา

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

คำสั่งหยุดการขาดทุนที่แสดงในแผนภูมิ Binance TradingView

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

การแลกเปลี่ยนหลายแห่งเช่น Binance ไม่รองรับคำสั่งหยุดการขาดทุน

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

การบัญชีสำหรับการขายทำกำไร

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

ในสถานการณ์นี้ คำสั่งของตลาดจะทิ้งผลกำไรไว้บนโต๊ะ เป็นการดีกว่าถ้าจะสร้างคำสั่งขายแบบจำกัดที่ราคาเฉพาะ

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

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

ไม่มีวิธีใดที่จะปรับปรุงอัลกอริธึมการทดสอบย้อนหลังได้ เว้นแต่จะมีการเปรียบเทียบกับผลลัพธ์จริง ซ้ำแล้วซ้ำเล่า.

เว้นแต่ว่าคุณจะเปรียบเทียบผล backtest ของคุณกับผลการซื้อขายจริงซ้ำๆ คุณจะไม่สามารถมั่นใจใน backtest ของคุณได้

นี่เป็นตัวอย่างที่ชัดเจนของวิธีการบรรลุเป้าหมายนี้:

  • ใช้งานอุปกรณ์การซื้อขายจริงของคุณเป็นระยะเวลาหนึ่ง เช่น 24 ชั่วโมง
  • บันทึกผลลัพธ์: การซื้อขายแต่ละครั้ง การออกแต่ละครั้ง การหยุดการขาดทุนแต่ละครั้ง
  • หลังจากช่วงเวลานี้ ให้รันโค้ด backtest ของคุณในช่วงเวลาเดียวกันนั้น
  • เปรียบเทียบผลลัพธ์ของ backtest กับผลลัพธ์จริงของคุณ!

เปรียบเทียบการซื้อขายแต่ละครั้งโดยละเอียด รหัส backtest ของคุณตั้งสมมติฐานอะไรบ้างซึ่งไม่ได้เป็นตัวแทนของการซื้อขายจริง?

อะไรคือความแตกต่าง?

  • backtest ของคุณมีแง่ดีไหม? ถ้าเป็นเช่นนั้นที่ไหน? ยังไง? ทำไม
  • backtest ของคุณมองโลกในแง่ร้ายเกินไปหรือเปล่า?

คุณต้องการให้ backtest แสดงผลในแง่ร้ายเล็กน้อยอย่างสม่ำเสมอ ซึ่งอนุรักษ์นิยม.

หลังจากทำเช่นนี้สองสามครั้ง ให้ปิดอุปกรณ์การซื้อขายของคุณ และพัฒนาทั้งโค้ด backtest และอุปกรณ์การซื้อขายของคุณ จากนั้น ย้ำ.

เนื่องจากอุปกรณ์การซื้อขายสดของคุณสามารถรันได้ด้วยขนาดคำสั่งซื้อที่ค่อนข้างเล็ก จึงไม่มีค่าใช้จ่ายมากนักในการทดสอบ

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

ตัวอย่างสิ่งที่ฉันพบเมื่อทำสิ่งนี้:

  • backtest มีแง่ดีมากเกินไปเกี่ยวกับราคาขายจำกัด ในการซื้อขายจริงมักจะมีสถานการณ์ gap-down ที่ทำให้กำไรลดลง
  • backtest มีทัศนคติเชิงบวกมากเกินไปเกี่ยวกับราคาดำเนินการซื้อ ในการซื้อขายจริง เป็นเรื่องยากที่จะดำเนินการราคาเปิดแบบติ๊ก
  • การทดสอบย้อนกลับไม่ได้จับคำสั่งขายแบบ STOP-LOSS ที่ค่าต่ำภายในขีดเดียว ในการซื้อขายจริงนี่เป็นการสิ้นสุดตำแหน่งก่อนกำหนด

นี่เป็นวิธีเดียวที่จะได้รับผลกำไรจากเครื่องมือการซื้อขาย crypto ของคุณ พัฒนาการทดสอบย้อนกลับของคุณเมื่อเวลาผ่านไป และทำซ้ำตามผลลัพธ์จริงเพื่อปรับปรุง

เครื่องมือการซื้อขาย การปรับคำสั่งจำกัดอัตโนมัติบน Binance

การทดสอบโมเดลการซื้อขายอัลกอริทึมของคุณย้อนหลังนั้นเป็นงานหนัก! สิ่งนี้ไม่ควรแปลกใจเลย ที่นี่ไม่มี 'เส้นทางที่ง่าย'

Source: https://medium.com/@gk_/3-keys-to-algo-crypto-backtesting-99f006cfd390?source=rss——-8—————–cryptocurrency

ประทับเวลา:

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

bitcoin

โหนดต้นทาง: 1101548
ประทับเวลา: พฤศจิกายน 3, 2021