Deutsche Boerse เปิดเผยการซื้อขายเงินตราต่างประเทศเมื่อวันอาทิตย์ที่ผ่านมาว่า Deutsche Boerse จะซื้อระบบการซื้อขายเงินตราต่างประเทศแบบ 360T ของเยอรมนีที่ราคา 725 ล้านยูโรซึ่งมีมูลค่า 796 ล้านยูโรซึ่งเป็นอัตราแลกเปลี่ยนเงินตราต่างประเทศ การซื้อขายเงินตราต่างประเทศในช่วงหลายปีที่ผ่านมา บริษัท Deutsche Boerse ได้พ่ายแพ้ให้กับสินทรัพย์ของสหรัฐฯรวมถึงนักขับแลกเงิน CME Group CME O ในการประมูลสาธารณะตามแหล่งข้อมูลที่คุ้นเคยกับข้อเสนอนี้ JANUARY 30 21 30.Buck Falls as Manufacturing Facility. Bloomberg s scale เงินกระดาษเมื่อเทียบกับ 10 ประเทศที่ชะลอตัวลงหลังจากได้รับผลกำไร 2 วันที่ดีที่สุดในรอบ 3 สัปดาห์ท่ามกลางสถิติการผลิตที่ลดลงมากที่สุดในรอบกว่าหนึ่งเดือนในเดือนมีนาคมรวมทั้งการผลิตเชิงพาณิชย์ลดลงความมั่นใจในตนเองของลูกค้าทั้งหมดลดลงอย่างรวดเร็วในเดือนเมษายน ที่อ่อนแอที่สุดในรอบ 7 เดือนสถิติทางการเศรษฐกิจได้ติดตามการประเมินโดยผู้เชี่ยวชาญมาตั้งแต่ต้นเดือนตามขั้นตอนของการช็อกทางการเงิน Bloomberg JANU ARY 30 21 30.Duping Band-Aids ในบล็อก FX ขณะนี้เป็นช่วงเวลาที่จะปล่อยระบบวิชาชีพบทความที่พอดีกับตลาดที่เหลือจะแนะนำได้อย่างรวดเร็วในขณะที่การพัฒนาสิทธิในอัตรากำไรที่ลดลงกรอบ company. The บล็อกวิชาชีพ ในวันนี้ถูกสร้างขึ้นเมื่อ บริษัท เสียงเป็นวิธีการชั้นนำในการซื้อขายกับเสียงการซื้อขายแบบดิจิตอลสำหรับการสั่งซื้อจำนวนมากการจัดการอาชีพต้องมีความคืบหน้าเพิ่มขึ้นแสดงความคิดเห็นการสร้างระบบการซื้อขาย E-mini ใช้ PHP และแบบสอบถามขั้นสูงของ MySQL บทความนี้จะแสดงตัวอย่างของวิธีการใช้ PHP และแบบสอบถามขั้นสูงของ MySQL เพื่อสร้างระบบการซื้อขายออนไลน์เพื่อความเรียบง่ายเราจะมีดัชนีสเป็กที่ใช้กันมากที่สุดแห่งหนึ่งในดัชนี SP 500 ซึ่งเรียกว่า E-mini SP 500 ฟิวเจอร์สซึ่งเป็นหนึ่งในตลาดหุ้นที่ซื้อขายกันอย่างแพร่หลายมากที่สุดนับตั้งแต่เดือนกันยายนปี 2009 ปัจจุบันไม่มีระบบการซื้อขายที่ทำงานบนอินเทอร์เน็ตซึ่งขับเคลื่อนโดย PHP และ MySQL แม้จะมีแพลตฟอร์มป๊อป ความเป็นปึกแผ่นท่ามกลางประชาคมโอเพนซอร์สระบบการซื้อขายถูกนำมาใช้เพื่อเข้าและออกจากการค้าในตลาดหุ้นหรือตลาดฟิวเจอร์สแม้ว่าในการออกจากการค้าเพื่อคว้ากำไรและควบคุมความสูญเสียการจัดการเงินก็เป็นเครื่องมือที่มีประโยชน์มากกว่าระบบการซื้อขาย ระบบการซื้อขายอย่างเต็มที่ทำงานคุณต้องใช้กระบวนการดังต่อไปนี้ข้อมูลดิบควรนำมาจากแหล่งที่เชื่อถือได้สำหรับ SP 500 ข้อมูลดัชนีในบทความนี้เราจะใช้ข้อมูล Yahoo Finance ประเภทไฟล์การส่งออกเป็นส่วนใหญ่และ Excel ดังนั้นก่อนอื่นคุณต้อง เพื่อส่งออกข้อมูลดิบไปยังฐานข้อมูล MySQL ดูรายละเอียดด้านล่างหัวใจของกระบวนการนี้คือระบบการซื้อขายมันเป็นวิธีการวิเคราะห์ข้อมูลดิบและการตัดสินผู้ประกอบการค้าทุกรายมีระบบการซื้อขายของตนเองตาม แต่ในตัวอย่างนี้ เราจะใช้กฎต่อไปนี้กฎ 1 กำหนดเดลต้าเป็นความแตกต่างระหว่างค่าเฉลี่ยเคลื่อนที่ 50 วันและค่าเฉลี่ยเคลื่อนที่ 200 ถ้าค่าของเดลต้าเป็นบวกแสดงว่ามีแนวโน้มเป็นบวกมิฉะนั้นจะเป็นหยาบคายคุณสามารถอ่านเพิ่มเติมเกี่ยวกับค่าเฉลี่ยเคลื่อนที่ได้ le 2 กำหนดความแข็งแรงของแนวโน้มเป็น Delta MA 200 นี้ quantifies ความแรงของแนวโน้มใช้ข้อมูลทางประวัติศาสตร์กำหนดขอบเขตสำหรับการคำนวณการตัดสินของขอบเขตอยู่นอกขอบเขตสำหรับการกวดวิชานี้เป็นเหมือนการยืนยันแนวโน้มใช้ PHP เพื่อแสดงข้อมูลใน ตาราง HTML ในขณะที่ใช้ MySQL แบบสอบถามล่วงหน้าคำนวณเฉลี่ยและได้รับข้อมูลดัชนีการคำนวณของค่าเฉลี่ยที่เคลื่อนที่ขั้นตอนที่ 1 ดาวน์โหลดดิบ SP 500 ข้อมูลดัชนีจากและจัดรูปแบบตาราง Excel ให้มีลักษณะเหมือนภาพด้านล่างลบคอลัมน์ที่ไม่จำเป็นเช่นปริมาณการซื้อขายและเพิ่ม รายการคอลัมน์ใหม่ตาราง MySQL ของคุณควรมีลักษณะเหมือนด้านบนอย่างไรก็ตามการถ่ายภาพหน้าจอด้านบนยังคงอยู่ในรูปแบบขั้นตอนที่ 2 แปลงไปและอัปโหลดไปยังเซิร์ฟเวอร์ MySQL ของคุณคุณสามารถอ่านบทความที่อธิบายถึงวิธีการแปลงแผ่นงาน Excel ของคุณ ขั้นที่ 3 ถึงเวลาเขียนสคริปต์ PHP แรกที่เราเชื่อมต่อกับฐานข้อมูลโดยใช้สคริปต์ด้านล่าง เชื่อมต่อกับฐานข้อมูล mysql ชื่อผู้ใช้ mysql ของคุณ รหัสผ่านรหัสผ่าน mysql ของคุณ hostname ชื่อโฮสต์ mysql ของคุณ ฐานข้อมูล mysql ของคุณ dbhandle mysqlconnect hostname, username, password. or die ไม่สามารถเชื่อมต่อกับ MySQL ได้ เลือกฐานข้อมูลที่จะทำงานกับ. ตายไม่สามารถเลือกฐานข้อมูลขั้นที่ 4 เพื่อให้ทราบจำนวนแถวในฐานข้อมูลซึ่งเป็นค่าที่จะใช้ในการคำนวณของเราเราจะสอบถาม MySQL นับจำนวนแถวในฐานข้อมูลรวมถึงรายการล่าสุด result1 mysqlquery SELECT จาก sp500 เก็บบันทึกของตารางตัวอย่างใน row. or mysqlerror แบบสอบถามไม่ถูกต้อง พิมพ์จำนวนเนื้อหาทั้งหมดของรายการเลขที่ศูนย์มีจำนวนแถวสูงสุดในตาราง MySQL ในภาพด้านบน 15020 ข้อมูลในตาราง MySQL จะถูกจัดเรียงจากรายการล่าสุดลงไปยังรายการเก่า ภาพหน้าจอด้านบน mysqlnumrows จะถูกใช้เพื่อนับจำนวนแถวในตาราง SP500.Step 5 คำนวณรายการสุดท้ายที่จะแสดงในตาราง HTML เพราะเราจะแสดงเพียง 50 แถวล่าสุดต่อไปนี้จะใช้ lastentry numberofentries -50 1. ซึ่งหมายความว่าเช่นเรามี 15020 รายการในตารางที่เราต้องการจะแสดงให้พวกเขาเริ่มต้นจากรายการ 15020 ถึง 15020-50 1 หรือรายการ 14971 ค่านี้รวมทั้งรายการสูงสุดข้างต้นจะ เปลี่ยนเป็นวันซื้อขายไปโดยขั้นที่ 6 ทำแบบสอบถาม MySQL เพื่อแยกล่าสุด 50 วันของรายการ result2 mysqlquery SELECT FROM sp500 ที่รายการ lastentry และรายการ numberofentries ORDER BY entry DESC ส่วนที่หากินคือการเรียงลำดับผลการค้นหาโดยเรียงลำดับจากนี้จะให้ผลลัพธ์ผลลัพธ์ถูกจัดเรียงจากรายการล่าสุดที่เก่าแก่ที่สุดขั้นตอนที่ 7 กำหนดขีด จำกัด สำหรับ ค่าเฉลี่ยเคลื่อนที่ 200 วันและค่าเฉลี่ยเคลื่อนที่ 50 วัน กำหนดขีด จำกัด สำหรับค่าเฉลี่ยเคลื่อนที่ 200 วัน lowerlimit numberofentries 200 1. กำหนดขีด จำกัด สำหรับค่าเฉลี่ยเคลื่อนที่ 50 วัน lowerlimit50 numberofentries 50 1. ขั้นตอนที่ 8 กำหนดแบบสอบถาม MySQL เพื่อคำนวณค่าเฉลี่ยเคลื่อนที่ 200 วัน result3 mysqlquery เลือก avg close จาก sp500 รายการที่ต่ำกว่าและ entry upperclit เก็บบันทึกของตารางตัวอย่างใน row. or mysqlerror แบบสอบถามไม่ถูกต้อง พิมพ์เนื้อหาของรายการขั้นที่ 9 กำหนดแบบสอบถาม MySQL เพื่อคำนวณค่าเฉลี่ยเคลื่อนที่ 50 วัน result4 mysqlquery SELECT ใกล้เคียง avg จาก SP500 ที่รายการ lowerlimit50 และ upperlimit รายการ เก็บบันทึกของตารางตัวอย่างใน row. or mysqlerror แบบสอบถามไม่ถูกต้อง พิมพ์ออกเนื้อหาของรายการขั้นตอนที่ 10 กำหนดให้กับตัวแปรและตัวเลขรอบเพื่อความง่ายในการแสดงผล HTML ขั้นตอนที่ 11 คำนวณ DELTA และผลลัพธ์แบบกลมขั้นตอนที่ 12 คำนวณค่า STRENGTH และผลลัพธ์แบบกลมขั้นตอนที่ 13 สร้างสคริปต์ PHP เพื่อให้คำแนะนำ คำแนะนำด้านบน BULL TREND ความเสี่ยงสูงมาก BUYING. elseif z 5 1 z 8 5. คำแนะนำแนะนำซื้อ BULL TREND ซื้อความเสี่ยงสูงจากการขายหุ้น 2 z 5. คำแนะนำแนะนำซื้อ BULL TREND ต่ำ RISK BUYING. ELSEIF z 0 z 1 99 แนะนำ UNCONFIRMED BULL TREND. elseif z 0 z -4 99. แนะนำ UNCONFIRMED BEAR TREND. elseif z -5 z -8. ข้อเสนอแนะ CONFIRMED BEAR TREND LOW RISK SHORT. ข้อควรระวังความพึงพอใจของความพึงพอใจสูงความคมชัดสูงมากค่าเกณฑ์การบันทึกถูกนำมาจากบันทึกทางประวัติศาสตร์ของ SP การคำนวณเหล่านี้อยู่นอกขอบเขตของบทแนะนำนี้ขั้นตอนที่ 14 รวมคำสั่งทั้งหมดด้านบนและการคำนวณจากนั้นพิมพ์ลงในตาราง HTML โดยใช้ loop. if ในขณะที่ mysqlnumrows result2 0. echo ความกว้างของตาราง 100 cellpadding 10 cellspacing 10 border 1.echo ตารางความกว้าง 100 border 1.echo tr td b รายการ b td td b วันที่ b td td b เปิด b td td b สูง b td td b ต่ำสุด b td td b ปิด b td td b MA200 b td td b MA50 b td td b Delta b td td b ความแรง b td td b คำแนะนำ b td tr. while แถว 2 mysqlfetchrow result2. result3 mysqlquery เลือก avg close จาก sp500 รายการที่ต่ำกว่าและ entry upperclit เก็บบันทึกของตารางตัวอย่างใน row. or mysqlerror แบบสอบถามไม่ถูกต้อง พิมพ์เนื้อหาของรายการ result4 mysqlquery SELECT ใกล้เคียง avg จาก SP500 ที่รายการ lowerlimit50 และ upperlimit รายการ เก็บบันทึกของตารางตัวอย่างใน row. or mysqlerror แบบสอบถามไม่ถูกต้อง พิมพ์เนื้อหาของรายการ คำแนะนำด้านบน BULL TREND ความเสี่ยงสูงมาก BUYING. elseif z 5 1 z 8 5. คำแนะนำแนะนำซื้อ BULL TREND ซื้อความเสี่ยงสูงจากการขายหุ้น 2 z 5. คำแนะนำแนะนำซื้อ BULL TREND LIS RISK BUYING. ELSEIF z 0 z 1 99 แนะนำ UNCONFIRMED BULL TREND. elseif z 0 z -4 99. แนะนำ UNCONFIRMED BEAR TREND. elseif z -5 z -8. ข้อเสนอแนะ CONFIRMED BEAR TREND LOW RISK SHORT. คำแนะนำการให้ความสำคัญกับสีชมพูเข้มมากความเสี่ยงสูง SHORT. Post navigation. Best Programming Language for Algorithmic Trading System หนึ่งในคำถามที่พบบ่อยที่สุดที่ฉันได้รับในกระเป๋าถือ QS คืออะไรคือภาษาเขียนโปรแกรมที่ดีที่สุดสำหรับการซื้อขายแบบอัลกอริทึมคำตอบสั้น ๆ ก็คือไม่มี ภาษาที่ดีที่สุดพารามิเตอร์ยุทธศาสตร์ประสิทธิภาพ modularity การพัฒนาความยืดหยุ่นและค่าใช้จ่ายทั้งหมดต้องได้รับการพิจารณาบทความนี้จะร่างองค์ประกอบที่จำเป็นของสถาปัตยกรรมระบบการค้าอัลกอริทึมและวิธีการตัดสินใจเกี่ยวกับการใช้งานมีผลต่อการเลือกใช้ภาษาขั้นแรกส่วนประกอบที่สำคัญของอัลกอริทึม ระบบการซื้อขายจะได้รับการพิจารณาเช่นเครื่องมือในการวิจัยเครื่องมือเพิ่มประสิทธิภาพพอร์ตการลงทุนผู้จัดการความเสี่ยงและกลไกการดำเนินงานต่อไปกลยุทธ์การซื้อขายที่แตกต่างกันจะได้รับการตรวจสอบและมีผลต่อการออกแบบระบบอย่างไรโดยเฉพาะความถี่ของการซื้อขาย เมื่อมีการเลือกกลยุทธ์การซื้อขายแล้วจะเป็นเรื่องที่เกิดขึ้น การออกแบบระบบทั้งหมดนี้รวมถึงทางเลือกของฮาร์ดแวร์ความสามารถของระบบปฏิบัติการและความยืดหยุ่นของระบบต่อเหตุการณ์ภัยพิบัติที่หาได้ยากและอาจเป็นภัยพิบัติในขณะที่สถาปัตยกรรมกำลังอยู่ในระหว่างการพิจารณาคำนึงถึงผลการปฏิบัติงานทั้งในด้านเครื่องมือการวิจัยและการใช้ชีวิต environment. What คือระบบการซื้อขายพยายามทำอะไรก่อนที่จะตัดสินใจเกี่ยวกับภาษาที่ดีที่สุดในการเขียนระบบการซื้อขายอัตโนมัติมีความจำเป็นต้องกำหนดความต้องการระบบนี้จะดำเนินการโดยสิ้นเชิงหรือไม่ระบบจะต้องมีการบริหารความเสี่ยงหรือ โมดูลการสร้างพอร์ตการลงทุนจะต้องใช้ backtester ประสิทธิภาพสูงสำหรับกลยุทธ์ส่วนใหญ่ระบบการซื้อขายสามารถแบ่งออกเป็น 2 ประเภทคือ Research and signal generation การวิจัยมีความเกี่ยวข้องกับการประเมินประสิทธิภาพของกลยุทธ์มากกว่าข้อมูลทางประวัติศาสตร์กระบวนการประเมินกลยุทธ์การซื้อขายล่วงหน้า ข้อมูลตลาดเรียกว่า backtesting ขนาดข้อมูลและความซับซ้อนของ algorithmic จะมี a ผลกระทบใหญ่ต่อความเข้มของการคำนวณของความเร็วของ CPU backtester และภาวะพร้อมกันมักเป็นปัจจัย จำกัด ในการเพิ่มประสิทธิภาพความเร็วในการดำเนินการวิจัยการสร้างแบบข้อความเกี่ยวข้องกับการสร้างชุดสัญญาณการซื้อขายจากอัลกอริทึมและส่งคำสั่งซื้อดังกล่าวไปยังตลาดโดยปกติจะผ่านการเป็นนายหน้าซื้อขายหลักทรัพย์ สำหรับกลยุทธ์บางอย่างประสิทธิภาพระดับสูงจำเป็นต้องใช้ IO เช่นแบนด์วิธและเวลาแฝงเครือข่ายมักเป็นปัจจัย จำกัด ในการเพิ่มประสิทธิภาพระบบการดำเนินการดังนั้นการเลือกภาษาสำหรับแต่ละองค์ประกอบของระบบทั้งหมดของคุณอาจแตกต่างกันมากชนิดความถี่และปริมาณของ กลยุทธ์ประเภทของกลยุทธ์ขั้นตอนที่ใช้จะมีผลกระทบมากในการออกแบบระบบจะต้องพิจารณาตลาดที่มีการซื้อขายการเชื่อมต่อกับผู้ขายข้อมูลภายนอกความถี่และปริมาณของกลยุทธ์การค้าระหว่างกันระหว่าง ความสะดวกในการพัฒนาและเพิ่มประสิทธิภาพการทำงานรวมถึงฮาร์ดแวร์ที่กำหนดเองรวมถึงเซิร์ฟเวอร์ที่กำหนดเองแบบ co-located , GPUs หรือ FPGAs ซึ่งอาจเป็นสิ่งที่จำเป็นตัวเลือกเทคโนโลยีสำหรับกลยุทธ์ของสหรัฐฯในตลาดหุ้นที่มีความถี่ต่ำจะแตกต่างจากกลยุทธ์การเก็งกำไรทางสถิติที่มีความถี่สูงในตลาดฟิวเจอร์สก่อนที่จะมีการเลือกใช้ภาษาผู้ขายข้อมูลจำนวนมากจะต้องเป็น ประเมินว่าเกี่ยวข้องกับกลยุทธ์ที่ hand. It จะต้องพิจารณาการเชื่อมต่อกับผู้ขายโครงสร้างของ APIs, ทันเวลาของข้อมูลความต้องการจัดเก็บข้อมูลและความยืดหยุ่นในหน้าของผู้ขายไปออฟไลน์นอกจากนี้ยังมีปัญญาที่จะมีอย่างรวดเร็ว การเข้าถึงผู้ค้าหลายรายเครื่องมือต่างๆมีลักษณะการจัดเก็บข้อมูลของตัวเองตัวอย่างเช่นสัญลักษณ์สัญลักษณ์หลาย ๆ ตัวสำหรับหุ้นและวันที่หมดอายุสำหรับฟิวเจอร์สไม่ต้องพูดถึงข้อมูล OTC ใด ๆ โดยเฉพาะสิ่งนี้จะต้องเป็นปัจจัยสำคัญในการออกแบบแพลตฟอร์ม จะเป็นหนึ่งในไดรเวอร์ที่ใหญ่ที่สุดของวิธีการที่กองเทคโนโลยีจะถูกกำหนดกลยุทธ์การใช้ข้อมูลมากขึ้นกว่าแถบอย่างละเอียดหรือประการที่สองต้อง การใช้กลยุทธ์อย่างมีนัยสำคัญจะต้องมีการจัดเก็บและประเมินซอฟต์แวร์ปริมาณมากเช่น HDF5 หรือ kdb โดยทั่วไป ใช้สำหรับบทบาทเหล่านี้เพื่อที่จะประมวลผลปริมาณข้อมูลที่จำเป็นสำหรับแอพพลิเคชัน HFT จำเป็นต้องมีการใช้ backtester และระบบปฏิบัติการที่ดีที่สุดอย่างกว้างขวาง CC อาจเป็นไปได้ว่าผู้ประกอบการบางรายมีแนวโน้มที่จะเป็นผู้ที่มีทักษะทางภาษาสูงที่สุด ฮาร์ดแวร์ที่กำหนดเองเช่น FPGAs การแลกเปลี่ยนสถานที่ตั้งและการปรับแต่งระบบเครือข่าย kernal การค้นหาระบบระบบการค้นหามักเกี่ยวข้องกับการผสมผสานระหว่างการพัฒนาแบบโต้ตอบและการเขียนสคริปต์แบบอัตโนมัติอดีตมักเกิดขึ้นภายใน IDE เช่น Visual Studio, MatLab หรือ R Studio หลัง เกี่ยวข้องกับการคำนวณเชิงตัวเลขอย่างกว้างขวางในหลายพารามิเตอร์และข้อมูล poin ts นี้นำไปสู่การเลือกภาษาที่ให้สภาพแวดล้อมที่ตรงไปตรงมาเพื่อทดสอบโค้ด แต่ยังมีประสิทธิภาพเพียงพอในการประเมินกลยุทธ์มากกว่ามิติข้อมูลหลายมิติ IDE แบบปกติในพื้นที่นี้รวมถึง Microsoft Visual CC ซึ่งมีโปรแกรมอรรถประโยชน์การแก้จุดบกพร่องที่กว้างขวางความสามารถในการทำรหัสผ่าน Intellisense และ ภาพรวมของโครงงานทั้งหมดผ่านฐานข้อมูล ORM, LINQ MatLab ซึ่งออกแบบมาสำหรับพีชคณิตเชิงเส้นจำนวนมากและการดำเนินการแบบเวกเตอร์ แต่ในลักษณะคอนโซลแบบโต้ตอบ R Studio ซึ่งใช้คอนโซลภาษา R สถิติใน IDE Eclipse IDE ที่สมบูรณ์แบบสำหรับ Linux Java และ C และ IDEs แบบกึ่งกรรมสิทธิ์เช่น Enthought Canopy for Python ซึ่งรวมถึงห้องสมุดการวิเคราะห์ข้อมูลเช่น NumPy SciPy scikit-learn และ pandas ในสภาพแวดล้อมแบบคอนโซลแบบโต้ตอบเดียวสำหรับการทำ backtesting แบบตัวเลขภาษาทั้งหมดข้างต้นมีความเหมาะสมแม้ว่า ไม่จำเป็นต้องใช้ GUI IDE เนื่องจากโค้ดจะถูกใช้งาน ในพื้นหลังการพิจารณาที่สำคัญในขั้นตอนนี้คือความเร็วในการดำเนินการภาษาที่คอมไพล์เช่น C มักจะมีประโยชน์ถ้าขนาดของพารามิเตอร์ backtesting มีขนาดใหญ่โปรดจำไว้ว่าจำเป็นต้องระวังระบบดังกล่าวหากเป็นกรณีเช่นภาษาที่แปลเช่น เนื่องจาก Python มักใช้ประโยชน์จากไลบรารีที่มีประสิทธิภาพสูงเช่น NumPy pandas สำหรับขั้นตอนการทำ backtesting เพื่อที่จะรักษาระดับการแข่งขันที่เหมาะสมกับการเรียบเรียงเอาไว้ในท้ายที่สุดภาษาที่ได้รับการแต่งตั้งสำหรับ backtesting จะถูกกำหนดโดยความต้องการของ algorithmic ที่เฉพาะเจาะจงและช่วง ของห้องสมุดที่มีอยู่ในภาษามากกว่าที่ด้านล่าง แต่ภาษาที่ใช้สำหรับ backtester และสภาพแวดล้อมการวิจัยสามารถเป็นอิสระอย่างสมบูรณ์ของผู้ที่ใช้ในการก่อสร้างพอร์ตการลงทุนการจัดการความเสี่ยงและส่วนประกอบการดำเนินการตามที่จะเห็นการก่อสร้างโครงสร้างและการบริหารความเสี่ยง ส่วนประกอบของการจัดการพอร์ตโฟลิโอและการบริหารความเสี่ยงมักถูกมองข้ามโดยวิธีค้าปลีก ผู้ค้ามักเป็นความผิดพลาดเครื่องมือเหล่านี้มีกลไกที่จะเก็บรักษาทุนไว้พวกเขาไม่เพียง แต่พยายามที่จะบรรเทาจำนวนเดิมพันที่มีความเสี่ยง แต่ยังช่วยลดการหมุนเวียนของธุรกิจการค้าด้วยตนเองซึ่งจะช่วยลดต้นทุนการทำธุรกรรมได้ ผลกระทบอย่างมีนัยสำคัญต่อคุณภาพและความสม่ำเสมอของความสามารถในการทำกำไรมันง่ายในการสร้างกลยุทธ์ที่มีเสถียรภาพเนื่องจากกลไกการสร้างพอร์ตการลงทุนและผู้จัดการความเสี่ยงสามารถปรับเปลี่ยนได้ง่ายเพื่อจัดการกับระบบหลาย ๆ ระบบดังนั้นจึงควรพิจารณาส่วนประกอบที่จำเป็นในตอนเริ่มแรกของการออกแบบ ระบบการซื้อขายแบบอัลกอริธึมงานของระบบการลงทุนในพอร์ตโฟลิโอคือการนำเสนอการค้าที่ต้องการและสร้างธุรกิจการค้าที่เกิดขึ้นจริงซึ่งจะช่วยลดการปั่นป่วนรักษาความเสี่ยงต่อปัจจัยต่าง ๆ เช่นภาคประเภทสินทรัพย์ความผันผวน ฯลฯ และเพิ่มประสิทธิภาพในการจัดสรรทุน กับกลยุทธ์ต่างๆใน portfolio. Portfolio การก่อสร้างมักจะลดลงไปเป็นพีชคณิตเชิงเส้น ปัญหาเช่น matrixisation matrix และประสิทธิภาพจึงสูงขึ้นอยู่กับประสิทธิภาพของการใช้พีชคณิตเชิงเส้นตัวเลขห้องสมุดสามัญรวมถึง UBLAS LAPACK และ NAG สำหรับ C MatLab ยังมีคุณสมบัติการดำเนินงานเมทริกซ์ที่มีประสิทธิภาพมาก Python ใช้ NumPy SciPy สำหรับการคำนวณดังกล่าว ต้องมีการรวบรวมและดีที่สุดห้องสมุด matrix ดำเนินขั้นตอนนี้ออกเพื่อไม่ให้คอขวดระบบการซื้อขายการจัดการความเสี่ยงเป็นอีกหนึ่งส่วนสำคัญอย่างยิ่งของระบบการค้า algorithmic ความเสี่ยงสามารถมาในหลายรูปแบบความผันผวนเพิ่มขึ้นแม้ว่านี้อาจจะเห็นเป็นที่พึงปรารถนา สำหรับกลยุทธ์บางอย่างความสัมพันธ์ที่เพิ่มขึ้นระหว่างประเภทสินทรัพย์ค่าเริ่มต้นของคู่สัญญาการหยุดทำงานของเซิร์ฟเวอร์เหตุการณ์ Black Swan และบั๊กที่ตรวจไม่พบในรหัสการซื้อขายเพื่อระบุชื่อบางส่วนส่วนประกอบการจัดการที่ผิดพลาดพยายามคาดการณ์ผลกระทบจากความผันผวนและความสัมพันธ์ระหว่างประเภทเนื้อหามากเกินไป และผลต่อเนื่องของพวกเขาในการซื้อขาย เงินทุนมักจะลดลงไปยังชุดของการคำนวณทางสถิติเช่น Monte Carlo ทดสอบความเครียดนี้จะคล้ายกับความต้องการในการคำนวณของเครื่องมือการกำหนดราคาสัญญาซื้อขายล่วงหน้าและเป็นเช่นจะเป็น CPU-bound การจำลองเหล่านี้จะสูง parallelisable ดูด้านล่างและในระดับหนึ่ง เป็นไปได้ที่จะโยนฮาร์ดแวร์ที่มีปัญหาระบบการดำเนินการงานของระบบการดำเนินการคือการได้รับสัญญาณการซื้อขายที่กรองจากการก่อสร้างพอร์ตการลงทุนและส่วนประกอบการบริหารความเสี่ยงและส่งพวกเขาไปยังนายหน้าซื้อขายหลักทรัพย์หรือวิธีการอื่นในการเข้าถึงตลาดสำหรับส่วนใหญ่ กลยุทธ์การค้าปลีกแบบอัลกอริธึมค้าปลีกนี้เกี่ยวข้องกับการเชื่อมต่อ API หรือ FIX กับโบรกเกอร์เช่นโบรกเกอร์เชิงโต้ตอบข้อควรพิจารณาเบื้องต้นเมื่อตัดสินใจเลือกภาษา ได้แก่ คุณภาพของ API ความพร้อมใช้งานของภาษา wrapper สำหรับ API ความถี่ในการดำเนินการและความล่าช้าที่คาดการณ์ไว้ ของ API หมายถึงว่าได้รับการจัดทำเป็นเอกสารไว้เป็นอย่างดีประสิทธิภาพการทำงานที่จัดทำขึ้นไม่ว่าจะเป็นความต้องการของ softwa แบบสแตนด์อะโลน อีกครั้งในการเข้าถึงหรือว่าเกตเวย์สามารถสร้างขึ้นในแบบไม่ใช้เวลาได้เช่นไม่มี GUI ในกรณีของ Interactive Brokers เครื่องมือ Trader WorkStation จะต้องทำงานในสภาพแวดล้อม GUI เพื่อเข้าถึง API ของพวกเขาก่อนที่ฉันจะต้องติดตั้งเดสก์ท็อป Ubuntu edition ลงบนเซิร์ฟเวอร์เมฆ Amazon เพื่อเข้าถึงโบรกเกอร์ Interactive จากระยะไกลโดยสิ้นเชิงด้วยเหตุนี้ส่วนมาก APIs จะให้ C และหรือ Java interface โดยปกติแล้วชุมชนจะพัฒนาเครื่องห่อหุ้มภาษาเฉพาะสำหรับ C, Python, R, Excel และ MatLab โปรดทราบว่าเมื่อใช้ปลั๊กอินเพิ่มเติมใด ๆ ที่ใช้โดยเฉพาะ API wrappers ขอบเขตของข้อผิดพลาดจะคืบคลานเข้าไปในระบบทดสอบปลั๊กอินประเภทนี้ทุกครั้งและมั่นใจว่าได้รับการปรับปรุงอย่างสม่ำเสมอมาตรวัดที่คุ้มค่าคือการดูว่ามีการอัปเดตโค้ดใหม่ ๆ ในช่วงหลายเดือนที่ผ่านมาความถี่ในการปฏิบัติงานมีความสำคัญสูงสุดในขั้นตอนการดำเนินการโปรดทราบว่าอาจมีการส่งคำสั่งซื้อหลายร้อยรายการในทุกๆนาทีและประสิทธิภาพการทำงานดังกล่าวเป็นสิ่งสำคัญ Slippage จะเกิดขึ้น ผ่านระบบปฏิบัติการที่มีประสิทธิภาพไม่ดีและนี่จะมีผลกระทบอย่างมากต่อความสามารถในการทำกำไรภาษา Statically-typed ดูด้านล่างเช่น C Java โดยทั่วไปจะเหมาะสำหรับการดำเนินการ แต่มีการค้าออกในการพัฒนาเวลาการทดสอบและความสะดวกในการบำรุงรักษาแบบไดนามิก - พิมพ์ภาษาเช่น Python และ Perl ขณะนี้โดยทั่วไปเร็วพอเสมอให้แน่ใจว่าส่วนประกอบได้รับการออกแบบใน modular แฟชั่นดูด้านล่างเพื่อให้สามารถเปลี่ยนออกเป็นระบบตุลสถาปัตยกรรมและการวางแผนกระบวนการพัฒนาองค์ประกอบของการซื้อขาย ระบบความต้องการความถี่และปริมาณของมันได้รับการกล่าวข้างต้น แต่โครงสร้างพื้นฐานของระบบยังไม่ได้ครอบคลุมผู้ที่ทำหน้าที่เป็นผู้ค้าปลีกหรือทำงานในกองทุนขนาดเล็กอาจจะสวมหมวกจำนวนมากจะต้องมีการครอบคลุมรูปแบบอัลฟาความเสี่ยง การจัดการและการดำเนินการพารามิเตอร์และการใช้งานขั้นสุดท้ายของระบบก่อนที่จะเจาะเข้าไปในภาษาเฉพาะการออกแบบสถาปัตยกรรมระบบที่ดีที่สุดจะ การตัดสินใจแยกที่สำคัญที่สุดคือการแยกความกังวลของระบบการซื้อขายออกจากกันในการพัฒนาซอฟต์แวร์นี้เป็นหลักหมายถึงการแบ่งแยกด้านต่างๆของระบบการซื้อขายออกเป็นส่วน ๆ ส่วนประกอบ modular ด้วยการเปิดเผย interfaces ที่แต่ละคอมโพเนนต์มันเป็นเรื่องง่ายที่จะแลกเปลี่ยนชิ้นส่วนของระบบสำหรับรุ่นอื่น ๆ ที่ช่วยให้ประสิทธิภาพการทำงานน่าเชื่อถือหรือการบำรุงรักษาโดยไม่มีการปรับเปลี่ยนรหัส dependency ภายนอกใด ๆ นี่คือวิธีที่ดีที่สุดสำหรับระบบดังกล่าวสำหรับกลยุทธ์ที่ต่ำกว่า ความถี่ในการปฏิบัติเช่นนี้ควรใช้สำหรับการซื้อขายความถี่สูงเป็นพิเศษกฎอาจต้องถูกเพิกเฉยต่อค่าใช้จ่ายในการปรับแต่งระบบเพื่อให้ได้ประสิทธิภาพมากยิ่งขึ้นระบบคู่ค้าที่แน่นแฟ้นขึ้นอาจเป็นที่น่าพอใจการสร้างแผนที่ส่วนประกอบของระบบการค้าแบบอัลกอริธึมมีค่าเป็นบทความ อย่างไรก็ตามแนวทางที่ดีที่สุดคือเพื่อให้แน่ใจว่ามีองค์ประกอบแยกต่างหากสำหรับตลาดในอดีตและแบบเรียลไทม์ ปัจจัยการผลิตการจัดเก็บข้อมูล API การเข้าถึงข้อมูล backtester พารามิเตอร์ยุทธศาสตร์การสร้างพอร์ตโฟลิโอการจัดการความเสี่ยงและระบบการดำเนินการอัตโนมัติตัวอย่างเช่นหากมีการใช้งานคลังข้อมูลที่มีประสิทธิภาพน้อยกว่าแม้ในระดับที่มีนัยสำคัญก็สามารถเปลี่ยนออกได้ มีน้อยเขียนใหม่เพื่อการบริโภคข้อมูลหรือการเข้าถึงข้อมูล API เท่าที่ backtester และส่วนประกอบที่ตามมามีความกังวลไม่มีความแตกต่างประโยชน์อื่น ๆ ขององค์ประกอบแยกเป็นที่ช่วยให้ความหลากหลายของภาษาโปรแกรมที่จะใช้ในระบบโดยรวมมี ไม่จำเป็นต้องถูก จำกัด ให้เป็นภาษาเดียวถ้าวิธีการสื่อสารของคอมโพเนนต์เป็นภาษาที่เป็นอิสระซึ่งจะเป็นกรณีถ้ามีการสื่อสารผ่านทาง TCP IP, ZeroMQ หรือโปรโตคอลที่ไม่ขึ้นกับภาษาอื่น ๆ ตัวอย่างเช่นพิจารณากรณี ของระบบการทำ backtesting ที่ถูกเขียนขึ้นใน C สำหรับการทำงานแบบ crunching จำนวนขณะที่ผู้จัดการพอร์ตโฟลิโอและระบบการดำเนินการเขียนด้วยภาษา Python โดยใช้ S ciPy และ IBPy. Performance Considerations. Performance คือการพิจารณาที่สำคัญสำหรับกลยุทธ์การซื้อขายส่วนใหญ่สำหรับกลยุทธ์ความถี่สูงเป็นปัจจัยที่สำคัญที่สุดประสิทธิภาพครอบคลุมหลากหลายประเด็นเช่นความเร็วในการดำเนินการขั้นตอนวิธีแฝงเครือข่ายแบนด์วิธข้อมูล IO, parallelism concurrency และปรับแต่ละพื้นที่เหล่านี้เป็นรายบุคคลปกคลุมด้วยตำราขนาดใหญ่ดังนั้นบทความนี้จะเป็นเพียงรอยขีดข่วนพื้นผิวของแต่ละหัวข้อทางเลือกสถาปัตยกรรมและภาษาจะถูกกล่าวถึงในแง่ของผลกระทบต่อประสิทธิภาพการทำงานภูมิปัญญาแลกเปลี่ยนตามที่ระบุไว้โดย Donald Knuth หนึ่งใน บรรพบุรุษของวิทยาการคอมพิวเตอร์คือการเพิ่มประสิทธิภาพก่อนวัยเรียนเป็นรากของความชั่วร้ายทั้งหมดนี้เกือบตลอดเวลากรณี - ยกเว้นเมื่อสร้างขั้นตอนการซื้อขายความถี่สูงสำหรับผู้ที่มีความสนใจในกลยุทธ์ความถี่ต่ำกว่าวิธีการทั่วไปคือการสร้างระบบใน วิธีที่ง่ายที่สุดเท่าที่เป็นไปได้และมีเพียงการเพิ่มประสิทธิภาพเนื่องจากปัญหาคอขวดจะเริ่มปรากฏขึ้น ปัญหานี้อาจเกิดขึ้นได้สำหรับปัจจัยทั้งหมดที่กล่าวมาข้างต้นไม่ว่าจะเป็นในระบบปฏิบัติการ Windows หรือ Linux มีระบบปฏิบัติการและเครื่องมือภาษาจำนวนมากที่สามารถใช้งานได้เช่นเดียวกับระบบสาธารณูปโภคของบุคคลที่สามทางเลือกภาษาจะถูกกล่าวถึงใน บริบทของประสิทธิภาพ C, Java, Python, R และ MatLab ทั้งหมดมีไลบรารีที่มีประสิทธิภาพสูงไม่ว่าจะเป็นส่วนหนึ่งของมาตรฐานหรือภายนอกสำหรับโครงสร้างข้อมูลพื้นฐานและงาน algorithmic C มาพร้อมกับ Standard Template Library ขณะที่ Python มี NumPy SciPy Common mathematical tasks มีอยู่ในไลบรารีเหล่านี้และไม่ค่อยมีประโยชน์ในการเขียนการใช้งานใหม่ยกเว้นอย่างใดอย่างหนึ่งคือต้องมีสถาปัตยกรรมฮาร์ดแวร์ที่กำหนดค่าไว้สูงและอัลกอริธึมจะใช้ประโยชน์จากส่วนขยายที่เป็นของแท้เช่นแคชที่กำหนดเองอย่างไรก็ตามการคิดค้นสิ่งใหม่ ๆ เวลาที่สามารถใช้จ่ายได้ดีขึ้นในการพัฒนาและเพิ่มประสิทธิภาพส่วนอื่น ๆ ของโครงสร้างพื้นฐานทางการค้าเวลาในการพัฒนาเป็นอย่างมาก precio โดยเฉพาะอย่างยิ่งในบริบทของนักพัฒนา แต่เพียงผู้เดียวความมักใหญ่ใฝ่สูงมักเป็นปัญหาของระบบการดำเนินงานเนื่องจากเครื่องมือวิจัยมักตั้งอยู่ในเครื่องเดียวกันสำหรับอดีตความล่าช้าอาจเกิดขึ้นได้หลายจุดตามเส้นทางการดำเนินการฐานข้อมูลต้องได้รับการตรวจสอบความแฝงของเครือข่ายดิสก์ สัญญาณจะต้องสร้างระบบปฏิบัติการ kernal ส่งข้อความแฝงส่งสัญญาณส่ง NIC latency และสั่งการประมวลผลระบบการแลกเปลี่ยนภายใน latency สำหรับการดำเนินงานความถี่สูงมีความจำเป็นต้องคุ้นเคยกับการเพิ่มประสิทธิภาพ kernal อย่างใกล้ชิดรวมทั้งการเพิ่มประสิทธิภาพของการส่งผ่านเครือข่ายนี้เป็นลึก พื้นที่และอย่างมีนัยสำคัญเกินขอบเขตของบทความ แต่ถ้าอัลกอริทึม UHFT เป็นที่ต้องการแล้วจะตระหนักถึงความลึกของความรู้ที่จำเป็นแคชมีประโยชน์มากในชุดเครื่องมือของนักพัฒนาการซื้อขายเชิงปริมาณ Caching หมายถึงแนวคิดของการเก็บข้อมูลที่เข้าถึงบ่อยใน วิธีการที่ช่วยให้การเข้าถึงที่มีประสิทธิภาพสูงกว่าค่าใช้จ่ายของความแข็งแรงที่อาจเกิดขึ้นของข้อมูล c กรณีใช้ ommon เกิดขึ้นในการพัฒนาเว็บเมื่อนำข้อมูลจากดิสก์ฐานข้อมูลเชิงสัมพันธ์ที่ได้รับการสนับสนุนและวางลงในหน่วยความจำใด ๆ คำขอที่ตามมาสำหรับข้อมูลไม่ต้องตีฐานข้อมูลและเพื่อให้ได้กำไรประสิทธิภาพสามารถสำคัญสำหรับสถานการณ์การซื้อขายแคชสามารถมาก ประโยชน์เช่นสถานะปัจจุบันของพอร์ตโฟลิโอของกลยุทธ์สามารถเก็บไว้ในแคชจนกว่าจะมีการปรับสมดุลใหม่เช่นว่ารายการไม่จำเป็นต้องถูกสร้างขึ้นใหม่ในแต่ละลูปของอัลกอริทึมการค้าการฟื้นฟูดังกล่าวน่าจะเป็น CPU หรือดิสก์ที่สูง IO อย่างไรก็ตามการแคชไม่ได้ไม่มีปัญหาของตัวเองการรีเฟรชข้อมูลแคชทั้งหมดในครั้งเดียวเนื่องจากธรรมชาติของการจัดเก็บข้อมูลแคชทำให้เกิดความต้องการอย่างมากในโครงสร้างพื้นฐานปัญหาอีกประการหนึ่งคือการจัดเก็บแคชแบบหลายช่วงของสุนัข ดำเนินการภายใต้ภาระที่สูงมากซึ่งจะนำไปสู่ความล้มเหลวน้ำตกการจัดสรรหน่วยความจำแบบไดนามิกคือการดำเนินการที่มีราคาแพงในการดำเนินการซอฟต์แวร์ดังนั้นจึงมีความจำเป็นสำหรับการที่สูงขึ้น perfor mance trading applications เพื่อให้ทราบว่าหน่วยความจำมีการปันส่วนและยกเลิกการจัดสรรระหว่างการไหลของโปรแกรมมาตรฐานภาษาใหม่ ๆ เช่น Java, C และ Python ดำเนินการเก็บรวบรวมขยะแบบอัตโนมัติซึ่งหมายถึงการจัดสรรหน่วยความจำที่ปันส่วนแบบไดนามิกเมื่อวัตถุออกไปนอกขอบเขต Garbage collection เป็นประโยชน์อย่างมากในระหว่างการพัฒนาเนื่องจากลดข้อผิดพลาดและช่วยในการอ่านง่าย แต่ก็มักจะย่อยดีที่สุดสำหรับบางกลยุทธ์การซื้อขายความถี่สูงที่กำหนดเองเก็บขยะมักจะเป็นที่ต้องการสำหรับกรณีเหล่านี้ใน Java เช่นโดยการปรับแต่งเก็บขยะและการกำหนดค่า heap, เป็นไปได้ที่จะได้รับสมรรถนะสูงสำหรับกลยุทธ์ HFT ไม่ให้ผู้รวบรวมขยะพื้นเมืองดังนั้นจึงจำเป็นต้องจัดการกับการจัดสรรหน่วยความจำทั้งหมดซึ่งเป็นส่วนหนึ่งของการใช้งานวัตถุในขณะที่ข้อผิดพลาดที่อาจเกิดขึ้นอาจนำไปสู่คำชี้ล้อยที่เป็นประโยชน์อย่างมาก เพื่อให้มีการควบคุมที่ละเอียดยิ่งขึ้นว่าวัตถุปรากฏอยู่บนกองสำหรับแอ็พพลิเคชันบางอย่างอย่างไร ons เมื่อเลือกภาษาให้แน่ใจว่าการศึกษาวิธีการทำงานของตัวเก็บรวบรวมขยะและไม่ว่าจะสามารถปรับเปลี่ยนเพื่อให้เหมาะสมกับกรณีการใช้งานโดยเฉพาะอย่างยิ่งการดำเนินงานหลายอย่างในระบบการซื้อขายแบบอัลกอลิกึมจะสอดคล้องกับ parallelisation ซึ่งหมายถึงแนวคิดในการดำเนินงานแบบหลายโปรแกรมที่ ในเวลาเดียวกันเช่นในแบบคู่ขนานขั้นตอนวิธีแบบขนานที่น่าอับอายรวมถึงขั้นตอนที่สามารถคำนวณได้อย่างอิสระจากขั้นตอนอื่นการดำเนินการเชิงสถิติบางอย่างเช่นการจำลองแบบมอนติคาร์โลเป็นตัวอย่างที่ดีของอัลกอริทึมแบบขนานที่น่าอับอายขณะที่การสุ่มจับและการดำเนินการตามเส้นทางที่ตามมา สามารถคำนวณได้โดยปราศจากความรู้ของเส้นทางอื่น ๆ ขั้นตอนอื่น ๆ เป็นเพียงบางส่วน parallelisable การจำลองพลศาสตร์ของไหลเป็นตัวอย่างเช่นที่โดเมนของการคำนวณสามารถแบ่งได้ แต่ในที่สุดโดเมนเหล่านี้ต้องสื่อสารกับแต่ละอื่น ๆ และทำให้การดำเนินงานเป็นส่วนหนึ่งขั้นตอนวิธี Parallelisable เป็นไปตามกฎหมายของ Amdahl ที่ให้ ข้อ จำกัด ด้านทฤษฎีสำหรับการเพิ่มประสิทธิภาพของอัลกอริทึมแบบขนานเมื่อต้องแยกกระบวนการ N ออกเช่นแกน CPU หรือเธรดการเรียงลำดับได้กลายเป็นสิ่งที่สำคัญมากขึ้นเนื่องจากเป็นวิธีการเพิ่มประสิทธิภาพเนื่องจากความเร็วของตัวประมวลผลของโปรเซสเซอร์มีการหยุดนิ่ง การเพิ่มขึ้นของฮาร์ดแวร์กราฟิกสำหรับผู้บริโภคส่วนใหญ่สำหรับเกมวิดีโอได้นำไปสู่การพัฒนา GPU กราฟิกหน่วยประมวลผลซึ่งมีหลายร้อยแกนสำหรับการดำเนินงานพร้อมกันอย่างมาก GPUs เช่นตอนนี้ราคาไม่แพงมากกรอบระดับสูงเช่น Nvidia s CUDA ได้นำไปสู่การรับเลี้ยงบุตรบุญธรรมอย่างแพร่หลายในสถาบันการศึกษาและกระทรวงการคลังฮาร์ดแวร์ GPU ดังกล่าวโดยทั่วไปเหมาะสมสำหรับด้านการวิจัยทางการเงินเชิงปริมาณเท่านั้นส่วนฮาร์ดแวร์อื่น ๆ ที่มีความเชี่ยวชาญมากขึ้นเช่นอาร์เรย์ Gate Programmable Gate - FPGAs ใช้สำหรับ U HFT ในปัจจุบัน สนับสนุนระดับของ multithreading พร้อมกันจึงจะตรงไปตรงมา เพิ่มประสิทธิภาพ backtester เนื่องจากการคำนวณทั้งหมดโดยทั่วไปจะเป็นอิสระจากผู้อื่นการกลบเกลื่อนในวิศวกรรมซอฟต์แวร์และการดำเนินงานหมายถึงความสามารถของระบบในการจัดการโหลดที่เพิ่มขึ้นอย่างต่อเนื่องในรูปแบบของคำขอที่มากขึ้นการใช้โปรเซสเซอร์ที่สูงขึ้นและการจัดสรรหน่วยความจำเพิ่มเติมในการซื้อขายแบบอัลกอริทึม เทคโนโลยีการค้าสามารถปรับขนาดได้หากสามารถยอมรับปริมาณเงินทุนได้มากและยังคงให้ผลตอบแทนที่สม่ำเสมอเทคโนโลยีการค้าแบบสแต็คจะช่วยให้สามารถรับมือกับปริมาณการค้าที่มากขึ้นและเพิ่มความแฝงได้โดยปราศจากคอขวดขณะที่ระบบต้องได้รับการออกแบบให้มีขนาดใหญ่ คาดการณ์ล่วงหน้าที่คอขวดจะเกิดขึ้นการเข้าสู่ระบบแบบเข้มงวดการทดสอบการกำหนดโปรไฟล์และการตรวจสอบจะช่วยอย่างมากในการช่วยให้ระบบสามารถปรับขนาดได้ภาษาที่ตัวเองมักอธิบายว่าไม่สามารถเอาชนะได้ซึ่งโดยปกติจะเป็นผลมาจากข้อมูลที่ไม่ถูกต้องมากกว่าความเป็นจริง ควรตรวจสอบความถูกต้องของความสามารถในการปรับขยายไม่ใช่ภาษาชัดเจนบางภาษาฮ่า มีประสิทธิภาพมากขึ้นกว่าคนอื่น ๆ ในกรณีการใช้งานโดยเฉพาะ แต่ภาษาหนึ่งไม่เคยดีไปกว่าอีกในทุกความรู้สึกหนึ่งในวิธีการจัดการระดับคือการแยกความกังวลตามที่ระบุไว้ข้างต้นเพื่อที่จะแนะนำเพิ่มเติมความสามารถในการจัดการ spikes ในระบบเช่นฉับพลัน volatility which triggers a raft of trades , it is useful to create a message queuing architecture This simply means placing a message queue system between components so that orders are stacked up if a certain component is unable to process many requests. Rather than requests being lost they are simply kept in a stack until the message is handled This is particularly useful for sending trades to an execution engine If the engine is suffering under heavy latency then it will back up trades A queue between the trade signal generator and the execution API will alleviate this issue at the expense of potential trade slippage A well-respected open source message queue broker is RabbitMQ. Hardware and Operating Systems. The ha rdware running your strategy can have a significant impact on the profitability of your algorithm This is not an issue restricted to high frequency traders either A poor choice in hardware and operating system can lead to a machine crash or reboot at the most inopportune moment Thus it is necessary to consider where your application will reside The choice is generally between a personal desktop machine, a remote server, a cloud provider or an exchange co-located server. Desktop machines are simple to install and administer, especially with newer user friendly operating systems such as Windows 7 8, Mac OSX and Ubuntu Desktop systems do possess some significant drawbacks, however The foremost is that the versions of operating systems designed for desktop machines are likely to require reboots patching and often at the worst of times They also use up more computational resources by the virtue of requiring a graphical user interface GUI. Utilising hardware in a home or local office environme nt can lead to internet connectivity and power uptime problems The main benefit of a desktop system is that significant computational horsepower can be purchased for the fraction of the cost of a remote dedicated server or cloud based system of comparable speed. A dedicated server or cloud-based machine, while often more expensive than a desktop option, allows for more significant redundancy infrastructure, such as automated data backups, the ability to more straightforwardly ensure uptime and remote monitoring They are harder to administer since they require the ability to use remote login capabilities of the operating system. In Windows this is generally via the GUI Remote Desktop Protocol RDP In Unix-based systems the command-line Secure SHell SSH is used Unix-based server infrastructure is almost always command-line based which immediately renders GUI-based programming tools such as MatLab or Excel to be unusable. A co-located server, as the phrase is used in the capital markets, is s imply a dedicated server that resides within an exchange in order to reduce latency of the trading algorithm This is absolutely necessary for certain high frequency trading strategies, which rely on low latency in order to generate alpha. The final aspect to hardware choice and the choice of programming language is platform-independence Is there a need for the code to run across multiple different operating systems Is the code designed to be run on a particular type of processor architecture, such as the Intel x86 x64 or will it be possible to execute on RISC processors such as those manufactured by ARM These issues will be highly dependent upon the frequency and type of strategy being implemented. Resilience and Testing. One of the best ways to lose a lot of money on algorithmic trading is to create a system with no resiliency This refers to the durability of the sytem when subject to rare events, such as brokerage bankruptcies, sudden excess volatility, region-wide downtime for a cloud server provider or the accidental deletion of an entire trading database Years of profits can be eliminated within seconds with a poorly-designed architecture It is absolutely essential to consider issues such as debuggng, testing, logging, backups, high-availability and monitoring as core components of your system. It is likely that in any reasonably complicated custom quantitative trading application at least 50 of development time will be spent on debugging, testing and maintenance. Nearly all programming languages either ship with an associated debugger or possess well-respected third-party alternatives In essence, a debugger allows execution of a program with insertion of arbitrary break points in the code path, which temporarily halt execution in order to investigate the state of the system The main benefit of debugging is that it is possible to investigate the behaviour of code prior to a known crash point. Debugging is an essential component in the toolbox for analysing programmin g errors However, they are more widely used in compiled languages such as C or Java, as interpreted languages such as Python are often easier to debug due to fewer LOC and less verbose statements Despite this tendency Python does ship with the pdb which is a sophisticated debugging tool The Microsoft Visual C IDE possesses extensive GUI debugging utilities, while for the command line Linux C programmer, the gdb debugger exists. Testing in software development refers to the process of applying known parameters and results to specific functions, methods and objects within a codebase, in order to simulate behaviour and evaluate multiple code-paths, helping to ensure that a system behaves as it should A more recent paradigm is known as Test Driven Development TDD , where test code is developed against a specified interface with no implementation Prior to the completion of the actual codebase all tests will fail As code is written to fill in the blanks , the tests will eventually all pass, a t which point development should cease. TDD requires extensive upfront specification design as well as a healthy degree of discipline in order to carry out successfully In C , Boost provides a unit testing framework In Java, the JUnit library exists to fulfill the same purpose Python also has the unittest module as part of the standard library Many other languages possess unit testing frameworks and often there are multiple options. In a production environment, sophisticated logging is absolutely essential Logging refers to the process of outputting messages, with various degrees of severity, regarding execution behaviour of a system to a flat file or database Logs are a first line of attack when hunting for unexpected program runtime behaviour Unfortunately the shortcomings of a logging system tend only to be discovered after the fact As with backups discussed below, a logging system should be given due consideration BEFORE a system is designed. Both Microsoft Windows and Linux come with extensive system logging capability and programming languages tend to ship with standard logging libraries that cover most use cases It is often wise to centralise logging information in order to analyse it at a later date, since it can often lead to ideas about improving performance or error reduction, which will almost certainly have a positive impact on your trading returns. While logging of a system will provide information about what has transpired in the past, monitoring of an application will provide insight into what is happening right now All aspects of the system should be considered for monitoring System level metrics such as disk usage, available memory, network bandwidth and CPU usage provide basic load information. Trading metrics such as abnormal prices volume, sudden rapid drawdowns and account exposure for different sectors markets should also be continuously monitored Further, a threshold system should be instigated that provides notification when certain metrics are b reached, elevating the notification method email, SMS, automated phone call depending upon the severity of the metric. System monitoring is often the domain of the system administrator or operations manager However, as a sole trading developer, these metrics must be established as part of the larger design Many solutions for monitoring exist proprietary, hosted and open source, which allow extensive customisation of metrics for a particular use case. Backups and high availability should be prime concerns of a trading system Consider the following two questions 1 If an entire production database of market data and trading history was deleted without backups how would the research and execution algorithm be affected 2 If the trading system suffers an outage for an extended period with open positions how would account equity and ongoing profitability be affected The answers to both of these questions are often sobering. It is imperative to put in place a system for backing up data and also f or testing the restoration of such data Many individuals do not test a restore strategy If recovery from a crash has not been tested in a safe environment, what guarantees exist that restoration will be available at the worst possible moment. Similarly, high availability needs to be baked in from the start Redundant infrastructure even at additional expense must always be considered, as the cost of downtime is likely to far outweigh the ongoing maintenance cost of such systems I won t delve too deeply into this topic as it is a large area, but make sure it is one of the first considerations given to your trading system. Choosing a Language. Considerable detail has now been provided on the various factors that arise when developing a custom high-performance algorithmic trading system The next stage is to discuss how programming languages are generally categorised. Type Systems. When choosing a language for a trading stack it is necessary to consider the type system The languages which are of interest for algorithmic trading are either statically - or dynamically-typed A statically-typed language performs checks of the types e g integers, floats, custom classes etc during the compilation process Such languages include C and Java A dynamically-typed language performs the majority of its type-checking at runtime Such languages include Python, Perl and JavaScript. For a highly numerical system such as an algorithmic trading engine, type-checking at compile time can be extremely beneficial, as it can eliminate many bugs that would otherwise lead to numerical errors However, type-checking doesn t catch everything, and this is where exception handling comes in due to the necessity of having to handle unexpected operations Dynamic languages i e those that are dynamically-typed can often lead to run-time errors that would otherwise be caught with a compilation-time type-check For this reason, the concept of TDD see above and unit testing arose which, when carried out correctly, ofte n provides more safety than compile-time checking alone. Another benefit of statically-typed languages is that the compiler is able to make many optimisations that are otherwise unavailable to the dynamically - typed language, simply because the type and thus memory requirements are known at compile-time In fact, part of the inefficiency of many dynamically-typed languages stems from the fact that certain objects must be type-inspected at run-time and this carries a performance hit Libraries for dynamic languages, such as NumPy SciPy alleviate this issue due to enforcing a type within arrays. Open Source or Proprietary. One of the biggest choices available to an algorithmic trading developer is whether to use proprietary commercial or open source technologies There are advantages and disadvantages to both approaches It is necessary to consider how well a language is supported, the activity of the community surrounding a language, ease of installation and maintenance, quality of the documen tation and any licensing maintenance costs. The Microsoft stack including Visual C , Visual C and MathWorks MatLab are two of the larger proprietary choices for developing custom algorithmic trading software Both tools have had significant battle testing in the financial space, with the former making up the predominant software stack for investment banking trading infrastructure and the latter being heavily used for quantitative trading research within investment funds. Microsoft and MathWorks both provide extensive high quality documentation for their products Further, the communities surrounding each tool are very large with active web forums for both The software allows cohesive integration with multiple languages such as C , C and VB, as well as easy linkage to other Microsoft products such as the SQL Server database via LINQ MatLab also has many plugins libraries some free, some commercial for nearly any quantitative research domain. There are also drawbacks With either piece of soft ware the costs are not insignificant for a lone trader although Microsoft does provide entry-level version of Visual Studio for free Microsoft tools play well with each other, but integrate less well with external code Visual Studio must also be executed on Microsoft Windows, which is arguably far less performant than an equivalent Linux server which is optimally tuned. MatLab also lacks a few key plugins such as a good wrapper around the Interactive Brokers API, one of the few brokers amenable to high-performance algorithmic trading The main issue with proprietary products is the lack of availability of the source code This means that if ultra performance is truly required, both of these tools will be far less attractive. Open source tools have been industry grade for sometime Much of the alternative asset space makes extensive use of open-source Linux, MySQL PostgreSQL, Python, R, C and Java in high-performance production roles However, they are far from restricted to this domain Pytho n and R, in particular, contain a wealth of extensive numerical libraries for performing nearly any type of data analysis imaginable, often at execution speeds comparable to compiled languages, with certain caveats. The main benefit of using interpreted languages is the speed of development time Python and R require far fewer lines of code LOC to achieve similar functionality, principally due to the extensive libraries Further, they often allow interactive console based development, rapidly reducing the iterative development process. Given that time as a developer is extremely valuable, and execution speed often less so unless in the HFT space , it is worth giving extensive consideration to an open source technology stack Python and R possess significant development communities and are extremely well supported, due to their popularity Documentation is excellent and bugs at least for core libraries remain scarce. Open source tools often suffer from a lack of a dedicated commercial support contract and run optimally on systems with less-forgiving user interfaces A typical Linux server such as Ubuntu will often be fully command-line oriented In addition, Python and R can be slow for certain execution tasks There are mechanisms for integrating with C in order to improve execution speeds, but it requires some experience in multi-language programming. While proprietary software is not immune from dependency versioning issues it is far less common to have to deal with incorrect library versions in such environments Open source operating systems such as Linux can be trickier to administer. I will venture my personal opinion here and state that I build all of my trading tools with open source technologies In particular I use Ubuntu, MySQL, Python, C and R The maturity, community size, ability to dig deep if problems occur and lower total cost ownership TCO far outweigh the simplicity of proprietary GUIs and easier installations Having said that, Microsoft Visual Studio especially for C is a fantastic Integrated Development Environment IDE which I would also highly recommend. Batteries Included. The header of this section refers to the out of the box capabilities of the language - what libraries does it contain and how good are they This is where mature languages have an advantage over newer variants C , Java and Python all now possess extensive libraries for network programming, operating system interaction, GUIs, regular expressions regex , iteration and basic algorithms. C is famed for its Standard Template Library STL which contains a wealth of high performance data structures and algorithms for free Python is known for being able to communicate with nearly any other type of system protocol especially the web , mostly through its own standard library R has a wealth of statistical and econometric tools built in, while MatLab is extremely optimised for any numerical linear algebra code which can be found in portfolio optimisation and derivatives pricing, for ins tance. Outside of the standard libraries, C makes use of the Boost library, which fills in the missing parts of the standard library In fact, many parts of Boost made it into the TR1 standard and subsequently are available in the C 11 spec, including native support for lambda expressions and concurrency. Python has the high performance NumPy SciPy Pandas data analysis library combination, which has gained widespread acceptance for algorithmic trading research Further, high-performance plugins exist for access to the main relational databases, such as MySQL MySQL C , JDBC Java MatLab , MySQLdb MySQL Python and psychopg2 PostgreSQL Python Python can even communicate with R via the RPy plugin. An often overlooked aspect of a trading system while in the initial research and design stage is the connectivity to a broker API Most APIs natively support C and Java, but some also support C and Python, either directly or with community-provided wrapper code to the C APIs In particular, Interactive B rokers can be connected to via the IBPy plugin If high-performance is required, brokerages will support the FIX protocol. As is now evident, the choice of programming language s for an algorithmic trading system is not straightforward and requires deep thought The main considerations are performance, ease of development, resiliency and testing, separation of concerns, familiarity, maintenance, source code availability, licensing costs and maturity of libraries. The benefit of a separated architecture is that it allows languages to be plugged in for different aspects of a trading stack, as and when requirements change A trading system is an evolving tool and it is likely that any language choices will evolve along with it. Just Getting Started with Quantitative Trading.
สิ่งที่คุณต้องทราบเกี่ยวกับตัวเลือกไบนารีด้านนอก U S ตัวเลือกไบนารีเป็นวิธีง่ายๆในการซื้อขายความผันผวนของราคาในตลาดโลกหลายแห่ง แต่ผู้ประกอบการค้าจำเป็นต้องเข้าใจความเสี่ยงและผลตอบแทนของเครื่องมือที่เข้าใจผิดบ่อยๆเหล่านี้ไบนารีจะแตกต่างจากแบบดั้งเดิม หากมีการซื้อขายหนึ่งจะพบตัวเลือกเหล่านี้มีการจ่ายเงินที่แตกต่างกันค่าธรรมเนียมและความเสี่ยงไม่พูดถึงโครงสร้างสภาพคล่องที่แตกต่างกันอย่างสิ้นเชิงและกระบวนการลงทุนสำหรับการอ่านที่เกี่ยวข้องให้ดูที่คู่มือการค้าตัวเลือกไบนารีใน U S ตัวเลือกไบนารีการซื้อขายนอกสหรัฐอเมริกา นอกจากนี้ยังมีโครงสร้างที่แตกต่างกันไปกว่าไบนารีที่มีอยู่ในตลาดหุ้นสหรัฐฯเมื่อพิจารณาการเก็งกำไรหรือการป้องกันความเสี่ยงทางเลือกไบนารีเป็นอีกทางเลือกหนึ่ง แต่หากนักลงทุนเข้าใจถึงผลที่เป็นไปได้สองประการของตัวเลือกที่แปลกใหม่ในเดือนมิถุนายน 2013 สำนักงานคณะกรรมการกำกับหลักทรัพย์และตลาดหลักทรัพย์สหรัฐได้เตือนนักลงทุนเกี่ยวกับ ความเสี่ยงที่อาจเกิดขึ้นจากการลงทุนในตัวเลือกไบนารีและเรียกเก็บเงินจาก บริษัท ไซปรัสตามที่มีการขายพวกเขา il ถูกต้องตามกฎหมายให้กับนักลงทุนสหรัฐสิ่งที่เป็นตัว...
Comments
Post a Comment