Forex Backtesting หลาม
bt - Backtesting แบบยืดหยุ่นสำหรับ Python คืออะไร bt bt คือ backtesting framework ที่ยืดหยุ่นสำหรับ Python ที่ใช้เพื่อทดสอบกลยุทธ์การซื้อขายเชิงปริมาณ การทำข้อมูล Backtesting เป็นกระบวนการของการทดสอบกลยุทธ์เหนือชุดข้อมูลที่กำหนด กรอบนี้ช่วยให้คุณสามารถสร้างกลยุทธ์ที่ผสมผสานและตรงกับ Algos ต่างๆได้ มีจุดมุ่งหมายเพื่อส่งเสริมให้เกิดการสร้างบล็อคที่ใช้งานได้ง่ายและมีความยืดหยุ่นของตรรกะด้านกลยุทธ์เพื่ออำนวยความสะดวกในการพัฒนากลยุทธ์การซื้อขายที่ซับซ้อนอย่างรวดเร็ว เป้าหมาย: เพื่อช่วยประหยัด quants จากการคิดค้นใหม่ล้อและให้พวกเขามุ่งเน้นไปที่ส่วนสำคัญของการพัฒนากลยุทธ์งาน bt ได้รับการเข้ารหัสในภาษา Python และเข้าร่วมระบบนิเวศที่มีชีวิตชีวาและอุดมสมบูรณ์เพื่อการวิเคราะห์ข้อมูล ห้องสมุดจำนวนมากมีอยู่สำหรับการเรียนรู้ด้วยเครื่องการประมวลผลสัญญาณและสถิติและสามารถใช้ประโยชน์ได้เพื่อหลีกเลี่ยงการประดิษฐ์ล้อใหม่ซึ่งเป็นสิ่งที่เกิดขึ้นบ่อยครั้งเมื่อใช้ภาษาอื่นที่ don8217t มีความมั่งคั่งเดียวกันกับโครงการโอเพนซอร์สที่มีคุณภาพสูง bt สร้างขึ้นบน ffn - ไลบรารีฟังก์ชันทางการเงินสำหรับ Python ลองดูตัวอย่างง่ายๆนี่คือรสนิยมที่รวดเร็วของ BT: กลยุทธ์ Letta รุ่นง่าย Let8217s สร้างกลยุทธ์ง่ายๆ เราจะสร้างกลยุทธ์ที่มีการปรับสมดุลเป็นรายเดือนซึ่งเป็นกลยุทธ์เดียวที่เราวางน้ำหนักให้เท่ากันในแต่ละสินทรัพย์ในเอกภพของเรา ขั้นแรกเราจะดาวน์โหลดข้อมูลบางส่วน โดยค่าเริ่มต้น bt. get (นามแฝงสำหรับ ffn. get) จะดาวน์โหลดการปิดปรับปรุงจาก Yahoo Finance เราจะดาวน์โหลดข้อมูลบางอย่างที่เริ่มต้นในวันที่ 1 มกราคม 2010 เพื่อจุดประสงค์ของการสาธิตนี้ เมื่อเรามีข้อมูลแล้วเราจะสร้างกลยุทธ์ของเรา วัตถุยุทธศาสตร์ประกอบด้วยตรรกะด้านกลยุทธ์โดยการรวม Algos ต่างๆ สุดท้ายเราจะสร้าง Backtest ซึ่งเป็นชุดค่าผสมเชิงตรรกะของกลยุทธ์กับชุดข้อมูล เมื่อดำเนินการเสร็จแล้วเราสามารถเรียกใช้ผลการทดสอบหลังการขายและวิเคราะห์ผลลัพธ์ได้ ตอนนี้เราสามารถวิเคราะห์ผลการทดสอบหลังการขายของเราได้ ออบเจ็กต์ Result เป็น wrapper บาง ๆ ที่อยู่รอบ ๆ ffn. GroupStats ซึ่งจะเพิ่มวิธีการช่วยเหลือบางอย่าง การปรับเปลี่ยนกลยุทธ์ตอนนี้ถ้าเราใช้กลยุทธ์นี้เป็นประจำทุกสัปดาห์และใช้แนวทางรูปแบบความเสี่ยงแบบความเสี่ยงด้วยการใช้น้ำหนักที่เป็นสัดส่วนกับการผกผันของความผันผวนของสินทรัพย์แต่ละกลุ่มด้วยดีสิ่งที่เราต้องทำคือเสียบปลั๊กอินบางส่วน ดูด้านล่าง: ตามที่เห็นตรรกะด้านกลยุทธ์เป็นเรื่องที่เข้าใจได้ง่ายและสำคัญยิ่งกว่าง่ายต่อการปรับเปลี่ยน ความคิดของการใช้ง่าย Algos composable เพื่อสร้างกลยุทธ์เป็นหนึ่งในตึกที่สำคัญของ bt โครงสร้างต้นไม้อำนวยความสะดวกในการก่อสร้างและองค์ประกอบของกลยุทธ์การซื้อขายเชิงอัลกอริทึมเชิงซ้อนซึ่งเป็นแบบแยกส่วนและใช้งานได้ใหม่ นอกจากนี้ Node ต้นไม้แต่ละตัวมีดัชนีราคาของตนเองซึ่งสามารถใช้โดย Algos เพื่อกำหนดการจัดสรร Node8217s Algos และ AlgoStacks เป็นอีกหนึ่งคุณลักษณะหลักที่ช่วยในการสร้างตรรกะด้านกลยุทธ์แบบแยกส่วนและใช้ใหม่ได้ เนื่องจากความจำเพาะของพวกเขาบล็อกลอจิกเหล่านี้จึงง่ายต่อการทดสอบซึ่งเป็นขั้นตอนสำคัญในการสร้างโซลูชันทางการเงินที่มีประสิทธิภาพ bt ยังมีฟังก์ชันการทำแผนภูมิที่มีประโยชน์หลายอย่างซึ่งช่วยให้เห็นภาพผลลัพธ์ของการทำ backtest นอกจากนี้เรายังวางแผนที่จะเพิ่มแผนภูมิตารางและรูปแบบรายงานในอนาคตเช่นรายงาน PDF ที่สร้างขึ้นโดยอัตโนมัติ นอกจากนี้ bt จะคำนวณกลุ่มสถิติที่เกี่ยวข้องกับการทำข้อสอบย้อนหลังและเสนอวิธีที่รวดเร็วในการเปรียบเทียบสถิติต่างๆเหล่านี้ผ่านการทดสอบย้อนกลับต่างๆผ่านวิธีการแสดงผลลัพธ์ ความพยายามในการพัฒนาในอนาคตจะมุ่งเน้นไปที่: เนื่องจากลักษณะที่ยืดหยุ่นของ bt, การค้าระหว่างกันจะต้องเกิดขึ้นระหว่างการใช้งานและประสิทธิภาพการทำงาน การใช้งานจะเป็นสิ่งสำคัญเสมอไป แต่เราต้องการเพิ่มประสิทธิภาพให้มากที่สุด เราจะพัฒนาอัลกอริธึมเพิ่มเติมเมื่อเวลาผ่านไป นอกจากนี้เรายังสนับสนุนให้ทุกคนร่วมบริจาค algos ด้วยเช่นกัน นี่เป็นอีกหนึ่งจุดที่เราต้องการพัฒนาอย่างต่อเนื่องเนื่องจากการรายงานเป็นส่วนสำคัญของงาน การทำแผนภูมิและการรายงานยังอำนวยความสะดวกในการหาข้อผิดพลาดในตรรกะด้านกลยุทธ์ ภาพรวมสิ่งที่เป็นประโยชน์ตัวอย่างรวดเร็วคู่มือ Roadmap Installation Guide All About Algos ตัวอย่างโครงสร้างต้นไม้ API Github การค้นหาอย่างรวดเร็วการใช้งานที่มีการใช้งานร่วมกับ Pythona - ส่วนที่เราใช้เวลาสองถึงสามเดือนที่ QuantStart ใช้กลยุทธ์การซื้อขายต่างๆที่ใช้งูหลามและหมีแพนด้า ลักษณะของแพนด้า vectorised เพื่อให้แน่ใจว่าการดำเนินงานบางอย่างในชุดข้อมูลขนาดใหญ่มีความรวดเร็วอย่างมาก อย่างไรก็ตามรูปแบบของ backtester vectorised ที่เราได้ศึกษาถึงวันที่ต้องทนทุกข์ทรมานจากข้อบกพร่องบางอย่างในลักษณะที่การจำลองการค้าถูกจำลองขึ้น ในบทความชุดนี้เราจะพูดถึงแนวทางการจำลองยุทธศาสตร์ทางประวัติศาสตร์ที่สมจริงมากขึ้นโดยการสร้างสภาพแวดล้อม backtesting ที่ใช้เหตุการณ์โดยใช้ Python ซอฟต์แวร์ที่ขับเคลื่อนด้วยกิจกรรมก่อนที่เราจะเจาะลึกการพัฒนา backtester ดังกล่าวเราจำเป็นต้องเข้าใจแนวคิดเกี่ยวกับระบบที่ขับเคลื่อนโดยเหตุการณ์ วิดีโอเกมเป็นกรณีที่ใช้งานได้ง่ายสำหรับซอฟต์แวร์ที่ขับเคลื่อนโดยเหตุการณ์และเป็นตัวอย่างที่ง่ายในการสำรวจ วิดีโอเกมมีองค์ประกอบหลายอย่างที่โต้ตอบกันในการตั้งค่าแบบเรียลไทม์ที่เฟรมเรตสูง การดำเนินการนี้จะดำเนินการโดยเรียกใช้ชุดการคำนวณทั้งชุดภายในลูปแบบไม่ จำกัด ซึ่งเรียกว่าลูปเหตุการณ์หรือเกมลูป ในแต่ละรอบของเกมลูปจะมีการเรียกฟังก์ชันเพื่อรับเหตุการณ์ล่าสุด ซึ่งจะได้รับการสร้างขึ้นจากการกระทำก่อนหน้านี้ภายในเกม ขึ้นอยู่กับลักษณะของเหตุการณ์ซึ่งอาจรวมถึงการกดปุ่มหรือการคลิกเมาส์การดำเนินการที่ตามมาบางส่วนจะถูกนำมาซึ่งอาจจะยุติการวนซ้ำหรือสร้างเหตุการณ์เพิ่มเติมบางอย่าง กระบวนการนี้จะดำเนินต่อไป นี่คือตัวอย่างรหัสหลอกลวง: รหัสจะตรวจสอบกิจกรรมใหม่ ๆ อย่างต่อเนื่องและดำเนินการกระทำตามเหตุการณ์เหล่านี้ โดยเฉพาะอย่างยิ่งจะช่วยให้ภาพลวงตาของการจัดการตอบสนองแบบเรียลไทม์เนื่องจากรหัสถูกวนอย่างต่อเนื่องและมีการตรวจสอบเหตุการณ์ จะเห็นได้ชัดว่านี่เป็นสิ่งที่เราต้องการเพื่อจำลองการซื้อขายด้วยความถี่สูง เหตุใดระบบที่ขับเคลื่อนด้วยเหตุการณ์ที่เกิดจากเหตุการณ์ที่ได้รับการสนับสนุนจากผู้ให้บริการจะมีข้อดีมากกว่าวิธีที่เป็นแบบแผน: การใช้โค้ดซ้ำ - backtester ที่สร้างเหตุการณ์โดยการออกแบบสามารถใช้สำหรับการทำย้อนหลังย้อนหลังและการซื้อขายแบบสดด้วยการสลับส่วนประกอบน้อยที่สุด สิ่งนี้ไม่เป็นความจริงของเวกเตอร์เทสต์ที่ข้อมูลทั้งหมดต้องพร้อมใช้งานในการวิเคราะห์ทางสถิติ Lookahead Bias - ด้วย backtester ที่เกิดจากเหตุการณ์ไม่ได้มีอคติในการมองหาทิศทางเนื่องจากการรับข้อมูลตลาดถือเป็นเหตุการณ์ที่ต้องดำเนินการ ดังนั้นจึงเป็นไปได้ที่จะหยดฟีด backtester เหตุการณ์ที่ขับเคลื่อนด้วยข้อมูลตลาดจำลองวิธีการจัดการสั่งซื้อและระบบพอร์ตจะทำงาน ความสมจริง - backtesters ที่ขับเคลื่อนด้วยเหตุการณ์ช่วยให้สามารถปรับแต่งได้อย่างมากเกี่ยวกับวิธีดำเนินการใบสั่งซื้อและมีต้นทุนการทำธุรกรรมเกิดขึ้น มันเป็นเรื่องง่ายในการจัดการตลาดขั้นพื้นฐานและคำสั่ง จำกัด เช่นเดียวกับตลาดเมื่อเปิด (MOO) และตลาดเมื่อปิด (MOC) เนื่องจากตัวจัดการการแลกเปลี่ยนที่กำหนดเองสามารถสร้าง ถึงแม้ว่าระบบที่ขับเคลื่อนด้วยเหตุการณ์จะมีประโยชน์มากมาย แต่พวกเขาต้องเผชิญกับข้อเสียที่สำคัญสองข้อเมื่อใช้ระบบเวคเตอร์แบบเวกเตอร์ที่เรียบง่ายกว่า ประการแรกพวกเขามีความซับซ้อนมากที่จะใช้และทดสอบ มีชิ้นส่วนที่เคลื่อนที่มากขึ้นซึ่งจะนำไปสู่โอกาสในการแนะนำแมลงมากขึ้น เพื่อลดขั้นตอนวิธีการทดสอบซอฟต์แวร์ที่เหมาะสมเช่นการทดสอบที่ขับเคลื่อนด้วยการพัฒนาสามารถใช้ ประการที่สองพวกเขาจะทำงานช้าลงเมื่อเทียบกับระบบเวกเตอร์ ไม่สามารถใช้การดำเนินการแบบเวกเตอร์ที่เหมาะสมที่สุดเมื่อทำการคำนวณทางคณิตศาสตร์ เราจะพูดถึงวิธีการที่จะเอาชนะข้อ จำกัด เหล่านี้ในบทความต่อ ๆ ไป ภาพรวมของ Backtester ที่เป็นไปตามเหตุการณ์การประยุกต์ใช้วิธีการที่เกิดขึ้นกับเหตุการณ์ในระบบ backtesting จำเป็นต้องกำหนดคอมโพเนนต์ (หรือออบเจ็กต์) ของเราที่จะจัดการกับงานเฉพาะ: Event - Event คือหน่วยพื้นฐานของระบบ event-driven มีประเภท (เช่น MARKET, SIGNAL, ORDER หรือ FILL) ที่กำหนดว่าจะจัดการกับเหตุการณ์อย่างไร คิวเหตุการณ์ (Event Queue) - Queue Queue (คิวเหตุการณ์) เป็นออบเจกต์ Python Queue ในหน่วยความจำที่เก็บอ็อบเจ็กต์ Sub-class ของเหตุการณ์ทั้งหมดที่สร้างขึ้นโดยซอฟต์แวร์ที่เหลือ DataHandler - DataHandler เป็นคลาสพื้นฐานนามธรรม (ABC) ที่แสดงส่วนติดต่อสำหรับการจัดการทั้งข้อมูลทางประวัติศาสตร์หรือข้อมูลตลาดสด ความยืดหยุ่นนี้มีความสำคัญอย่างมากเนื่องจากโมดูลกลยุทธ์และพอร์ตการลงทุนสามารถนำมาใช้ซ้ำได้ระหว่างทั้งสองวิธี DataHandler สร้าง MarketEvent ใหม่เมื่อมีการเต้นของหัวใจทุกระบบ (ดูด้านล่าง) กลยุทธ์ - กลยุทธ์ยังเป็น ABC ที่แสดงส่วนติดต่อสำหรับการรับข้อมูลการตลาดและการสร้าง SignalEvents ที่สอดคล้องกันซึ่งจะใช้ประโยชน์โดยสิ้นเชิงโดย Portfolio object A SignalEvent มีสัญลักษณ์สัญลักษณ์ทิศทาง (ยาวหรือสั้น) และ timestamp Portfolio - นี่คือ ABC ซึ่งจัดการการจัดการคำสั่งที่เกี่ยวข้องกับตำแหน่งปัจจุบันและตำแหน่งที่ตามมาสำหรับกลยุทธ์ นอกจากนี้ยังดำเนินการบริหารความเสี่ยงในกลุ่มผลงาน ในการใช้งานที่มีความซับซ้อนมากขึ้นนี้อาจได้รับการแต่งตั้งให้เป็นระดับ RiskManagement พอร์ตที่ใช้ SignalEvents จากคิวและสร้าง OrderEvents ที่ได้รับการเพิ่มลงในคิว ExecutionHandler - ExecutionHandler จำลองการเชื่อมต่อกับนายหน้าซื้อขายหลักทรัพย์ งานของผู้ดำเนินการคือการใช้ OrderEvents จาก Queue และดำเนินการโดยใช้วิธีจำลองหรือการเชื่อมต่อกับนายหน้าในตับ เมื่อดำเนินการตามคำสั่งตัวจัดการจะสร้าง FillEvents ซึ่งอธิบายถึงสิ่งที่เกิดขึ้นจริงรวมทั้งค่าธรรมเนียมค่าคอมมิชชั่นและความล่าช้า (หากมีการสร้างแบบจำลอง) Loop - ส่วนประกอบทั้งหมดเหล่านี้ถูกห่อหุ้มไว้ในลูปเหตุการณ์ซึ่งจะจัดการกับประเภทเหตุการณ์ทั้งหมดอย่างถูกต้องและกำหนดเส้นทางไปยังคอมโพเนนต์ที่เหมาะสม นี่เป็นรูปแบบพื้นฐานของเครื่องมือการซื้อขาย มีขอบเขตที่สำคัญสำหรับการขยายตัวโดยเฉพาะอย่างยิ่งเกี่ยวกับวิธีใช้พอร์ตการลงทุน นอกจากนี้รูปแบบต้นทุนการทำธุรกรรมที่แตกต่างกันอาจถูกแยกออกเป็นลำดับชั้นของตนเอง ในขั้นตอนนี้จะนำเสนอความซับซ้อนที่ไม่จำเป็นภายในบทความชุดนี้ดังนั้นตอนนี้เราจะไม่พูดถึงเรื่องนี้ต่อไป ในบทแนะนำในภายหลังเราอาจจะขยายระบบเพื่อรวมความสมจริงเพิ่มเติม นี่คือตัวอย่างรหัส Python ที่แสดงให้เห็นว่า backtester ทำงานอย่างไรในทางปฏิบัติ มีสองลูปที่เกิดขึ้นในโค้ด ห่วงด้านนอกใช้เพื่อให้หัวใจเต้นแรง backtester สำหรับการซื้อขายสดนี่คือความถี่ที่จะมีการสำรวจข้อมูลตลาดใหม่ สำหรับกลยุทธ์การทำ backtesting นี้ไม่จำเป็นอย่างยิ่งเนื่องจาก backtester ใช้ข้อมูลตลาดที่มีอยู่ในรูปแบบฟีดหยด (ดูบรรทัด bars. updatebars ()) ลูปภายในใช้จัดการเหตุการณ์จากวัตถุคิวเหตุการณ์ เหตุการณ์ที่เฉพาะเจาะจงได้รับการมอบหมายให้กับคอมโพเนนต์ที่เกี่ยวข้องและมีการเพิ่มกิจกรรมใหม่ ๆ ลงในคิว เมื่อคิวเหตุการณ์ว่างเปล่าลูป heartbeat จะยังคง: นี่เป็นโครงร่างพื้นฐานของวิธีการออกแบบ backtester ที่ขับเคลื่อนด้วยเหตุการณ์ ในบทความต่อไปเราจะพูดถึงลำดับชั้นของคลาส เพียงแค่เริ่มต้นกับการค้าขายเชิงปริมาณเป็นแอพพลิเคชันที่ใช้ในการวิเคราะห์กลยุทธ์พื้นฐานสำหรับตลาดซื้อขายเงินตราต่างประเทศโดยอิงจากข้อมูลในอดีต รหัสนี้เขียนขึ้นสำหรับ Python 2.7 และไม่สามารถทำงานร่วมกับ Python 3 ได้สิ่งที่ต้องทำก่อน: Tkinter ในการเรียกใช้โปรแกรมให้ดาวน์โหลดไฟล์ทั้งหมดรักษาโครงสร้างไดเร็กทอรีเดียวกันและเรียกใช้ไฟล์ inputhandling. py จากล่าม Python การตั้งค่าพารามิเตอร์มีดังต่อไปนี้: StartEnd Date: วันที่ผูกข้อมูลที่ผ่านมาที่จะทดสอบ Initial Deposit: จำนวนเงิน (USD) ในบัญชีซื้อขายหลักทรัพย์เริ่มต้นด้วย TimeFrame: ความกว้างของแต่ละแถบของประวัติ ข้อมูลที่จะได้รับการทดสอบนี่คือกรอบเวลาที่ใช้สำหรับแต่ละกลยุทธ์สัญลักษณ์: สนับสนุนเฉพาะ EURUSD, USDJPY, GBPUSD และ USDCHF โดยมีข้อมูลรวมอยู่ในตำแหน่ง: จำกัด backtest เพื่อรวมเฉพาะตำแหน่งที่ยาวตำแหน่งสั้นหรือทั้งสองอย่างเข้าด้วยกัน เกณฑ์ Criterium: กลยุทธ์หลักที่ใช้ในการจำลองการซื้อขายในอดีต (Moving Average Crossover และ Stochastics) Leverage (margin): สามารถใช้ Leverage ได้สูงสุดที่ต้องการขนาดของโลภที่ต้องการ: ขนาดล็อตที่มีการซื้อขายเมื่อมีการเปิดตำแหน่ง หาก margin อิสระ จำกัด ขนาดล็อตให้น้อยลงจะมีการปรับค่าระหว่างการทดสอบ Spread Management: TPSL - กำหนดกำไรคงที่และหยุดการขาดทุนในระดับ Pips จากราคาเริ่มต้น SL - ตั้งค่า Stop Loss เป็นเปอร์เซ็นต์ของราคาและ update every bar เมื่อพารามิเตอร์เหล่านี้ถูกป้อนแล้วโปรแกรมจะรัน backtest backdest โดยใช้แถบโดยการวิเคราะห์บาร์เพื่อหาค่าความสมดุลของบัญชีสุดท้าย โปรแกรมนี้สามารถขยายได้โดยเพิ่มกลยุทธ์การซื้อขายเพิ่มเติม ควรใช้อินเทอร์เฟซเดียวกันกับกลยุทธ์ Moving Average และ Stochastic คุณไม่สามารถดำเนินการดังกล่าวได้ในขณะนี้ คุณลงชื่อเข้าใช้ด้วยแท็บหรือหน้าต่างอื่น โหลดใหม่เพื่อรีเฟรชเซสชันของคุณ คุณออกจากระบบในแท็บหรือหน้าต่างอื่น โหลดซ้ำเพื่อรีเฟรชเซสชันของคุณ QSForex เป็น opentesting ที่ขับเคลื่อนด้วยเหตุการณ์และแพลตฟอร์มการซื้อขายสดสำหรับการใช้งานในตลาดแลกเปลี่ยนเงินตราต่างประเทศ (forex) ปัจจุบันอยู่ในสถานะอัลฟา ได้รับการสร้างขึ้นเป็นส่วนหนึ่งของชุด Forex Trading Diary ใน QuantStart เพื่อมอบชุมชนการค้าที่มีระบบด้วยเครื่องมือการซื้อขายที่มีประสิทธิภาพซึ่งช่วยให้สามารถใช้งานและทดสอบกลยุทธ์ forex แบบตรงไปตรงมาได้ ซอฟต์แวร์มีให้ภายใต้ใบอนุญาตของ MIT อนุญาต (ดูด้านล่าง) โอเพ่นซอร์ส - QSForex ได้รับการเผยแพร่ภายใต้ใบอนุญาต MIT แบบโอเพนซอร์สซึ่งอนุญาตให้ใช้งานได้เต็มรูปแบบทั้งในเชิงวิจัยและเชิงพาณิชย์โดยไม่มีข้อ จำกัด แต่ไม่มีการรับประกันใด ๆ ฟรี - QSForex เป็นบริการฟรีและไม่มีค่าใช้จ่ายใด ๆ ในการดาวน์โหลดหรือใช้งาน การทำงานร่วมกัน - เนื่องจาก QSForex เป็นนักพัฒนาซอฟต์แวร์โอเพนซอร์สหลายคนที่ทำงานร่วมกันเพื่อปรับปรุงซอฟต์แวร์ มีการเพิ่มคุณลักษณะใหม่ ๆ เป็นประจำ ข้อบกพร่องใด ๆ ได้รับการกำหนดอย่างรวดเร็วและคงที่ การพัฒนาซอฟต์แวร์ - QSForex ถูกเขียนขึ้นในภาษา Python สำหรับการสนับสนุนข้ามแพลตฟอร์มที่เรียบง่าย QSForex มีชุดทดสอบหน่วยสำหรับรหัสการคำนวณส่วนใหญ่และมีการเพิ่มการทดสอบใหม่ ๆ อย่างต่อเนื่องสำหรับคุณลักษณะใหม่ ๆ สถาปัตยกรรมที่ขับเคลื่อนด้วยกิจกรรม - QSForex เป็นเหตุการณ์ที่ขับเคลื่อนอย่างสมบูรณ์ทั้งสำหรับการทำ backtesting และการซื้อขายสดซึ่งจะนำไปสู่การเปลี่ยนกลยุทธ์จากขั้นตอนการวิจัยไปสู่การดำเนินการซื้อขายแบบสด ต้นทุนการทำธุรกรรม - ค่าใช้จ่ายในการแพร่กระจายจะรวมอยู่ในค่าเริ่มต้นสำหรับกลยุทธ์ที่ได้รับการสนับสนุนทั้งหมด การทำ Backtesting - QSForex มีการทดสอบคู่แบบหลายวันแบบ multi-currency เทรดดิ้ง - QSForex สนับสนุนการค้าระหว่างวันโดยอาศัย API การเป็นตัวแทนซื้อขายสัญญาซื้อขายล่วงหน้า (OANDA Brokerage API) ในกลุ่มคู่ค้า เมตริกประสิทธิภาพ - ปัจจุบัน QSForex สนับสนุนการวัดผลการปฏิบัติงานพื้นฐานและการสร้างภาพข้อมูลส่วนทุนโดยใช้ไลบรารีการแสดงภาพ Matplotlib และ Seaborn การติดตั้งและการใช้งาน 1) ไปที่ oanda และตั้งค่าบัญชีเพื่อขอรับข้อมูลรับรองการตรวจสอบ API ซึ่งคุณจะต้องดำเนินการซื้อขายสด ฉันอธิบายวิธีดำเนินการนี้ในบทความนี้: quantstartarticlesForex-Trading-Diary-1-Automated-Forex-Trading-with-the-OANDA-API 2) โคลนพื้นที่เก็บข้อมูล git นี้ลงในตำแหน่งที่เหมาะสมบนเครื่องของคุณโดยใช้คำสั่งต่อไปนี้ในเทอร์มินัลของคุณ: git clone githubmhallsmooreqsforex. git ทางเลือกคุณสามารถดาวน์โหลดไฟล์ซิปของสาขาหลักปัจจุบันที่ githubmhallsmooreqsforexarchivemaster. zip 3) สร้างชุดตัวแปรสภาพแวดล้อมสำหรับการตั้งค่าทั้งหมดที่พบในไฟล์ settings. py ในไดเร็กทอรีรากของแอ็พพลิเคชัน หรือคุณสามารถกำหนดการตั้งค่าเฉพาะของคุณโดยการเขียนทับ os. environ. get (.) สำหรับแต่ละการตั้งค่า: 4) สร้างสภาพแวดล้อมเสมือน (virtualenv) สำหรับโค้ด QSForex และใช้ pip เพื่อติดตั้งข้อกำหนด ตัวอย่างเช่นในระบบ Unix (Mac หรือ Linux) คุณอาจสร้างไดเร็กทอรีดังต่อไปนี้โดยการป้อนคำสั่งต่อไปนี้ในเทอร์มินัล: ซึ่งจะสร้างสภาพแวดล้อมเสมือนใหม่เพื่อติดตั้งแพคเกจลงใน สมมติว่าคุณดาวน์โหลดพื้นที่เก็บข้อมูล git QSForex ลงในไดเร็กทอรีตัวอย่างเช่น projectsqsforex (เปลี่ยนไดเร็กทอรีนี้ไปที่ใดก็ตามที่คุณติดตั้ง QSForex) จากนั้นในการติดตั้งแพคเกจคุณจะต้องใช้คำสั่งต่อไปนี้: จะใช้เวลาสักครู่เป็น NumPy, ต้องรวบรวม SciPy, Pandas, Scikit-Learn และ Matplotlib มีหลายแพคเกจที่จำเป็นสำหรับการทำงานนี้ดังนั้นโปรดดูที่บทความทั้งสองนี้สำหรับข้อมูลเพิ่มเติม: นอกจากนี้คุณจำเป็นต้องสร้างการเชื่อมโยงสัญลักษณ์จากไดเรกทอรีไซต์แพคเกจของคุณไปยังไดเรกทอรีการติดตั้ง QSForex ของคุณเพื่อที่จะสามารถโทร นำเข้า qsforex ภายในรหัส เมื่อต้องการทำเช่นนี้คุณจะต้องมีคำสั่งคล้ายกับต่อไปนี้: ตรวจสอบให้แน่ใจว่าได้เปลี่ยน projectqsforex ไปยังไดเร็กทอรีการติดตั้งและ venvqsforexlibpython2.7site-packages ของคุณไปยังไดเร็กทอรี packages virtualenv site ของคุณ ขณะนี้คุณสามารถเรียกใช้คำสั่งต่อไปได้อย่างถูกต้อง 5) ในขั้นตอนนี้หากคุณเพียงแค่ต้องการดำเนินการฝึกอบรมหรือซื้อขายหลักทรัพย์อยู่แล้วคุณสามารถเรียกใช้ python tradingtrading. py ซึ่งจะใช้กลยุทธ์การซื้อขาย TestStrategy เริ่มต้น นี้ก็ซื้อหรือขายสกุลเงินทุกคู่ที่ 5 เป็นการทดสอบอย่างหมดจด - อย่าใช้ในสภาพแวดล้อมการค้าขายสดหากคุณต้องการสร้างกลยุทธ์ที่มีประโยชน์มากขึ้นเพียงแค่สร้างชั้นเรียนใหม่ด้วยชื่อที่สื่อความหมายเช่น MeanReversionMultiPairStrategy และตรวจสอบให้แน่ใจว่ามีเมธอด calculatesignals คุณจะต้องผ่านรายการชั้นคู่นี้เช่นเดียวกับคิวกิจกรรมเช่นใน tradingtrading. py โปรดดูรายละเอียดที่ strategystrategy. py 6) ในการดำเนินการทดสอบย้อนหลังใด ๆ จำเป็นต้องสร้างข้อมูลอัตราแลกเปลี่ยนจำลองหรือดาวน์โหลดข้อมูลประวัติที่ผ่านมา หากคุณต้องการลองใช้ซอฟต์แวร์นี้วิธีที่เร็วที่สุดในการสร้างตัวอย่างข้อมูลคือการสร้างข้อมูลจำลอง รูปแบบข้อมูลปัจจุบันที่ใช้โดย QSForex เหมือนกับข้อมูลที่ได้รับจาก DukasCopy Historical Data Feed ที่ dukascopyswissenglishmarketwatchhistorical ในการสร้างข้อมูลที่ผ่านมาโปรดตรวจสอบว่าการตั้งค่า CSVDATADIR ใน settings. py คือการตั้งค่าไปยังไดเรกทอรีที่คุณต้องการให้ข้อมูลที่ผ่านมาอยู่ จากนั้นคุณต้องใช้ generatesimulatedpair. py ซึ่งอยู่ภายใต้ไดเร็กทอรีสคริปต์ คาดว่าอาร์กิวเมนต์บรรทัดคำสั่งเดียวซึ่งในกรณีนี้คือสกุลเงินคู่ในรูปแบบ BBBQQQ ตัวอย่างเช่นในขั้นตอนนี้สคริปต์จะถูกเข้ารหัสเป็นฮาร์ดคอดเพื่อสร้างข้อมูลเดือนเดียวสำหรับเดือนมกราคม 2014 นั่นคือคุณจะเห็นไฟล์แต่ละรูปแบบของรูปแบบ BBBQQQYYYMMDD. csv (เช่น GBPUSD20140112.csv) ปรากฏใน CSVDATADIR ของคุณทุกวันทำการ เดือนนั้น ถ้าคุณต้องการเปลี่ยนเดือนของการส่งออกข้อมูลเพียงแค่แก้ไขไฟล์และเรียกใช้อีกครั้ง 7) ตอนนี้ข้อมูลย้อนหลังได้รับการสร้างขึ้นแล้วคุณจะสามารถทำ backtest ได้ ไฟล์ backtest จัดเก็บไว้ใน backtestbacktest. py แต่จะมีเฉพาะ Backtest เท่านั้น หากต้องการใช้งานแบบทดสอบจริงคุณจำเป็นต้องสร้างคลาสนี้ใหม่และจัดเตรียมโมดูลที่จำเป็น วิธีที่ดีที่สุดในการดูวิธีดำเนินการนี้คือดูตัวอย่างการย้าย Crossover ของ Moving Average ในไฟล์ examplesmac. py และใช้เป็นเทมเพลต ใช้ MovingAverageCrossStrategy ซึ่งพบใน strategystrategy. py นี่เป็นค่าเริ่มต้นในการซื้อขายทั้ง GBPUSD และ EURUSD เพื่อแสดงให้เห็นถึงการใช้สกุลเงินหลายสกุล ใช้ข้อมูลที่พบใน CSVDATADIR ในการรันตัวอย่าง backtest ตัวอย่างให้ทำตามขั้นตอนต่อไปนี้: จะใช้เวลาสักครู่ ในระบบเดสก์ทอปอูบุนตูของฉันที่บ้านพร้อมกับข้อมูลทางประวัติศาสตร์ที่สร้างขึ้นผ่าน generatesimulatedpair. py ใช้เวลาประมาณ 5-10 นาทีในการวิ่ง ส่วนใหญ่ของการคำนวณนี้จะเกิดขึ้นเมื่อสิ้นสุดการทดสอบจริงในขณะที่คำนวณเบ็ดเตล็ดดังนั้นโปรดจำไว้ว่าโค้ดไม่ได้แขวนไว้โปรดทิ้งไว้จนกว่าจะเสร็จสิ้น 8) หากคุณต้องการดูผลการดำเนินงานของชุดทดสอบหลังการขาย (backtest) คุณสามารถใช้ output. py เพื่อดูเส้นโค้งส่วนได้เสีย (return return) และเส้นโค้งเบี้ยว (drawdown curve): และ thats it ในขั้นตอนนี้คุณพร้อมแล้ว เพื่อเริ่มต้นสร้าง backtests ของคุณเองโดยการปรับเปลี่ยนหรือผนวกกลยุทธ์ใน strategystrategy. py และใช้ข้อมูลจริงที่ดาวน์โหลดมาจาก DukasCopy (dukascopyswissenglishmarketwatchhistorical) หากคุณมีคำถามใด ๆ เกี่ยวกับการติดตั้งโปรดอย่าลังเลที่จะส่งอีเมลมาที่ mikequantstart หากคุณมีข้อบกพร่องใด ๆ หรือปัญหาอื่น ๆ ที่คุณคิดว่าอาจเป็นเพราะโค้ดเบสโดยเฉพาะคุณสามารถเปิดประเด็น Github ได้ที่นี่: githubmhallsmooreqsforexissues ลิขสิทธิ์ (c) 2015 Michael Halls-Moore ได้รับอนุญาตจากบุคคลอื่นโดยไม่มีค่าใช้จ่าย ได้รับสำเนาซอฟต์แวร์นี้และไฟล์เอกสารที่เกี่ยวข้อง ("ซอฟต์แวร์") เพื่อจัดการกับซอฟต์แวร์โดยไม่มีข้อ จำกัด รวมถึง แต่ไม่ จำกัด เพียงสิทธิในการใช้คัดลอกแก้ไขรวมผสานเผยแพร่แจกจ่าย sublicense และหรือขายสำเนาซอฟต์แวร์, และอนุญาตให้บุคคลที่ซอฟต์แวร์ได้รับมอบให้ทำเช่นนั้นภายใต้เงื่อนไขดังต่อไปนี้ประกาศเกี่ยวกับลิขสิทธิ์และประกาศการอนุญาตนี้จะรวมอยู่ในสำเนาทั้งหมดหรือส่วนสำคัญของซอฟต์แวร์ ซอฟต์แวร์จะได้รับการจัดหาโดยไม่ได้รับการรับประกันใด ๆ โดยชัดแจ้งหรือโดยนัยรวมถึง แต่ไม่ จำกัด เพียงการรับประกันความสามารถในการทำกำไรความเหมาะสมสำหรับวัตถุประสงค์เฉพาะและการไม่ใช้การไม่ละเมิดลิขสิทธิ์ ไม่ว่าในกรณีใด ๆ ผู้แต่งหรือผู้ถือลิขสิทธิ์จะไม่รับผิดต่อการถูกเรียกร้องความเสียหายหรือความรับผิดอื่น ๆ ไม่ว่าจะในการกระทำความผิดสัญญาเช่าหรืออื่น ๆ ที่เกิดขึ้นจากหรือเกี่ยวข้องกับซอฟต์แวร์หรือการใช้หรือการทำสัญญาอื่น ๆ ซอฟต์แวร์. Forex Trading ข้อจำกัดความรับผิดชอบในการซื้อขายอัตราแลกเปลี่ยนเงินตราต่างประเทศมีความเสี่ยงสูงและอาจไม่เหมาะสำหรับนักลงทุนทุกราย ผลการดำเนินงานที่ผ่านมาไม่ได้บ่งบอกถึงผลการดำเนินงานในอนาคต ระดับการยกระดับสูงสามารถทำงานได้ดีกับคุณและคุณ ก่อนตัดสินใจลงทุนในตลาดหลักทรัพย์ต่างประเทศคุณควรพิจารณาวัตถุประสงค์การลงทุนระดับประสบการณ์และความกระหายที่มีความเสี่ยงอย่างรอบคอบ ความเป็นไปได้ที่จะทำให้คุณสูญเสียบางส่วนหรือทั้งหมดของการลงทุนครั้งแรกของคุณดังนั้นคุณจึงไม่ควรลงทุนเงินที่คุณไม่สามารถจะเสียได้ คุณควรตระหนักถึงความเสี่ยงทั้งหมดที่เกี่ยวข้องกับการซื้อขายเงินตราต่างประเทศและขอคำแนะนำจากที่ปรึกษาทางการเงินอิสระหากคุณมีข้อสงสัยใด ๆ
Comments
Post a Comment