หากคุณเป็นนักลงทุนหรือนักลงทุนและต้องการได้รับทักษะการซื้อขายเชิงปริมาณคุณจะอยู่ในสถานที่ที่เหมาะสม Trading with Python course จะช่วยให้คุณมีเครื่องมือและวิธีปฏิบัติที่ดีที่สุดสำหรับการวิจัยเชิงปริมาณรวมถึง ฟังก์ชั่นและสคริปต์ที่เขียนขึ้นโดยผู้ค้าเชิงปริมาณผู้เชี่ยวชาญหลักสูตรนี้จะช่วยให้คุณได้รับผลกระทบสูงสุดสำหรับเวลาและเงินลงทุนของคุณมุ่งเน้นไปที่การประยุกต์ใช้การเขียนโปรแกรมเพื่อการค้ามากกว่าทฤษฎีคอมพิวเตอร์ทฤษฎีหลักสูตรจะจ่ายให้กับตัวเองได้อย่างรวดเร็วโดยการประหยัดเวลาในการประมวลผลข้อมูลด้วยตนเอง คุณจะใช้เวลามากในการค้นคว้ากลยุทธ์ของคุณและนำไปสู่การค้าขายที่มีกำไรภาพรวมของหลักสูตร 1 พื้นฐานคุณจะได้เรียนรู้ว่าทำไม Python เป็นเครื่องมือที่เหมาะสำหรับการซื้อขายเชิงปริมาณเราจะเริ่มจากการสร้างสภาพแวดล้อมการพัฒนาและจะนำคุณไปสู่ห้องสมุดวิทยาศาสตร์ ส่วนที่ 2 การจัดการข้อมูลเรียนรู้วิธีการรับข้อมูลจากแหล่งข้อมูลฟรีต่างๆเช่น Yahoo Finance, CBOE และเว็บไซต์อื่น ๆ อ่านและเขียนข้อมูลหลายรูปแบบรวมถึงไฟล์ CSV และ Excel ส่วนที่ 3 กลยุทธ์การวิจัยเรียนรู้ในการคำนวณ PL และตัวชี้วัดประสิทธิภาพการทำงานเช่น Sharpe และ Drawdown สร้างกลยุทธ์การซื้อขายและเพิ่มประสิทธิภาพการทำงานของงานตัวอย่างของกลยุทธ์จะกล่าวถึงในส่วนนี้ส่วนที่ 4 จะมีชีวิตอยู่ ส่วนนี้เป็นศูนย์กลางเกี่ยวกับโบรกเกอร์ Interactive API คุณจะได้เรียนรู้วิธีการรับข้อมูลหุ้นในแบบเรียลไทม์และสั่งซื้อสินค้าสดจำนวนมากตัวอย่างเช่นรหัสเนื้อหาของหลักสูตรประกอบด้วยโน้ตบุ๊คที่มีข้อความร่วมกับรหัสแบบโต้ตอบเช่นนี้คุณจะสามารถเรียนรู้ได้โดย การโต้ตอบกับโค้ดและการปรับเปลี่ยนตามความชอบของคุณเองมันจะเป็นจุดเริ่มต้นที่ดีสำหรับการเขียนกลยุทธ์ของคุณเองในขณะที่บางหัวข้อมีการอธิบายในรายละเอียดมากเพื่อช่วยให้คุณเข้าใจแนวคิดพื้นฐานในกรณีส่วนใหญ่คุณจะไม่จำเป็นต้องเขียน รหัสระดับต่ำของคุณเองเนื่องจากการสนับสนุนโดยไลบรารีโอเพนซอร์สที่มีอยู่ไลบรารี TradingWithPython ประกอบด้วยฟังก์ชันการทำงานที่หลากหลาย ในหลักสูตรนี้เป็นฟังก์ชั่นพร้อมใช้งานและจะใช้ตลอดหลักสูตรหมีแพนด้าจะให้พลังการยกหนักที่จำเป็นสำหรับการขูดรีดข้อมูลรหัสทั้งหมดมีให้ภายใต้ใบอนุญาต BSD ซึ่งอนุญาตให้ใช้ในเชิงพาณิชย์ได้ ประเมินหลักสูตรนักบินของหลักสูตรที่จัดขึ้นในฤดูใบไม้ผลิของปี 2013 นี้คือสิ่งที่นักเรียนได้กล่าวหลักสูตรออกแบบมาอย่างดีและดี Trainj ดีแน่นอนคุ้มค่าและเวลาของฉัน Lave Jev เห็นได้ชัดว่าสิ่งที่เขาลึกของความคุ้มครองคือ สมบูรณ์แบบถ้า Jev ทำงานอะไรเช่นนี้อีกครั้งฉันจะเป็นคนแรกที่ลงทะเบียน John Phillips หลักสูตรของคุณจริงๆฉันเริ่มกระโดดเริ่มพิจารณาหลามสำหรับการวิเคราะห์ระบบสต็อค Forex Trading Diary 1 - Automated Forex Trading กับ OANDA API กล่าวก่อนหน้านี้ใน QuantStart 2014 ในบทความ Review ที่ฉันจะใช้จ่ายบางส่วนของการเขียนเกี่ยวกับการซื้อขาย Forex อัตโนมัติ 2015.Given ที่ตัวฉันเองมักจะดำเนินการวิจัยในตลาดหุ้นและตลาดล่วงหน้าฉันคิดว่ามันจะสนุกและ educa เพื่อเขียนเกี่ยวกับประสบการณ์ของฉันในการเข้าสู่ตลาด forex ในรูปแบบของไดอารี่แต่ละรายการไดอารี่จะพยายามที่จะสร้างทั้งหมดเหล่านั้นก่อน แต่ยังควรจะค่อนข้างตัวเอง contained. In รายการแรกของไดอารี่ฉันจะอธิบายว่า เพื่อสร้างบัญชีการเป็นนายหน้าซื้อขายหลักทรัพย์ใหม่กับ OANDA รวมถึงวิธีการสร้างเครื่องมือการซื้อขายแบบมัลติเธรดที่ขับเคลื่อนโดยเหตุการณ์ซึ่งจะสามารถดำเนินการเทรดได้อย่างอัตโนมัติทั้งในด้านการปฏิบัติและการใช้ชีวิตเมื่อปีที่แล้วเราใช้เวลามากในการดูงาน event - backtester ขับเคลื่อนหลักสำหรับหุ้นและ ETFs หนึ่งที่ฉันนำเสนอด้านล่างนี้มุ่งสู่ forex และสามารถใช้สำหรับการซื้อขายกระดาษหรือ live trading ฉันได้เขียนทั้งหมดของคำแนะนำต่อไปนี้สำหรับ Ubuntu 14 04 แต่พวกเขาควรจะแปลเป็น Windows หรือ Mac OS X โดยใช้การแจกแจง Python เช่น Anaconda เฉพาะไลบรารีเพิ่มเติมที่ใช้สำหรับเครื่องมือการค้า Python เท่านั้นคือไลบรารีที่ต้องการซึ่งจำเป็นสำหรับการสื่อสารกับ OANDA API เนื่องจากเป็นโพรเซสแรก st โดยตรงเกี่ยวกับการซื้อขายแลกเปลี่ยนเงินตราต่างประเทศและรหัสที่นำเสนอด้านล่างนี้สามารถปรับให้เข้ากับสภาพแวดล้อมการซื้อขายแบบสดได้อย่างตรงไปตรงมาขอแสดงความรับผิดชอบต่อไปนี้คำแถลงการณ์การค้าอัตราแลกเปลี่ยนเงินตราต่างประเทศมีความเสี่ยงสูงและอาจไม่เหมาะสมสำหรับ นักลงทุนทุกรายผลการดำเนินงานที่ผ่านมาไม่ได้เป็นตัวบ่งชี้ถึงผลการดำเนินงานในอนาคตระดับการให้อำนาจในระดับสูงสามารถทำงานได้ดีกับคุณเช่นเดียวกับคุณก่อนที่จะตัดสินใจลงทุนในตลาดหลักทรัพย์ต่างประเทศคุณควรพิจารณาวัตถุประสงค์การลงทุนระดับประสบการณ์และความกระหายของความเสี่ยง คุณอาจต้องสูญเสียบางส่วนหรือทั้งหมดของการลงทุนครั้งแรกของคุณดังนั้นคุณจึงไม่ควรลงทุนเงินที่คุณไม่สามารถจะสูญเสียคุณควรตระหนักถึงความเสี่ยงทั้งหมดที่เกี่ยวข้องกับการซื้อขายแลกเปลี่ยนเงินตราต่างประเทศและขอคำแนะนำจากที่ปรึกษาทางการเงินอิสระหากคุณ มีข้อสงสัยใด ๆ ซอฟต์แวร์นี้มีให้โดยมีและการรับประกันโดยชัดแจ้งหรือโดยนัยซึ่งรวมถึง แต่ไม่ จำกัด เฉพาะ ในกรณีที่ผู้สำเร็จราชการแผ่นดินหรือผู้ร่วมสมทบต้องไม่รับผิดต่อความเสียหายโดยทางตรงทางอ้อมอุบัติเหตุหรือความเสียหายที่เป็นแบบอย่างหรือเป็นผลสืบเนื่องซึ่งรวมถึง แต่ไม่ จำกัด เพียงการจัดหาสินค้าหรือบริการทดแทน การสูญเสียการใช้ข้อมูลหรือผลกำไรหรือการหยุดชะงักทางธุรกิจอย่างไรก็ตามเกิดขึ้นและเกี่ยวกับทฤษฎีความรับผิดใด ๆ ไม่ว่าจะในสัญญาความรับผิดที่เข้มงวดหรือการละเมิดรวมทั้งประมาทหรืออื่น ๆ ที่เกิดขึ้นจากการใช้ซอฟต์แวร์นี้แม้ว่าจะได้รับคำแนะนำเกี่ยวกับความเป็นไปได้ก็ตาม ของความเสียหายดังกล่าวการตั้งค่าบัญชีกับ OANDA คำถามแรกที่ต้องคำนึงถึงคือทำไมต้องเลือก OANDA ใส่เพียงเล็กน้อยหลังจากบิตของ Googling สำหรับโบรกเกอร์ forex ที่มี APIs ฉันเห็นว่า OANDA ได้เปิดตัว REST API ที่ถูกต้องเมื่อเร็ว ๆ นี้ สามารถสื่อสารได้อย่างง่ายดายจากเกือบทุกภาษาในลักษณะที่ตรงไปตรงมามากหลังจากอ่านเอกสาร API ของนักพัฒนาซอฟต์แวร์แล้วเราจึงตัดสินใจลองใช้ อย่างน้อยที่สุดก็คือบัญชีการฝึกปฏิบัติที่ชัดเจน - ฉันไม่มีความสัมพันธ์กับ OANDA ก่อนหน้านี้และกำลังให้คำแนะนำนี้โดยอาศัยประสบการณ์การทำงานที่ จำกัด ของฉันเกี่ยวกับ API การปฏิบัติของพวกเขาและการใช้ข้อมูลสั้น ๆ ในการดาวน์โหลดข้อมูลตลาดในขณะที่ใช้ในกองทุน ก่อนหน้านี้ถ้าใครได้เจอนายหน้าซื้อขาย forex คนอื่น ๆ ที่มี API แบบเดียวกันในปัจจุบันด้วยเช่นกันฉันยินดีที่จะให้ความสนใจแก่พวกเขาก่อนนอกจากนี้การใช้ API ก็จำเป็นต้องลงชื่อสมัครใช้บัญชีการฝึกอบรมด้วยเช่นกันให้ไปที่ ลิงก์ลงชื่อสมัครใช้คุณจะเห็นหน้าจอต่อไปนี้ด้วยหน้าจอลงชื่อสมัครใช้ของ DOMA จากนั้นคุณจะสามารถลงชื่อเข้าใช้ด้วยข้อมูลรับรองการเข้าสู่ระบบได้ตรวจสอบให้แน่ใจว่าได้เลือกแท็บ fxTradePractice จากหน้าจอลงชื่อเข้าใช้แล้วหรือเข้าสู่ระบบ END_A เมื่ออยู่ในบัญชีคุณจะต้องจดบันทึกหมายเลขบัญชีของคุณซึ่งอยู่ใต้ส่วนหัว Black Funds ข้างเหมืองหลักเป็นหมายเลข 7 หลักนอกจากนี้คุณจำเป็นต้องสร้างโทเค็น API ส่วนตัวด้วยเช่นกันคลิกจัดการ API เข้าถึงด้านล่าง แท็บการดำเนินการอื่น ๆ ที่ด้านซ้ายล่างในขั้นตอนนี้คุณจะสามารถสร้างโทเค็น API ได้คุณจะต้องใช้คีย์นี้เพื่อใช้ในภายหลังเพื่อตรวจสอบให้แน่ใจว่าได้จดบันทึกไว้ด้วยแล้วตอนนี้คุณต้องการเปิดตัวแอปพลิเคชัน FXTrade Practice ซึ่งจะช่วยให้เราสามารถดูคำสั่งและการสูญเสียกำไรของเราถ้าคุณกำลังใช้ระบบ Ubuntu คุณจะต้องติดตั้ง Java รุ่นที่แตกต่างกันเล็กน้อยโดยเฉพาะรุ่น Oracle ของ Java 8 หากคุณไม่ต้องการทำเช่นนี้ จำลองการปฏิบัติจะไม่โหลดจากเบราว์เซอร์ที่ฉันเรียกใช้คำสั่งเหล่านี้ในระบบของฉันขณะนี้คุณสามารถเปิดใช้สภาพแวดล้อมการซื้อขายการปฏิบัติกลับไปที่แดชบอร์ดของ OANDA และคลิกสีเขียวที่ไฮไลต์เปิดการเชื่อมโยง FXTrade Practice จะนำมาโต้ตอบ Java ถาม ไม่ว่าคุณต้องการเรียกใช้คลิก Run และเครื่องมือ fxTrade Practice จะโหลด My defaulted เป็นแผนภูมิเทียน 15 นาทีของ EUR USD พร้อมแผง Quote ในหน้าจอ left. ANDA fxTrade Practice ที่จุดนี้เราพร้อมที่จะเริ่มต้นการออกแบบและ Codi ระบบการซื้อขายแลกเปลี่ยนอัตโนมัติของเราเทียบกับ OANDA API ภาพรวมของ Trading Architecture หากคุณได้ติดตามซีรี่ส์ backtester ที่มีเหตุการณ์เป็นตัวขับเคลื่อนสำหรับหุ้นและ ETF ที่ฉันสร้างขึ้นเมื่อปีที่แล้วคุณจะทราบว่าระบบการซื้อขายที่ขับเคลื่อนโดยเหตุการณ์นั้นเป็นอย่างไร สำหรับบรรดาผู้ที่ยังใหม่กับซอฟต์แวร์ที่ขับเคลื่อนด้วยเหตุการณ์ฉันขอแนะนำอย่างยิ่งให้อ่านบทความนี้เพื่อให้เข้าใจถึงวิธีทำงานของพวกเขาสาระสำคัญโปรแกรมทั้งหมดจะถูกดำเนินการในวง จำกัด infinte ซึ่งจะสิ้นสุดลงเมื่อ ระบบการซื้อขายถูกปิดกลไกการสื่อสารส่วนกลางของโปรแกรมจะถูกส่งผ่านทางคิวที่มีเหตุการณ์คิวจะถูกสอบถามอย่างต่อเนื่องเพื่อตรวจสอบเหตุการณ์ใหม่เมื่อเหตุการณ์ถูกถอดออกจากส่วนบนสุดของคิวแล้วจะต้องจัดการโดยการที่เหมาะสม คอมโพเนนต์ของโปรแกรมดังนั้นฟีดข้อมูลตลาดอาจสร้าง TickEvent s ซึ่งถูกวางลงในคิวเมื่อมีราคาตลาดใหม่มาถึงเป้าหมายที่สร้างสัญญาณอาจสร้าง OrderEvent ที่เป็น e ที่จะถูกส่งไปยังนายหน้าซื้อขายหลักทรัพย์ประโยชน์ของระบบดังกล่าวจะได้รับจากข้อเท็จจริงที่ว่ามันไม่สำคัญว่าจะมีการเรียงลำดับหรือชนิดของเหตุการณ์ใดในคิวเนื่องจากจะได้รับการจัดการอย่างถูกต้องโดยองค์ประกอบด้านขวาภายในโปรแกรม นอกจากนี้ส่วนที่แตกต่างกันของโปรแกรมสามารถเรียกใช้ในหัวข้อที่แยกต่างหากซึ่งหมายความว่าไม่มีการรอคอยใด ๆ สำหรับองค์ประกอบใด ๆ ก่อนการประมวลผลอื่น ๆ นี่เป็นประโยชน์อย่างมากในสถานการณ์การค้าอัลกอริทึมที่ตัวจัดการข้อมูลตลาดของข้อมูลและเครื่องกำเนิดสัญญาณกลยุทธ์มีประสิทธิภาพแตกต่างกันอย่างมากมาย features. The ห่วงการซื้อขายหลักจะได้รับโดย pseudo - รหัส Python ต่อไปนี้เป็นที่เรากล่าวข้างต้นรหัสทำงานในห่วงอนันต์ประการแรกคิวจะถึงขนาดดึงข้อมูลเหตุการณ์ใหม่หากคิวว่างเปล่าแล้วห่วงจะเริ่มต้นใหม่หลังจาก ระยะเวลาการนอนหลับสั้น ๆ เรียกว่า heartbeat หากพบเหตุการณ์ประเภทของมันคือการประเมินแล้วโมดูลที่เกี่ยวข้องทั้งกลยุทธ์หรือตัวจัดการการดำเนินการเรียกว่าเมื่อต้องการจัดการ e เหตุการณ์และอาจสร้างใหม่ที่กลับไปยังคิวองค์ประกอบพื้นฐานที่เราจะสร้างสำหรับระบบการค้าของเรารวมถึงต่อไปนี้ Handler PriceStreaming - นี้จะทำให้การเชื่อมต่อระยะยาวเปิดเซิร์ฟเวอร์ OANDAs และส่งข้อมูลติ๊ก คือการเสนอราคาในการเชื่อมต่อกับเครื่องมือใด ๆ ที่เราสนใจอีกครั้ง Stradio Generator สัญญาณ - จะดำเนินการตามลำดับเหตุการณ์ติ๊กและใช้เพื่อสร้างคำสั่งซื้อขายที่จะดำเนินการโดยผู้ดำเนินการจัดการผู้ดำเนินการจัดการ - ใช้ชุดของ order events และสุ่มสี่สุ่มตาใช้งานกับ OANDA. Events - วัตถุเหล่านี้เป็นข้อความที่ส่งผ่านไปในคิวเหตุการณ์เราต้องการเพียงสองอย่างเท่านั้นสำหรับการใช้งานนี้ ได้แก่ TickEvent และ OrderEvent. Main Entry Point - จุดเข้าหลักรวมถึง ลูปการค้าที่ polls อย่างต่อเนื่องคิวข้อความและ dispatches ข้อความไปยังคอมโพเนนต์ที่ถูกต้องซึ่งมักเรียกว่า loop เหตุการณ์หรือตัวจัดการเหตุการณ์เราจะหารือเกี่ยวกับ การดำเนินงานของรหัสในรายละเอียดที่ด้านล่างของบทความเป็นรายการที่สมบูรณ์ของไฟล์รหัสต้นฉบับทั้งหมดถ้าคุณวางไว้ในไดเรกทอรีเดียวกันและเรียกใช้หลามคุณจะเริ่มต้นสร้างคำสั่งสมมติว่าคุณได้กรอก ID บัญชีและโทเค็นการรับรองความถูกต้องแล้ว จากการปฏิบัติ OANDA. Python การปฏิบัติที่ไม่ดีในการจัดเก็บรหัสผ่านหรือคีย์การรับรองความถูกต้องภายใน codebase เนื่องจากคุณไม่สามารถคาดเดาได้ว่าใครจะสามารถเข้าถึงโครงการได้ในระบบการผลิตเราจะเก็บข้อมูลประจำตัวเหล่านี้เป็นตัวแปรสภาพแวดล้อมกับระบบจากนั้น แบบสอบถาม envvars เหล่านี้ทุกครั้งที่มีการ redeployed รหัสนี้เพื่อให้แน่ใจว่ารหัสผ่านและโทเค็น auth จะไม่ถูกเก็บไว้ในระบบควบคุมเวอร์ชันอย่างไรก็ตามเนื่องจากเรามีความสนใจเพียงอย่างเดียวในการสร้างระบบการค้าของเล่นและไม่เกี่ยวข้องกับรายละเอียดการผลิตในบทความนี้, เราจะแยกโทเค็นการตรวจสอบเหล่านี้ออกเป็นไฟล์การตั้งค่าในไฟล์การกำหนดค่าต่อไปนี้เรามีพจนานุกรมชื่อ ENVIRONMENTS ซึ่ง st. ores ปลายทาง API สำหรับทั้ง OANDA ราคาสตรีมมิ่ง API และ API การซื้อขายแต่ละพจนานุกรมย่อยมีสามแยก API ปลายทางปฏิบัติจริงและ sandbox. The sandbox API คือหมดจดสำหรับการทดสอบรหัสและการตรวจสอบว่ามีข้อผิดพลาดหรือข้อบกพร่องไม่ได้ การรับรองความถูกต้องของ API การปฏิบัติจริงหรือการปฏิบัติ API การปฏิบัติซึ่งสาระสำคัญให้ความสามารถในการทำธุรกิจกระดาษนั่นคือมีคุณลักษณะทั้งหมดของ API จริงในบัญชีการปฏิบัติงานแบบเรียลไทม์ API จริงก็คือ - การค้าหากคุณใช้จุดปลายทางในรหัสของคุณจะซื้อขายกับยอดเงินบัญชีสดของคุณอย่างระมัดระวังเป็นสำคัญข้อควรระวังในการซื้อขายกับ API การปฏิบัติงานโปรดจำไว้ว่าค่าใช้จ่ายในการทำธุรกรรมที่สำคัญไม่กระทบต่อผลกระทบของตลาดเนื่องจากไม่มีธุรกิจการค้าอยู่จริง ในสภาพแวดล้อมค่าใช้จ่ายนี้ต้องถูกคิดในรูปแบบอื่นโดยใช้แบบจำลองผลกระทบด้านตลาดหากคุณต้องการประเมินสมรรถนะอย่างสมจริงในต่อไปนี้เรากำลังใช้ บัญชีการปฏิบัติตามที่กำหนดโดยการตั้งค่า DOMAIN เราจำเป็นต้องใช้พจนานุกรมสองเล่มสำหรับโดเมนแต่ละส่วนสำหรับองค์ประกอบการสตรีมและการซื้อขาย API ในที่สุดเรามี ACCESSTOKEN และ ACCOUNTID ที่กรอกข้อมูลด้านล่างทั้งสองด้วย dummy ID ดังนั้นคุณจะต้องใช้ประโยชน์จากบัญชีของตัวเอง ซึ่งสามารถเข้าถึงได้จากหน้าบัญชี OANDA ขั้นตอนต่อไปคือการกำหนดเหตุการณ์ที่คิวจะใช้เพื่อช่วยให้การติดต่อสื่อสารของแต่ละองค์ประกอบมีความจำเป็นต้องใช้ TickEvent และ OrderEvent สองตัวแรกจะจัดเก็บข้อมูลเกี่ยวกับข้อมูลตลาดเครื่องมือเช่นข้อมูลที่ดีที่สุด ขอเสนอราคาและเวลาการค้าส่วนที่สองใช้ในการส่งคำสั่งไปยังผู้ดำเนินการและมีเครื่องมือจำนวนหน่วยในการซื้อขายตลาดประเภทสั่งซื้อหรือวงเงินและด้านข้างคือซื้อและขายเพื่อพิสูจน์เหตุการณ์ในอนาคตของเรา รหัสที่เราจะสร้างชั้นฐานที่เรียกว่าเหตุการณ์และมีเหตุการณ์ทั้งหมดสืบทอดมาจากนี้รหัสมีให้ด้านล่างในชั้นถัดไปที่เราจะสร้างจะจัดการกับกลยุทธ์การซื้อขายในนี้ de mo เราจะสร้างกลยุทธ์ค่อนข้างไร้สาระที่เพิ่งได้รับทั้งหมดของตลาดเห็บและเมื่อทุก 5 เห็บสุ่มซื้อหรือขาย 10,000 หน่วยของ EUR USD เห็นได้ชัดว่านี่เป็นกลยุทธ์ไร้สาระ แต่ก็เป็นที่ยอดเยี่ยมสำหรับวัตถุประสงค์ในการทดสอบเพราะเป็น ตรงไปตรงมาเพื่อรหัสและเข้าใจในรายการไดอารี่ในอนาคตเราจะแทนที่นี้กับสิ่งที่น่าตื่นเต้นอย่างมีนัยสำคัญมากขึ้นที่หวังว่าจะเปิดไฟล์ profit. The สามารถพบได้ด้านล่าง Let s ทำงานผ่านมันและดูสิ่งที่เกิดขึ้นประการแรกเรานำเข้าห้องสมุดสุ่มและ วัตถุ OrderEvent จากเราต้องการ random lib เพื่อเลือก random buy หรือ sell order เราต้องการ OrderEvent เนื่องจากเป็นกลยุทธ์ที่ object จะส่งคำสั่งไปยัง event queue ซึ่งจะดำเนินการโดย handler execution class TestRandomStrategy เพียงแค่ใช้ตราสารในกรณีนี้ EUR USD, จำนวนหน่วยและคิวเหตุการณ์เป็นชุดของพารามิเตอร์จากนั้นจะสร้างเคาน์เตอร์เห็บที่ใช้ในการบอกจำนวน Tic kEvent กรณีที่ได้เห็นมากที่สุดของงานที่เกิดขึ้นในวิธี calculatesignals ซึ่งใช้เวลาเพียงเหตุการณ์กำหนดไม่ว่าจะเป็น TickEvent อื่นละเว้นและเพิ่มติ๊กเคาน์เตอร์แล้วตรวจสอบเพื่อดูว่านับเป็นหารด้วย 5 แล้วสุ่ม ซื้อหรือขายด้วยคำสั่งตลาดจำนวนหน่วยที่ระบุไม่ได้เป็นกลยุทธ์การค้าที่ยิ่งใหญ่ที่สุดของโลก แต่จะเหมาะสำหรับวัตถุประสงค์ในการทดสอบ API ของ OANDA ของเราส่วนถัดไปคือตัวจัดการการดำเนินงานชั้นนี้ tasked กับการทำหน้าที่ในกรณี OrderEvent และการร้องขอไปยังโบรกเกอร์ในกรณีนี้ OANDA ในแฟชั่นโง่นั่นคือไม่มีการจัดการความเสี่ยงหรือการซ้อนทับการก่อสร้าง potfolio การดำเนินการจัดการก็จะดำเนินการสั่งซื้อใด ๆ ที่ได้รับ given. We ต้องผ่านทั้งหมด ของข้อมูลการตรวจสอบสิทธิ์ไปยังคลาสการดำเนินการรวมถึงการปฏิบัติตามโดเมนจริงหรือ sandbox โทเค็นการเข้าถึงและรหัสบัญชีจากนั้นเราจะสร้างการเชื่อมต่อที่ปลอดภัยกับ Pyth ons สร้างขึ้นใน library. Most งานที่เกิดขึ้นใน executeorder วิธีการที่ต้องใช้เหตุการณ์เป็นพารามิเตอร์จากนั้นสร้างพจนานุกรมสอง - ส่วนหัวและ params พจนานุกรมเหล่านี้จะถูกเข้ารหัสอย่างถูกต้องบางส่วนโดย urllib อีกห้องสมุดหลามจะถูกส่งเป็นโพสต์ การร้องขอไปยัง OANDAs API เราจะผ่านพารามิเตอร์ส่วนหัวของ Content-Type และ Authorization ซึ่งรวมถึงข้อมูลการตรวจสอบสิทธิ์ของเรานอกจากนี้เราเข้ารหัสพารามิเตอร์ซึ่งรวมถึงเครื่องมือ EUR USD หน่วยประเภทคำสั่งซื้อและการซื้อด้านข้างท้ายสุดเราขอและ บันทึกการตอบสนองคอมโพเนนต์ที่ซับซ้อนที่สุดของระบบการซื้อขายคืออ็อบเจ็กต์ StreamingForexPrices ซึ่งจัดการกับการอัปเดตราคาตลาดจาก OANDA มีวิธีการสองอย่างคือ connecttostream และ streamtoqueue วิธีแรกใช้ห้องสมุดคำขอ Python เพื่อเชื่อมต่อกับซ็อกเก็ตสตรีมมิ่งที่เหมาะสม ส่วนหัวและพารามิเตอร์พารามิเตอร์ต่างๆรวมถึง ID บัญชีและรายการสิ่งที่จำเป็นที่ควรได้รับการฟัง การปรับปรุงในกรณีนี้เป็นเพียง EUR USD หมายเหตุบรรทัดต่อไปนี้จะบอกการเชื่อมต่อที่จะสตรีมและจึงเก็บไว้เปิดในลักษณะที่ยาวนานวิธีที่สอง streamtoqueue จริงพยายามที่จะเชื่อมต่อกับกระแสถ้าการตอบสนองไม่ประสบความสำเร็จ เช่นรหัสการตอบสนองไม่ได้เป็น 200 แล้วเราก็กลับมาและออกถ้าประสบความสำเร็จเราพยายามที่จะโหลดแพ็คเก็ต JSON กลับเข้ามาในพจนานุกรม Python ในที่สุดเราจะแปลงพจนานุกรม Python กับเครื่องมือราคาเสนอถามและประทับเวลาลงใน TickEvent นั่นคือ ส่งไปยังคิวเหตุการณ์ขณะนี้เรามีองค์ประกอบสำคัญทั้งหมดในสถานที่ขั้นตอนสุดท้ายคือการตัดทุกสิ่งที่เราเขียนไว้จนเป็นโปรแกรมหลักเป้าหมายของไฟล์นี้คือการสร้างสองเธรดแยกกันซึ่งหนึ่งในนั้น รันตัวจัดการการกำหนดราคาและอื่น ๆ ที่เรียกใช้ตัวจัดการการซื้อขายเราจำเป็นต้องใช้สองเธรดแยกต่างหากใส่เพียงเราจะดำเนินการสองชิ้นแยกของรหัสซึ่งทั้งสองอย่างต่อเนื่องทำงานถ้าเราจะสร้าง prog ไม่ใช่เธรด ram แล้วซ็อกเก็ตสตรีมมิ่งที่ใช้สำหรับการอัพเดทราคาจะไม่เคยปล่อยกลับไปที่เส้นทางหลักของโค้ดและด้วยเหตุนี้เราจะไม่ดำเนินการซื้อขายใด ๆ ในทำนองเดียวกันถ้าเราวิ่งลูปทางการค้าดูด้านล่างเราจะไม่ได้กลับเส้นทางการไหล ไปซ็อกเก็ตราคาสตรีมดังนั้นเราจำเป็นต้องมีหลายหัวข้อหนึ่งสำหรับแต่ละองค์ประกอบเพื่อให้พวกเขาสามารถดำเนินการได้อย่างอิสระพวกเขาทั้งสองจะสื่อสารกันผ่านคิวเหตุการณ์ให้เราตรวจสอบนี้ bit futher เราสร้างสองหัวข้อแยกกับ ต่อไปนี้ line. We ผ่านฟังก์ชันหรือชื่อวิธีการไปยังอาร์กิวเมนต์คำหลักเป้าหมายแล้วผ่าน iterable เช่นรายการหรือ tuple ไป args อาร์กิวเมนต์หลักที่แล้วส่งผ่านอาร์กิวเมนต์เหล่านั้นไปยังวิธีการที่เกิดขึ้นจริงในที่สุดเราเริ่มหัวข้อทั้งที่มี ต่อไปนี้บรรทัดดังนั้นเราจึงสามารถเรียกใช้สองวนลูปไม่มีที่สิ้นสุดได้อย่างมีประสิทธิภาพส่วนรหัสอย่างอิสระซึ่งทั้งสองสื่อสารผ่านทางเหตุการณ์คิวโปรดทราบว่า Python threading ห้องสมุดไม่ได้ผลิต multithreaded multi-core multi-core จริงเนื่องจากการใช้งาน Python กับ CPython และ Global Link Gil หากต้องการอ่านเพิ่มเติมเกี่ยวกับ Pythona โปรดดูที่บทความนี้ลองตรวจสอบส่วนที่เหลือของรหัสในรายละเอียด ประการแรกเรานำเข้าห้องสมุดที่จำเป็นทั้งหมดรวมทั้ง Queue threading และ time จากนั้นเราจะนำเข้าไฟล์โค้ดข้างต้นทั้งหมดที่ผมเองชอบที่จะใช้ประโยชน์จากการตั้งค่าใด ๆ ซึ่งเป็นนิสัยผมหยิบขึ้นมาจากการทำงานกับ Django หลังจากนั้นเราจะกำหนดฟังก์ชันทางการค้า ซึ่งถูกอธิบายใน Python-pseudocode ข้างต้นวงขณะที่ไม่มีขีด จำกัด จะดำเนินการในขณะที่ True ที่ polls อย่างต่อเนื่องจากคิวกิจกรรมและข้ามเฉพาะห่วงถ้าพบว่าว่างเปล่าหากเหตุการณ์พบแล้วจะเป็น TickEvent หรือ OrderEvent และ จากนั้นคอมโพเนนต์ที่เหมาะสมถูกเรียกใช้เพื่อดำเนินการในกรณีนี้เป็นทั้งตัวจัดการกลยุทธ์หรือตัวประมวลผลลูปจากนั้นจะนอนหลับสำหรับวินาทีการเต้นของหัวใจในกรณีนี้ 0 5 วินาที และต่อเนื่องในที่สุดเรากำหนด entrypoint หลักของรหัสในฟังก์ชันหลักเป็นอย่างดีแสดงความคิดเห็นด้านล่าง แต่ฉันจะสรุปที่นี่ในสาระสำคัญเรา instantiate คิวกิจกรรมและกำหนดหน่วยเครื่องมือแล้วเราสร้าง StreamingForexPrices ราคาสตรีมชั้นแล้ว ภายหลังการดำเนินการดำเนินการจัดการทั้งสองได้รับรายละเอียดการตรวจสอบที่จำเป็นที่จะได้รับโดย OANDA เมื่อสร้างบัญชีจากนั้นเราจะสร้างตัวอย่าง TestRandomStrategy สุดท้ายเรากำหนดสองหัวข้อและจากนั้นเริ่มต้น them. To ใช้รหัสคุณก็ต้องวางไฟล์ทั้งหมด ในไดเรกทอรีเดียวกันและเรียกต่อไปนี้ที่ terminal ทราบว่าการหยุดรหัสในขั้นตอนนี้ต้องยากฆ่ากระบวนการ Python ผ่าน Ctrl-Z หรือเทียบเท่าผมไม่ได้เพิ่มหัวข้อเพิ่มเติมเพื่อจัดการมองหาที่จะ จำเป็นต้องหยุดรหัสอย่างปลอดภัยวิธีที่อาจเป็นไปได้ที่จะหยุดรหัสบนเครื่อง Ubuntu Linux คือการพิมพ์แล้วส่งผ่านผลลัพธ์ของหมายเลขกระบวนการนี้ไปเป็น followi ในกรณีที่ PROCESSID ต้องถูกแทนที่ด้วย output ของ pgrep โปรดทราบว่านี่ไม่ใช่วิธีที่ดีโดยเฉพาะอย่างยิ่งในบทความต่อ ๆ ไปเราจะสร้างกลไกการเริ่มต้นหยุดที่ซับซ้อนขึ้นซึ่งจะใช้การดูแลกระบวนการของ Ubuntu เพื่อให้ระบบการซื้อขายทำงานได้ 24 7. ผลลัพธ์หลังจาก 30 วินาทีขึ้นไปขึ้นอยู่กับช่วงเวลาของวันเทียบกับชั่วโมงการซื้อขายหลักสำหรับ EUR USD สำหรับโค้ดข้างต้นจะแสดงไว้ด้านล่างห้าบรรทัดแรกแสดงข้อมูลการติ๊ก JSON ที่ส่งคืนจาก OANDA พร้อมกับราคาเสนอ ask prices หลังจากนั้นคุณจะเห็นผลลัพธ์การดำเนินการตามคำสั่งรวมทั้งการตอบกลับของ JSON ที่ส่งคืนมาจาก OANDA เพื่อยืนยันการเปิดการค้าซื้อ 10,000 ดอลลาร์ในสกุลเงิน EUR และราคาที่กำหนดไว้จะเท่ากับที่คุณดำเนินการอยู่เรื่อย ๆ จนกว่าคุณจะฆ่าโปรแกรม ด้วยคำสั่ง Ctrl-Z หรือคล้ายกันในบทความต่อ ๆ ไปเราจะดำเนินการปรับปรุงที่จำเป็นมาก ๆ รวมทั้งกลยุทธ์ที่แท้จริง - กลยุทธ์ด้านอัตราแลกเปลี่ยนที่เหมาะสมเพื่อสร้างสัญญาณที่สร้างผลกำไร e - การใช้งานเซิร์ฟเวอร์ระยะไกลและระบบการซื้อขายที่เฝ้าติดตาม 24 7 พร้อมด้วยความสามารถในการเริ่มต้นหยุดทำงานการจัดการพอร์ตโฟลิกและความเสี่ยง - การวางพอร์ตและการซ้อนทับความเสี่ยงสำหรับคำสั่งซื้อที่แนะนำทั้งหมดจากกลยุทธ์กลยุทธ์ต่างๆ - การสร้างกลยุทธ์ด้านกลยุทธ์ที่รวมเข้ากับการจัดการความเสี่ยง เช่นเดียวกับ backtester เหตุการณ์ที่ขับเคลื่อนด้วยเหตุการณ์เราจำเป็นต้องสร้างโมดูล backtesting forex ซึ่งจะช่วยให้เราสามารถดำเนินการวิจัยอย่างรวดเร็วและทำให้การปรับใช้กลยุทธ์ทำได้ง่ายขึ้น อย่าลืมเปลี่ยน ACCOUNTID และ ACCESSTOKEN เพียงแค่เริ่มต้นการซื้อขายเชิงปริมาณโดยใช้ Python, IBPy และ Interactive Brokers API เพื่อทำธุรกรรมทางการเงินโดยอัตโนมัติขณะที่เราได้คุยกันถึงวิธีการตั้งค่าบัญชีโบรกเกอร์แบบ Interactive Broker เป็นหนึ่งในโบรกเกอร์หลักที่ใช้ โดยผู้ค้าปลีกรายละเอียดปลีกย่อยเนื่องจากมียอดคงเหลือในบัญชีน้อยมากที่ต้องการเงิน 10,000 USD และ API ที่ค่อนข้างตรงไปตรงมาในบทความนี้เราจะใช้บัญชีสาธิตเพื่อทำธุรกิจการค้ากับ Interactive Brokers API โดยใช้ Python และปลั๊กอิน IBPy ฉันไม่เห็นด้วย ความร่วมมือกับโบรกเกอร์เชิงโต้ตอบฉันได้ใช้พวกเขาก่อนในบริบทของกองทุนมืออาชีพและเป็นเช่น am คุ้นเคยกับซอฟต์แวร์ของพวกเขา Interactive โบรกเกอร์ API. Interactive โบรกเกอร์เป็นองค์กรขนาดใหญ่และเป็นเช่น caters เพื่อช่วงกว้างของผู้ค้าตั้งแต่การตัดสินใจค้าปลีก เพื่อให้ระบบอัตโนมัตินี้ได้นำ GUI interface ของพวกเขา Trader Workstation TWS เพื่อครอบครองปริมาณมาก ระฆังและ whistles นอกจาก TWS นอกจากนี้ยังมีองค์ประกอบที่มีน้ำหนักเบาเรียกว่าเกตเวย์ IB ซึ่งให้การเข้าถึงเดียวกันกับเซิร์ฟเวอร์ IB แม้ว่าโดยไม่มีฟังก์ชันพิเศษของ GUI สำหรับวัตถุประสงค์ในการซื้อขายอัตโนมัติของเราเราได้รับรางวัล t จริงต้อง TWS GUI แต่ฉันคิดว่าสำหรับการกวดวิชานี้จะแสดงให้เห็นถึงการใช้ประโยชน์จากมันโครงสร้างพื้นฐานจะขึ้นอยู่กับรูปแบบเซิร์ฟเวอร์ของไคลเอ็นต์ที่มีทั้งการประมวลผลและการตลาดฟีดข้อมูลในอดีตและเรียลไทม์ผ่านทาง API API นี้เราจะใช้ประโยชน์ ในการกวดวิชานี้เพื่อส่งคำสั่งซื้ออัตโนมัติผ่านทาง IBPy. IBPy ได้รับการเขียนเพื่อห่อ Java API พื้นเมืองและทำให้ตรงไปตรงมาโทรจาก Python สองห้องสมุดหลักที่เราสนใจใน IBPy เป็นและหลังเป็นระดับที่สูงขึ้นและใช้ประโยชน์จาก ในอดีตการดำเนินการต่อไปนี้เราจะสร้างตัวอย่างง่ายๆซึ่งจะส่งคำสั่งซื้อของตลาดเดียวเพื่อซื้อสต็อค Google 100 หน่วยโดยใช้สมาร์ทคำสั่งการกำหนดเส้นทาง Th e หลังถูกออกแบบมาเพื่อให้บรรลุราคาที่ดีที่สุดในทางปฏิบัติแม้ว่าในบางสถานการณ์อาจเป็น suboptimal อย่างไรก็ตามสำหรับวัตถุประสงค์ของการกวดวิชานี้ก็จะพอเพียงการใช้งานใน Python ก่อนที่เราจะเริ่มมีความจำเป็นที่จะต้องทำตามขั้นตอนในกวดวิชาก่อน ในการตั้งค่าบัญชีโบรกเกอร์แบบอินเตอร์แอคทีฟนอกจากนี้จำเป็นต้องมีพื้นที่ทำงาน Python ก่อน ๆ เพื่อให้เราสามารถติดตั้ง IBPy ซึ่งจะช่วยให้คุณสามารถเชื่อมโยงส่วนอื่น ๆ ของโค้ดของคุณร่วมกันได้บทแนะนำเกี่ยวกับการติดตั้ง Python จะสร้างพื้นที่ทำงานที่จำเป็น การติดตั้ง IBPy. IBPy เป็นเครื่องห่อ Python ที่เขียนขึ้นโดยใช้ Interactive Brokers API ซึ่งทำให้การพัฒนาระบบการซื้อขายแบบ algorithmic ใน Python ค่อนข้างมีปัญหาน้อยลงจะใช้เป็นพื้นฐานสำหรับการสื่อสารกับ Interactive Brokers ต่อไปจนกว่าเราจะพิจารณาโปรโตคอล FIX ที่ หลังจากวันที่ IBPy จะยังคงอยู่ใน GitHub เป็นที่เก็บคอมไพล์เราจะต้องติดตั้ง git ในระบบ Ubuntu นี่เป็นฮ่า ndled by. Once คุณได้ติดตั้ง git คุณสามารถสร้างไดเรกทอรีย่อยเพื่อเก็บ IBPy ในระบบของฉันฉันได้วางไว้เพียงภายใต้ไดเรกทอรีบ้านของฉันขั้นตอนต่อไปคือการดาวน์โหลด IBPy ผ่าน clone. Make ตรวจสอบเพื่อเข้าสู่ไดเรกทอรี IbPy และติดตั้งด้วย สภาพแวดล้อมเสมือน Python ที่ต้องการซึ่งจะเสร็จสิ้นการติดตั้ง IBPy ขั้นตอนต่อไปคือการเปิด TWS ตามที่อธิบายไว้ในกวดวิชาก่อนหน้านี้ Portfolio WPW View ก่อนที่จะมี Google Trade การซื้อขายอัตโนมัติรหัสต่อไปนี้จะแสดงคำสั่ง API แบบง่ายๆ แต่รหัสนี้ไม่ได้แสดงให้เห็นถึงฟังก์ชันการทำงานที่สำคัญของ Interactive Brokers API และวิธีการใช้งานสำหรับการดำเนินการสั่งซื้อทั้งหมดของรหัสต่อไปนี้ควรอยู่ในไฟล์ขั้นตอนแรกคือการนำเข้าสัญญาและใบสั่ง วัตถุจากไลบรารีระดับล่างนอกจากนี้เรานำเข้าไฟล์ Connection and Message Objects จากไลบรารีที่สูงขึ้น IBM ให้ความสามารถในการจัดการข้อผิดพลาดและการตอบสนองของเซิร์ฟเวอร์ โดยกลไกการโทรกลับฟังก์ชันต่อไปนี้สองหน้าที่ทำอะไรมากกว่าการพิมพ์เนื้อหาของข้อความที่ส่งคืนจากเซิร์ฟเวอร์ระบบการผลิตที่ซับซ้อนยิ่งขึ้นจะต้องใช้ตรรกะเพื่อให้แน่ใจว่าระบบทำงานอย่างต่อเนื่องในกรณีที่มีพฤติกรรมพิเศษอยู่ ฟังก์ชันห่อสร้างวัตถุ Contract และ Order การตั้งค่าพารามิเตอร์ตามลำดับเอกสารฟังก์ชันจะอธิบายแต่ละพารามิเตอร์แยกกันฟังก์ชันหลักจะสร้างวัตถุการเชื่อมต่อกับ Trader Workstation ซึ่งจะต้องใช้งานโค้ดเพื่อทำงานฟังก์ชัน Error และตอบกลับตัวจัดการ จะมีการกำหนดตัวแปรสั่งซื้อไว้ในระบบการผลิตซึ่งจะต้องเพิ่มขึ้นสำหรับการสั่งซื้อแต่ละครั้งขั้นตอนต่อไปคือการสร้างสัญญาและคำสั่งซื้อที่แสดงคำสั่งตลาดเพื่อซื้อสต็อค Google 100 สต็อคขั้นสุดท้าย งานคือการสั่งซื้อที่จริงผ่านวิธี placeOrder ของการเชื่อมต่อวัตถุเรา n ยกเลิกการเชื่อมต่อจาก TWS ขั้นตอนสุดท้ายคือการเรียกใช้โค้ดทันทีที่เห็นได้ว่าแท็บ API เปิดขึ้นใน Trader Workstation แสดงคำสั่งซื้อของตลาดเพื่อดูการดูแท็บ API ของ Google. TWS API เป็นเวลานาน 100 ครั้งถ้าเป็นไปได้ ตอนนี้เราดูแท็บ Portfolio แล้วเราจะเห็นตำแหน่งของ Google นอกจากนี้คุณยังจะทราบตำแหน่ง forex ในรายการซึ่งไม่ได้สร้างขึ้นด้วยตัวเองฉันสามารถสมมติได้ว่าบัญชีการสาธิตของ IB มีการแชร์กันในบางรูปแบบเนื่องจากมีการเข้าสู่ระบบเหมือนกัน ข้อมูลหรือ IB จะวางคำสั่งซื้อโดยพลการลงในบัญชีเพื่อทำให้ดูเหมือนจริงมากขึ้นหากใครมีความเข้าใจในลักษณะการทำงานนี้ฉันจะรู้สึกทึ่งในการเรียนรู้เพิ่มเติม WiW API Portfolio ดูภายหลังจากคำสั่งซื้อของ Google นี่คือรูปแบบพื้นฐานที่สุดของการดำเนินการโดยอัตโนมัติ เราสามารถพิจารณาในบทความต่อไปเราจะสร้างสถาปัตยกรรมที่ขับเคลื่อนด้วยเหตุการณ์ที่มีประสิทธิภาพมากขึ้นซึ่งสามารถจัดการกับกลยุทธ์การซื้อขายแบบสมจริงได้เพียงแค่เริ่มต้นการซื้อขายเชิงปริมาณ
No comments:
Post a Comment