Forex Trading Diary 1 - การซื้อขาย Forex แบบอัตโนมัติกับ OANDA API ที่ฉันเคยพูดถึงในบทความ QuantStart: 2014 ในบทความ Review ซึ่งฉันจะใช้เขียนเกี่ยวกับการซื้อขายแลกเปลี่ยนเงินตราอัตโนมัติในปี 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 จากหน้าจอลงชื่อเข้าใช้: เมื่อคุณจำเป็นต้องจดบันทึกรหัสบัญชีของคุณ อยู่ภายใต้ส่วนหัวสีดำของฉันที่อยู่ติดกับ 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): เพียงแค่เริ่มต้นใช้งาน Quantitative TradingForex Data Feed ฟีดสกุลเงินในขณะที่ฉันกำลังมองหาฟีดข้อมูล Forex แบบฟรี ฉันต้องการใช้ข้อมูลสกุลเงินเพื่อแปลงราคาผลิตภัณฑ์เป็นสกุลเงินท้องถิ่นของผู้เข้าชม 8282 ขออภัยฉันไม่พบฟีดข้อมูล Forex ฟรี ดังนั้นฉันจึงแฮ็กสเปรดชีต Google เอกสารที่ส่งออกข้อมูลอัตราแลกเปลี่ยนเงินตราต่างประเทศของ Google Finance ข้อมูล FX Data FeedCurrency Feed ฟรีของ 90 สกุลเงินที่มีอยู่ใน XML, JSON, JSON-P และ RSS ผ่าน HTTP และ HTTPS รูปแบบทำให้ง่ายต่อการสร้าง APIshys เพื่ออ้างอัตราแลกเปลี่ยนในตัวอักษรภาษาเขียนโปรแกรมใด ๆ 8211 Java, PHP, JavaScript และอื่น ๆ นับไม่ถ้วน ฟีดข้อมูล Forex มีสี่ฟีดข้อมูล Forex อัตราแลกเปลี่ยนสกุลเงินดอลลาร์สหรัฐ 8211 จากสกุลเงินดอลลาร์สหรัฐฯเป็นสกุลเงินอื่น ๆ อัตราแลกเปลี่ยนสกุลเงิน EUR 8211 จากสกุลเงินยูโรเป็นสกุลเงินอื่น ๆ อัตราแลกเปลี่ยนสกุลเงิน GBP Feed 8211 จากสกุลเงินอื่นไปยัง GBP 10 EUR ฟีด 8211 อัตราแลกเปลี่ยนสกุลเงินจากสกุลเงินยูโรถึง 9 สกุลเงินสำคัญ อัตราแลกเปลี่ยนเงินตราต่างประเทศ 10 เหรียญสหรัฐอัตราแลกเปลี่ยน 8211 จากสกุลเงินดอลลาร์สหรัฐถึง 9 สกุลเงินสำคัญ อัตราแลกเปลี่ยนสกุลเงินที่ 10 อันดับแรกของ GBP ฟีด 8211 จากสกุลเงินดอลลาร์สหรัฐฯเป็นสกุลเงินสำคัญ 9 สกุล ถ้าเป็นไปได้ให้ใช้ Top 10 Forex Feeds เนื่องจากมีขนาดเล็กและโหลดได้เร็วขึ้น ประกอบด้วยสกุลเงินดอลลาร์สหรัฐถึง AED, ANG, ARS, AUD, BDT, BGN, BHD, BND, BOB, BRL, BWP, CAD, CHF, CLP, CNY, COP, CRC, CZK, DKK, DOP, DZD, EGP, EUR, FJD , GBP, HKD, HNL, HRK, HUF, IDR, ILS, INR, ISK, JMD, JOD, JPY, KES, KRW, KDD, KYD, KZT, LBP, LKR, LTL, LVL, MAD, MDL, MKD, MUR , MVR, MXN, MYR, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PEN, PGK, PHP, PKR, PLN, PYG, QAR, RON, RSD, RUB, SAR, SCR, SEK, SGD, SLL , THB, TND, TRY, TTD, TWD, TZS, UAH, UGX, USD, UYU, UZS, VEF, VND, XOF, YER, ZAR, ZMK ประกอบด้วย EUR เพื่อ AED, ANG, ARS, AUD, BDT, BGN, BHD, BND, BOB, BRL, BWP, CAD, CHF, CLP, CNY, COP, CRC, CZK, DKK, DOP, DZD, EGP, FJD, GBP , HKD, HNL, HRK, HUF, IDR, ILS, INR, ISK, JMD, JOD, JPY, KES, KRW, KWD, KYD, KZT, LBP, LKR, LTL, MDL, MAD, MDL, MKD, MUR, MVR , MXN, MYR, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PEN, PGK, PHP, PKR, PLN, PYG, QAR, RON, RSD, RUB, SAR, SCR, SEK, SGD, SLL, THB , TND, TRY, TTD, TWD, TZS, UAH, UGX, USD, UYU, UZS, VEF, VND, XOF, YER, ZAR, ZMK ประกอบด้วย GBP กับ AED, ANG, ARS, AUD, BDT, BGN, BHD, BND, BOB, BRL, BWP, CAD, CHF, CLP, CNY, COP, CRC, CZK, DKK, DOP, DZD, EGP, FJD, EUR , HKD, HNL, HRK, HUF, IDR, ILS, INR, ISK, JMD, JOD, JPY, KES, KRW, KWD, KYD, KZT, LBP, LKR, LTL, MDL, MAD, MDL, MKD, MUR, MVR , MXN, MYR, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PEN, PGK, PHP, PKR, PLN, PYG, QAR, RON, RSD, RUB, SAR, SCR, SEK, SGD, SLL, THB , TND, TRY, TTD, TWD, TZS, UAH, UGX, USD, UYU, UZS, VEF, VND, XOF, YER, ZAR, ZMK ฟีด 10 ยูโรที่ใหญ่ที่สุดประกอบด้วย EUR to USD, JPY, GBP, CHF, AUD, CAD, SEK, HDK และ NOK Top 10 เหรียญสหรัฐ FeedOANDA 1080108910871086108311001079109110771090 10921072108110831099 คุกกี้ 10951090108610731099 1089107610771083107210901100 1085107210961080 10891072108110901099 10871088108610891090109910841080 1074 1080108910871086108311001079108610741072108510801080 1080 108510721089109010881086108010901100 10801093 10891086107510831072108910851086 108710861090108810771073108510861089109011031084 10851072109610801093 10871086108910771090108010901077108310771081. 10601072108110831099 คุกกี้ 10851077 10841086107510911090 1073109910901100 108010891087108610831100107910861074107210851099 107610831103 109110891090107210851086107410831077108510801103 10741072109610771081 10831080109510851086108910901080. 1055108610891077109710721103 108510721096 1089107210811090, 10741099 108910861075108310721096107210771090107710891100 1089 10801089108710861083110010791086107410721085108010771084 OANDA8217 109210721081108310861074 คุกกี้ 1074 108910861086109010741077109010891090107410801080 1089 10851072 109610771081 105510861083108010901080108210861081 108210861085109210801076107710851094108010721083110010851086108910901080. 1048108510891090108810911082109410801080 10871086 107310831086108210801088108610741072108510801102 1080 10911076107210831077108510801102 109210721081108310861074 คุกกี้ 1072 10901072108210781077 1091108710881072107410831077108510801102 108010841080 108710881080107410771076107710851099 10851072 10891072108110901077 aboutcookies. org 1042 108910831091109510721077 10861075108810721085108010951077108510801103 1080108910871086108311001079108610741072108510801103 109210721081108310861074 คุกกี้ 108610871088107710761077108310771085108510991077 1092109110851082109410801080 108510721096107710751086 10891072108110901072 10731091107610911090 1085107710761086108910901091108710851099. 104710721075108810911079108010901100 108410861073108010831100108510991077 1087108810801083108610781077108510801103 1042109310861076 1042109910731088107210901100 1089109510771090 ampltiframe src4489469.fls. doubleclickactivityisrc4489469typenewsi0catoanda0u1fxtradeiddclatdcrdidtagforchilddirectedtreatmentord1num1 mcesrc4489469.fls. doubleclickactivityisrc4489469typenewsi0catoanda0u1fxtradeiddclatdcrdidtagforchilddirectedtreatmentord1num1 width1 height1 frameborder0 styledisplay: ไม่มี mcestyledisplay: noneampgtampltiframeampgt 10571054104710441040104910581045 104010421058105410521040105810481047104810561054104210401053105310671045 10581054105610431054 104210671045 105010401050 105710581056104010581045104310481048 105310401057105810561054104810581068 API 105310721089109010881086108110901077 API OANDA 1074 109010881080 1096107210751072: 10541090108210881086108110901077 10881077107210831100108510991081 10901086108810751086107410991081 1089109510771090 108010831080 1076107710841086-1089109510771090 104710721087108810861089108010901077 107410721096 1082108311021095 107610831103 API 104010511043105410561048105810521048106310451057105010401071 10581054105610431054104210511071 10541088107510721085108010791091108110901077 10871086109010861082 107610721085108510991093 1086 108210911088108910721093 1074 108810771078108010841077 108810771072108311001085108610751086 1074108810771084107710851080, 1089108610741077108810961072108110901077 10901086108810751086107410991077 10761077108110891090107410801103, 10851072108710881080108410771088 1088107210791084107710971072108110901077 10881099108510861095108510991077 1080 10831080108410801090108010881086107410721085108510991077 1087108810801082107210791099, 10871086108310911095108010901077 107610861089109010911087 1082 107410721096107710841091 10891095107710901091 OANDA 1080 1094107710851086107410861081 1080108910901086108810801080. 10511045104310501054 10481053105810451043105610481056105910491058104510571068 1042 1057104810571058104510521059 105110771075108210801077 1074 10871086108311001079108610741072108510801080 1080 1080108510 9010771075108810801088108610741072108510801080. 105610721079108810721073108610901072108110901077 10801085107610801074108010761091107210831100108510991077 1080108510901077108810921077108110891099 108710861083110010791086107410721090107710831103 108010831080 10891086107910761072108110901077 10891086107310891090107410771085108510991077 10901086108810751086107410991077 108410861076107710831080. 10541041106410481056105310671045 1056104510571059105610571067 104410511071 1056104010471056104010411054105810631048105010541042 105310721096 108710861088109010721083 108810721079108810721073108610901095108010821072 1087108610841086107810771090 107410721084 108510721095107210901100 108810721073108610901091. 1042 10741072109610771084 108810721089108710861088110310781077108510801080 10861073109610801088108510991077 1088107710891091108810891099, 1087108810801084107710881099 10821086107610861074 1080 107610861082109110841077108510901072109410801103. 1053104010631053104810581045 10581054105610431054104210 511070 10541090108210881086108110901077 1076107710841086-1089109510771090 106910901086 1087108610841086107810771090 107410721084 10881072107910881072107310861090107210901100 10901086108810751086107410911102 108910901088107210901077107510801102. 10541090108210881086108110901077 10881077107210831100108510991081 1089109510771090 109110781077 108910771081109510721089, 1080 10741099 1089108410861078107710901077 109010861088107510861074107210901100 10951077108810771079 108510771089108210861083110010821086 10841080108510911090. 105910731099109010821080 10841086107510911090 108710881077107410991089108010901100 1080108510741077108910901080109410801080. 1057104810571058104510521040 105410411052104510531040 10481053106010541056105210401062104810451049 10551054 1057104410451051105010401052 แก้ไข 104410831103 1076108610891090109110871072 1082 10901086108810751086107410861081 108710831072109010921086108810841077 OANDA 1092108010851072108510891086107410991077 10861088107510721085108010791072109410801080 10841086107510911090 108010891087108610831100107910861074107210901100 10 79107210961080109210881086107410721085108510991081 10821072108510721083 108610731084107710851072 1092108010851072108510891086107410861081 10801085109210861088108410721094108010771081 การแก้ไข OANDA 108710861076107610771088107810801074107210771090 107410771088108910801080 การแก้ไข 4.2, 4.3 1080 4.4. 105410901087108810721074110010901077 107910721087108810861089 10851072 107610861089109010911087 10871086 107210761088107710891091 apioanda API REST 10,851,072 108610891085108610741077 HTTP-108710881086109010861082108610831072 1055108810801082108310721076108510991077 10871088108610751088107210841084108510991077 1080108510901077108810921077108110891099 REST OANDA 10851077 1079107210741080108911031090 10861090 11031079109910821072, 109510901086 108710861079107410861083110310771090 109010881077108110761077108810721084 108010891087108610831100107910861074107210901100 108510911078108510991077 10801084 10871088108610751088107210841084108510991077 11031079109910821080 107610831103 1085107710871086108910881077107610891090107410771085108510861081 1080108510901077107510881072109410801080 1074 10901086108810751086107410991077 1089108010891090107710841099 OANDA 8212 108210721082 10881072108510771077 1088107210791088107210731086109010721085108510991077, 109010721082 1080 107410771088108910801080 20 (โวลต์ 20) 106910901080 1080108510901077108810921077108110891099 8212 108010761077107210831100108510861077 1088107710961077108510801077 107610831103 10851077107910721074108010891080108410991093 109010881077108110761077108810861074, 1079107210801085109010771088107710891086107410721085108510991093 1074 1072107410901086108410721090108010791072109410801080 10901086108810751086107410991093 108910901088107210901077107510801081. 10531091107810771085 10831080 108410851077 1089109510771090 OANDA, 10951090108610731099 108010891087108610831100107910861074107210901100 API 10441072. 10631090108610731099 1089107510771085107710881080108810861074107210901100 108310801095108510991081 1082108311021095 1076108610891090109110871072 1080 108010891087108610831100107910861074107210901100 API, 107410721084 108510771086107310931086107610801084 10881077107210831100108510991081 108010831080 1076107710841086-1089109510771090 OANDA 10631090108610731099 1089107510771085107710881080108810861074107210901100 108310801095108510991081 1082108311021095 1076108610891090109110871072, 108710771088107710811076108010901077 10851072 10891090108810721085108010941091 1711059108710881072107410831077108510801077 10761086108910901091108710861084187 107410721096107710751086 10891095107710901072 fxTrade OANDA 105810721084 10741099 1091107410801076108010901077 108910891099108310821091 1711059108710881072107410831077108510801077 10761086108910901091108710861084 1082 API187 (105210861081 1089109510771090 - gt 105210861080 109110891083109110751080 - gt 1059108710881072107410831077108510801077 10761086108910901091108710861084 1082 API) 1055107710881077108110761103 10871086 1101109010861081 108910891099108310821077, 10741099 108410861078107710901077 1089107510771085107710881080108810861074107210901100 108310801095108510991081 1082108311021095 1076108610891090109110871072 1082 API OANDA, 1072 10901072108210781077 107210851085109110831080108810861074107210901100 1090107710821091109710801081 1082108311021095. 1071 10791072107310991083 1089107410861081 108310801095108510991081 1082108311021095 1076108610891090109110871072. 1052108610751091 10831080 1103 107410861089108910901072108510861074108010901100 107710751086 104210721084 10871088108010761077109010891103 107210851085109110831080108810861074107210901100 1079107210731099109010991081 1082108311021095 1076108610891090109110871072 1080 1089107510771085107710881080108810861074107210901100 10851086107410991081. 105510771088107710811076108010901077 10851072 10891090108810721085108010941091 1711059108710881072107410831077108510801077 10761086108910901091108710861084187 107410 721096107710751086 10891095107710901072 fxTrade OANDA 105810721084 10741099 1091107410801076108010901077 108910891099108310821091 1711059108710881072107410831077108510801077 10761086108910901091108710861084 1082 API187 (105210861081 1089109510771090 - gt 105210861080 109110891083109110751080 - gt 1059108710881072107410831077108510801077 10761086108910901091108710861084 1082 API) 1055107710881077108110761103 10871086 1101109010861081 108910891099108310821077, 10741099 1089108410861078107710901077 107210851085109110831080108810861074107210901100 1090107710821091109710801081 1082108311021095 1076108610891090109110871072 1082 API OANDA 1080 1089107510771085107710881080108810861074107210901100 10851086107410991081. 104310761077 10841086107810851086 10851072108110901080 1088107710891091108810891099 107610831103 1088107210791088107210731086109010951080108210861074 10501072108210801077 11031079109910821080 1087108810861075108810721084108410801088108610741072108510801103 10741099 1087108610761076107710881078108010741072107710901077 API REST 10851077 1079107210741080108910801090 10861090 11031079109910821072 1087108810861075108810721084108410801088108610741072108510801103. 104410831103 1089108610871088110310781077108510801103 1089 108510721096108010841080 108910801089109010771084107210841080 10741099 108410861078107710901077 108010891087108610831100107910861074107210901 100 10831102107310861081 10801079 108010791074107710891090108510991093 107410721084 110310791099108210861074. 10501088108610841077 1090108610751086, 10851072 1055108610881090107210831077 108810721079108810721073108610901095108010821072 OANDA 10761086108910901091108710851086 108510771089108210861083110010821086 10911087107210821086107410971080108210861074 110310791099108210861074 1087108810861075108810721084108410801088108610741072108510801103, 109510901086 108610731083107710751095107210771090 1087108810861094107710891089. 10521086107810851086 10831080 108010891087108610831100107910861074107210901100 API OANDA 1089 v20 API REST-V20 10841086107810851086 108010891087108610831100107910861074107210901100 10891086 108910951077109010861084 v20 10541073107710891087107710951080107410721077109010891103 10831080 108710861083108510861077 1096108010921088108610741072108510801077 10741072109610801093 1082108610841084109110851080108210721094108010861085108510991093 1082107210851072108310861074 10441072, 107,410,891,077 1082108610841084109110851080108210721094108010861085108510991077 108210721085107210831099 API 10791072109710801097107710851099 1087108810861090108610821086108310861084 SSL 104210791080108410721077109010891103 10831080 10821072108210721103-1083108010731086 10871083107210901072 10791072 107610861089109010911087 1082 API 104410861089109010911087 1082 API 108710881077107610861089109010721074108311031077109010891103 107310771089108710831072109010851086 108710881080 1091108910831086107410801080 1085107210831080109510801103 10761086108910901072109010861095108510991093 1089108810771076108910901074 10851072 10901086108810751086107410861084 10891095107710901077 OANDA 105810881077107310911077109010891103 10831080 1074109910871086108310851077108510801077 108710831072109010921086108810841099 OANDA 107610831103 108810721073108610901099 1089 104410831103 API 1080108910871086108311001079108610741072108510801103 API 10851077 109010881077107310911077109010891103 1079107210871091109710771085108510861081 10901086108810751086107410861081 108710831072109010921086108810841099 OANDA, 1093108610901103 10741099 108410861078107710901077 107410861089108710861083110010791086107410721090110010891103 10771102 107610831103 10841086108510801090108610881080108510751072 10761077108110891090107410801081 API 1074 108810771078108010841077 108810771072108311001085108610751086 1074108810771084107710851080. 105510881080 1079107210871088108610891077 API REST 1087108611031074108311031077109010891103 108610961080107310821072 HTTP 429. 106310901086 110110901086 107910851072109510801090 104210721084 1085107710861073109310861076108010841086 10721085108510911083108010881086107410721090 1100 1090107710821091109710801081 1082108311021095 1076108610891090109110871072 1080 1089107510771085107710881080108810861074107210901100 10851086107410991081. 105510771088107710811076108010901077 10851072 10891090108810721085108010941091 1711059108710881072107410831077108510801077 10761086108910901091108710861084187 107410721096107710751086 10891095107710901072 fxTrade OANDA 105810721084 10741099 1091107410801076108010901077 108910891099108310821091 1711059108710881072107410831077108510801077 10761086108910901091108710861084 1082 API187 (105210861081 1089109510771090 - gt 105210861080 109110891083109110751080 - gt 1059108710881072107410831077108510801077 10761086108910901091108710861084 1082 API) 1055107710881077108110761103 10871086 1101109010861081 108910891099108310821077, 10741099 1089108410861078107710901077 107210851085109110831080108810861074107210901100 1090107710821091109710801081 1082108311021095 1076108610891090109110871072 1082 API OANDA 1080 1089107510771085107710881080108810861074107210901100 10851086107410991081. 10481089108710861083110010791091108110901077 10851086107410991081 1082108311021095 1076108610891090109110871072 107610831103 10791072108710881086108910861074 API 1071 108010891087108610831100107910911102 API v1 REST, 10851086 10861085 10851077 10881072107310861090107210771090 1089 1084108610801084 108910951077109010861084. 106310901086 107610771083107210901100 1045108910831080 1091 107410721089 108610901082108810991090 1089109510771090 v20 (108010891087108610831100107910911102109710801081 17110951077108810901086109510821080187 1074 10801076107710851090108010921080108210721090108610881077 10891095107710901072, 10851072108710881080108410771088 101-23423-105) 1085107710861073109310861076108010841086 108010891087108610831100107910861074107210901100 API v3 (REST v20) 1071 108010891087108610831100107910911102 API v20 REST, 10851086 10861085 10851077 10881072107310861090107210771090 1089 1084108610801084 108910951077109010861084. 106310901086 107610771083107210901100 1045108910831080 1091 107410721089 108610901082108810991090 171108910901072108810991081187 1089109510771090 (10851077 1080108410771102109710801081 17110951077108810901086109510771082187 1074 10801076107710851090108010921080108210721090108610881077 10891095107710901072, 10851072108710881080108410771088 252345) 1089108310771076109110771090 108010891087108610831100107910861074107210901100 API v1 104310761077 10841086107810851086 10851072108110901080 108810771075108010891090108810721094108010861085108510991077 10921086108810841099, 10871088107210741086107410911102 1080 10901086108810751086107410911102 107610861082109110841077108510901072109410801102 OANDAXigniteGlobalCurrencies รับสิ่งที่คุณต้องการไม่ว่าจะเป็นแบบ real-time อัตราแลกเปลี่ยนเงินตราต่างประเทศ, ประวัติศาสตร์ข้อมูลแลกเปลี่ยนเงินตราหรือเครื่องมือแปลงสกุลเงินใดก็ตามเรามีคุณครอบคลุม นอกจากนี้เรายังมีอัตราแลกเปลี่ยนเงินตราต่างประเทศในประวัติศาสตร์ของลอนดอนอัตราการทำสัญญาล่วงหน้าและข้อมูลสกุลเงินในระดับ bartick เริ่มต้นใช้งานได้อย่างรวดเร็วลดเวลาในการพัฒนาสู่ตลาดด้วยเอกสารออนไลน์คำถามที่พบบ่อยและโค้ดตัวอย่างที่สร้างขึ้นแบบไดนามิก นอกจากนี้เรายังมีแดชบอร์ดการวิเคราะห์การใช้งานเพื่อช่วยให้คุณเข้าใจการใช้งานในปัจจุบันของคุณและการทดลองใช้ฟรี 7 วันที่ไม่มีความเสี่ยงเพื่อทดลองใช้ก่อนที่คุณจะซื้อ ความน่าเชื่อถือที่ดีที่สุดในชั้นเรียนเพื่อช่วยประมวลผลคำขอ API นับล้านต่อชั่วโมง Xignite ใช้ Cloud Amazon Web Services (AWS) โครงสร้างพื้นฐานที่ AWS ให้ไว้ช่วยให้ Xignite สามารถปรับขนาดการจัดส่งข้อมูลทางการเงินแบบเรียลไทม์ได้อย่างมีประสิทธิภาพและเพิ่มประสิทธิภาพในขณะที่เพิ่มประสิทธิภาพทรัพยากรด้านคอมพิวเตอร์และเครือข่าย การครอบคลุมข้อมูล forex ที่ดีที่สุดและฟังก์ชัน API - ไม่มีค่าธรรมเนียมที่ซ่อนอยู่
No comments:
Post a Comment