Forex Api หลาม


wrapper API Python ของ FXCM ในขณะที่คุณอาจรู้ว่า FXCM มีการเชื่อมต่อทางการค้าผ่านทางคอนเนคเตอร์ที่เป็นกรรมสิทธิ์ของพวกเขาเรียกว่า ForexConnect API สำหรับเราที่ไม่ผ่านการรับรองสำหรับการเปิดบัญชี FIX-able ForexConect API สามารถทำได้เพียงวิธีเดียวในการสร้างและเชื่อมต่อระบบการซื้อขายของเราเอง ส่วนตัวฉันไม่ชอบ mql และ MT4 มากถ้าเลย. อย่างไรก็ตามแพลตฟอร์มการซื้อขายที่กว้างขึ้นในวันนี้ กับที่กล่าวว่าการใช้ ForexConnect API หนึ่งสามารถข้าม mql และเขียน quants หรือกลยุทธ์อัตโนมัติในระดับสูงกว่าภาษาเป็น CC, Java Python หรือแม้กระทั่ง Matlab หรือ R. Ive ได้เริ่มต้นโครงการสำหรับ wrapper ForexConnect API ทำให้มันเป็นโมดูล Python มากได้รับการทำแล้วคุณสามารถตรวจสอบที่นี่ 1 แม้ว่านักพัฒนาที่มีประสบการณ์ Ive เลือก Python สำหรับจำนวนกว้างของคณิตศาสตร์ และห้องสมุดสถิติเช่น Numpy, Scipy, Pandas ฯลฯ นอกจากนี้ยังใช้ภาษาเช่น Python Im สามารถใช้ dev ทันสมัย เช่น Visual Studio for CC หรือ JetBrains PyCharm ที่ฉันชอบสำหรับ Python dev ความตั้งใจของฉันคือเมื่อ API ถูกใช้งานอย่างเต็มที่เพื่อสร้างเครื่องคอมพิวเตอร์การเรียนรู้รอบ ๆ บางส่วนการซื้อขาย Forex กับ OANDA API โดย James Ma Weiming การซื้อขาย Forex กับ OANDA API ในส่วนก่อนหน้านี้เราได้ใช้ระบบการซื้อขายโดยการเชื่อมโยงกับ Interactive Brokers Trader WorkStation X ผ่านการเชื่อมต่อซ็อกเก็ตผ่านทางพอร์ตเดียว อย่างไรก็ตามโบรกเกอร์อื่น ๆ อีกหลายแห่งมีทางเลือกในการเลือกใช้ซอฟต์แวร์การซื้อขายที่กำหนดเองมากกว่า API ในส่วนนี้เราจะเรียนรู้วิธีเชื่อมต่อกลยุทธ์การซื้อขายของเรากับ OESTA API REST OANDA เป็นผู้ให้บริการธุรกิจรายย่อย (forex) รายใหญ่ที่ให้บริการแก่นักลงทุนรายย่อย เราจะใช้กลยุทธ์ตามเทรนด์เพื่อการค้าผลิตภัณฑ์ forex REST REST ย่อมาจาก Representational State Transfer หมายถึง API บริการเว็บสำหรับการถ่ายโอนข้อมูลผ่าน HTTP โดยใช้ GET PUT โพสต์ หรือ DELETE method ด้วย REST API เราสามารถสตรีมได้ หาข้อมูลที่แน่นอนที่คุณต้องการในการแก้ปัญหาทันทีหรือไปลึกเพื่อ master เทคโนโลยีและทักษะที่คุณต้องประสบความสำเร็จ No credit card requiredLearn Quant skills หากคุณเป็นผู้ค้าหรือนักลงทุนและต้องการรับชุดข้อมูลเชิงปริมาณ ทักษะการซื้อขายคุณอยู่ในสถานที่ที่เหมาะสม หลักสูตร Trading with Python จะนำเสนอเครื่องมือและวิธีปฏิบัติที่ดีที่สุดสำหรับการวิจัยการซื้อขายเชิงปริมาณรวมถึงฟังก์ชันและสคริปต์ที่เขียนขึ้นโดยผู้ค้าเชิงปริมาณผู้เชี่ยวชาญ หลักสูตรนี้จะช่วยให้คุณได้รับผลกระทบสูงสุดสำหรับเวลาและเงินลงทุนของคุณ เน้นการประยุกต์ใช้การเขียนโปรแกรมเพื่อการค้ามากกว่าทฤษฎีคอมพิวเตอร์ หลักสูตรจะจ่ายสำหรับตัวเองอย่างรวดเร็วโดยการประหยัดเวลาในการประมวลผลข้อมูลด้วยตนเอง คุณจะใช้เวลามากขึ้นในการค้นคว้ากลยุทธ์ของคุณและดำเนินธุรกิจการค้าที่มีกำไร ภาพรวมของหลักสูตรส่วนที่ 1: พื้นฐานคุณจะได้เรียนรู้ว่าทำไม Python เป็นเครื่องมือที่เหมาะสำหรับการซื้อขายเชิงปริมาณ เราจะเริ่มด้วยการสร้างสภาพแวดล้อมการพัฒนาและจะแนะนำคุณไปยังห้องสมุดวิทยาศาสตร์ ส่วนที่ 2: การจัดการข้อมูลเรียนรู้วิธีรับข้อมูลจากแหล่งข้อมูลฟรีต่างๆเช่น Yahoo Finance, CBOE และเว็บไซต์อื่น ๆ อ่านและเขียนข้อมูลหลายรูปแบบรวมถึงไฟล์ CSV และ Excel ส่วนที่ 3: กลยุทธ์การวิจัยเรียนรู้การคำนวณ PL และตัวชี้วัดประสิทธิภาพการทำงานเช่น Sharpe และ Drawdown สร้างกลยุทธ์การซื้อขายและเพิ่มประสิทธิภาพ ตัวอย่างของกลยุทธ์จะกล่าวถึงในส่วนนี้ ตอนที่ 4: จะมีชีวิตอยู่ส่วนนี้เป็นศูนย์กลางเกี่ยวกับ API โบรกเกอร์เชิงโต้ตอบ คุณจะได้เรียนรู้วิธีรับข้อมูลหุ้นในแบบเรียลไทม์และสั่งซื้อสินค้าสด ตัวอย่างรหัสวัสดุของรายวิชาประกอบด้วยโน้ตบุ๊คที่มีข้อความร่วมกับรหัสแบบโต้ตอบเช่นนี้ คุณจะสามารถเรียนรู้ได้โดยการโต้ตอบกับโค้ดและปรับเปลี่ยนตามความชอบของคุณเอง จะเป็นจุดเริ่มต้นที่ดีสำหรับการเขียนกลยุทธ์ของคุณเองในขณะที่บางหัวข้อมีการอธิบายอย่างละเอียดเพื่อช่วยให้คุณเข้าใจแนวคิดพื้นฐานในกรณีส่วนใหญ่คุณจะไม่จำเป็นต้องเขียนโค้ดระดับต่ำเนื่องจากมีการสนับสนุนโดยที่มีอยู่ - แหล่งห้องสมุด ไลบรารี TradingWithPython จะรวบรวมฟังก์ชันการทำงานที่กล่าวถึงในหลักสูตรนี้เป็นฟังก์ชันที่พร้อมใช้งานและจะใช้ตลอดหลักสูตร หมีแพนด้าจะช่วยให้คุณมีพลังยกหนักที่จำเป็นในการขัดขวางข้อมูล รหัสทั้งหมดถูกจัดเตรียมภายใต้ใบอนุญาต BSD ซึ่งอนุญาตให้ใช้ในแอพพลิเคชั่นเชิงพาณิชย์การจัดหลักสูตรการเป็นนักบินของหลักสูตรได้จัดขึ้นในฤดูใบไม้ผลิของปี 2013 นี่คือสิ่งที่นักเรียนได้กล่าวไว้: หลักสูตรการออกแบบที่ดีของ Matej และผู้ฝึกสอนที่ดี แน่นอนมูลค่าของราคาและเวลาของฉัน Lave Jev เห็นได้ชัดว่าสิ่งที่เขา ความลึกของความคุ้มครองก็สมบูรณ์แบบ ถ้า Jev ทำอะไรแบบนี้อีกฉันจะเป็นคนแรกที่ลงทะเบียน John Phillips หลักสูตรของคุณจริงๆมีฉันกระโดดเริ่มพิจารณาหลามสำหรับการวิเคราะห์ระบบคลังสินค้า Forex Trading Diary 1 - Automated Forex Trading กับ OANDA API ฉันกล่าวก่อนหน้านี้ใน QuantStart: 2014 ในบทความทบทวนที่ฉันจะใช้เวลาบางส่วนของการเขียนเกี่ยวกับอัตโนมัติ 2015 ซื้อขายแลกเปลี่ยน การที่ฉันเองมักจะทำวิจัยในตลาดตราสารทุนและตลาดซื้อขายล่วงหน้าฉันคิดว่ามันน่าสนุก (และมีการศึกษา) ในการเขียนเกี่ยวกับประสบการณ์ของฉันในการเข้าสู่ตลาด forex ในรูปแบบของไดอารี่ รายการไดอารี่แต่ละครั้งจะพยายามสร้างสิ่งเหล่านี้ทั้งหมดก่อนหน้านี้ แต่ควรมีความเป็นตัวของตัวเองด้วย ในรายการแรกของไดอารี่ฉันจะอธิบายถึงวิธีการตั้งค่าบัญชีการเป็นนายหน้าซื้อขายหลักทรัพย์ใหม่กับ OANDA รวมถึงวิธีการสร้างเครื่องมือการซื้อขายแบบมัลติเธรดที่ขับเคลื่อนโดยเหตุการณ์ซึ่งจะสามารถทำธุรกรรมการค้าได้ทั้งในแบบปฏิบัติและแบบสด ในปีที่แล้วเราใช้เวลามากในการดูงาน backtester ที่เกิดจากเหตุการณ์ หลักสำหรับหุ้นและ ETFs ที่ฉันนำเสนอด้านล่างนี้มุ่งสู่ forex และสามารถใช้สำหรับการซื้อขายกระดาษหรือการซื้อขายสด ฉันได้เขียนคำแนะนำต่อไปนี้ทั้งหมดสำหรับ Ubuntu 14.04 แล้ว แต่ควรแปลเป็น Windows หรือ Mac OS X โดยใช้การแจกแจง Python เช่น Anaconda ไลบรารีเพิ่มเติมที่ใช้สำหรับเครื่องมือการซื้อขาย Python คือไลบรารีที่ต้องการซึ่งจำเป็นสำหรับการสื่อสาร HTTP กับ OANDA API เนื่องจากนี่เป็นโพสต์แรกเกี่ยวกับการซื้อขายแลกเปลี่ยนเงินตราต่างประเทศโดยตรงและโค้ดที่นำเสนอด้านล่างนี้สามารถปรับให้เข้ากับสภาพแวดล้อมการซื้อขายแบบสดได้อย่างตรงไปตรงมาข้าพเจ้าขอนำเสนอคำปฏิเสธดังต่อไปนี้: Disclaimer: Trading foreign exchange on margin มีระดับความเสี่ยงสูง และอาจไม่เหมาะสมสำหรับนักลงทุนทุกราย ผลการดำเนินงานที่ผ่านมาไม่ได้บ่งบอกถึงผลการดำเนินงานในอนาคต ระดับการยกระดับสูงสามารถทำงานได้ดีกับคุณและคุณ ก่อนตัดสินใจลงทุนในตลาดหลักทรัพย์ต่างประเทศคุณควรพิจารณาวัตถุประสงค์การลงทุนระดับประสบการณ์และความกระหายที่มีความเสี่ยงอย่างรอบคอบ ความเป็นไปได้ที่จะทำให้คุณสูญเสียบางส่วนหรือทั้งหมดของการลงทุนครั้งแรกของคุณดังนั้นคุณจึงไม่ควรลงทุนเงินที่คุณไม่สามารถจะเสียได้ คุณควรตระหนักถึงความเสี่ยงทั้งหมดที่เกี่ยวข้องกับการซื้อขายเงินตราต่างประเทศและขอคำแนะนำจากที่ปรึกษาทางการเงินอิสระหากคุณมีข้อสงสัยใด ๆ ซอฟต์แวร์นี้มีให้ตามที่เป็นอยู่และการรับประกันโดยชัดแจ้งหรือโดยนัยซึ่งรวมถึง แต่ไม่ จำกัด เฉพาะการรับประกันโดยนัยของความสามารถในเชิงพาณิชย์และความเหมาะสมสำหรับวัตถุประสงค์เฉพาะจะถูกปฏิเสธ ในกรณีที่ผู้สำเร็จราชการแผ่นดินหรือผู้ร่วมสมทบต้องไม่รับผิดต่อความเสียหายโดยทางตรงโดยทางอ้อมอุบัติเหตุพิเศษเป็นแบบอย่างหรือเป็นผลสืบเนื่อง (รวมถึง แต่ไม่ จำกัด เพียงการจัดหาสินค้าทดแทนหรือบริการที่สูญเสียการใช้ข้อมูลหรือกำไรหรือการหยุดชะงักทางธุรกิจ (รวมถึงความประมาทหรืออื่น ๆ ) ที่เกิดขึ้นจากการใช้ซอฟต์แวร์นี้แม้ว่าจะมีการแจ้งความเป็นไปได้ว่าจะเกิดความเสียหายก็ตาม การตั้งค่าบัญชีกับ OANDA คำถามแรกที่ควรคำนึงคือทำไมต้องเลือก OANDA ใส่เพียงเล็กน้อยหลังจากบิตของ Googling รอบสำหรับโบรกเกอร์ forex ที่มี APIs ฉันเห็นว่า OANDA ได้เปิดตัว REST API ที่เหมาะสมซึ่งสามารถสื่อสารได้อย่างง่ายดายด้วยภาษาเกือบทุกภาษาในลักษณะที่ตรงไปตรงมามาก หลังจากอ่านเอกสาร API สำหรับนักพัฒนาซอฟต์แวร์แล้ว ฉันตัดสินใจที่จะลองใช้บัญชีอย่างน้อยที่สุด ชัดเจน - ฉันไม่มีความสัมพันธ์กับ OANDA ก่อนหน้านี้และกำลังให้คำแนะนำนี้จากประสบการณ์ที่ จำกัด ในการเล่น API และการใช้งานสั้น ๆ (สำหรับการดาวน์โหลดข้อมูลตลาด) ในขณะที่ใช้ในกองทุนก่อนหน้านี้ ถ้าใครได้เจอนายหน้าซื้อขายอัตราแลกเปลี่ยนอื่น ๆ ที่มี API แบบใหม่ในทำนองเดียวกันด้วยเช่นกันจากนั้น Id ก็ยินดีที่จะให้ความสนใจแก่พวกเขาด้วยเช่นกัน ก่อนที่จะใช้ API คุณจำเป็นต้องลงชื่อสมัครใช้บัญชีการฝึกอบรม ในการดำเนินการนี้ให้ไปที่ลิงก์ลงชื่อสมัครใช้ คุณจะเห็นหน้าจอต่อไปนี้: จากนั้นคุณจะสามารถลงชื่อเข้าใช้ด้วยข้อมูลรับรองการเข้าสู่ระบบของคุณ ตรวจสอบให้แน่ใจว่าได้เลือกแท็ก fxTradePractice จากหน้าจอลงชื่อเข้าใช้: เมื่อคุณจำเป็นต้องจดบันทึกรหัสบัญชีของคุณ อยู่ภายใต้ส่วนหัว Black Funds ของฉันถัดจาก Primary เหมืองเป็นตัวเลข 7 หลัก นอกจากนี้คุณยังจะต้องสร้างโทเค็น API ส่วนบุคคล ในการดำเนินการนี้คลิกจัดการการเข้าถึง API ใต้แท็บการทำงานอื่น ๆ ที่ด้านล่างซ้าย: ในขั้นตอนนี้คุณจะสามารถสร้างโทเค็น API ได้ คุณจะต้องใช้คีย์เพื่อใช้ในภายหลังดังนั้นโปรดจดบันทึกไว้ด้วยเช่นกัน ตอนนี้คุณต้องการเปิดตัวแอพพลิเคชั่น FXTrade Practice ซึ่งจะช่วยให้เราสามารถดูใบสั่งซื้อที่ดำเนินการได้และการสูญเสียผลกำไรของ บริษัท (กระดาษ) ของเรา ถ้าคุณใช้ระบบ Ubuntu คุณจะต้องติดตั้ง Java รุ่นที่แตกต่างกันเล็กน้อย โดยเฉพาะรุ่น Oracle ของ Java 8 หากคุณไม่ได้ทำแบบจำลองการปฏิบัตินี้จะไม่โหลดจากเบราเซอร์ ฉันได้เรียกใช้คำสั่งเหล่านี้ในระบบของฉัน: ขณะนี้คุณสามารถเปิดใช้งานสภาพแวดล้อมการซื้อขายการปฏิบัติได้ กลับไปที่หน้าแดชบอร์ดของ OANDA และคลิกลิงก์ Launch FXTrade Practice ที่ไฮไลต์สีเขียว จะมีกล่องโต้ตอบ Java ถามว่าคุณต้องการรันหรือไม่ คลิก Run และเครื่องมือ fxTrade Practice จะโหลด ฉันผิดนัดไปยังแผนภูมิเทียน 15 นาทีของ EURUSD พร้อมแผง Quote ในด้านซ้าย: ณ จุดนี้เราพร้อมที่จะเริ่มออกแบบและเขียนโค้ดระบบซื้อขายแลกเปลี่ยนอัตโนมัติของเรากับ OANDA API ภาพรวมของสถาปัตยกรรมการเทรดดิ้งหากคุณได้ติดตามซีรี่ส์ backtester ที่มีเหตุการณ์เป็นตัวขับเคลื่อนสำหรับหุ้นและ ETF ที่ฉันสร้างขึ้นเมื่อปีที่แล้วคุณจะทราบว่าระบบการซื้อขายตามเหตุการณ์เป็นอย่างไร สำหรับบรรดาผู้ที่ยังใหม่กับซอฟต์แวร์ที่ขับเคลื่อนโดยเหตุการณ์ ฉันขอแนะนำให้อ่านบทความเพื่อให้เข้าใจถึงวิธีการทำงาน ในสาระสำคัญโปรแกรมทั้งหมดจะถูกดำเนินการในวง จำกัด infinte ที่จะยุติเมื่อระบบการซื้อขายถูกปิด กลไกการสื่อสารกลางของโปรแกรมจะได้รับผ่านทางคิวที่มีเหตุการณ์ คิวมีการสอบถามตลอดเวลาเพื่อตรวจสอบเหตุการณ์ใหม่ ๆ เมื่อเหตุการณ์ได้รับการเอาออกด้านบนของคิวจะต้องได้รับการจัดการโดยองค์ประกอบที่เหมาะสมของโปรแกรม ดังนั้นฟีดข้อมูลตลาดอาจสร้าง TickEvent s ที่วางลงในคิวเมื่อมีราคาตลาดใหม่มาถึง วัตถุกลยุทธ์การสร้างสัญญาณอาจสร้าง OrderEvent s ที่จะถูกส่งไปยังนายหน้าซื้อขายหลักทรัพย์ ประโยชน์ของระบบดังกล่าวจะได้รับจากข้อเท็จจริงที่ว่าไม่สำคัญว่าลำดับหรือชนิดของเหตุการณ์ใดจะอยู่ในคิวเนื่องจากจะได้รับการจัดการอย่างถูกต้องโดยองค์ประกอบด้านขวาภายในโปรแกรม นอกจากนี้ส่วนต่างๆของโปรแกรมสามารถทำงานในหัวข้อที่แยกต่างหาก หมายความว่าไม่มีการรอคอยใด ๆ สำหรับส่วนประกอบใด ๆ ก่อนที่จะดำเนินการใด ๆ นี่เป็นประโยชน์อย่างมากในสถานการณ์การค้าอัลกอริทึมที่ตัวจัดการแหล่งป้อนข้อมูลตลาดและเครื่องกำเนิดสัญญาณกลยุทธ์มีลักษณะการทำงานที่แตกต่างกันอย่างมากมาย ห่วงการซื้อขายหลักจะได้รับโดย Python pseudo-code ดังต่อไปนี้: ตามที่เรากล่าวไว้ข้างต้นโค้ดจะทำงานในลูปที่ไม่มีขีด จำกัด ประการแรกคิวจะได้รับการสำรวจเพื่อดึงข้อมูลเหตุการณ์ใหม่ ถ้าคิวว่างเปล่าลูปจะรีสตาร์ทหลังจากระยะเวลาสั้น ๆ ที่เรียกว่า heartbeat ถ้าพบเหตุการณ์ประเภทของมันคือการประเมินแล้วโมดูลที่เกี่ยวข้อง (ทั้งกลยุทธ์หรือตัวจัดการการดำเนินการ) ถูกเรียกใช้เพื่อจัดการเหตุการณ์และอาจสร้างใหม่ที่กลับไปยังคิว ส่วนประกอบพื้นฐานที่เราจะสร้างขึ้นสำหรับระบบการค้าของเรา ได้แก่ : Streaming Price Handler - จะทำให้การเชื่อมต่อระยะยาวทำงานได้กับเซิร์ฟเวอร์ OANDAs และส่งข้อมูลติ๊ก (bidask) ผ่านการเชื่อมต่อกับเครื่องมือที่สนใจ Generate Signal Generator - จะใช้ลำดับเหตุการณ์ติ๊กและใช้เพื่อสร้างคำสั่งซื้อขายที่จะดำเนินการโดยตัวจัดการการดำเนินการ Execution Handler - ใช้ชุดของเหตุการณ์การสั่งซื้อและสุ่มสี่สุ่มห้าดำเนินการกับ OANDA เหตุการณ์ - ออบเจ็กต์เหล่านี้เป็นข้อความที่ส่งผ่านไปในคิวเหตุการณ์ เราต้องการเพียงสองอย่างสำหรับการใช้งานนี้คือ TickEvent และ OrderEvent Main Entry Point - จุดเข้าหลักยังรวมถึงลูปการค้าที่ต่อเนื่องในคิวข้อความและส่งข้อความไปยังคอมโพเนนต์ที่ถูกต้อง นี้มักจะเรียกว่าลูปเหตุการณ์หรือตัวจัดการเหตุการณ์ ตอนนี้เราจะพูดถึงการใช้โค้ดในรายละเอียด ที่ด้านล่างของบทความเป็นรายการที่สมบูรณ์ของไฟล์ซอร์สโค้ดทั้งหมด หากคุณวางไว้ในไดเรกทอรีเดียวกันและเรียกใช้งาน trading. py หลามคุณจะเริ่มต้นสร้างคำสั่งซื้อสมมติว่าคุณได้กรอก ID บัญชีและโทเค็นการตรวจสอบจาก OANDA แล้ว การปฏิบัติ Python การปฏิบัติที่ไม่ดีในการจัดเก็บรหัสผ่านหรือคีย์การรับรองความถูกต้องภายใน codebase เนื่องจากคุณไม่สามารถคาดเดาได้ว่าใครจะสามารถเข้าถึงโครงการได้ ในระบบการผลิตเราจะจัดเก็บข้อมูลรับรองเหล่านี้เป็นตัวแปรสภาพแวดล้อมกับระบบจากนั้นจะสอบถาม envvars เหล่านี้ทุกครั้งที่มีการปรับใช้โค้ดใหม่ เพื่อให้แน่ใจว่ารหัสผ่านและโทเค็นการรับรองจะไม่ถูกเก็บไว้ในระบบควบคุมเวอร์ชัน อย่างไรก็ตามเนื่องจากเราสนใจเพียงอย่างเดียวในการสร้างระบบการซื้อขายของเล่นและไม่เกี่ยวกับรายละเอียดการผลิตในบทความนี้เราจะแยกโทเค็นการตรวจสอบเหล่านี้แทนไฟล์การตั้งค่า ในไฟล์คอนฟิกูเรชัน settings. py ต่อไปนี้เรามีพจนานุกรมชื่อ ENVIRONMENTS ซึ่งจัดเก็บปลายทาง API สำหรับทั้ง API การแจ้งราคาของ OANDA และ API การซื้อขาย แต่ละพจนานุกรมย่อยมีจุดเชื่อมต่อ API 3 จุดแยกกัน: จริง การปฏิบัติและ sandbox API ของ Sandbox ใช้เพื่อทดสอบโค้ดและตรวจสอบว่าไม่มีข้อผิดพลาดหรือข้อบกพร่อง ไม่มีการรับประกันเวลาจริงของ API จริงหรือการปฏิบัติ API การปฏิบัติซึ่งเป็นสาระสำคัญช่วยให้สามารถซื้อขายกระดาษได้ กล่าวคือให้คุณลักษณะทั้งหมดของ API จริงในบัญชีการฝึกปฏิบัติแบบจำลอง API จริงก็คือ - เป็นการซื้อขายแบบสดหากคุณใช้ปลายทางนั้นในโค้ดของคุณจะเป็นการแลกเปลี่ยนกับยอดคงเหลือในบัญชีออนไลน์ของคุณ ระมัดระวังเป็นพิเศษ: เมื่อซื้อขายกับ API ปฏิบัติโปรดจำไว้ว่าค่าใช้จ่ายในการทำธุรกรรมที่สำคัญของผลกระทบต่อตลาด ไม่ถือว่าเป็น เนื่องจากธุรกิจการค้าไม่ได้อยู่ในสภาพแวดล้อมจริงค่าใช้จ่ายนี้ต้องถูกคิดในรูปแบบอื่นหากใช้รูปแบบผลกระทบจากตลาดหากคุณต้องการประเมินประสิทธิภาพอย่างสมจริง ในต่อไปนี้เราใช้บัญชีการฝึกปฏิบัติตามที่กำหนดโดยการตั้งค่า DOMAIN เราจำเป็นต้องใช้พจนานุกรมสองชุดสำหรับโดเมนแต่ละอันสำหรับส่วนประกอบสตรีมและการซื้อขาย API สุดท้ายเรามี ACCESSTOKEN และ ACCOUNTID Ive เต็มสองด้านล่างมี id dummy ดังนั้นคุณจะต้องใช้ของคุณเองซึ่งสามารถเข้าถึงได้จากหน้าบัญชี OANDA: ขั้นตอนต่อไปคือการกำหนดเหตุการณ์ที่คิวจะใช้เพื่อช่วยให้ทุกส่วนของแต่ละองค์ประกอบสื่อสาร เราต้องใช้สองวิธี ได้แก่ TickEvent และ OrderEvent ครั้งแรกที่จัดเก็บข้อมูลเกี่ยวกับข้อมูลตลาดเครื่องมือเช่น (bidask) ที่ดีที่สุดและเวลาทางการค้า ส่วนที่สองใช้ในการส่งคำสั่งไปยังตัวจัดการการดำเนินการและประกอบด้วยเครื่องมือจำนวนหน่วยเพื่อการค้าประเภทของคำสั่งซื้อ (ตลาดหรือวงเงิน) และด้านข้าง (เช่นซื้อและขาย) เพื่อพิสูจน์รหัสเหตุการณ์ในอนาคตของเราเราจะสร้างคลาสพื้นฐานที่ชื่อว่า Event และมีเหตุการณ์ทั้งหมดสืบทอดจากสิ่งนี้ รหัสนี้มีไว้ด้านล่างใน events. py: ชั้นเรียนถัดไปที่เราจะสร้างจะจัดการกับกลยุทธ์การซื้อขาย ในการสาธิตนี้เราจะสร้างกลยุทธ์ที่ค่อนข้างไร้สาระซึ่งจะได้รับทิปจากตลาดทั้งหมดและเมื่อทุกๆ 5 ครั้งสุ่มซื้อหรือขายหน่วย EURUSD จำนวน 10,000 หน่วย เห็นได้ชัดว่านี่เป็นกลยุทธ์ที่น่าขันอย่างไรก็ตามเป็นเรื่องที่ยอดเยี่ยมสำหรับจุดประสงค์ในการทดสอบเนื่องจากรหัสและเข้าใจง่าย ในรายการไดอารี่ในอนาคตเราจะแทนที่ข้อมูลนี้ด้วยสิ่งที่น่าสนใจอย่างมากซึ่งจะหวังผลกำไรได้ไฟล์ strategy. py สามารถพบได้ด้านล่าง ช่วยให้ทำงานผ่านมันและดูว่าเกิดอะไรขึ้น ประการแรกเรานำเข้าไลบรารีแบบสุ่มและวัตถุ OrderEvent จาก events. py เราต้องการ lib แบบสุ่มเพื่อเลือกคำสั่งซื้อหรือขายแบบสุ่ม เราต้อง OrderEvent เนื่องจากเป็นวิธีการที่ object ยุทธศาสตร์จะส่งคำสั่งไปยังคิวเหตุการณ์ซึ่งจะดำเนินการโดยตัวจัดการการดำเนินการในภายหลัง คลาส TestRandomStrategy ใช้เครื่องมือนี้ (ในกรณีนี้คือ EURUSD) จำนวนหน่วยและลำดับเหตุการณ์เป็นชุดของพารามิเตอร์ จากนั้นจะสร้างตัวนับเห็บที่ใช้เพื่อบอกวิธีการหลายกรณีที่ TickEvent ได้เห็น งานส่วนใหญ่เกิดขึ้นในวิธี calculatesignals ซึ่งใช้เวลาเพียงเหตุการณ์กำหนดว่าจะเป็น TickEvent (มิฉะนั้นละเว้น) และเพิ่มตัวนับติ๊ก จากนั้นจะตรวจสอบเพื่อดูว่านับเป็นหารด้วย 5 และสุ่มซื้อหรือขายตามลำดับของตลาดจำนวนหน่วยที่ระบุ แน่นอนมันไม่ได้เป็นกลยุทธ์การค้าที่ยิ่งใหญ่ที่สุดในโลก แต่จะเป็นมากกว่าที่เหมาะสมสำหรับการเป็นนายหน้าซื้อขายตราสารหนี้ของ บริษัท OANDA เพื่อวัตถุประสงค์ในการทดสอบส่วนประกอบต่อไปคือตัวจัดการการดำเนินการ คลาสนี้ถูกมอบหมายให้ทำหน้าที่ในกรณี OrderEvent และส่งคำขอไปยังโบรกเกอร์ (ในกรณีนี้ OANDA) ในแบบใบ้ นั่นคือไม่มีการจัดการความเสี่ยงหรือการซ้อนทับ potfolio ก่อสร้าง ตัวดำเนินการจะดำเนินการตามคำสั่งใด ๆ ที่ได้รับ เราต้องส่งข้อมูลการตรวจสอบสิทธิ์ทั้งหมดไปยังชั้น Execution รวมทั้งโดเมน (การปฏิบัติจริงหรือ sandbox) โทเค็นการเข้าถึงและ ID บัญชี จากนั้นเราจะสร้างการเชื่อมต่อที่ปลอดภัยกับ httplib หนึ่งใน Pythons ที่สร้างขึ้นในห้องสมุด งานส่วนใหญ่เกิดขึ้นในการสั่งงาน เมธอดต้องใช้เหตุการณ์เป็นพารามิเตอร์ จากนั้นจะสร้างพจนานุกรมสองชุด - ส่วนหัวและพา ธ ส์ พจนานุกรมเหล่านี้จะได้รับการเข้ารหัสอย่างถูกต้อง (บางส่วนโดย urllib อีกห้องสมุด Python) เพื่อส่งเป็นคำขอ HTTP POST ไปยัง OANDAs API เราส่งผ่านพารามิเตอร์ส่วนหัวประเภทเนื้อหาและการให้สิทธิ์ซึ่งรวมถึงข้อมูลการตรวจสอบสิทธิ์ของเรา นอกจากนี้เราเข้ารหัสพารามิเตอร์ซึ่งรวมถึงเครื่องมือ (EURUSD) หน่วยประเภทคำสั่งซื้อและด้าน (buysell) สุดท้ายเราขอและบันทึกการตอบสนอง: คอมโพเนนต์ที่ซับซ้อนที่สุดของระบบการซื้อขายคืออ็อบเจ็กต์ StreamingForexPrices ซึ่งจัดการการอัปเดตราคาตลาดจาก OANDA มีสองวิธี ได้แก่ : connecttream และ streamtoqueue วิธีแรกใช้ห้องสมุดคำขอ Python เพื่อเชื่อมต่อกับซ็อกเก็ตสตรีมมิ่งที่มีส่วนหัวและพารามิเตอร์ที่เหมาะสม พารามิเตอร์รวมถึงรหัสบัญชีและรายการเครื่องมือที่จำเป็นซึ่งควรได้รับการฟังเพื่อปรับปรุง (ในกรณีนี้เป็นเพียง EURUSD เท่านั้น) หมายเหตุบรรทัดต่อไปนี้: บอกการเชื่อมต่อที่จะสตรีมและจึงเก็บไว้เปิดในลักษณะยาวทำงาน วิธีที่สอง streamtoqueue จริงพยายามเชื่อมต่อกับสตรีม หากการตอบสนองไม่สำเร็จ (นั่นคือรหัสตอบกลับไม่ใช่ HTTP 200) จากนั้นเราก็จะกลับมาและออก ถ้าประสบความสำเร็จเราพยายามโหลดแพ็คเก็ต JSON ที่ส่งกลับมาในพจนานุกรมของ Python สุดท้ายเราแปลงพจนานุกรม Python ด้วยเครื่องมือ bidask และ timestamp ลงใน TickEvent ซึ่งถูกส่งไปยังคิวเหตุการณ์: ขณะนี้เรามีองค์ประกอบสำคัญทั้งหมดแล้ว ขั้นตอนสุดท้ายคือการห่อหุ้มทุกสิ่งที่เราเขียนไว้ให้เป็นโปรแกรมหลัก เป้าหมายของไฟล์นี้เรียกว่า trading. py คือการสร้างสองหัวข้อที่แยกต่างหาก หนึ่งซึ่งเรียกใช้ตัวจัดการการกำหนดราคาและอีกอันหนึ่งซึ่งเรียกใช้ตัวจัดการการซื้อขาย ทำไมเราต้องมีสองเธรดแยกต่างหากใส่เพียงเราจะดำเนินการสองชิ้นส่วนที่แยกจากกันซึ่งทั้งสองอย่างต่อเนื่องจะทำงาน ถ้าเราสร้างโปรแกรมที่ไม่มีเธรดจากนั้นซ็อกเก็ตสตรีมมิ่งที่ใช้สำหรับการอัปเดตการกำหนดราคาจะไม่สามารถปลดล็อกเส้นทางรหัสหลักและเราจะไม่ดำเนินการซื้อขายใด ๆ เลย ในทำนองเดียวกันถ้าเราวิ่งห่วงการค้า (ดูด้านล่าง) เราจะไม่สามารถกลับเส้นทางการไหลไปยังซ็อกเก็ตสตรีมราคาได้ ดังนั้นเราต้องมีหลายเธรดหนึ่งสำหรับแต่ละองค์ประกอบเพื่อให้สามารถดำเนินการได้อย่างอิสระ ทั้งสองคนจะติดต่อกันผ่านคิวเหตุการณ์ ให้ตรวจสอบอีกสักหน่อย เราสร้างสองหัวข้อแยกกันโดยใช้บรรทัดต่อไปนี้: เราส่งผ่านฟังก์ชันหรือชื่อเมธอดไปยังอาร์กิวเมนต์คำหลักเป้าหมายและส่งผ่านข้อมูลซ้ำซ้อน (เช่นรายการหรือ tuple) ไปยังอาร์กิวเมนต์คำหลัก args ซึ่งจะส่งผ่านอาร์กิวเมนต์เหล่านั้นไปยังเมธอดที่เกิดขึ้นจริง . ท้ายสุดเราจะเริ่มต้นทั้งสองหัวข้อด้วยบรรทัดต่อไปนี้: เพราะฉะนั้นเราจึงสามารถเรียกใช้ลูปวนอนันต์ได้สองแบบได้อย่างมีประสิทธิภาพส่วนโค้ดอย่างอิสระซึ่งทั้งคู่สื่อสารผ่านคิวเหตุการณ์ โปรดทราบว่าไลบรารีเธรดเธรด Python ไม่ได้สร้างสภาวะแวดล้อมมัลติเธรดแบบ multi-core ที่แท้จริงเนื่องจากการใช้งาน Python และ Global Interpreter Lock (GIL) ของ CPython ถ้าคุณต้องการอ่านเพิ่มเติมเกี่ยวกับ multithreading ใน Python โปรดดูที่บทความนี้ ให้ตรวจสอบส่วนที่เหลือของรหัสในรายละเอียด ประการแรกเรานำเข้าไลบรารีที่จำเป็นทั้งหมดรวมทั้ง Queue เกลียวและเวลา จากนั้นเราจะนำเข้าไฟล์โค้ดทั้งหมดข้างต้น ฉันเองชอบที่จะลงทุนการตั้งค่าใด ๆ ซึ่งเป็นนิสัยฉันหยิบขึ้นมาจากการทำงานกับ Django หลังจากที่เรากำหนดฟังก์ชันทางการค้าซึ่งได้อธิบายไว้ใน Python-pseudocode ข้างต้น (ขณะ True:) ที่ดำเนินการสำรวจจากคิวเหตุการณ์อย่างต่อเนื่องและข้ามผ่านลูปเท่านั้นหากพบว่าไม่มีข้อมูล หากพบเหตุการณ์แล้วจะเป็น TickEvent หรือ OrderEvent และคอมโพเนนต์ที่เหมาะสมจะถูกเรียกใช้เพื่อดำเนินการดังกล่าว ในกรณีนี้เป็นทั้งตัวจัดการกลยุทธ์หรือตัวดำเนินการ ลูปจากนั้นก็จะนอนหลับสำหรับวินาทีการเต้นของหัวใจ (ในกรณีนี้ 0.5 วินาที) และดำเนินการต่อ สุดท้ายเรากำหนดจุดเข้าหลักของโค้ดในฟังก์ชันหลัก มันเป็นความเห็นดีด้านล่าง แต่ฉันจะสรุปที่นี่ ในสาระสำคัญเราจะสร้างคิวเหตุการณ์และกำหนดชุดเครื่องมือ จากนั้นเราจะสร้างคลาสสตรีมมิ่งสตรีมมิ่ง StreamingForexPrices และจากนั้นจะดำเนินการตัวจัดการการดำเนินการดำเนินการ ทั้งสองได้รับรายละเอียดการตรวจสอบที่จำเป็นซึ่งได้รับจาก OANDA เมื่อสร้างบัญชี จากนั้นเราจะสร้างอินสแตนซ์ TestRandomStrategy ในที่สุดเรากำหนดสองหัวข้อและจากนั้นเริ่มต้นพวกเขา: เมื่อต้องการเรียกใช้รหัสที่คุณเพียงแค่ต้องวางไฟล์ทั้งหมดในไดเรกทอรีเดียวกันและโทรต่อไปนี้ที่ terminal: โปรดทราบว่าเพื่อหยุดรหัสในขั้นตอนนี้ต้องใช้ยากที่จะฆ่า กระบวนการ Python ผ่านทาง Ctrl-Z หรือเทียบเท่า Ive ไม่ได้เพิ่มเธรดเพิ่มเติมเพื่อจัดการค้นหา sys. exit () ที่จำเป็นสำหรับการหยุดโค้ดอย่างปลอดภัย วิธีที่อาจเป็นไปได้ที่จะหยุดรหัสบนเครื่อง UbuntuLinux คือพิมพ์: จากนั้นให้ส่งต่อข้อมูลของหมายเลขนี้ (หมายเลขกระบวนการ) ไปเป็นข้อมูลต่อไปนี้: ในกรณีที่ PROCESSID ต้องถูกแทนที่ด้วยผลลัพธ์ของ pgrep โปรดทราบว่านี่ไม่ใช่วิธีที่ดีโดยเฉพาะอย่างยิ่งในบทความต่อ ๆ มาเราจะสร้างกลไกการหยุดชะงักที่ซับซ้อนขึ้นซึ่งจะใช้การควบคุมกระบวนการ Ubuntus เพื่อให้ระบบการซื้อขายทำงาน 247 เอาต์พุตหลังจากผ่านไป 30 วินาทีขึ้นอยู่กับเวลาของ วันเทียบกับชั่วโมงการซื้อขายหลักสำหรับ EURUSD สำหรับโค้ดด้านบนแสดงไว้ด้านล่างนี้ห้าบรรทัดแรกแสดงข้อมูลการติ๊ก JSON ที่ส่งคืนจาก OANDA พร้อมราคา bidask จากนั้นคุณจะเห็นผลลัพธ์การดำเนินการตามคำสั่งรวมทั้งการตอบกลับ JSON ที่ส่งคืนจาก OANDA เพื่อยืนยันการเปิดการซื้อขายเพื่อซื้อ EURUSD จำนวน 10,000 หน่วยและเป็นราคาที่เกิดขึ้น การดำเนินการนี้จะทำงานต่อไปเรื่อย ๆ จนกว่าคุณจะฆ่าโปรแกรมโดยใช้คำสั่ง Ctrl-Z หรือคล้ายกัน Whats Next ในบทความภายหลังเราจะดำเนินการปรับปรุงที่จำเป็นมาก ๆ ได้แก่ : กลยุทธ์จริง - กลยุทธ์การซื้อขายเงินตราที่เหมาะสมซึ่งสร้างสัญญาณกำไรได้ โครงสร้างพื้นฐานด้านการผลิต - การใช้เซิร์ฟเวอร์ระยะไกลและระบบการซื้อขายที่ได้รับการตรวจสอบ 247 ด้วยความสามารถในการหยุดชะงัก พอร์ตการลงทุนและการจัดการความเสี่ยง - Portfolio และการซ้อนทับความเสี่ยงสำหรับคำสั่งซื้อที่แนะนำทั้งหมดจากกลยุทธ์ หลายกลยุทธ์ - การสร้างผลงานของกลยุทธ์ที่รวมเข้ากับการซ้อนทับด้านการจัดการความเสี่ยงเช่นเดียวกับ backtester เหตุการณ์ที่ขับเคลื่อนด้วยเหตุการณ์เราจำเป็นต้องสร้างโมดูล backtesting forex ที่จะช่วยให้เราดำเนินการวิจัยอย่างรวดเร็วและทำให้การปรับใช้กลยุทธ์ทำได้ง่ายขึ้น settings. py (อย่าลืมเปลี่ยน ACCOUNTID และ ACCESSTOKEN): เพียงเริ่มต้นด้วยการซื้อขายเชิงปริมาณ

Comments