Saturday, 19 August 2017

บอนด์ ซื้อขายออนไลน์ ระบบ


คุณสังเกตเห็นบางครั้งนักลงทุนหรือผู้ค้าอาจใช้คำว่าซื้อในขณะที่คนอื่นใช้คำนี้เป็นเวลานาน บางคนอาจบอกว่าขายและคนอื่น ๆ พูดสั้น ๆ อะไรที่แตกต่างกันมันอาจจะน้อยมากหรือมากในเวลาเดียวกัน กองทุนตราสารหนี้ที่ลงทุนในตราสารหนี้ที่ออกโดยรัฐบาลและ บริษัท ส่วนใหญ่ของกองทุนเหล่านี้ได้รับการออกแบบเพื่อให้รายได้ดอกเบี้ยสำหรับผู้ถือหุ้นในรูปของเงินปันผลที่แสดงถึงการจ่ายดอกเบี้ยทั้งหมดโดยพันธบัตรทั้งหมดในพอร์ตกองทุน การวิเคราะห์พื้นฐานเป็นรากฐานของการลงทุนที่มั่นคง ช่วยให้คุณสามารถกำหนดสุขภาพโดยรวมของ บริษัท โดยการตรวจสอบตัวเลขหลักทางธุรกิจ ได้แก่ งบกำไรขาดทุนการเปิดเผยรายได้งบดุลและตัวชี้วัดอื่น ๆ เกี่ยวกับสุขภาพทางเศรษฐกิจ จากปัจจัยพื้นฐานเหล่านี้นักลงทุนประเมินว่าหุ้นมีมูลค่าต่ำกว่าหรือมากเกินไป การวิเคราะห์พื้นฐานคุณจะสังเกตเห็นบางครั้งนักลงทุนหรือผู้ค้าอาจใช้คำว่าซื้อในขณะที่คนอื่นใช้คำนั้นยาว บางคนอาจบอกว่าขายและคนอื่น ๆ พูดสั้น ๆ อะไรที่แตกต่างกันมันอาจจะน้อยมากหรือมากในเวลาเดียวกัน คุณสามารถเรียกตัวเองว่า Veteran Bond Investor ถ้าคุณเป็นผู้มีส่วนร่วมในตลาดที่มีทักษะระดับกลาง คุณรักษาพอร์ตการลงทุนพันธบัตรไว้อย่างน้อยหนึ่งปีหรือสองปี ทหารผ่านศึกมีวิธีการลงทุนแบบอนุรักษ์นิยมสำหรับเงินที่จัดสรรให้กับพันธบัตร แต่พวกเขาระมัดระวังการลงทุนในพันธบัตรแทนถ้าคุณกลัวที่จะคลี่คลายความหมายทางภาษีของการซื้อขายของคุณให้เป็นช่วงเวลาที่ดีที่จะได้รับเรื่องเหล่านี้ไว้ ด้วยพื้นฐานเพียงไม่กี่ขั้นพื้นฐานภายใต้เข็มขัดของคุณคุณจะพร้อมที่จะเป็นพันธมิตรกับบัญชีภาษีของคุณและจัดการภาษีการค้าของคุณเพิ่มเติมยุทธศาสตร์พันธบัตรแนะนำซื้อพันธบัตรองค์กรกลยุทธ์เป็นชื่อ implies, พันธบัตรองค์กรออกโดย บริษัท - มักจะมีขนาดใหญ่ . บริษัท กู้ยืมเงินจากนักลงทุนเพื่อระดมทุนในการดำเนินธุรกิจ กลยุทธ์เพิ่มเติมเกี่ยวกับพันธบัตรซื้อพันธบัตรองค์กรตามยุทธศาสตร์ตามที่ระบุในชื่อ บริษัท มีการออกหุ้นกู้โดย บริษัท ซึ่งโดยปกติจะมีขนาดใหญ่และมีการซื้อขายในตลาดหลักทรัพย์แห่งประเทศไทย บริษัท กู้ยืมเงินจากนักลงทุนเพื่อระดมทุนในการดำเนินธุรกิจ ซื้อพันธบัตรเทศบาลพันธบัตรเทศบาล (หรือที่เรียกว่า Munus) จะออกโดยรัฐเมืองมณฑลและหน่วยงานภาครัฐอื่น ๆ ที่อยู่ต่ำกว่าระดับรัฐบาลกลางเพื่อที่จะระดมเงินเพื่อการปรับปรุงสาธารณะ พูดคุยเกี่ยวกับหลักทรัพย์ที่คุณกำลังค้าและเชื่อมต่อกับผู้ค้ารายอื่น ๆ ในเครือข่ายของเรา รายงานการวิจัยสร้างตลาดสำหรับแนวคิดการลงทุนใหม่ ๆ ด้วยการวิจัยของ MarketGrader ศูนย์รับฝากตราสารหนี้กำหนดกลยุทธ์การหารายได้คงที่ในอุดมคติของคุณไม่ว่าจะเป็นระยะสั้นหรือระยะยาว Trader Network Blogs ดูรายละเอียดเพิ่มเติมเกี่ยวกับหลักทรัพย์ที่คุณซื้อขายและเชื่อมต่อกับผู้ค้ารายอื่นในเครือข่ายของเรา ตัวเลือกมีความเสี่ยงและไม่เหมาะสำหรับนักลงทุนทุกราย หากต้องการข้อมูลเพิ่มเติมโปรดอ่าน Brochure Characteristics and Risks of Standard Options ที่ tradekingODD ก่อนที่คุณจะเริ่มซื้อขาย ตัวเลือกนักลงทุนอาจสูญเสียทั้งจำนวนเงินลงทุนของพวกเขาในช่วงเวลาอันสั้นของเวลา การซื้อขายออนไลน์มีความเสี่ยงโดยธรรมชาติเนื่องจากการตอบสนองและเวลาในการเข้าถึงระบบซึ่งแตกต่างกันไปขึ้นอยู่กับสภาวะตลาดประสิทธิภาพของระบบและปัจจัยอื่น ๆ นักลงทุนควรเข้าใจถึงความเสี่ยงเหล่านี้และความเสี่ยงเพิ่มเติมก่อนทำการซื้อขาย 4.95 สำหรับการซื้อขายหุ้นออนไลน์และการซื้อขายสิทธิเลือกเพิ่ม 65 เซนต์ต่อสัญญาสิทธิเลือก TradeKing เรียกเก็บค่าธรรมเนียมเพิ่มเติม 0.35 ต่อสัญญาในผลิตภัณฑ์ดัชนีหนึ่ง ๆ ซึ่งมีค่าธรรมเนียมการแลกเปลี่ยน ดูคำถามที่พบบ่อยของเราสำหรับรายละเอียด TradeKing เพิ่ม 0.01 ต่อหุ้นในใบสั่งทั้งหมดสำหรับหุ้นที่มีราคาต่ำกว่า 2.00 ดูหน้าค่าคอมมิชชั่นและค่าธรรมเนียมของเราสำหรับค่าคอมมิชชั่นในธุรกิจการค้าที่ได้รับความช่วยเหลือจากโบรกเกอร์หุ้นราคาย่อมเยา Spread ตัวเลือกและหลักทรัพย์อื่น ๆ คำพูดล่าช้าไม่น้อยกว่า 15 นาทียกเว้นที่ระบุไว้เป็นอย่างอื่น ข้อมูลตลาดขับเคลื่อนและใช้งานโดย SunGard ข้อมูลพื้นฐานของ บริษัท ที่มาจาก Factset ประมาณการรายได้โดย Zacks ข้อมูลกองทุนและ ETF ที่จัดหาโดย บริษัท Lipper และ Dow Jones Company การซื้อเพื่อปิดข้อเสนอพิเศษของคณะกรรมาธิการฟรีไม่ครอบคลุมถึงการค้าแบบหลายขา กลยุทธ์ตัวเลือกแบบหลายขามีความเสี่ยงเพิ่มขึ้นและค่าคอมมิชชั่นหลายรายการ และอาจส่งผลให้เกิดการรักษาภาษีที่ซับซ้อน โปรดปรึกษาที่ปรึกษาด้านภาษีของคุณ ความผันผวนที่แสดงให้เห็นถึงความเป็นเอกฉันท์ของตลาดเกี่ยวกับระดับความผันผวนของราคาหุ้นในอนาคตหรือความเป็นไปได้ที่จะถึงจุดราคาที่เฉพาะเจาะจง ชาวกรีกเป็นตัวแทนของฉันทามติของตลาดว่าวิธีการที่ตัวเลือกจะตอบสนองต่อการเปลี่ยนแปลงในตัวแปรบางอย่างที่เกี่ยวข้องกับการกำหนดราคาของสัญญาการเลือก ไม่มีการรับประกันว่าการคาดการณ์ความผันผวนโดยนัยหรือชาวกรีกจะถูกต้อง นักลงทุนควรพิจารณาวัตถุประสงค์การลงทุนความเสี่ยงค่าใช้จ่ายและค่าใช้จ่ายของกองทุนรวมหรือกองทุนซื้อขายแลกเปลี่ยน (ETFs) อย่างรอบคอบก่อนลงทุน หนังสือชี้ชวนของกองทุนรวมหรือ ETF ประกอบด้วยข้อมูลนี้และข้อมูลอื่น ๆ และสามารถรับได้โดยการส่งอีเมลไปที่ servicetradeking ผลตอบแทนการลงทุนจะผันผวนและอาจมีความผันผวนของตลาดเพื่อให้ผู้ลงทุนมีส่วนร่วมในการไถ่ถอนหรือขายอาจมีมูลค่ามากกว่าหรือน้อยกว่าต้นทุนเดิม ETFs อาจมีความเสี่ยงคล้ายกับหุ้น กองทุนซื้อขายแลกเปลี่ยนบางประเภทอาจมีความเสี่ยงด้านตลาดเพิ่มขึ้น แพลตฟอร์มตราสารหนี้ TradeKings มีให้โดย Knight BondPoint, Inc. การเสนอราคาทั้งหมด (เสนอ) ที่ส่งมาในแพลตฟอร์ม Knight BondPoint เป็นคำสั่งซื้อที่ จำกัด และหากดำเนินการจะถูกเรียกใช้เฉพาะกับข้อเสนอ (ราคาเสนอ) บนแพลตฟอร์ม Knight BondPoint เท่านั้น Knight BondPoint ไม่ส่งคำสั่งไปยังสถานที่อื่นใดเพื่อวัตถุประสงค์ในการจัดการและดำเนินการตามคำสั่ง ข้อมูลที่ได้จากแหล่งข้อมูลที่เชื่อถือได้ แต่ความถูกต้องหรือความสมบูรณ์ไม่ได้รับการรับรอง ข้อมูลและผลิตภัณฑ์จะได้รับเฉพาะหน่วยงานที่มีความพยายามมากที่สุดเท่านั้น โปรดอ่านข้อกำหนดในการให้บริการฉบับสมบูรณ์ การลงทุนในตราสารหนี้มีความเสี่ยงต่างๆเช่นการเปลี่ยนแปลงของอัตราดอกเบี้ยคุณภาพของสินเชื่อการประเมินมูลค่าในตลาดสภาพคล่องการชำระล่วงหน้าการไถ่ถอนก่อนกำหนดกิจกรรมขององค์กรการแบ่งภาษีและปัจจัยอื่น ๆ เนื้อหาการวิจัยเครื่องมือและสต็อกหรือสัญลักษณ์ตัวเลือกมีวัตถุประสงค์เพื่อการศึกษาและเพื่อการอธิบายเท่านั้นและไม่ได้หมายความถึงคำแนะนำหรือการชักจูงให้ซื้อหรือขายหลักทรัพย์ใดโดยเฉพาะหรือเพื่อร่วมในกลยุทธ์การลงทุนใด ๆ การคาดการณ์หรือข้อมูลอื่น ๆ เกี่ยวกับความเป็นไปได้ที่จะได้ผลการลงทุนที่ต่างกันมีลักษณะสมมุติฐานไม่ได้รับประกันความถูกต้องหรือครบถ้วนไม่ได้สะท้อนถึงผลการลงทุนที่เกิดขึ้นจริงและไม่ได้เป็นการรับประกันผลการดำเนินงานในอนาคต เนื้อหาของบุคคลที่สามซึ่งรวมถึงบล็อกข้อมูลบันทึกการค้าโพสต์ฟอรัมและความคิดเห็นไม่ได้สะท้อนถึงมุมมองของ TradeKing และอาจไม่ได้รับการตรวจสอบโดย TradeKing All-Stars เป็นบุคคลที่สามไม่ได้เป็นตัวแทน TradeKing และอาจรักษาความสัมพันธ์ทางธุรกิจที่เป็นอิสระกับ TradeKing ข้อความรับรองอาจไม่เป็นตัวแทนของประสบการณ์ของลูกค้ารายอื่น ๆ และไม่ได้บ่งบอกถึงประสิทธิภาพหรือความสำเร็จในอนาคต ไม่มีการจ่ายค่าตอบแทนใด ๆ สำหรับการรับรองใด ๆ ที่ปรากฏ เอกสารการสนับสนุนสำหรับการเรียกร้องใด ๆ (รวมถึงการเรียกร้องใด ๆ ที่เกิดขึ้นในนามของโปรแกรมตัวเลือกหรือความเชี่ยวชาญด้านตัวเลือก) การเปรียบเทียบคำแนะนำสถิติหรือข้อมูลทางเทคนิคอื่น ๆ จะได้รับการร้องขอตามคำขอ การลงทุนทั้งหมดเกี่ยวข้องกับความเสี่ยงการสูญเสียอาจมากกว่าเงินลงทุนหลักและผลการดำเนินงานที่ผ่านมาของความมั่นคงอุตสาหกรรมภาคตลาดหรือผลิตภัณฑ์ทางการเงินไม่ได้รับประกันผลหรือผลตอบแทนในอนาคต TradeKing ให้บริการนักลงทุนที่กำกับตนเองโดยมีบริการนายหน้าซื้อขายหลักทรัพย์ลดหย่อนและไม่ได้ให้คำแนะนำหรือเสนอการลงทุนคำแนะนำด้านการเงินกฎหมายหรือภาษี คุณมีหน้าที่รับผิดชอบในการประเมินคุณค่าและความเสี่ยงที่เกี่ยวข้องกับการใช้ระบบบริการหรือผลิตภัณฑ์ TradeKings สำหรับรายการข้อมูลที่เกี่ยวข้องกับเนื้อหาออนไลน์ทั้งหมดโปรดไปที่ tradekingeducationd เอกสารแนบ การซื้อขายแลกเปลี่ยนเงินตราต่างประเทศ (Forex) เสนอให้กับนักลงทุนที่กำกับตนเองผ่าน TradeKing Forex TradeKing Forex, Inc และ TradeKing Securities, LLC เป็น บริษัท ที่แยกกัน แต่ บริษัท ในเครือ บัญชี Forex ไม่ได้รับการคุ้มครองโดย Securities Investor Protection Corp. (SIPC) Forex trading เกี่ยวข้องกับความเสี่ยงที่สำคัญของการสูญเสียและไม่เหมาะสำหรับนักลงทุนทั้งหมด การเพิ่มความเสี่ยงเพิ่มขึ้น ก่อนตัดสินใจค้า forex คุณควรพิจารณาวัตถุประสงค์ทางการเงินระดับการลงทุนและความสามารถในการรับความเสี่ยงทางการเงินอย่างรอบคอบ ความคิดเห็นข่าวสารการวิจัยการวิเคราะห์ราคาหรือข้อมูลอื่น ๆ ที่มีอยู่ไม่ถือว่าเป็นคำแนะนำในการลงทุน อ่านการเปิดเผยข้อมูลทั้งหมด โปรดทราบว่าการทำสัญญาทองและเงินแบบไม่อยู่ภายใต้บังคับตามพระราชบัญญัติการแลกเปลี่ยนโภคภัณฑ์ของสหรัฐฯ TradeKing Forex, Inc ทำหน้าที่เป็นโบรกเกอร์แนะนำให้ GAIN Capital Group, LLC (GAIN Capital) บัญชีอัตราแลกเปลี่ยนของคุณจะถูกเก็บและรักษาไว้ที่ GAIN Capital ซึ่งทำหน้าที่เป็นตัวแทนหักบัญชีและคู่สัญญาในการซื้อขายของคุณ GAIN Capital จดทะเบียนกับ Commodity Futures Trading Commission (CFTC) และเป็นสมาชิกของ National Futures Association (NFA) (ID 0339826) TradeKing Forex, Inc. เป็นสมาชิกของ National Futures Association (ID 0408077) สำเนา 2017 TradeKing Group, Inc. สงวนลิขสิทธิ์ TradeKing Group, Inc. เป็น บริษัท ในเครือของ Ally Financial, Inc. Securities ที่นำเสนอผ่าน TradeKing Securities, LLC, FINRA และ SIPC Forex เสนอผ่าน TradeKing Forex, LLC, NFA สมาชิกระบบการซื้อขาย: อะไรคือระบบการซื้อขาย 13 ระบบการซื้อขายเป็นเพียงกลุ่มของกฎหรือพารามิเตอร์เฉพาะที่กำหนดจุดเข้าและออกสำหรับทุนที่กำหนด จุดเหล่านี้เรียกว่าสัญญาณมักถูกทำเครื่องหมายบนแผนภูมิในเวลาจริงและแจ้งให้ดำเนินการในทันทีของการค้า นี่คือบางส่วนของเครื่องมือวิเคราะห์ทางเทคนิคที่ใช้บ่อยในการสร้างพารามิเตอร์ของระบบการซื้อขาย: Moving averages (MA) 13 Stochastic 13 Oscillators 13 ความสัมพันธ์ 13 กลุ่ม Bollinger มักจะมีตัวบ่งชี้สองตัวนี้ขึ้นไปในการสร้าง ของกฎ ตัวอย่างเช่นระบบครอสโอเวอร์ MA ใช้ค่าเฉลี่ยเคลื่อนที่สองค่าระยะยาวและระยะสั้นเพื่อสร้างกฎ: ซื้อเมื่อระยะสั้นข้ามเหนือระยะยาวและขายเมื่อตรงข้ามเป็นจริง ในกรณีอื่น ๆ กฎจะใช้ตัวบ่งชี้เพียงตัวเดียว ตัวอย่างเช่นระบบอาจมีกฎที่ห้ามการซื้อใด ๆ เว้นแต่ความแรงของสัมพัทธ์อยู่เหนือระดับที่กำหนด แต่มันคือการรวมกันของกฎเหล่านี้ทั้งหมดที่ทำให้ระบบการซื้อขาย MSFT Moving Average Cross-Over System โดยใช้ค่าเฉลี่ยเคลื่อนที่ 5 และ 20 เนื่องจากความสำเร็จของระบบโดยรวมขึ้นอยู่กับการปฏิบัติตามกฎที่ดีแล้วผู้ค้าระบบใช้เวลาเพิ่มประสิทธิภาพ เพื่อบริหารความเสี่ยง เพิ่มปริมาณที่ได้รับต่อการค้าและบรรลุความมั่นคงในระยะยาว โดยการปรับเปลี่ยนพารามิเตอร์ต่างๆภายในแต่ละกฎ ตัวอย่างเช่นในการเพิ่มประสิทธิภาพระบบครอสโอเวอร์ MA ผู้ค้าจะทดสอบเพื่อดูว่าค่าเฉลี่ยเคลื่อนที่ (10 วัน 30 วัน ฯลฯ ) ทำงานได้ดีที่สุดและใช้งานได้ แต่การเพิ่มประสิทธิภาพสามารถปรับปรุงผลได้โดยใช้อัตรากำไรเพียงเล็กน้อยซึ่งเป็นการรวมกันของพารามิเตอร์ที่ใช้เพื่อกำหนดความสำเร็จของระบบ ข้อดีดังนั้นคุณอาจต้องการนำระบบการซื้อขายออกมาใช้อารมณ์ความรู้สึกทั้งหมดออกไปจากการซื้อขาย - อารมณ์มักถูกอ้างถึงว่าเป็นข้อบกพร่องที่ใหญ่ที่สุดของนักลงทุนรายย่อย นักลงทุนที่ไม่สามารถรับมือกับความสูญเสียที่สองเดาการตัดสินใจของพวกเขาและจะสูญเสียเงิน ผู้ค้าระบบสามารถละเลยความจำเป็นในการตัดสินใจใด ๆ ได้เมื่อระบบได้รับการพัฒนาและสร้างขึ้นโดยการค้าขายไม่ได้เป็นเชิงประจักษ์เนื่องจากเป็นระบบอัตโนมัติ การลดความไร้ประสิทธิภาพของมนุษย์ทำให้ผู้ค้าระบบสามารถเพิ่มผลกำไรได้ สามารถประหยัดเวลาได้มากเมื่อระบบมีการพัฒนาและเพิ่มประสิทธิภาพ ต้องใช้ความพยายามเพียงเล็กน้อยหรือไม่มีเลยโดยพ่อค้า คอมพิวเตอร์มักถูกใช้โดยอัตโนมัติไม่ใช่แค่การสร้างสัญญาณเท่านั้น แต่ยังเป็นการค้าขายที่เกิดขึ้นจริงดังนั้นผู้ประกอบการรายนี้จึงเป็นอิสระจากการใช้เวลาในการวิเคราะห์และทำธุรกิจการค้าได้ง่ายขึ้นถ้าคุณปล่อยให้คนอื่นทำเพื่อคุณ - ต้องใช้งานทั้งหมด คุณบาง บริษัท ขายระบบการค้าที่พวกเขาได้พัฒนา บริษัท อื่น ๆ จะให้สัญญาณที่สร้างโดยระบบการซื้อขายภายในของพวกเขาสำหรับค่าบริการรายเดือน ระมัดระวังแม้ว่า - หลาย บริษัท เหล่านี้มีการฉ้อโกง ดูอย่างใกล้ชิดเมื่อผลที่พวกเขาโอ้อวดถูกนำมา หลังจากที่ทุกอย่างง่ายที่จะชนะในอดีต มองหา บริษัท ที่ให้การทดลองซึ่งช่วยให้คุณสามารถทดสอบระบบได้แบบเรียลไทม์ ข้อเสีย Weve มองที่ประโยชน์หลักของการทำงานกับระบบการค้า แต่วิธีการยังมีข้อเสียของมัน ระบบการซื้อขายมีความซับซ้อน - นี่คือข้อเสียที่ใหญ่ที่สุดของพวกเขา ในขั้นตอนการพัฒนาระบบการซื้อขายต้องการความเข้าใจที่ชัดเจนเกี่ยวกับการวิเคราะห์ทางเทคนิคความสามารถในการตัดสินใจเชิงประจักษ์และความรู้ความเข้าใจเกี่ยวกับการทำงานของพารามิเตอร์ แต่แม้ว่าคุณจะไม่ได้พัฒนาระบบการซื้อขายของตนเอง แต่สิ่งสำคัญคือต้องทำความคุ้นเคยกับพารามิเตอร์ต่างๆที่คุณใช้อยู่ การได้มาซึ่งทักษะเหล่านี้อาจเป็นสิ่งที่ท้าทายคุณต้องสามารถใช้สมมติฐานที่เป็นจริงและใช้ระบบได้อย่างมีประสิทธิภาพ - ผู้ค้าระบบต้องตั้งสมมติฐานที่เป็นจริงเกี่ยวกับค่าใช้จ่ายในการทำธุรกรรม ค่าใช้จ่ายเหล่านี้จะประกอบด้วยค่าคอมมิชชันมากกว่าค่าคอมมิชชั่น - ความแตกต่างระหว่างราคาดำเนินการกับราคาเสนอซื้อเป็นส่วนหนึ่งของต้นทุนการทำธุรกรรม จำไว้ว่ามักไม่สามารถทดสอบระบบได้อย่างถูกต้องทำให้เกิดความไม่แน่นอนเมื่อนำระบบมาใช้งาน ปัญหาที่เกิดขึ้นเมื่อผลการจำลองต่างกันอย่างมากจากผลลัพธ์ที่เกิดขึ้นจริงเรียกว่าความลื่นไถล มีประสิทธิภาพในการรับมือกับความลื่นไถลอาจเป็นอุปสรรคสำคัญในการปรับใช้ระบบที่ประสบความสำเร็จการพัฒนาอาจเป็นงานที่ต้องใช้เวลามาก - มีเวลามากมายในการพัฒนาระบบการซื้อขายเพื่อให้ระบบทำงานได้อย่างถูกต้อง การสร้างแนวคิดระบบและนำไปปฏิบัติจะเกี่ยวข้องกับการทดสอบเป็นจำนวนมากซึ่งต้องใช้เวลาสักครู่ การทำย้อนหลังในเชิงประวัติศาสตร์ใช้เวลาเพียงไม่กี่นาที แต่การทดสอบกลับด้านเดียวไม่เพียงพอ ระบบต้องเป็นกระดาษที่ซื้อขายในเวลาจริงเพื่อความมั่นใจ สุดท้ายการทำให้ลื่นไถลอาจทำให้ผู้ค้าทำการปรับเปลี่ยนระบบของตนได้หลายอย่างแม้หลังจากการใช้งาน พวกเขาทำงานมีการหลอกลวงทางอินเทอร์เน็ตจำนวนที่เกี่ยวข้องกับการซื้อขายระบบ แต่ยังมีหลายระบบที่ประสบความสำเร็จถูกต้องตามกฎหมาย บางทีตัวอย่างที่โด่งดังที่สุดคือการพัฒนาและดำเนินการโดย Richard Dennis และ Bill Eckhardt ผู้เป็นพ่อค้าเต่าดั้งเดิม ในปีพ. ศ. 2526 ทั้งสองมีข้อพิพาทว่าผู้ค้าที่ดีเกิดหรือทำขึ้น ดังนั้นพวกเขาเอาคนบางคนออกจากถนนและได้รับการฝึกฝนพวกเขาขึ้นอยู่กับระบบการซื้อขายเต่าที่มีชื่อเสียงของพวกเขาตอนนี้ พวกเขารวบรวม 13 ผู้ค้าและจบลงด้วยการทำ 80 ปีในช่วงสี่ปีถัดไป Bill Eckhardt เคยกล่าวไว้แล้วว่าทุกคนที่มีสติปัญญาโดยเฉลี่ยสามารถเรียนรู้การค้า นี่ไม่ใช่วิทยาศาสตร์จรวด อย่างไรก็ตามการเรียนรู้สิ่งที่ควรทำในการซื้อขายมากกว่าการทำมันเป็นเรื่องง่ายกว่ามาก ระบบการซื้อขายมีมากขึ้นและเป็นที่นิยมมากในหมู่นักลงทุนมืออาชีพผู้จัดการกองทุนและนักลงทุนรายย่อยเหมือนกัน - บางทีนี่อาจเป็นข้อพิสูจน์ถึงวิธีการที่ดีที่พวกเขาทำงานด้วยการหลอกลวงเมื่อต้องการซื้อระบบการซื้อขายอาจเป็นเรื่องยากที่จะหาธุรกิจที่น่าเชื่อถือ . แต่การหลอกลวงส่วนใหญ่สามารถเห็นได้โดยสามัญสำนึก ตัวอย่างเช่นการรับประกัน 2,500 ปีเป็นเรื่องอุกฉกรรจ์อย่างชัดเจนเนื่องจากสัญญาว่ามีเพียง 5,000 รายเท่านั้นที่คุณสามารถทำได้ 125,000 รายในหนึ่งปี จากนั้นก็ผ่านการประนอมประคองเป็นเวลาห้าปี 48,828,125,000 ถ้าเรื่องนี้เป็นความจริงผู้สร้างจะไม่ยอมค้าขายกลายเป็นมหาเศรษฐีข้อเสนออื่น ๆ แต่เป็นการยากที่จะถอดรหัส แต่วิธีหลีกเลี่ยงการหลอกลวงก็คือการหาระบบที่ ให้ทดลองใช้ฟรี ด้วยวิธีนี้คุณสามารถทดสอบระบบด้วยตัวคุณเอง ไม่เคยเชื่อมั่นในธุรกิจที่น่ายินดีเกี่ยวกับเรื่องนี้นอกจากนี้ควรติดต่อผู้อื่นที่ใช้ระบบเพื่อดูว่าพวกเขาสามารถยืนยันความน่าเชื่อถือและความสามารถในการทำกำไรได้หรือไม่ ข้อสรุปการพัฒนาระบบการซื้อขายที่มีประสิทธิภาพไม่ใช่เรื่องง่าย ต้องมีความเข้าใจที่ชัดเจนเกี่ยวกับพารามิเตอร์ต่างๆที่มีอยู่ความสามารถในการสร้างสมมติฐานที่สมจริงและเวลาและความทุ่มเทในการพัฒนาระบบ อย่างไรก็ตามหากมีการพัฒนาและใช้งานอย่างถูกต้องระบบการซื้อขายจะให้ผลประโยชน์มาก สามารถเพิ่มประสิทธิภาพการทำงานฟรีเวลาและที่สำคัญที่สุดคือเพิ่มผลกำไรของคุณ ระบบการซื้อขาย: การออกแบบระบบของคุณ - ส่วนที่ 1 ระบบการจัดซื้อ: การออกแบบระบบของคุณ - ตอนที่ 1 13 ส่วนก่อนหน้าของบทแนะนำนี้ดูองค์ประกอบที่ประกอบขึ้นเป็นระบบการซื้อขายและกล่าวถึงข้อดีและข้อเสียของการใช้ระบบดังกล่าวในสภาพแวดล้อมการซื้อขายแบบสด . ในส่วนนี้เราจะสร้างความรู้ดังกล่าวขึ้นโดยการตรวจสอบว่าตลาดใดเหมาะกับการซื้อขายระบบมากที่สุด จากนั้นเราจะดูลึกซึ้งในรูปแบบต่างๆของระบบการซื้อขาย การซื้อขายในตลาดที่แตกต่างกันตลาดตราสารทุนตลาดตราสารทุนน่าจะเป็นตลาดที่มีการค้าขายโดยทั่วไปโดยเฉพาะอย่างยิ่งในกลุ่มสามเณร ในเวทีนี้ผู้เล่นรายใหญ่เช่น Warren Buffett และ Merrill Lynch ครองและค่านิยมแบบดั้งเดิมและกลยุทธ์การลงทุนที่เพิ่มมากขึ้นเป็นที่นิยมมากที่สุด อย่างไรก็ตามหลายสถาบันได้ลงทุนอย่างมากในการออกแบบพัฒนาและดำเนินการระบบการซื้อขาย นักลงทุนรายย่อยเข้าร่วมแนวโน้มนี้แม้ว่าจะช้าๆก็ตาม ต่อไปนี้เป็นปัจจัยสำคัญที่ต้องจดจำเมื่อใช้ระบบการซื้อขายในตลาดตราสารทุน: จำนวนหุ้นที่มีอยู่จำนวนมากช่วยให้นักลงทุนสามารถทดสอบระบบในรูปแบบต่างๆของหุ้น - ทุกอย่างจากหุ้นที่ไม่ต้องสั่งซื้อ (OTC) ผันผวนอย่างมาก ชิปสีน้ำเงินที่ไม่ระเหย ประสิทธิผลของระบบการซื้อขายอาจถูก จำกัด ด้วยสภาพคล่องของหุ้นบางส่วนที่มีสภาพคล่องต่ำโดยเฉพาะประเด็นเรื่อง OTC และ Pink Sheet ค่าคอมมิชชั่นสามารถกินเข้าไปในผลกำไรที่เกิดจากการค้าที่ประสบความสำเร็จและสามารถเพิ่มความสูญเสียได้ หุ้นของ OTC และ Pink Sheet มักมีค่าธรรมเนียมเพิ่มเติม ระบบการซื้อขายหลักที่ใช้คือระบบการซื้อขายหลักซึ่งหมายถึงระบบที่ใช้พารามิเตอร์ที่แตกต่างกันเพื่อพิจารณาว่าการรักษาความปลอดภัยถูกประเมินต่ำกว่าผลการดำเนินงานที่ผ่านมาเพื่อนหรือตลาดโดยทั่วไปหรือไม่ ตลาดแลกเปลี่ยนเงินตราต่างประเทศหรืออัตราแลกเปลี่ยน เป็นตลาดที่ใหญ่ที่สุดและมีสภาพคล่องมากที่สุดในโลก รัฐบาลโลกธนาคารและสถาบันการเงินขนาดใหญ่อื่น ๆ ทำการค้าเงินหลายล้านล้านดอลลาร์ในตลาดอัตราแลกเปลี่ยนทุกวัน ผู้ค้าสถาบันส่วนใหญ่ในระบบอัตราแลกเปลี่ยนพึ่งพาระบบการซื้อขาย เดียวกันจะไปสำหรับบุคคลในอัตราแลกเปลี่ยน แต่การค้าบางส่วนขึ้นอยู่กับรายงานทางเศรษฐกิจหรือการจ่ายดอกเบี้ยที่นี่มีบางปัจจัยสำคัญที่ต้องจำไว้เมื่อใช้ระบบการซื้อขายในตลาดอัตราแลกเปลี่ยน: สภาพคล่องในตลาดนี้ - เนื่องจากปริมาณมาก - ทำให้ระบบการซื้อขายมีความถูกต้องและมีประสิทธิภาพมากขึ้น ไม่มีค่าคอมมิชชั่นในตลาดนี้ ดังนั้นง่ายมากที่จะทำธุรกรรมจำนวนมากโดยไม่ต้องเพิ่มค่าใช้จ่าย เมื่อเทียบกับจำนวนหุ้นหรือสินค้าที่มีอยู่จำนวนสกุลเงินที่ใช้ในการซื้อขายมีจำนวน จำกัด แต่เนื่องจากความพร้อมของคู่สกุลเงินที่แปลกใหม่นั่นคือสกุลเงินจากประเทศเล็ก ๆ ช่วงของความผันผวนไม่จำเป็นต้อง จำกัด ระบบการซื้อขายหลักที่ใช้ในการแลกเปลี่ยนเงินตราต่างประเทศคือแนวโน้มที่เป็นไปตามแนวโน้ม (คำนิยมในตลาดคือแนวโน้มของเพื่อนของคุณ) หรือระบบที่ซื้อหรือขายบน breakouts เนื่องจากตัวชี้วัดทางเศรษฐกิจมักก่อให้เกิดการเคลื่อนไหวของราคาขนาดใหญ่ในครั้งเดียว ตลาดตราสารทุนตลาดตราสารอนุพันธ์ตลาดซื้อขายสัญญาซื้อขายล่วงหน้าและสินค้าโภคภัณฑ์มีการซื้อขายสัญญาซื้อขายล่วงหน้า นี่เป็นยานพาหนะยอดนิยมสำหรับการซื้อขายระบบเนื่องจากปริมาณการใช้ประโยชน์ที่มากขึ้นและสภาพคล่องและความผันผวนเพิ่มขึ้น อย่างไรก็ตามปัจจัยเหล่านี้สามารถลดทั้งสองวิธี: พวกเขาสามารถขยายผลกำไรของคุณหรือขยายการสูญเสียของคุณ ด้วยเหตุนี้การใช้ฟิวเจอร์สมักสงวนไว้สำหรับผู้ค้ารายย่อยและระบบสถาบันขั้นสูง เนื่องจากระบบการซื้อขายที่มีความสามารถในการใช้ประโยชน์จากตลาดฟิวเจอร์สจำเป็นต้องมีการปรับแต่งมากขึ้นให้ใช้ตัวชี้วัดขั้นสูงและใช้เวลานานกว่าในการพัฒนา ดังนั้นที่ดีที่สุดคือถึงนักลงทุนรายย่อยในการตัดสินใจว่าตลาดใดเหมาะที่สุดสำหรับการซื้อขายระบบแต่ละข้อมีข้อดีและข้อเสียของตัวเอง คนส่วนใหญ่คุ้นเคยกับตลาดตราสารทุนมากขึ้นและความคุ้นเคยนี้ทำให้การพัฒนาระบบการซื้อขายง่ายขึ้น อย่างไรก็ตามเทรดมักถูกคิดว่าเป็นแพลตฟอร์มที่เหนือกว่าในการใช้ระบบการซื้อขายโดยเฉพาะอย่างยิ่งในหมู่ผู้ค้าที่มีประสบการณ์มากขึ้น นอกจากนี้หากนักลงทุนตัดสินใจที่จะใช้ประโยชน์จากความได้เปรียบในการลงทุนและความผันผวนมากขึ้นทางเลือกฟิวเจอร์สจะเปิดเสมอ ท้ายที่สุดทางเลือกที่อยู่ในมือของผู้พัฒนาระบบประเภทของระบบเทรดดิ้ง Trend-Following Systems วิธีที่พบมากที่สุดในการซื้อขายระบบคือระบบแนวโน้มที่ตามมา ในรูปแบบพื้นฐานที่สุดระบบนี้ก็รอการเคลื่อนไหวของราคาที่สำคัญจากนั้นจะซื้อหรือขายในทิศทางนั้น ประเภทของธนาคารระบบนี้กับหวังว่าการเคลื่อนไหวของราคาเหล่านี้จะรักษาแนวโน้ม Moving Average Systems ใช้บ่อยในการวิเคราะห์ทางเทคนิค ค่าเฉลี่ยเคลื่อนที่เป็นตัวบ่งชี้ที่แสดงราคาเฉลี่ยของหุ้นในช่วงระยะเวลาหนึ่ง สาระสำคัญของแนวโน้มจะได้มาจากการวัดนี้ วิธีที่ใช้ทั่วไปในการกำหนดการเข้าและทางออกคือการครอสโอเวอร์ ตรรกะที่อยู่เบื้องหลังนี้เป็นเรื่องง่าย: มีการสร้างเทรนด์ใหม่เมื่อราคาตกหรือต่ำกว่าค่าเฉลี่ยของราคาในอดีต (แนวโน้ม) นี่คือแผนภูมิที่ใช้สำหรับการคำนวณทั้งราคา (เส้นสีน้ำเงิน) และเส้นสีแดง (MA) ระยะเวลา 20 วันของ IBM: Breakout Systems แนวคิดพื้นฐานที่อยู่เบื้องหลังระบบประเภทนี้มีลักษณะคล้ายกับระบบค่าเฉลี่ยเคลื่อนที่ แนวคิดก็คือเมื่อมีการจัดตั้งฐานสูงหรือต่ำใหม่ขึ้นการเคลื่อนไหวของราคาน่าจะยังคงดำเนินต่อไปในทิศทางของการฝ่าวงล้อม ตัวบ่งชี้หนึ่งที่สามารถใช้ในการกำหนด breakouts คือการวางซ้อนแบบ Bollinger Band แบบง่ายๆ Bollinger Bands แสดงค่าเฉลี่ยของราคาที่สูงและราคาต่ำและการเกิดสิวเกิดขึ้นเมื่อราคาตรงกับขอบของแถบ นี่คือแผนภูมิที่ใช้คำนวณราคา (เส้นสีน้ำเงิน) และเส้น Bollinger Bands (เส้นสีเทา) ของ Microsoft: ข้อเสียของระบบ Trend-Following: ต้องมีการตัดสินใจเชิงประจักษ์ - เมื่อพิจารณาแนวโน้มจะมีองค์ประกอบเชิงประจักษ์อยู่เสมอ: ระยะเวลา แนวโน้มทางประวัติศาสตร์ ตัวอย่างเช่นค่าเฉลี่ยเคลื่อนที่อาจเป็นเวลา 20 วันที่ผ่านมาหรือในช่วงห้าปีที่ผ่านมาดังนั้นนักพัฒนาซอฟต์แวร์ต้องเป็นผู้กำหนดว่าระบบจะดีที่สุดสำหรับระบบ ปัจจัยอื่น ๆ ที่จะพิจารณาคือค่าเฉลี่ยเสียงสูงและต่ำสุดในระบบ breakout Lagging Nature - ค่าเฉลี่ยเคลื่อนที่และระบบ breakout จะล้าหลังเสมอ กล่าวอีกนัยหนึ่งก็คือพวกเขาไม่สามารถตีด้านบนหรือด้านล่างของแนวโน้มได้อย่างแน่นอน นี้ย่อมส่งผลให้ริบของกำไรที่อาจเกิดขึ้นซึ่งบางครั้งอาจเป็นสำคัญ ผลกระทบ Whipsaw - ในหมู่แรงตลาดที่เป็นอันตรายต่อความสำเร็จของระบบแนวโน้มต่อไปนี้เป็นหนึ่งในที่พบมากที่สุด ผลกระทบ whipsaw เกิดขึ้นเมื่อค่าเฉลี่ยเคลื่อนที่สร้างสัญญาณเท็จ - นั่นคือเมื่อค่าเฉลี่ยลดลงเพียงในช่วงจากนั้นก็กลับทิศทาง นี้อาจทำให้เกิดการสูญเสียมากเว้นแต่มีประสิทธิภาพหยุดขาดทุนและเทคนิคการบริหารความเสี่ยงที่ใช้ ตลาดด้านข้าง - ระบบติดตามแนวโน้มโดยธรรมชาติสามารถทำเงินได้เฉพาะในตลาดที่ทำตามแนวโน้ม อย่างไรก็ตามตลาดยังเคลื่อนไหวไปด้านข้าง อยู่ในช่วงที่กำหนดเป็นระยะเวลานาน ความผันผวนที่รุนแรงอาจเกิดขึ้น - บางครั้งระบบแนวโน้มตามอาจมีความผันผวนมาก แต่ผู้ประกอบการต้องยึดติดกับระบบของตน การไม่สามารถทำเช่นนั้นจะส่งผลให้เกิดความล้มเหลวที่มั่นใจได้ Countertrend Systems โดยทั่วไปเป้าหมายของระบบ countertrend คือการซื้อที่ต่ำสุดต่ำสุดและขายได้ที่ระดับสูงสุด ข้อแตกต่างหลักระหว่างระบบนี้และระบบแนวโน้มคือระบบเคาน์เตอร์แทร็กไม่สามารถแก้ไขตัวเองได้ กล่าวอีกนัยหนึ่งไม่มีเวลาที่จะออกจากตำแหน่งและส่งผลให้เกิดข้อเสียที่ไม่ จำกัด ชนิดของระบบการนับถอยหลังระบบต่างๆหลายประเภทถือเป็นระบบการนับถอยหลัง ความคิดที่นี่คือการซื้อเมื่อโมเมนตัมในทิศทางเดียวเริ่มซีดจาง นี่คือการคำนวณโดยส่วนใหญ่ใช้ oscillators ตัวอย่างเช่นสัญญาณสามารถสร้างขึ้นเมื่อ stochastics หรือตัวบ่งชี้ความแข็งแกร่งอื่น ๆ ตกอยู่ภายใต้จุดบางอย่าง มีระบบการซื้อขายแบบ countertrend ประเภทอื่น ๆ แต่ทุกคนมีเป้าหมายพื้นฐานเดียวกัน - ซื้อต่ำและขายสูง ข้อเสียของ Countertrend ต่อไปนี้ระบบ: จำเป็นต้องมีการตัดสินใจในการตัดสินใจ - ตัวอย่างเช่นปัจจัยหนึ่งที่นักพัฒนาระบบต้องตัดสินใจคือจุดที่ตัวบ่งชี้ความเข้มของสัมพัทธ์จางหายไป อาจเกิดความผันผวนได้มาก - ระบบเหล่านี้อาจมีความผันผวนมากและไม่สามารถติดตั้งระบบได้แม้ว่าจะมีความผันผวนนี้จะส่งผลให้เกิดความล้มเหลวได้อย่างมั่นใจ Unside Downside - ตามที่กล่าวมาแล้วมีข้อเสียที่ไม่ จำกัด เนื่องจากระบบไม่สามารถแก้ไขตัวเองได้ (ไม่มีเวลาที่จะออกจากตำแหน่ง) ข้อสรุปตลาดหลักที่ระบบการซื้อขายมีความเหมาะสมคือตลาดตราสารทุนตลาดอนุพันธ์และตลาดฟิวเจอร์ส แต่ละตลาดมีข้อดีและข้อเสีย ระบบการซื้อขายหลักสองประเภทคือระบบเทรนด์และระบบ countertrend แม้จะมีความแตกต่างทั้งสองประเภทของระบบในขั้นตอนการพัฒนาของพวกเขาต้องมีการตัดสินใจเชิงประจักษ์ในส่วนของนักพัฒนา นอกจากนี้ระบบเหล่านี้อาจมีความผันผวนมากและอาจต้องการความแข็งแกร่งบางอย่าง - ผู้ค้าระบบต้องยึดติดกับระบบของตนเองในช่วงเวลาดังกล่าว ในงวดต่อไปนี้ให้ดูที่วิธีการออกแบบระบบการซื้อขายและพูดคุยเกี่ยวกับซอฟต์แวร์บางอย่างที่ผู้ค้าระบบใช้เพื่อทำให้ชีวิตของพวกเขาง่ายขึ้น ระบบการซื้อขาย: การออกแบบระบบของคุณ - ส่วนที่ 2 รูปแบบการตรวจสอบ 187 รูปแบบการบูรณาการในทางปฏิบัติ 187 กรณีศึกษา: ระบบการซื้อขายตราสารหนี้ (Jonathan Simon) การแยกตัวของรูปแบบหรือภาษาแบบแผนเป็นเรื่องง่าย รูปแบบคือสิ่งที่เป็นนามธรรมของแนวคิดในรูปแบบที่นำมาใช้ซ้ำได้ บ่อยครั้งที่ลักษณะโดยทั่วไปของรูปแบบที่ทำให้พวกเขามีประโยชน์เช่นนั้นทำให้พวกเขาเข้าใจยาก บางครั้งสิ่งที่ดีที่สุดในการช่วยให้เข้าใจรูปแบบเป็นตัวอย่างของโลกแห่งความเป็นจริง ไม่ใช่สถานการณ์ที่บังเอิญในสิ่งที่อาจเกิดขึ้น แต่สิ่งที่เกิดขึ้นจริงและสิ่งที่จะเกิดขึ้น บทนี้ใช้รูปแบบในการแก้ปัญหาโดยใช้กระบวนการค้นพบ ระบบที่เราจะกล่าวถึงคือระบบการซื้อขายพันธบัตรที่ฉันทำงานด้วยเป็นเวลาสองปีนับตั้งแต่การออกแบบเริ่มต้นจนถึงการผลิต เราจะสำรวจสถานการณ์และปัญหาที่พบและวิธีแก้ปัญหาด้วยรูปแบบ นี้เกี่ยวข้องกับกระบวนการตัดสินใจในการเลือกรูปแบบรวมทั้งวิธีการรวมและปรับรูปแบบเพื่อให้เหมาะกับความต้องการของระบบ และนี่คือทั้งหมดที่เกิดขึ้นโดยคำนึงถึงแรงที่พบในระบบจริงเช่นความต้องการทางธุรกิจการตัดสินใจของลูกค้าความต้องการทางสถาปัตยกรรมและทางเทคนิคตลอดจนการรวมระบบเดิม เจตนาของวิธีนี้คือการให้ความเข้าใจที่ชัดเจนของรูปแบบตัวเองผ่านการประยุกต์ใช้ในทางปฏิบัติ การสร้างระบบธนาคารเพื่อการลงทุนของวอลล์สตรีตรายใหญ่ตั้งเป้าหมายที่จะสร้างระบบการกำหนดราคาพันธบัตรด้วยความพยายามที่จะปรับปรุงกระบวนการทำงานของโต๊ะซื้อขายตราสารหนี้ ขณะนี้ผู้ค้าตราสารหนี้ต้องส่งราคาสำหรับพันธบัตรจำนวนมากไปยังสถานที่ซื้อขายหลายแห่งโดยแต่ละแห่งมีส่วนติดต่อผู้ใช้ของตนเอง เป้าหมายของระบบคือการลดรายละเอียดของการกำหนดราคาพันธบัตรทั้งหมดของพวกเขารวมกับฟังก์ชันการวิเคราะห์ขั้นสูงเฉพาะสำหรับตลาดตราสารหนี้ในอินเทอร์เฟซผู้ใช้แบบห่อหุ้ม ซึ่งหมายถึงการรวมและการสื่อสารกับส่วนประกอบต่างๆผ่านโปรโตคอลการสื่อสารต่างๆ การไหลระดับสูงของระบบมีลักษณะดังนี้: ขั้นแรกข้อมูลตลาดจะเข้าสู่ระบบ ข้อมูลการตลาดเป็นข้อมูลเกี่ยวกับราคาและคุณสมบัติอื่น ๆ ของพันธบัตรที่แสดงถึงสิ่งที่ผู้คนเต็มใจที่จะซื้อและขายพันธบัตรในตลาดเสรี ข้อมูลตลาดจะถูกส่งไปยังเครื่องมือวิเคราะห์ข้อมูลที่เปลี่ยนแปลงข้อมูลทันที Analytics หมายถึงฟังก์ชันทางคณิตศาสตร์สำหรับแอ็พพลิเคชันทางการเงินที่เปลี่ยนแปลงราคาและคุณลักษณะอื่น ๆ ของพันธบัตร เหล่านี้เป็นฟังก์ชันทั่วไปที่ใช้ตัวแปรอินพุตเพื่อปรับแต่งผลลัพธ์ของฟังก์ชันให้เป็นพันธะเฉพาะ แอ็พพลิเคชันไคลเอ็นต์ที่จะทำงานบนเดสก์ท็อปของผู้ค้าแต่ละรายจะกำหนดค่าเครื่องมือวิเคราะห์บนพื้นฐานของผู้ค้าแต่ละรายโดยควบคุมเฉพาะการวิเคราะห์สำหรับแต่ละพันธบัตรที่พ่อค้ากำหนดไว้ เมื่อการวิเคราะห์ถูกนำไปใช้กับข้อมูลการตลาดแล้วข้อมูลที่แก้ไขจะถูกส่งไปยังสถานการค้าต่างๆที่ผู้ค้าจาก บริษัท อื่นสามารถซื้อหรือขายพันธบัตรได้ สถาปัตยกรรมกับรูปแบบด้วยภาพรวมของกระบวนการทำงานของระบบนี้เราสามารถหาแนวทางทางสถาปัตยกรรมที่เราพบในระหว่างขั้นตอนการออกแบบ ลองดูสิ่งที่เรารู้จนถึงปัจจุบัน ผู้ค้าต้องมีแอพพลิเคชั่นที่ตอบสนองได้ดีทั้งบนเวิร์คสเตชั่นของ Windows NT และ Solaris ดังนั้นเราจึงตัดสินใจที่จะใช้แอ็พพลิเคชันไคลเอ็นต์เป็นไคลเอนต์หนาของ Java เนื่องจากความเป็นอิสระของแพลตฟอร์มและความสามารถในการตอบสนองต่อข้อมูลผู้ใช้และข้อมูลตลาดได้อย่างรวดเร็ว ด้านเซิร์ฟเวอร์เราสืบทอดองค์ประกอบ C แบบเดิมที่ระบบของเราจะใช้ คอมโพเนนต์ข้อมูลการตลาดสื่อสารกับโครงสร้างการรับส่งข้อความ TIBCO Information Bus (TIB) เรารับช่วงต่อไปนี้: Market Data Feed Server เผยแพร่ข้อมูลตลาดขาเข้าให้กับ TIB เครื่องมือ Analytics ดำเนินการวิเคราะห์ข้อมูลตลาดที่เข้ามาและออกอากาศข้อมูลตลาดที่แก้ไขไปยัง TIB Contribution Server ดำเนินการสื่อสารกับสถานที่ซื้อขายทั้งหมด สถานที่จัดจำหน่ายเป็นส่วนประกอบของบุคคลที่สามที่ไม่ได้รับการควบคุมโดยธนาคาร Legacy Market Data Subsystem Subsystem ระบบย่อยระบบเดิมเราต้องตัดสินใจว่าระบบย่อยที่แยกจากกัน (ไคลเอ็นต์หนาข้อมูลตลาด Java และข้อมูลสนับสนุน) จะสื่อสารกันอย่างไร เราอาจมีลูกค้าหนาสื่อสารโดยตรงกับเซิร์ฟเวอร์เดิม แต่ที่จะต้องตรรกะทางธุรกิจมากเกินไปในลูกค้า แทนที่จะสร้างคู่ของเกตเวย์ Java เพื่อสื่อสารกับเซิร์ฟเวอร์รุ่นเก่าเกตเวย์กำหนดราคาสำหรับข้อมูลตลาดเกตเวย์การมีส่วนร่วมสำหรับการส่งราคาไปยังสถานที่จัดจำหน่าย นี้จะบรรลุ encapsulation ดีของตรรกะทางธุรกิจที่เกี่ยวข้องกับพื้นที่เหล่านี้ คอมโพเนนต์ปัจจุบันในระบบแสดงด้านล่าง การเชื่อมต่อถูกทำเครื่องหมายว่า บ่งชี้ว่าเรายังไม่แน่ใจว่าคอมโพเนนต์บางส่วนจะสื่อสารกันอย่างไร ระบบและส่วนประกอบการสื่อสารคำถามแรกคือการผสานรวมไคลเอ็นต์ Java หนาและคอมโพเนนต์เซิร์ฟเวอร์ Java สองรายการเพื่อแลกเปลี่ยนข้อมูล ให้ดูที่สี่รูปแบบการรวมที่แนะนำในหนังสือเล่มนี้: File Transfer ฐานข้อมูลที่ใช้ร่วมกัน การเชิญชวนกระบวนการระยะไกล และการรับส่งข้อความ เราสามารถออกกฎ Shared Database ได้ทันทีเพราะเราต้องการสร้าง layer abstraction ระหว่าง client กับฐานข้อมูลและ dont ต้องการมีรหัสการเข้าถึงฐานข้อมูลใน client การถ่ายโอนไฟล์สามารถถูกตัดออกได้ในทำนองเดียวกันเนื่องจากต้องมีเวลาแฝงเล็กน้อยเพื่อให้แน่ใจว่าราคาปัจจุบันจะถูกส่งออกไปยังสถานที่ซื้อขาย ซึ่งทำให้เราสามารถเลือกระหว่างการเรียกกระบวนการทางไกลหรือการรับส่งข้อความ แพลตฟอร์ม Java มีการสนับสนุนทั้ง Remote Procedure Invocation และ Messaging การรวมแบบ RPC ทำได้โดยใช้ Remote Method Invocation (RMI), CORBA หรือ Enterprise Java Beans (EJB) Java Messaging Service (JMS) เป็น API ทั่วไปสำหรับการรวมระบบข้อความ ดังนั้นรูปแบบการรวมระบบทั้งสองจึงใช้งานง่ายใน Java ดังนั้นซึ่งจะทำงานได้ดีขึ้นสำหรับโครงการนี้การเรียกกระบวนการทางไกลหรือการรับส่งข้อความ มีเพียงหนึ่งอินสแตนซ์ของเกตเวย์กำหนดราคาและอินสแตนซ์หนึ่งของเกตเวย์การสมทบในระบบ แต่โดยปกติลูกค้าหนามากจะเชื่อมต่อกับบริการเหล่านี้ (หนึ่งสำหรับผู้ค้าตราสารหนี้แต่ละรายที่เข้าสู่ระบบในเวลาใดเวลาหนึ่ง) นอกจากนี้ธนาคารต้องการให้เป็นระบบการกำหนดราคาโดยทั่วไปซึ่งสามารถนำมาใช้ประโยชน์ในการใช้งานอื่น ๆ ได้ ดังนั้นนอกเหนือจาก Think Clients ที่ไม่รู้จักอาจมีแอปพลิเคชันอื่น ๆ ที่ไม่รู้จักจำนวนมากโดยใช้ข้อมูลราคาที่ออกมาจากเกตเวย์ ไคลเอ็นต์แบบหนา (หรือแอ็พพลิเคชันอื่นที่ใช้ข้อมูลราคา) สามารถใช้ RPC ได้อย่างง่ายดายพอสมควรเพื่อโทรไปที่เกตเวย์เพื่อรับข้อมูลราคาและเรียกใช้การประมวลผล อย่างไรก็ตามข้อมูลราคาจะถูกเผยแพร่ตลอดเวลาและลูกค้าบางรายสนใจเฉพาะข้อมูลบางอย่างเท่านั้นดังนั้นการรับข้อมูลที่เกี่ยวข้องกับลูกค้าที่เหมาะสมในเวลาที่เหมาะสมอาจเป็นเรื่องยาก ลูกค้าสามารถสำรวจเกตเวย์ แต่จะสร้างค่าใช้จ่ายจำนวนมาก มันจะดีกว่าสำหรับเกตเวย์ที่จะทำให้ข้อมูลที่มีให้กับลูกค้าโดยเร็วที่สุดเท่าที่จะสามารถใช้ได้ (ซึ่งจะเกิดขึ้นหลายครั้งต่อวินาที), เกตเวย์จะต้องทำให้ RPC ให้กับลูกค้าที่สนใจแต่ละรายเพื่อส่งข้อมูลไปยังลูกค้า ลูกค้าทุกคนควรได้รับการแจ้งเตือนพร้อม ๆ กันดังนั้นแต่ละ RPC จะต้องทำในหัวข้อพร้อม ๆ กัน นี้สามารถทำงานได้ แต่มีความซับซ้อนมากอย่างรวดเร็ว ข้อความช่วยลดปัญหานี้ได้ง่ายขึ้น ด้วยการรับส่งข้อความ เราสามารถกำหนดช่องทางแยกสำหรับข้อมูลการกำหนดราคาประเภทต่างๆได้ จากนั้นเมื่อเกตเวย์ได้รับข้อมูลใหม่ข้อมูลจะเพิ่มข้อความที่มีข้อมูลดังกล่าวลงในช่องเผยแพร่ - สมัครสมาชิกสำหรับประเภทข้อมูลนั้น ในขณะเดียวกันลูกค้าทั้งหมดที่สนใจในข้อมูลบางประเภทจะรับฟังช่องทางสำหรับประเภทนั้น ด้วยวิธีนี้เกตเวย์สามารถส่งข้อมูลใหม่ ๆ ไปให้คนที่สนใจได้โดยไม่จำเป็นต้องทราบว่ามีแอพพลิเคชันฟังมากหรือไม่ ลูกค้ายังคงต้องสามารถเรียกใช้พฤติกรรมในเกตเวย์ได้เช่นกัน เนื่องจากมีเพียงสองเกตเวย์เท่านั้นและไคลเอ็นต์อาจจะปิดกั้นในขณะที่เมธอดนี้ถูกเรียกใช้แบบซิงโครนัสการติดต่อแบบไคลเอ็นต์กับเกตเวย์เหล่านี้สามารถทำได้โดยง่ายโดยใช้ RPC อย่างไรก็ตามเนื่องจากเราใช้การรับส่งข้อความสำหรับการสื่อสารระหว่างเกตเวย์กับไคลเอ็นต์แล้วข้อความน่าจะเป็นวิธีที่ดีในการใช้การสื่อสารแบบไคลเอ็นต์กับเกตเวย์ด้วยเช่นกัน ดังนั้นการติดต่อสื่อสารระหว่างเกตเวย์กับลูกค้าจะทำได้โดยการส่งข้อความ เนื่องจากคอมโพเนนต์ทั้งหมดถูกเขียนขึ้นใน Java JMS จึงเป็นทางเลือกที่ง่ายสำหรับการใช้เป็นระบบส่งข้อความ นี่เป็นการสร้าง Message Bus หรือสถาปัตยกรรมที่จะช่วยให้ระบบในอนาคตสามารถทำงานร่วมกับระบบในปัจจุบันได้โดยไม่ต้องมีการเปลี่ยนแปลงโครงสร้างการรับส่งข้อความเพียงเล็กน้อยหรือไม่มีเลย ด้วยวิธีนี้ฟังก์ชันทางธุรกิจของแอปพลิเคชันสามารถใช้งานได้ง่ายโดยโปรแกรมอื่น ๆ ที่ธนาคารพัฒนา คอมโพเนนต์ Java การสื่อสารกับ JMS JMS เป็นเพียงข้อกำหนดและเราจำเป็นต้องตัดสินใจเกี่ยวกับระบบการรับส่งข้อความที่สอดคล้องกับ JMS เราตัดสินใจที่จะใช้ IBM MQSeries JMS เนื่องจากธนาคารเป็นร้านค้าของ IBM โดยใช้เซิร์ฟเวอร์แอ็พพลิเคชัน WebSphere และผลิตภัณฑ์อื่น ๆ ของ IBM ด้วยเหตุนี้เราจึงจะใช้ MQSeries เนื่องจากเรามีโครงสร้างพื้นฐานการสนับสนุนอยู่ในสถานที่และได้รับใบอนุญาตของไซต์แล้ว คำถามต่อไปคือวิธีเชื่อมต่อระบบการรับส่งข้อความ MQSeries กับเซิร์ฟเวอร์ C Contribution แบบสแตนด์อโลนและข้อมูลตลาดของ TIBCO และเซิร์ฟเวอร์ Analytics Engine เราต้องการทางให้ผู้บริโภค MQSeries สามารถเข้าถึงข้อความ TIB ได้ แต่บางทีเราอาจใช้รูปแบบข้อความนักแปลเพื่อแปลข้อความ TIB เป็นข้อความ MQSeries แม้ว่าไคลเอนต์ C สำหรับ MQSeries ทำหน้าที่เป็นตัวแปลข้อความ ใช้มันจะเสียสละความเป็นอิสระเซิร์ฟเวอร์ JMS และแม้ว่า TIBCO จะมี Java API แต่สถาปนิกลูกค้าและผู้จัดการได้ปฏิเสธมัน ด้วยเหตุนี้วิธีการแปลข้อความจะต้องถูกยกเลิก สะพานจากเซิร์ฟเวอร์ TIB ไปยังเซิร์ฟเวอร์ MQSeries ต้องมีการสื่อสารระหว่าง C และ Java เราสามารถใช้ CORBA แต่แล้วสิ่งที่เกี่ยวกับการรับส่งข้อความรูปลักษณ์ของนักแปลข้อความจะดูว่าเกี่ยวข้องกับ Channel Adaptor ในการใช้โปรโตคอลการสื่อสาร หัวใจของอะแดปเตอร์ช่องคือการเชื่อมต่อระบบที่ไม่ใช่ข้อความเข้ากับระบบการรับส่งข้อความ คู่ของอะแดปเตอร์ช่องที่เชื่อมต่อระบบส่งข้อความสองระบบคือ Messaging Bridge วัตถุประสงค์ของสะพาน Messaging คือการถ่ายโอนข้อความจากระบบข้อความหนึ่งไปยังอีกระบบหนึ่ง นี่คือสิ่งที่เรากำลังทำอยู่กับความซับซ้อนที่เพิ่มขึ้นของการสื่อสารภายในภาษา Java เพื่อ C เราสามารถใช้สะพานข้อความข้ามภาษาโดยใช้ชุดตัวแปลงช่องสัญญาณและ CORBA เราจะสร้างสองเซิร์ฟเวอร์อะแดปเตอร์ช่องสัญญาณที่มีน้ำหนักเบาหนึ่งใน C จัดการการสื่อสารกับ TIB และหนึ่งใน Java การสื่อสารการจัดการกับ JMS อะแดปเตอร์ช่องสัญญาณสองช่องทางนี้ ซึ่งเป็นปลายทางของ Message End จะสื่อสารกันผ่านทาง CORBA เช่นเดียวกับทางเลือกของ MQSeries เราจะใช้ CORBA แทน JNI เนื่องจากเป็นมาตรฐานของ บริษัท สะพานการรับส่งข้อความใช้การแปลข้อความจำลองระหว่างระบบส่งข้อความที่ไม่สามารถเข้ากันได้และภาษาอื่นได้อย่างมีประสิทธิภาพ นักแปลข้อความใช้ Channel Adapters แผนภาพต่อไปจะแสดงการออกแบบระบบในปัจจุบันรวมถึงเกตเวย์และส่วนประกอบอื่น ๆ นี่คือตัวอย่างที่ดีของการประยุกต์ใช้รูปแบบ เราได้รวมช่องสองช่องเข้ากับโปรโตคอลที่ไม่ใช่ข้อความเพื่อใช้รูปแบบข้อความนักแปลซึ่งมีประสิทธิภาพในการใช้รูปแบบอื่นเพื่อใช้รูปแบบอื่น นอกจากนี้เราเปลี่ยนบริบทของช่อง Adaptor เพื่อเชื่อมโยงระบบข้อความสองระบบเข้ากับโปรโตคอลการแปลข้ามภาษาที่ไม่ใช่ข้อความแทนที่จะเชื่อมต่อระบบการรับส่งข้อความไปยังระบบที่ไม่ใช่ข้อความ ระบบปัจจุบันที่มี Channel Adapters Adapters Channels กุญแจสำคัญในการทำงานร่วมกับรูปแบบคือไม่เพียง แต่รู้ว่าควรใช้รูปแบบใด แต่ควรใช้อย่างไร การใช้รูปแบบแต่ละรูปแบบจะต้องคำนึงถึงลักษณะเฉพาะของแพลตฟอร์มเทคโนโลยีตลอดจนเกณฑ์การออกแบบอื่น ๆ ส่วนนี้ใช้กระบวนการค้นพบเดียวกันเพื่อหาช่องทางเผยแพร่ - สมัครสมาชิกที่มีประสิทธิภาพมากที่สุดในบริบทของเซิร์ฟเวอร์ข้อมูลตลาดที่สื่อสารกับเครื่องมือการวิเคราะห์ ข้อมูลตลาดเรียลไทม์มาจากฟีดข้อมูลตลาดซึ่งเป็นเซิร์ฟเวอร์ C ที่เผยแพร่ข้อมูลตลาดใน TIB ฟีดข้อมูลตลาดใช้ช่องทางเผยแพร่ - สมัครสมาชิกแยกต่างหากสำหรับแต่ละพันธบัตรเป็นราคาเผยแพร่สำหรับ ซึ่งอาจดูเหมือนเล็กน้อยเนื่องจากพันธบัตรใหม่แต่ละแห่งต้องการช่องทางใหม่ของตัวเอง แต่นี่ไม่ใช่เรื่องรุนแรงมากนักเนื่องจากคุณไม่จำเป็นต้องสร้างช่องใน TIBCO แต่มีการอ้างอิงถึงช่องโดยชุดชื่อลำดับชั้นที่เรียกว่าอาสาสมัคร เซิร์ฟเวอร์ TIBCO จะกรองการรับส่งข้อความแบบเดี่ยวตามหัวข้อส่งแต่ละหัวข้อที่ไม่ซ้ำกันไปยังช่องทางเสมือนเดียว ผลที่ได้คือช่องข้อความที่มีน้ำหนักเบามาก เราสามารถสร้างระบบที่เผยแพร่ในสองสามช่องทางและสมาชิกสามารถฟังเฉพาะราคาที่พวกเขาสนใจเท่านั้นซึ่งจะทำให้สมาชิกต้องใช้ตัวกรองข้อความหรือผู้บริโภคที่เลือกเพื่อกรองการไหลของข้อมูลทั้งหมดเพื่อหาราคาพันธบัตรที่น่าสนใจ ควรได้รับการประมวลผลตามที่ได้รับ เนื่องจากข้อมูลตลาดมีการเผยแพร่บนช่องทางที่ผูกมัดเฉพาะผู้ลงทะเบียนสามารถลงทะเบียนเพื่ออัปเดตชุดพันธบัตรได้ การดำเนินการนี้ช่วยให้สมาชิกสามารถกรองข้อมูลโดยเลือกรับช่องและรับเฉพาะการอัปเดตที่น่าสนใจแทนที่จะตัดสินใจหลังจากที่ได้รับข้อความแล้ว โปรดทราบว่าการใช้แชเนลหลายช่องเพื่อหลีกเลี่ยงการกรองคือการใช้ช่องทางการรับส่งข้อความที่ไม่เป็นไปตามมาตรฐาน อย่างไรก็ตามในบริบทของเทคโนโลยี TIBCO เรากำลังตัดสินใจอย่างแท้จริงว่าจะใช้หรือเป็นเจ้าของตัวกรองหรือใช้ช่องกรองที่มีอยู่ภายใน TIBCO แทนการใช้ช่องจำนวนมากหรือไม่ องค์ประกอบถัดไปที่เราต้องออกแบบคือเครื่องมือการวิเคราะห์เซิร์ฟเวอร์ CTIB เครื่องอื่นที่จะแก้ไขข้อมูลการตลาดและเผยแพร่ใหม่ให้กับ TIB แม้ว่าจะอยู่นอกขอบเขตของการพัฒนา JavaJMS ของเรา แต่เรากำลังทำงานอย่างใกล้ชิดกับทีม C ในการออกแบบเนื่องจากเราเป็นลูกค้าหลักของ Analytics Engine ปัญหาที่เกิดขึ้นคือการหาโครงสร้างช่องที่มีประสิทธิภาพมากที่สุดในการเผยแพร่ข้อมูลตลาดใหม่ที่มีการปรับปรุงใหม่ เนื่องจากเรามีช่องข้อความเฉพาะสำหรับแต่ละพันธบัตรที่สืบทอดมาจากฟีดข้อมูลราคาตลาดจึงเป็นเรื่องที่เป็นไปได้ที่จะแก้ไขข้อมูลตลาดและเผยแพร่ข้อมูลตลาดที่มีการแก้ไขเกี่ยวกับช่องข้อความที่ทุ่มเท แต่การดำเนินการนี้จะไม่สามารถใช้งานได้เนื่องจากการวิเคราะห์ราคาเปลี่ยนแปลงเป็นราคาที่ผู้ค้าเฉพาะเจาะจง ถ้าเราเผยแพร่ข้อมูลใหม่ที่แก้ไขบนช่องข้อความพันธบัตร เราจะทำลายความสมบูรณ์ของข้อมูลโดยการแทนที่ข้อมูลตลาดทั่วไปด้วยข้อมูลเฉพาะของพ่อค้า ในทางกลับกันเราอาจมีประเภทข้อความที่แตกต่างกันสำหรับข้อมูลตลาดเฉพาะเจาะจงของผู้ค้าที่เราเผยแพร่ในช่องทางเดียวกันเพื่อให้สมาชิกสามารถเลือกได้ว่าข้อความใดที่พวกเขาสนใจเพื่อหลีกเลี่ยงการทำลายข้อมูล แต่แล้วลูกค้าจะต้องใช้ตัวกรองของตนเองเพื่อแยกข้อความสำหรับผู้ค้ารายอื่นออก นอกจากนี้จะมีการเพิ่มขึ้นอย่างมากในข้อความที่ได้รับจากสมาชิกโดยวางภาระที่ไม่จำเป็นให้กับพวกเขา มีสองตัวเลือก: One Channel per Trader: ผู้ค้าแต่ละรายมีช่องทางที่กำหนดสำหรับข้อมูลตลาดที่แก้ไข ด้วยวิธีนี้ข้อมูลตลาดเดิมยังคงเหมือนเดิมและผู้ค้าแต่ละรายสามารถฟังช่องข้อความของผู้ค้ารายนั้นได้สำหรับการปรับปรุงราคาที่ปรับเปลี่ยน หนึ่งแชแนลต่อผู้ค้าต่อหนึ่งพันธบัตร: สร้างช่องข้อความหนึ่งข้อความต่อผู้ค้าต่อพันธบัตรเพียงอย่างเดียวสำหรับข้อมูลตลาดที่มีการแก้ไขของพันธบัตรดังกล่าว ตัวอย่างเช่นข้อมูลตลาดสำหรับตราสารหนี้ ABC จะเผยแพร่บนช่อง Bond ABC ในขณะที่ข้อมูลตลาดที่ปรับเปลี่ยนสำหรับผู้ค้า A จะได้รับการเผยแพร่ใน Trader A ของผู้ให้บริการช่องข้อความ ABC Bond แก้ไขข้อมูลตลาดสำหรับผู้ประกอบการรายย่อย B ใน Trader B พันธบัตร ABC และ อื่น ๆ หนึ่งแชแนลต่อผู้ขายหนึ่งแชแนลต่อพันธบัตรแต่ละรายมีข้อดีและข้อเสียของแต่ละวิธี วิธีการต่อพันธบัตรตัวอย่างเช่นใช้ช่องข้อความมากขึ้น ในกรณีที่เลวร้ายที่สุดจำนวนช่องข้อความจะเป็นจำนวนของพันธบัตรทั้งหมดคูณด้วยจำนวนผู้ค้า เราสามารถวางขอบเขตบนจำนวนช่องที่จะสร้างขึ้นเนื่องจากเรารู้ว่ามีเพียงประมาณ 20 ผู้ค้าและพวกเขาไม่เคยราคาสูงกว่าสองร้อยพันธบัตร ซึ่งจะทำให้ขีด จำกัด ด้านบนต่ำกว่าช่วง 10,000 ซึ่งไม่แปลกที่เทียบกับช่องข้อความเกือบ 100,000 ช่องที่ใช้ฟีดข้อมูลราคาตลาด นอกจากนี้เนื่องจากเราใช้ TIB และ Message Channel ค่อนข้างมีราคาไม่แพงจำนวนช่องข้อความไม่ใช่เป็นปัญหาที่รุนแรง ในทางกลับกันจำนวนแชแนลข้อความที่แท้จริงอาจเป็นปัญหาจากมุมมองด้านการจัดการ ทุกครั้งที่มีการเพิ่มพันธบัตรช่องของผู้ค้าแต่ละรายต้องได้รับการปรับปรุง นี้อาจจะรุนแรงในระบบแบบไดนามิกมาก ระบบของเรามีความเป็นไปได้อย่างมาก นอกจากนี้ยังมีโครงสร้างพื้นฐานสำหรับจัดการช่องข้อความโดยอัตโนมัติ นี้รวมกับสถาปัตยกรรมสืบทอดขององค์ประกอบเดิมโดยใช้วิธีการเดียวกันลดข้อเสีย นี่ไม่ได้หมายความว่าเราควรสร้างช่องข้อความ s ที่ไม่จำเป็นจำนวนมาก แต่เราสามารถใช้แนวทางสถาปัตยกรรมที่ใช้ช่องข้อความจำนวนมากเมื่อมีเหตุผล และมีเหตุผลในกรณีนี้ที่ลงมายังที่ตั้งของตรรกะ หากเราใช้วิธีการต่อผู้ค้าแต่ละราย Analytics Engine ต้องการตรรกะเพื่อจัดกลุ่มช่องสัญญาณเข้าและออก ทั้งนี้เนื่องจากช่องทางอินพุตจากเครื่อง Analytics เป็นต่อหนึ่งพันธบัตรและช่องข้อความขาออกจะเป็นต่อผู้ขายโดยกำหนดให้ Analytics Engine กำหนดเส้นทางการป้อนข้อมูลการวิเคราะห์ทั้งหมดจากหลายสตอเรจสำหรับผู้ค้ารายย่อยไปยังช่องข้อความเฉพาะของ Trader เครื่องมือนี้จะเปลี่ยนเครื่องมือการวิเคราะห์ให้กลายเป็น Content-Based Router เพื่อใช้ตรรกะการกำหนดเส้นทางที่กำหนดเองสำหรับแอ็พพลิเคชันของเรา ตามโครงสร้างข้อความบัสเครื่องมือ Analytics เป็นเซิร์ฟเวอร์ทั่วไปที่สามารถใช้โดยระบบอื่น ๆ ในระบบได้ ดังนั้นเราจึงไม่ต้องการทำคลาวด์ด้วยฟังก์ชันการทำงานเฉพาะระบบ ในขณะที่วิธีการต่อพันธบัตรทำงานได้เนื่องจากแนวคิดของผู้ค้าที่เป็นเจ้าของผลการวิเคราะห์ราคาตราสารหนี้เป็นแนวทางที่ บริษัท ยอมรับ วิธีการต่อสตาร์ทจะช่วยให้การแยกช่องทางข้อความของฟีดข้อมูลตลาดเหมือนเดิมในขณะที่เพิ่มช่องข้อความอีกหลายช่อง ก่อนที่เราจะเข้าถึงลูกค้าเราต้องการให้ Content-Based Router รวมช่องหลายช่องเหล่านี้เข้ากับช่องที่สามารถจัดการได้ เราไม่ต้องการให้แอปพลิเคชันไคลเอ็นต์ทำงานบนเดสก์ท็อปสำหรับผู้ค้าปลีกเพื่อรับฟังข้อความนับพันหรือหลายหมื่นข้อความจากช่องข้อความ ตอนนี้คำถามคือจะต้องวาง Content-Based Router ไว้ที่ไหน เราเพียงแค่มีช่องเสียบการ์ด CTIB ส่งต่อข้อความทั้งหมดไปยังเกตเวย์ราคาในช่องข้อความเดียว นี่เป็นเหตุผลที่สองเหตุผลที่เราจะแยกเหตุผลทางธุรกิจระหว่าง C และ Java และเราจะสูญเสียประโยชน์จากช่องข้อความที่แยกจากกันในฝั่ง TIB ซึ่งทำให้เราสามารถหลีกเลี่ยงการกรองข้อมูลในภายหลังได้ มองไปที่ส่วนประกอบ Java ของเราเราสามารถวางไว้ในเกตเวย์ราคาหรือสร้างองค์ประกอบที่เป็นตัวกลางระหว่างเกตเวย์ราคากับลูกค้า ในทางทฤษฎีถ้าเรายังคงมีการแยกช่องทาง Message Channel ไปยังไคลเอ็นต์เกตเวย์ราคาจะเผยแพร่ข้อมูลการกำหนดราคาอีกครั้งด้วยโครงสร้างช่องเดียวกับ Gateway ราคาและ Analytics Engine ซึ่งหมายความว่าการทำสำเนาของพันธบัตร TIB ทั้งหมดใน JMS แม้ว่าเราจะสร้างส่วนที่เป็นสื่อกลางระหว่างเกตเวย์ราคากับลูกค้าเกตเวย์ราคาจะยังคงต้องทำซ้ำช่องทั้งหมดใน JMS ในทางกลับกันการใช้ตรรกะโดยตรงในเกตเวย์ราคาจะช่วยให้เราสามารถหลีกเลี่ยงการทำซ้ำช่องจำนวนมากใน JMS เพื่อให้เราสามารถสร้างช่องทางที่มีขนาดเล็กลงได้ตามลำดับหนึ่งรายต่อผู้ขาย เกตเวย์ราคาลงทะเบียนผ่านตัวเชื่อมต่อช่องสัญญาณ CTIB เป็นผู้บริโภคสำหรับพันธบัตรแต่ละตัวของผู้ค้าทุกรายในระบบ จากนั้นเกตเวย์กำหนดราคาจะส่งต่อเฉพาะลูกค้าแต่ละรายเฉพาะข้อความที่เกี่ยวข้องกับผู้ค้ารายนั้นเท่านั้น ด้วยวิธีนี้เราจะใช้เพียงช่องข้อความขนาดเล็กจำนวนเล็กน้อยในส่วนท้ายของ JMS และเพิ่มผลประโยชน์สูงสุดจากการแยกออกจากปลาย TIB การไหลข้อมูลตลาดแบบสมบูรณ์ให้กับลูกค้าการอภิปรายโครงร่างของช่องข้อความเป็นตัวอย่างที่ดีว่ารูปแบบการรวมเป็นส่วนสำคัญอย่างไร เป้าหมายคือการหาวิธีใช้ช่องข้อความของ s ได้อย่างมีประสิทธิภาพ บอกว่าคุณใช้ลวดลายไม่เพียงพอ คุณจำเป็นต้องคิดวิธีการที่ดีที่สุดที่จะใช้มันและรวมไว้ในระบบของคุณเพื่อแก้ปัญหาในมือ นอกจากนี้ตัวอย่างนี้แสดงให้เห็นถึงแรงธุรกิจที่กำลังดำเนินการ ถ้าเราสามารถใช้ตรรกะทางธุรกิจในส่วนใดส่วนหนึ่งของเราได้เราอาจใช้วิธีการต่อเทรดเดอร์ต่อไปและใช้แนวทางที่เรียบง่ายโดยรวมกับช่องทางที่น้อยลง การเลือกช่องข้อความขณะนี้เรารู้กลศาสตร์ของการสื่อสารระหว่างส่วนประกอบ JavaJMS กับคอมโพเนนต์ C TIBCO และเราได้เห็นการจัดโครงสร้างช่องข้อความบางอย่างเราจำเป็นต้องตัดสินใจว่า JMS Message Channel ประเภทใดของ Java Component ควรใช้เพื่อสื่อสาร . ก่อนที่เราจะสามารถเลือกระหว่างช่องข้อความต่างๆที่มีอยู่ใน JMS ให้ดูที่การไหลของข้อความในระดับสูงของระบบ เรามีเกตเวย์สอง (การกำหนดราคาและเงินสมทบ) ติดต่อกับลูกค้า ข้อมูลการตลาดไหลไปยังลูกค้าจากเกตเวย์ราคาซึ่งจะส่งข้อมูลไปยัง Contribution Gateway แอ็พพลิเคชันไคลเอ็นต์จะส่งข้อความไปยังเกตเวย์กำหนดราคาเพื่อแก้ไขการวิเคราะห์ที่ใช้กับแต่ละพันธบัตร เกตเวย์การมีส่วนร่วมจะส่งข้อความไปยังแอปพลิเคชันไคลเอ็นต์เพื่อถ่ายทอดสถานะการอัปเดตราคาไปยังสถานที่ซื้อขายที่แตกต่างกัน การไหลของข้อความระบบข้อกำหนด JMS ระบุประเภทช่องข้อความสองช่อง Point-to-Point Channel (JMS Queue) และ Publish-Subscription Channel (หัวข้อ JMS) จำได้ว่ากรณีการใช้ publish-subscribe คือการทำให้ผู้บริโภคที่สนใจทุกคนได้รับข้อความในขณะที่กรณีการใช้จุดต่อจุดคือเพื่อให้แน่ใจว่าผู้บริโภคที่มีสิทธิ์ได้รับข้อความใดข้อความหนึ่งเท่านั้น ระบบจำนวนมากจะออกอากาศข้อความไปยังแอ็พพลิเคชันไคลเอ็นต์ทั้งหมดโดยให้แอพพลิเคชันไคลเอ็นต์แต่ละตัวตัดสินใจเองว่าจะประมวลผลข้อความใดข้อความหนึ่งหรือไม่ การดำเนินการนี้จะไม่สามารถใช้ได้กับแอปพลิเคชันของเราเนื่องจากมีข้อมูลตลาดจำนวนมากถูกส่งไปยังแอปพลิเคชันไคลเอ็นต์แต่ละเครื่อง หากเราเผยแพร่ข้อมูลตลาดไปยังผู้ค้าที่ไม่สนใจเราจะเสียรอบหน่วยประมวลผลของไคลเอ็นต์อย่างไม่จำเป็นโดยจะตัดสินใจว่าจะประมวลผลการอัปเดตข้อมูลตลาดหรือไม่ Point-to-Point Channel เริ่มเป็นเหมือนทางเลือกที่ดีเนื่องจากลูกค้าส่งข้อความไปยังเซิร์ฟเวอร์ที่ไม่ซ้ำกันและในทางกลับกัน แต่เป็นความต้องการทางธุรกิจที่ผู้ค้าอาจเข้าสู่เครื่องหลาย ๆ เครื่องในเวลาเดียวกัน ถ้าเรามีผู้ซื้อขายเข้าสู่ระบบที่เวิร์คสเตชั่นสองเครื่องพร้อมกันและมีการส่งการอัพเดทราคาแบบจุดต่อจุดจะมีเพียงหนึ่งแอพพลิเคชันไคลเอ็นต์สองเครื่องเท่านั้นที่จะได้รับข้อความ เนื่องจากผู้บริโภคเพียงรายเดียวในช่อง Point-to-Point สามารถรับข้อความเฉพาะได้ ขอให้สังเกตว่าเฉพาะลูกค้ากลุ่มแรกที่ได้รับข้อความเท่านั้น Point-to-Point Messaging สำหรับการอัพเดทราคาเราสามารถแก้ปัญหานี้ได้โดยใช้รูปแบบรายชื่อผู้รับซึ่งเผยแพร่ข้อความไปยังรายชื่อผู้รับที่ตั้งใจไว้ซึ่งจะรับประกันว่าเฉพาะลูกค้าในรายชื่อผู้รับเท่านั้นที่จะได้รับข้อความ ใช้รูปแบบนี้ระบบสามารถสร้างรายชื่อผู้รับกับอินสแตนซ์ของแอ็พพลิเคชันไคลเอ็นต์ทั้งหมดที่เกี่ยวข้องกับผู้ค้าแต่ละราย การส่งข้อความที่เกี่ยวข้องกับผู้ค้ารายย่อยจะส่งข้อความไปยังแต่ละแอ็พพลิเคชันในรายชื่อผู้รับ การรับประกันนี้จะรับรองได้ว่ากรณีแอปพลิเคชันไคลเอ็นต์ทั้งหมดที่เกี่ยวข้องกับผู้ค้ารายหนึ่ง ๆ จะได้รับข้อความ ข้อเสียของวิธีนี้คือต้องใช้ตรรกะในการจัดการกับผู้รับและส่งข้อความ รายชื่อผู้รับสำหรับการอัพเดทราคาแม้ว่าจะมีการทำจุดต่อจุดเพื่อให้สามารถทำงานได้แล้วก็ตามดูว่ามีวิธีที่ดีกว่านี้หรือไม่ การใช้ Publish-Subscription Channel s ระบบจะเผยแพร่ข้อความบนช่องเฉพาะเจาะจงของผู้ค้าแทนที่จะเป็นช่องเฉพาะของแอปพลิเคชันไคลเอ็นต์ ด้วยวิธีนี้แอปพลิเคชันไคลเอ็นต์ทั้งหมดที่ประมวลผลข้อความสำหรับผู้ค้ารายเดียวจะได้รับและประมวลผลข้อความ Publish-Subscription Messaging สำหรับการอัพเดทราคาข้อเสียของการใช้ Publish-Subscription Channel s คือการประมวลผลข้อความที่ไม่ซ้ำกันจะไม่ได้รับการรับประกันด้วยคอมโพเนนต์ของเซิร์ฟเวอร์ อาจเป็นไปได้ที่อินสแตนซ์เซิร์ฟเวอร์หลายอินสแตนซ์จะสร้างอินสแตนซ์และแต่ละอินสแตนซ์ประมวลผลข้อความเดียวกันอาจส่งออกราคาที่ไม่ถูกต้อง การเรียกคืนการไหลของข้อความระบบเพียงทิศทางการสื่อสารเดียวที่น่าพอใจสำหรับแต่ละช่องข้อความ การสื่อสารแบบเซิร์ฟเวอร์ต่อไคลเอนต์กับการสมัครสมาชิกเป็นที่น่าพอใจในขณะที่การสื่อสารแบบ client-to-server ไม่ได้เป็นเช่นไรและการสื่อสารแบบ client-server กับ point-to-point เป็นที่น่าพอใจในขณะที่ client-server ไม่เป็นเช่นนั้น เนื่องจากไม่จำเป็นต้องใช้ช่องข้อความเดียวกันในทั้งสองทิศทางเราจึงสามารถใช้ช่องข้อความแต่ละช่องได้ในทิศทางเดียว การสื่อสารระหว่างไคลเอ็นต์กับเซิร์ฟเวอร์จะดำเนินการกับจุดต่อจุดในขณะที่การสื่อสารแบบเซิร์ฟเวอร์ต่อไคลเอ็นต์จะดำเนินการกับการเผยแพร่การสมัครรับข้อมูล การใช้การรวมกันของ Message Channel นี้ระบบจะได้รับประโยชน์จากการสื่อสารโดยตรงกับส่วนประกอบเซิร์ฟเวอร์โดยใช้การส่งข้อความแบบจุดต่อจุดและลักษณะแบบหลายผู้รับของการเผยแพร่การสมัครสมาชิกโดยไม่มีข้อเสียใด ๆ การไหลของข้อความที่มีประเภทช่องปัญหาการแก้ปัญหาด้วยรูปแบบรูปแบบเป็นเครื่องมือและชุดรูปแบบเป็นกล่องเครื่องมือ พวกเขาช่วยแก้ปัญหา บางคนคิดว่ารูปแบบมีประโยชน์เฉพาะในระหว่างการออกแบบ หลังจากการเปรียบเทียบกล่องเครื่องมือนี้ก็เหมือนกับการบอกว่าเครื่องมือนี้มีประโยชน์เฉพาะเมื่อคุณสร้างบ้านไม่ใช่เมื่อคุณแก้ไข ความจริงก็คือรูปแบบเป็นเครื่องมือที่มีประโยชน์ตลอดทั้งโครงการเมื่อใช้ได้ดี ในส่วนต่อไปนี้เราจะใช้กระบวนการสำรวจรูปแบบเดียวกันที่เราใช้ในส่วนก่อนหน้าเพื่อแก้ปัญหาในระบบการทำงานของเราตอนนี้ การอัพเดตข้อมูลตลาดกระพริบผู้ค้าต้องการให้เซลล์ของตารางกะพริบเมื่อข้อมูลตลาดใหม่ได้รับสำหรับพันธบัตรโดยระบุการเปลี่ยนแปลงอย่างชัดเจน ไคลเอ็นต์ Java ได้รับข้อความพร้อมข้อมูลใหม่ซึ่งจะเรียกข้อมูลการอัปเดตแคชข้อมูลไคลเอ็นต์และกระพริบในที่สุดในตาราง ปัญหาคือการปรับปรุงมาค่อนข้างบ่อย สแต็คเธรด GUI กำลังลุกลามและแช่แข็งไคลเอ็นต์ในที่สุดเนื่องจากไม่สามารถตอบสนองต่อการโต้ตอบของผู้ใช้ได้ เราจะสมมติว่าการกระพริบเป็นไปอย่างเหมาะสมและเน้นการไหลเวียนข้อมูลของข้อความผ่านกระบวนการอัพเดต การตรวจสอบข้อมูลประสิทธิภาพแสดงให้เห็นว่าแอ็พพลิเคชันไคลเอ็นต์ได้รับการอัปเดตหลายครั้งในหนึ่งวินาทีการอัปเดตบางอย่างเกิดขึ้นน้อยกว่ามิลลิวินาทีนอกจากนี้ สองรูปแบบที่ดูเหมือนจะช่วยชะลอการไหลของข้อความคือตัวรวบรวมและตัวกรองข้อความ ความคิดแรกคือการใช้ตัวกรองข้อความเพื่อควบคุมความเร็วของการส่งข้อความโดยการโยนข้อมูลอัปเดตที่ได้รับเป็นระยะเวลาสั้น ๆ หลังจากข้อความอ้างอิง ตัวอย่างเช่นสมมติว่าเราจะละเว้นข้อความภายใน 5 มิลลิวินาทีของกันและกัน ตัวกรองข้อความสามารถแคชเวลาของข้อความที่ยอมรับได้ล่าสุดและโยนอะไรออกภายใน 5 มิลลิวินาทีต่อไป แม้ว่าแอ็พพลิเคชันอื่นอาจไม่สามารถทนต่อการสูญหายของข้อมูลได้ในระดับหนึ่ง แต่นี่เป็นข้อเสนอที่ยอมรับได้อย่างสมบูรณ์ในระบบของเราเนื่องจากความถี่ในการอัปเดตราคา ตัวกรองข้อความตามเวลาปัญหาเกี่ยวกับวิธีนี้คือไม่ได้มีการปรับปรุงข้อมูลทั้งหมดในเวลาเดียวกัน Each bond has approximately 50 data fields displayed to the user including price. We realize that not every field is updated in every message. If the system ignores consecutive messages, it may very well be throwing out important data. The other pattern of interest is the Aggregator . The Aggregator is used to manage the reconciliation of multiple, related messages into a single message, potentially reducing the message flow. The Aggregator could keep a copy of the bond data from the first aggregated message, then update only new or changed fields successive messages. Eventually the aggregated bond data will be passed in a message to the client. For now, lets assume that the Aggregator will send a message every 5 milliseconds like the Message Filter . Later, well explore another alternative. Aggregator with partial successive updates The Aggregator . like any other pattern, is not a silver bullet it has its pluses and minuses that need to be explored. One potential minus is that implementing an Aggregator would reduce the message traffic by a great amount in our case only if many messages are coming in within a relatively short time regarding the same bond. On the other hand, we would accomplish nothing if the Java client only receives updates for one field across all of the traders bonds. For example, if we receive 1000 messages in a specified timeframe with 4 bonds of interest, we would reduce the message flow from 1000 to 4 messages over that timeframe. Alternatively, if we receive 1000 messages in the same timeframe with 750 bonds of interest, we will have reduced the message flow from 1000 to 750 messages relatively little gain for the amount of effort. A quick analysis of the message updates proves that the Java client receives many messages updating fields of the same bond, and therefore related messages. So, Aggregator is in fact a good decision. Whats left is to determine how the Aggregator will know when to send a message it has been aggregating. The pattern describes a few algorithms for the Aggregator to know when to send the message. These include algorithms to cause the aggregator to send out its contents after a certain amount of time has elapsed, after all required fields in a data set have been completed, and others. The problem with all of these approaches is that the aggregator is controlling the message flow, not the client. And the client is the major bottleneck in this case, not the message flow. This is because the Aggregator is assuming the consumers of its purged messages (the client application in this case) are Event-Driven Consumer s, or consumers that rely on events from an external source. We need to turn the client into a Polling Consumer . or a consumer that continuously checks for messages, so the client application can control the message flow. We can do this by creating a background thread that continuously cycles through the set of bonds and updates and flashes any changes that have occurred since the last iteration. This way, the client controls when messages are received and as a result, guarantees that it will never become overloaded with messages during high update periods. We can easily implement this by sending a Command Message to the Aggregator initiating an update. The Aggregator will respond with a Document Message containing the set of updated fields that the client will process. The choice of Aggregator over Message Filter is clearly a decision based solely on the business requirements of our system. Each could help us solve our performance problems, but using the Message Filter would solve the problem at cost of the system data integrity. Major Production Crash With the performance of the flashing fixed, we are now in production. One day the entire system goes down. MQSeries crashes, bringing several components down with it. We struggle with the problem for a while and finally trace it back to the MQSeries dead letter queue (an implementation of the Dead Letter Channel ). The queue grows so large that it brings down the entire server. After exploring the messages in the dead letter queue we find they are all expired market data messages. This is caused by slow consumers, or consumers that do not process messages fast enough. While messages are waiting to be processed, they time out (see the Message Expiration pattern) and are sent to the Dead Letter Channel . The excessive number of expired market data messages in the dead letter queue is a clear indication that the message flow is too great messages expire before the target application can consume them. We need to fix the message flow and we turn to patterns for help slowing down the message flow. A reasonable first step is to explore solving this problem with the Aggregator as we recently used this pattern to solve the similar flashing market data control rate problem. The system design relies on the client application to immediately forward market data update messages to the trading venues. This means the system cannot wait to collect messages and aggregate them. So the Aggregator must be abandoned. There are two other patterns that deal with the problem of consuming messages concurrently: Competing Consumers and Message Dispatcher . Starting with Competing Consumers . the benefit of this pattern is the parallel processing of incoming messages. This is accomplished using several consumers on the same channel. Only one consumer processes each incoming message leaving the others to process successive messages. Competing Consumers . however, will not work for us since we are using Publish-Subscribe Channel s in server-to-client communication. Competing Consumers on a Publish-Subscribe Channel channel means that all consumers process the same incoming message. This results in more work without any gain and completely misses the goal of the pattern. This approach also has to be abandoned. On the other hand, the Message Dispatcher describes an approach whereby you add several consumers to a pool. Each consumer can run its own execution thread. One main Message Consumer listens to the Channel and delegates the message on to an unoccupied Message Consumer in the pool and immediately returns to listening on the Message Channel . This achieves the parallel processing benefit of Competing Consumers . but works on Publish-Subscribe Channel s. The Message Dispatcher in context Implementing this in our system is simple. We create a single JMSListener called the Dispatcher, which contains a collection of other JMSListener s called Performers. When the onMessage method of the Dispatcher is called, it in turn picks a Performer out of the collection to actually process the message. The result of which is a Message Listener (the Dispatcher) that always returns immediately. This guarantees a steady flow of message processing regardless of the message flow rate. Additionally, this works equally well on a Publish-Subscribe Channel s as it does on a Point-to-Point Channel s. With this infrastructure, messages can be received by the client application at almost any rate. If the client application is still slow to process the message after receiving them, the client application can deal with the delayed processing and potentially outdated market data rather than the messages expiring in the JMS Message Channel . The crash discussed in this section and the fix using the Message Dispatcher is an excellent example of the limits of applying patterns. We encountered a performance problem based on a design flaw not allowing the client to process messages in parallel. This greatly improved the problem, but did not completely fix it. This is because the real problem was the client becoming a bottleneck. This couldnt be fixed with a thousand patterns. We later addressed this problem by refactoring the message flow architecture to route messages directly from the Pricing Gateway to the Contribution Gateway. So patterns can help design and maintain a system, but dont necessarily make up for poor upfront design. Throughout this chapter, we have applied patterns to several different aspects of a bond trading system including solving initial upfront design problems and fixing a nearly job threatening production crash with patterns. We also saw these patterns as they already exist in third party product, legacy components, and our JMS and TIBCO messaging systems. Most importantly, these are real problems with the same types of architectural, technical and business problems we experience as we design and maintain our own systems. Hopefully reading about applying patterns to this system helps give you a better understanding of the patterns as well as how to apply them to your own systems. Want to keep up-to-date Follow My Blog . Want to read more in depth Check out My Articles . Want to see me live See where I am speaking next . Find the full description of this pattern in: Enterprise Integration Patterns Gregor Hohpe and Bobby Woolf ISBN 0321200683 650 pages Addison-Wesley From Enterprise Integration to Enterprise Transformation: My new book describes how architects can play a critical role in IT transformation by applying their technical, communication, and organizational skills with 37 episodes from large-scale enterprise IT. Parts of this page are made available under the Creative Commons Attribution license. You can reuse the pattern icon, the pattern name, the problem and solution statements (in bold), and the sketch under this license. Other portions of the text, such as text chapters or the full pattern text, are protected by copyright. Messaging Patterns 187 Integration Patterns in Practice 187 Case Study: Bond Trading System

No comments:

Post a Comment