อัตโนมัติ -trading- ระบบ MATLAB

อัตโนมัติ -trading- ระบบ MATLAB

Forex- Fi
Forex- ฮาลาล - atau - Haram
Forex   สำหรับ หุ่น รูปแบบไฟล์ PDF   ดาวน์โหลด


Forex- ปิด ใน วันอาทิตย์ Forex- ภาษี ฝรั่งเศส Binary ตัวเลือก ที่มีมูลค่า Forex- กระทืบ EUR- GBP Forex47 สปา Forex ล้าน

MetaTrader 5 - ระบบเทรดดิ้ง Simulink: คู่มือสำหรับนักพัฒนาที่ปรึกษาผู้เชี่ยวชาญบทนำมีบทความหลายอย่างที่อธิบายถึงความเป็นไปได้ที่กว้างใหญ่ของ Matlab เพื่อให้ละเอียดมากขึ้นวิธีที่ซอฟต์แวร์นี้สามารถขยายเครื่องมือสำหรับโปรแกรมเมอร์ซึ่งเขาใช้ในการพัฒนา Expert Advisor ในบทความนี้ผมจะพยายามแสดงให้เห็นถึงการทำงานของแพคเกจ MATLAB ที่มีประสิทธิภาพเช่น Simulink ฉันต้องการเสนอทางเลือกในการพัฒนาระบบการซื้อขายอัตโนมัติสำหรับผู้ค้า ฉันได้รับแรงบันดาลใจในการหันมาใช้วิธีการนี้เนื่องจากความซับซ้อนของปัญหาที่พ่อค้าต้องเผชิญการสร้างการตรวจสอบและทดสอบระบบการซื้อขายอัตโนมัติ ฉันไม่ใช่นักเขียนมืออาชีพ ดังนั้นหลักการของการดำเนินการจากแบบเรียบง่ายไปสู่ความซับซ้อนเป็นสิ่งสำคัญอันดับแรกสำหรับฉันในการพัฒนาระบบการซื้อขายอัตโนมัติ สิ่งที่ง่ายสำหรับฉันประการแรกนี่คือภาพของกระบวนการสร้างระบบและตรรกะของการทำงาน นอกจากนี้รหัสขั้นต่ำที่เขียนด้วยลายมือ ความคาดหวังเหล่านี้สอดคล้องกับความสามารถของแพคเกจ Simulink ซึ่งเป็นผลิตภัณฑ์ MATLAB ที่เป็นที่รู้จักกันดีซึ่งเป็นผู้นำระดับโลกในด้านเครื่องมือสำหรับการคิดคำนวณทางคณิตศาสตร์ ในบทความนี้ฉันจะพยายามสร้างและทดสอบระบบการซื้อขายแบบอัตโนมัติโดยอิงจากแพคเกจ Matlab และเขียน Expert Advisor for MetaTrader 5 นอกจากนี้ข้อมูลย้อนหลังทั้งหมดสำหรับการทำ backtesting จะถูกใช้จาก MetaTrader 5 เพื่อหลีกเลี่ยง ความสับสนทางศัพท์ฉันจะเรียกระบบการซื้อขายซึ่งทำหน้าที่ใน Simulinik โดยใช้ MTS ที่มีความสามารถและ MQL5 ซึ่งเป็นหน้าที่ของ Expert Advisor 1. หลักการพื้นฐานของ Simulink และ Stateflow ก่อนที่เราจะดำเนินการเฉพาะคุณจำเป็นต้องแนะนำรูปแบบขั้นต่ำทางทฤษฎีบางอย่าง ด้วยความช่วยเหลือของแพคเกจ Simulink ซึ่งเป็นส่วนหนึ่งของ MATLAB ผู้ใช้สามารถจำลองจำลองและวิเคราะห์ระบบไดนามิกได้ นอกจากนี้ยังเป็นไปได้ที่จะเพิ่มคำถามเกี่ยวกับลักษณะของระบบเพื่อจำลองมันและจากนั้นไปดูสิ่งที่เกิดขึ้น ด้วย Simulink ผู้ใช้สามารถสร้างโมเดลตั้งแต่เริ่มต้นหรือปรับเปลี่ยนโมเดลที่มีอยู่แล้ว แพคเกจสนับสนุนการพัฒนาระบบเชิงเส้นและแบบไม่เชิงเส้นซึ่งสร้างขึ้นบนพื้นฐานของพฤติกรรมแบบไม่ต่อเนื่องต่อเนื่องและแบบผสม คุณสมบัติหลักของแพ็คเกจจะถูกนำเสนอในไซต์นักพัฒนาซอฟต์แวร์: บล็อกที่กว้างขวางและขยายได้ของบล็อกที่กำหนดไว้ล่วงหน้าตัวแก้ไขแบบกราฟิกเชิงโต้ตอบสำหรับการรวบรวมและจัดการไดอะแกรมบล็อกที่ใช้งานง่ายความสามารถในการจัดการการออกแบบที่ซับซ้อนโดยแบ่งกลุ่มโมเดลออกเป็นลำดับชั้นขององค์ประกอบการออกแบบ Model Explorer เพื่อนำทางสร้าง, (APIs) ที่ช่วยให้คุณเชื่อมต่อกับโปรแกรมจำลองอื่น ๆ และรวมโค้ดที่เขียนด้วยมือ Embedded MATLAB Function Block เพื่อนำอัลกอริทึม MATLAB ไปใช้ใน Simulink และฝังตัว การใช้งานระบบโหมดการจำลอง (Normal, Accelerator และ Rapid Accelerator) สำหรับการจำลองแบบการตีความหรือที่ความเร็ว C-code ที่คอมไพล์ด้วยตัวแก้ปัญหาแบบคงที่หรือแบบแปรผันแบบกราฟิกดีบักเกอร์และ Profiler เพื่อตรวจสอบผลการจำลองและวิเคราะห์ประสิทธิภาพและพฤติกรรมที่ไม่คาดคิดในการออกแบบของคุณ การเข้าถึงแบบเต็มรูปแบบ MATLAB สำหรับการวิเคราะห์และแสดงผลผลการปรับแต่งสภาพแวดล้อมการสร้างแบบจำลองและการกำหนดสัญญาณพารามิเตอร์และข้อมูลทดสอบการวิเคราะห์โมเดลและเครื่องมือวินิจฉัยเพื่อให้แน่ใจว่าโมเดลมีความสอดคล้องกันและระบุข้อผิดพลาดในการสร้างแบบจำลอง ดังนั้นเรามาดูการทบทวนสภาพแวดล้อมของ Simulink กันเถอะ เริ่มจากหน้าต่าง Matlab ที่เปิดอยู่แล้วในสองวิธีต่อไปนี้: โดยใช้คำสั่ง Simulink ในหน้าต่างคำสั่งโดยใช้ไอคอน Simulink บนแถบเครื่องมือ รูปที่ 1 การเริ่มต้นของ Simulink เมื่อดำเนินการคำสั่งหน้าต่างเรียกดูไลบรารี (Simulink Library Browser) จะปรากฏขึ้น รูปที่ 2. เบราเซอร์ห้องสมุดหน้าต่างเบราเซอร์ประกอบด้วยต้นไม้ของส่วนประกอบไลบรารีของ Simulink หากต้องการดูส่วนใดส่วนหนึ่งของไลบรารีคุณต้องเลือกด้วยเมาส์หลังจากนั้นชุดส่วนประกอบไอคอนของส่วนที่ใช้งานของไลบรารีจะปรากฏในส่วนด้านขวาของหน้าต่างไลบรารีของ Simulink Library มะเดื่อ. 2 แสดงส่วนหลักของไลบรารี Simulink ใช้เมนูเบราเซอร์หรือปุ่มต่างๆของแถบเครื่องมือคุณสามารถเปิดหน้าต่างเพื่อสร้างโมเดลใหม่หรืออัปโหลดไฟล์ที่มีอยู่ ฉันควรทราบว่าการทำงานทั้งหมดกับ Simulink เกิดขึ้นพร้อมกับระบบ MATLAB แบบเปิดซึ่งสามารถตรวจสอบการดำเนินการได้ตราบเท่าที่ผลลัพธ์ของพวกเขามีไว้สำหรับโปรแกรมการสร้างแบบจำลอง รูปที่ 3 หน้าต่างเปล่าของ Simpulink ประการแรกให้เราเปลี่ยนพารามิเตอร์บางส่วนของโมเดลของเรา ให้เปิดการจำลอง - gt พารามิเตอร์การกำหนดค่า หน้าต่างนี้มีหลายแท็บที่มีหลายพารามิเตอร์ เราสนใจในแท็บ Solver เริ่มต้นซึ่งคุณสามารถตั้งค่าพารามิเตอร์ของตัวแก้ปัญหาของระบบจำลองแบบ Simulink ได้ ในช่วงจำลองเวลาการสร้างแบบจำลองจะถูกกำหนดโดยเวลาเริ่มต้น - เวลาเริ่มต้น (โดยปกติคือ 0) และเวลาสิ้นสุด - เวลาหยุด สำหรับงานของเราคุณสามารถกำหนดเวลาเริ่มต้นให้เป็นค่า 1 ได้เราจะเว้นระยะเวลาหยุดตามที่กำหนด ในตัวเลือก solvers ฉันยังเปลี่ยน Type เพื่อ Fixed-step, solver ตัวเองเพื่อไม่ต่อเนื่องและขั้นตอน (fixed-step size) เป็น 1 รูปที่ 4. หน้าต่าง Parameters Parameters สภาพแวดล้อมของ Simulink เสร็จสมบูรณ์โดย stateflow ของระบบย่อย ซึ่งเป็นแพคเกจการสร้างแบบจำลองเหตุการณ์ตามทฤษฎีของรัฐ จำกัด แบบอัตโนมัติ ช่วยให้เราสามารถแสดงการทำงานของระบบโดยยึดตามกฎซึ่งกำหนดเหตุการณ์และการดำเนินการเพื่อตอบสนองต่อเหตุการณ์เหล่านี้ อินเทอร์เฟซสำหรับผู้ใช้แบบกราฟิกของชุด Stateflow มีส่วนประกอบดังต่อไปนี้: ตัวแก้ไขกราฟฟิกของ SF-charts Stateflow Explorer Stateflow Finder เพื่อค้นหาวัตถุที่จำเป็นใน SF-charts ดีบักเกอร์ของ SF-models Real-time Workshop เครื่องกำเนิดโค้ดแบบเรียลไทม์ . แผนผังบล็อกที่ใช้บ่อย (แผนภูมิ) ซึ่งอยู่ในส่วน Stateflow ให้ตรวจสอบได้ ให้ย้ายบล็อกจากไลบรารีและดับเบิลคลิกเพื่อเปิดแผนภาพ หน้าต่างเปล่าของโปรแกรมแก้ไขแผนภูมิ SF จะปรากฏขึ้น สามารถใช้เพื่อสร้าง SF-charts และการดีบักเพื่อให้ได้ฟังก์ชั่นที่จำเป็น แถบเครื่องมือตั้งอยู่ตรงทางด้านซ้าย มีปุ่ม 9 ปุ่ม: State Junction Default Transition Connectivity Junction ความจริงตารางฟังก์ชัน Embedded MATLAB Function Box Simulink Function Call. แต่น่าเสียดายที่มันเป็นไปไม่ได้ที่จะต้องพิจารณาทุกองค์ประกอบในรายละเอียดภายในบริบทของบทความนี้ ดังนั้นผมจะ จำกัด ตัวเองให้อธิบายสั้น ๆ ขององค์ประกอบเหล่านั้นซึ่งเราจะต้องใช้โมเดลของเรา สามารถดูรายละเอียดเพิ่มเติมได้ในส่วนวิธีใช้ Matlab หรือในเว็บไซต์ของนักพัฒนาซอฟต์แวร์ รูปที่ 5. มุมมองของ SF-chart ในตัวแก้ไขวัตถุที่สำคัญของ SF-charts คือสถานะ นำเสนอโดยรูปสี่เหลี่ยมผืนผ้าที่มีมุมโค้งมน อาจเป็นเอกสิทธิ์หรือขนาน ทุกรัฐอาจเป็นบิดามารดาและมีทายาท รัฐสามารถใช้งานหรือไม่ใช้งานได้รัฐสามารถดำเนินการบางอย่างได้ การเปลี่ยนแปลงจะแสดงเป็นเส้นโค้ง arrowed จะเชื่อมต่อรัฐและวัตถุอื่น ๆ การเปลี่ยนสามารถทำได้โดยคลิกที่ปุ่มซ้ายของเมาส์บนวัตถุต้นทางและสั่งเคอร์เซอร์ไปยังวัตถุเป้าหมาย การเปลี่ยนอาจมีเงื่อนไขของตัวเองซึ่งจะถูกบันทึกไว้ในวงเล็บ ขั้นตอนการเปลี่ยนจะแสดงไว้ในวงเล็บซึ่งจะดำเนินการหากเงื่อนไขเป็นที่พอใจ ขั้นตอนที่ดำเนินการในระหว่างการยืนยันของวัตถุเป้าหมายจะแสดงด้วยเครื่องหมายทับ โหนดทางเลือก (เชื่อมต่อกัน) มีรูปแบบของวงกลมและอนุญาตให้มีการเปลี่ยนเส้นทางผ่านเส้นทางต่างๆซึ่งแต่ละแห่งจะถูกกำหนดโดยเงื่อนไขเฉพาะ ในกรณีเช่นนี้ระบบจะเลือกการเปลี่ยนซึ่งสอดคล้องกับเงื่อนไขที่ระบุไว้ ฟังก์ชันแสดงเป็นกราฟการไหลโดยใช้คำสั่งของภาษากระบวนการไหลของรัฐ กราฟการไหลสะท้อนโครงสร้างเชิงตรรกะของการใช้การเปลี่ยนและโหนดทางเลือก เหตุการณ์เป็นอีกหนึ่งองค์ประกอบสำคัญของ Stateflow ซึ่งเป็นของกลุ่มของออบเจกต์ที่ไม่ใช่ภาพ วัตถุนี้สามารถเรียกใช้ขั้นตอนของ SF-chart ได้ กระบวนงาน (การดำเนินการ) ยังไม่ใช่ออบเจกต์กราฟิกอีกด้วย สามารถเรียกใช้ฟังก์ชันกำหนดเหตุการณ์เฉพาะการเปลี่ยนแปลง ฯลฯ ข้อมูลในรูปแบบ SF จะแสดงด้วยค่าตัวเลข ข้อมูลจะไม่แสดงเป็นออบเจกต์กราฟิก สามารถสร้างได้ทุกระดับของลำดับชั้นของรูปแบบและมีคุณสมบัติ 2. คำอธิบายกลยุทธ์การซื้อขายตอนนี้สั้น ๆ เกี่ยวกับการซื้อขาย สำหรับการฝึกอบรมของเราที่ปรึกษาผู้เชี่ยวชาญจะง่ายมากถ้าไม่พูดแบบดั้งเดิม ระบบการซื้อขายอัตโนมัติจะเปิดตำแหน่งบนพื้นฐานของสัญญาณโดยทั่วๆไปหลังจากข้ามการเคลื่อนย้ายเลขยกซึ่งมีช่วงเวลา 21 และ 55 (ตัวเลข Fibonacci) โดยเฉลี่ยอยู่ที่ราคาปิด ดังนั้นถ้า EMA 21 พุ่งขึ้นมาจากด้านล่าง EMA 55 จะเปิดตำแหน่งที่ยาวขึ้นมิฉะนั้น - สั้น สำหรับการกรองเสียงตำแหน่งจะเปิดที่บาร์ K-th โดยราคาของบาร์เปิดหลังจากที่ปรากฏของไม้กางเขน 2155 เราจะซื้อขายใน EURUSD H1 จะเปิดเพียงตำแหน่งเดียวเท่านั้น มันจะถูกปิดเฉพาะเมื่อถึงระดับ Take Profit หรือ Stop Loss ผมอยากจะกล่าวถึงว่าในระหว่างการพัฒนาระบบการซื้อขายอัตโนมัติและการทำ backtesting ในประวัติศาสตร์การยอมรับว่าภาพลักษณ์ทางการค้าโดยรวมได้รับการยอมรับแล้ว ตัวอย่างเช่นระบบจะไม่ตรวจสอบการดำเนินการของโบรกเกอร์ของสัญญาณ นอกจากนี้เราจะเพิ่มข้อ จำกัด ในการซื้อขายให้เป็นแกนหลักของระบบใน MQL5 3. การสร้างแบบจำลองของกลยุทธ์การซื้อขายใน Simulink ในการเริ่มต้นเราจำเป็นต้องอัปโหลดข้อมูลราคาย้อนหลังไปในสภาพแวดล้อมของ Matlab เราจะดำเนินการโดยใช้สคริปต์ MetaTrader 5 ซึ่งจะช่วยประหยัดเงิน (testClose.mq5) ใน Matlab ข้อมูลเหล่านี้ (Open, High, Low, Close, Spread) จะถูกโหลดโดยใช้ m-script (priceTxt.m) การใช้ movavg (ฟังก์ชัน Matlab มาตรฐาน) เราจะสร้างอาร์เรย์ของ Exponential Moving Averages: ema21, ema55 movavg (close, 21, 55, e) เช่นเดียวกับอาร์เรย์เสริมของดัชนีบาร์: K3 sl0.0065 tp0.0295 ให้เริ่มต้น กระบวนการสร้างแบบจำลอง สร้างหน้าต่างว่าง Simulink และเรียกมันว่า mts เมื่อบันทึก การดำเนินการต่อไปนี้ได้รับการทำซ้ำในรูปแบบวิดีโอแล้ว หากสิ่งใดไม่ชัดเจนหรือไม่ชัดเจนคุณสามารถดูการกระทำของฉันได้โดยดูวิดีโอ เมื่อบันทึกโมเดลระบบอาจพิมพ์ข้อผิดพลาดต่อไปนี้: ไฟล์ C: Simulinkmts.mdl มีอักขระที่เข้ากันไม่ได้กับการเข้ารหัสอักขระปัจจุบัน windows-1251 เพื่อหลีกเลี่ยงข้อผิดพลาดนี้ให้เลือกทำอย่างใดอย่างหนึ่งต่อไปนี้ 1) ใช้ฟังก์ชัน slCharacterEncoding เพื่อเปลี่ยนการเข้ารหัสอักขระปัจจุบันเป็นหนึ่งใน: ShiftJIS, windows-1252, ISO-8859-1 2) ลบอักขระที่ไม่สนับสนุน อักขระตัวแรกที่ไม่ได้รับการสนับสนุนอยู่ที่บรรทัดที่ 23, byte offset 15. ในการกำจัดสิ่งนี้คุณต้องปิดหน้าต่างทั้งหมดของโมเดลและเปลี่ยนการเข้ารหัสโดยใช้คำสั่งต่อไปนี้: bdclose setparam ทั้งหมด (0, CharacterEncoding, windows-1252) ระบุแหล่งข้อมูลของโมเดลของเรา บทบาทของแหล่งข้อมูลดังกล่าวจะเป็นข้อมูลย้อนหลังจาก MetaTrader 5 ซึ่งมีการเปิดราคาสูงสุดต่ำสุดและราคาปิด นอกจากนี้เราจะพิจารณา Spread แม้ว่าจะเป็นช่วงที่ค่อนข้างลอยตัวเมื่อเร็ว ๆ นี้ สุดท้ายเราบันทึกเวลาเปิดของแถบ สำหรับการสร้างแบบจำลองอาร์เรย์บางส่วนของข้อมูลเริ่มต้นจะถูกตีความว่าเป็นสัญญาณซึ่งเป็นเวกเตอร์ของค่าฟังก์ชันเวลาที่จุดไม่ต่อเนื่องในเวลา ให้สร้างระบบย่อย FromWorkspace เพื่อดึงข้อมูลจากพื้นที่ทำงาน Matlab เลือกส่วน Subsystems Ports amps ในเบราเซอร์ของไลบรารี Simulink ลากบล็อกระบบย่อยไปยังหน้าต่างรุ่น Simulink โดยใช้เมาส์ เปลี่ยนชื่อเป็น FromWorkspace โดยคลิกที่ Subsystem จากนั้นเข้าสู่ระบบโดยการดับเบิลคลิกที่ปุ่มเมาส์ด้านซ้ายบนบล็อกเพื่อสร้างตัวแปรนำเข้าและส่งออกและค่าคงที่สำหรับระบบ ในการสร้างแหล่งสัญญาณในเบราว์เซอร์ Library ให้เลือก Blockset การประมวลผลสัญญาณและแหล่งสัญญาณ (Signal Processing Sources) ใช้เมาส์ลากสัญญาณจากบล็อก Workspace ลงในหน้าต่างระบบย่อยของแบบจำลอง FromWorkspace เนื่องจากรูปแบบจะมีสัญญาณอินพุต 4 ชิ้นเราจึงทำซ้ำบล็อกและสร้างสำเนาอีก 3 ชุด ให้ระบุทันทีที่ตัวแปรจะถูกประมวลผลโดยการบล็อก เมื่อต้องการทำเช่นนี้ให้คลิกสองครั้งที่บล็อกและป้อนชื่อตัวแปรลงในพร็อพเพอร์ตี้ ตัวแปรเหล่านี้จะเป็น: เปิด, ema21, ema55, num เราจะตั้งชื่อบล็อกต่อไปนี้: สัญญาณเปิด, สัญญาณ ema21, สัญญาณ ema55, สัญญาณ num ตอนนี้จากส่วน Simulink ที่ใช้กันทั่วไปเราจะเพิ่มบล็อกสำหรับสร้างช่อง (Bus Creator) เปิดบล็อกและเปลี่ยนจำนวนอินพุทเป็น 4. เชื่อมต่อสัญญาณเปิด, สัญญาณ ema21, สัญญาณ ema55, บล็อกสัญญาณ num ด้วยอินพุตของบล็อคบัสผู้สร้าง นอกจากนี้เรายังมีค่าอินพุตอีก 5 ค่า บล็อกที่เพิ่มขึ้นจะถูกเพิ่มจากส่วนที่ใช้กันทั่วไป เป็นค่า (ค่าคงที่) เราระบุชื่อของตัวแปร: spread, high, ต่ำ, tp, sl: spread - นี่คืออาร์เรย์ของค่า spread สูง - นี่เป็นอาร์เรย์ของค่าต่ำสุดที่ต่ำ - นี่คือ อาร์เรย์ของค่าราคาขั้นต่ำ tp - ใช้มูลค่ากำไรในแง่แน่นอน sl - ค่า Stop Loss ในรูปแบบสัมบูรณ์ เราจะเรียกบล็อกดังต่อไปนี้: อาร์เรย์การแพร่กระจายอาร์เรย์สูงอาร์เรย์ต่ำทำกำไรหยุดการขาดทุน เลือกพอร์ตเอาท์พุท Block (Out1) ในส่วน Ports Subsystems Simulink และย้ายไปที่หน้าต่างย่อย ทำสำเนาพอร์ตออก 5 ชุด คนแรกที่เชื่อมต่อกันกับกลุ่มผู้สร้างรถบัสและคนอื่น ๆ สลับกันไปกับการแพร่กระจายอาร์เรย์สูงต่ำทำกำไรและหยุดการขาดทุน ดีเปลี่ยนชื่อพอร์ตแรกในราคาและอื่น ๆ - โดยใช้ชื่อของตัวแปรเอาท์พุท ในการสร้างสัญญาณการซื้อขายให้แทรกบล็อกของการเพิ่ม (เพิ่ม) จากส่วน Simulink ทางคณิตศาสตร์ ดีเรียกว่าแตกต่าง emas ภายในบล็อกเราจะเปลี่ยนรายการเครื่องหมาย, c ถึง - ใช้ชุดคีย์ลัด K Ctrl และเลี้ยวบล็อกตามเข็มนาฬิกา 90 ตามเข็มนาฬิกา เชื่อมต่อชุดสัญญาณ ema21 เข้ากับอินพุทและสัญญาณ ema55 ด้วย - จากนั้นแทรกบล็อก Delay จากส่วน Signal Processing Blockset ของ Signal Operations ตั้งชื่อ K Delay ในฟิลด์ Delay (sample) ของบล็อคนี้เราจะใส่ชื่อของตัวแปร K เชื่อมต่อกับบล็อกก่อนหน้านี้ บล็อคที่แตกต่างกันของ emas และ K Delay จะฟอร์แมตค่าความต่างระดับด้านหน้า (ระดับต่าง) ของสัญญาณควบคุมสำหรับการคำนวณเฉพาะช่วงของการสร้างแบบจำลองซึ่งมีการเปลี่ยนแปลง ระบบย่อยที่สร้างขึ้นมาในเวลาอันสั้นจะเปิดใช้งานหากองค์ประกอบอย่างน้อยหนึ่งองค์ประกอบมีการเปลี่ยนแปลงระดับสัญญาณ จากส่วน Simulink Commonly used blocks เราจะเพิ่ม multiplexer ด้วยและ (Mux) block ในทำนองเดียวกันหมุนบล็อกโดย 90 ตามเข็มนาฬิกา เราจะแบ่งสายสัญญาณของบล็อคความล่าช้าออกเป็นสองส่วนและเชื่อมต่อกับ multiplexes จากส่วน Stateflow ให้แทรกการบล็อกแผนภูมิ ป้อนแผนภูมิ เพิ่ม 2 เหตุการณ์ที่เข้ามา (ซื้อและขาย) และ 2 กิจกรรมที่ส่งออก (OpenBuy และ OpenSell) ค่าทริกเกอร์ (Trigger) สำหรับเหตุการณ์ Buy เราจะตั้งค่าเป็น Falling (การเปิดใช้งานระบบย่อยโดยด้านลบ) และสำหรับเหตุการณ์ Sell เราจะตั้งค่าเป็น Rising (การเปิดใช้งานระบบย่อยโดยค่าบวก) ค่าทริกเกอร์ (Trigger) สำหรับเหตุการณ์ OpenBuy และ OpenSell เราจะกำหนดตำแหน่งของ Function call (Calling), (การเปิดใช้งานระบบย่อยจะถูกกำหนดโดยตรรกะของการทำงานของ S-function) ดีสร้างการเปลี่ยนแปลงโดยค่าเริ่มต้นมี 3 โหนดทางเลือก โหนดแรกที่เราจะเชื่อมต่อโดยการเปลี่ยนไปใช้โหนดที่สองกำหนดเงื่อนไขและขั้นตอนสำหรับการซื้อและสำหรับขั้นตอนที่สามให้ตั้งค่าขั้นตอนการขาย เชื่อมต่ออินพุตแผนภูมิด้วยมัลติเพล็กซ์และเอาท์พุทสองแบบด้วย multiplex อื่นซึ่งสามารถคัดลอกได้จากครั้งแรก บล็อคสุดท้ายจะเชื่อมต่อกับพอร์ตเอาท์พุทซึ่งเราจะคัดลอกจากแบบ analogous และเรียกว่า BuySell และฉันเกือบลืมสำหรับรูปแบบการทำงานอย่างถูกต้องเราต้องสร้างช่องทางเสมือนวัตถุซึ่งจะอยู่ในพื้นที่ทำงาน Matlab ในการดำเนินการนี้เราจะเข้าไปที่ตัวแก้ไขบัสผ่านเมนู Tools (เครื่องมือ) ในตัวแก้ไขเลือกรายการ Add Bus เรียกว่า InputBus แทรกองค์ประกอบตามชื่อตัวแปรเข้า: เปิด, ema21, ema55 และ num เปิดตัวสร้างบัสและทำเครื่องหมายที่ช่องทำเครื่องหมายถัดจากระบุคุณสมบัติผ่านทางวัตถุบัส (ตั้งค่าคุณสมบัติผ่านทางอ็อบเจ็กต์บัส) กล่าวคือเชื่อมต่อบล็อกของเรากับช่องทางเสมือนที่เราสร้างขึ้น ช่องเสมือนหมายความว่าสัญญาณจะรวมกันแบบกราฟิกเท่านั้นโดยไม่มีผลต่อการกระจายหน่วยความจำ บันทึกการเปลี่ยนแปลงในหน้าต่างย่อย สรุปงานของเรากับระบบย่อย FromWorkspace ตอนนี้ถึงเวลาที่จะสร้างกล่องดำ จะเป็นบล็อกตามสัญญาณขาเข้าจะประมวลผลข้อมูลและตัดสินใจซื้อขาย แน่นอนว่าจำเป็นต้องสร้างขึ้นโดยเราแทนที่จะเป็นโปรแกรมคอมพิวเตอร์ หลังจากทั้งหมดเพียงอย่างเดียวเราสามารถตัดสินใจเกี่ยวกับเงื่อนไขตามที่ระบบควรทำการค้า นอกจากนี้บล็อกจะต้องแสดงข้อมูลเกี่ยวกับข้อเสนอที่สมบูรณ์ในรูปแบบของสัญญาณ บล็อกที่ต้องการเรียกว่าแผนภูมิและอยู่ในส่วน Stateflow เราได้ทำความคุ้นเคยกับมันแล้วเราไม่ใช้การลากและวางเราย้ายไปยังหน้าต่างโมเดลของเรา รูปที่ 6 บล็อกของระบบย่อยการป้อนข้อมูลและแผนภูมิ Stateflow เปิดแผนภูมิและป้อนข้อมูลของเราลงในไฟล์ ก่อนอื่นขอให้สร้างช่องทางวัตถุตามที่เราได้ทำในระบบย่อย FromWorkspace แต่แตกต่างจากเดิมที่ให้สัญญาณกับเราจากเวิร์คสเปซทำให้เราได้ผลลัพธ์ที่ได้รับ ดังนั้นเราจะเรียกวัตถุ OutputBus องค์ประกอบของมันจะกลายเป็น: barOpen, OpenPrice, TakeProfit, StopLoss, ClosePrice, barClose, Comment, PositionDir, posN, AccountBalance ตอนนี้เราจะเริ่มสร้าง ในหน้าต่างแผนภูมิเราจะแสดงการเปลี่ยนค่าเริ่มต้น (1) สำหรับเงื่อนไขและวิธีการที่เราจะต้องระบุ: เงื่อนไขนี้หมายความว่าข้อมูลจะได้รับการประมวลผลถ้าจำนวนบาร์เข้าอยู่ที่อย่างน้อย 56 รวมทั้งถ้าแถบป้อนข้อมูลสูงกว่าแถบปิดของตำแหน่งก่อนหน้า จากนั้นแถบเปิด (Output.barOpen) จะกำหนดจำนวนแถบที่เข้ามาโดยใช้ดัชนีดัชนี i - ดัชนี (เริ่มจาก 0) และจำนวนตำแหน่งที่เปิดเพิ่มขึ้นเป็น 1 การย้ายครั้งที่ 2 จะดำเนินการ เฉพาะในกรณีที่ตำแหน่งที่เปิดไม่ได้เป็นอันดับแรก มิเช่นนั้นจะมีการดำเนินการการเปลี่ยนแปลงที่สามซึ่งจะกำหนดตัวแปรยอดเงินในบัญชี (Output.AccountBalance) มูลค่า 100000 การดำเนินการย้ายครั้งที่ 4 จะดำเนินการหากแผนภูมิถูกริเริ่มโดยเหตุการณ์ OpenBuy ในกรณีเช่นนี้ตำแหน่งจะถูกสั่งซื้อ (Output.PositionDir 1) ราคาเปิดจะเท่ากับราคาของแถบเปิดโดยคำนึงถึงการแพร่กระจาย (Output.OpenPrice Input.open spread i 1e-5) จะระบุค่าของสัญญาณเอาท์พุท StopLoss และ TakeProfit ด้วย ถ้าเหตุการณ์ OpenSell เกิดขึ้นการไหลจะเป็นไปตามการเปลี่ยนแปลงครั้งที่ 5 และกำหนดค่าสำหรับสัญญาณเอาท์พุท การเปลี่ยนแปลงครั้งที่ 6 จะเกิดขึ้นถ้าตำแหน่งยาวเกินไปมิฉะนั้นการไหลจะไปถึงการเปลี่ยนแปลงที่ 7 การเปลี่ยนแปลงครั้งที่ 8 ตรวจสอบว่าราคาแท่งสูงสุดถึงระดับ Take Profit หรือต่ำกว่าราคาแท่งต่ำสุดถึงระดับ Stop Loss หรือไม่ มิฉะนั้นค่าของตัวแปรดัชนี i จะเพิ่มขึ้นหนึ่ง (การเปลี่ยนที่ 9) การเปลี่ยนแปลงครั้งที่ 10 ตรวจสอบเงื่อนไขที่เกิดขึ้นที่ Stop Loss: ระดับราคาต่ำสุดของแถบได้ข้ามระดับ Stop Loss หากได้รับการยืนยันการไหลจะเป็นไปตามการเปลี่ยนแปลงที่ 11 และจากนั้นไปจนถึงวันที่ 12 ซึ่งกำหนดค่าความแตกต่างของราคาของตำแหน่งการปิดและการเปิดงบดุลดุลบัญชีปัจจุบันและดัชนีของแถบปิด หากการเปลี่ยนแปลงที่ 10 ไม่ได้รับการยืนยันตำแหน่งจะถูกปิดที่ Take Profit (13th transition) จากนั้นในวันที่ 14 การไหลจะเป็นไปตามการเปลี่ยนแปลงที่ 12th ขั้นตอนและเงื่อนไขสำหรับการเปลี่ยนตำแหน่งสั้นเป็นตรงกันข้าม สุดท้ายเราสร้างตัวแปรใหม่ในแผนภูมิ เพื่อที่จะรวมไว้ในโมเดลของเราโดยอัตโนมัติเราจำเป็นต้องเรียกใช้โมเดลโดยตรงในหน้าต่างแผนภูมิโดยคลิกปุ่มเริ่มการจำลอง ดูเหมือนกับปุ่มเล่นบนเครื่องเล่นเพลง ณ จุดนี้ตัวช่วยสร้างสัญลักษณ์แสดงสถานะ (เอสเอฟหลักออบเจ็กต์) จะเปิดขึ้นและจะแนะนำให้บันทึกอ็อบเจ็กต์ที่สร้างไว้ กดปุ่ม SelectAll จากนั้นคลิกปุ่ม Create สร้างวัตถุแล้ว ตอนนี้ให้เปิด Model Browser แล้ว ทางด้านซ้ายให้คลิกที่แผนภูมิในลำดับชั้นของแบบจำลอง ช่วยให้สามารถจัดเรียงวัตถุตามชนิดข้อมูล (DataType) เพิ่มข้อมูลเพิ่มเติมโดยใช้คำสั่ง Add and Data menu เรียกตัวแปร Input ตัวแรกได้ดี เปลี่ยนค่าของ Scopes to Input และ Type-to Bus: ltbus object name จากนั้นป้อนชื่อช่องที่สร้างขึ้นก่อนหน้านี้ InputBus ลงในฟิลด์นี้ ดังนั้นตัวแปร Input ของเราจะมีประเภท InputBus ให้ตั้งค่าพอร์ตหนึ่ง ดำเนินการเดียวกันกับตัวแปรเอาต์พุต ต้องมีขอบเขตเอาต์พุตและประเภทบัสเอาต์พุตเท่านั้น ให้เปลี่ยนขอบเขตสำหรับตัวแปร high, low, sl, tp และกระจายไปยังค่า Input ตามลำดับเราจะกำหนดหมายเลขพอร์ตตามลำดับต่อไปนี้ 3, 4, 6, 5, 2 นอกจากนี้ให้เปลี่ยนขอบเขตของตัวแปรจำนวนเป็นค่าคงที่ ในแท็บแอตทริบิวต์ค่าอนุญาตอินพุท 1 เหตุการณ์ OpenBuy และ OpenSell - สำหรับป้อนข้อมูลลงในฟิลด์เริ่มต้น (ทางด้านขวา) ในเหตุการณ์เปลี่ยนค่าทริกเกอร์สำหรับการเรียกฟังก์ชัน) สร้างตัวแปร len ภายในด้วยขอบเขต Constant ในแท็บแอตทริบิวต์ค่าในฟิลด์ค่าเริ่มต้นป้อนข้อมูลความยาวของ m-function (ปิด) ดังนั้นมันจะเท่ากับความยาวของอาร์เรย์ใกล้เคียงซึ่งอยู่ในพื้นที่ทำงานของ Matlab สำหรับตัวแปรสูงและต่ำให้ป้อนค่า len 1 ลงในฟิลด์ Size ดังนั้นในหน่วยความจำเราสงวนขนาดอาร์เรย์ของสูงและต่ำเป็นค่า len 1 นอกจากนี้ให้ระบุตัวแปร K ในแท็บแอตทริบิวต์ค่าในฟิลด์ค่าเริ่มต้น (ทางด้านขวา) ตัวแปรจริง ของ K นำมาจากพื้นที่ทำงาน ดังนั้นเราจึงมีระบบย่อย Chart ซึ่งมีพอร์ตอินพุต 7 พอร์ตและพอร์ตเอาท์พุทหนึ่งพอร์ต อนุญาตให้วางตำแหน่งบล็อกไว้ในลักษณะดังกล่าวเพื่อให้พอร์ตอินพุต () อยู่ที่ด้านล่าง เปลี่ยนชื่อบล็อกการจัดการตำแหน่ง ในแผนภูมิตัวเองดียังแสดงชื่อของบล็อก รวมบล็อกของระบบย่อย FromWorkspace และการจัดการตำแหน่งผ่านทางพอร์ตที่เหมาะสม และเปลี่ยนสีของบล็อก ต้องสังเกตว่าระบบจัดการตำแหน่งจะใช้งานได้เฉพาะเมื่อได้รับการปลุกให้ตื่นจากเหตุการณ์ OpenBuy หรือ OpenSell ที่เข้ามา ด้วยวิธีนี้เราจะเพิ่มประสิทธิภาพการทำงานของระบบย่อยเพื่อหลีกเลี่ยงการคำนวณที่ไม่จำเป็น จากนั้นเราจะต้องสร้างระบบย่อยเพื่อพิมพ์ผลการประมวลผลในพื้นที่ทำงาน Matlab และรวมเข้ากับระบบย่อยการจัดการตำแหน่ง มันจะเป็นงานที่ง่ายที่สุด ให้สร้างระบบย่อย ToWorkspace เพื่อรับผลลัพธ์ในพื้นที่ทำงาน ทำซ้ำขั้นตอนที่เราทำเมื่อเราสร้างระบบย่อย FromWorkspace ในเบราว์เซอร์ของห้องสมุดให้เลือกส่วนระบบย่อย Simulink Ports amp Subsystems ใช้เมาส์ลากไฟล์ย่อยในหน้าต่างจำลองของ Simulink เปลี่ยนชื่อเป็น ToWorkspace โดยคลิกที่ระบบย่อย รวมบล็อกกับระบบย่อยการจัดการตำแหน่ง เพื่อที่จะสร้างตัวแปรเข้าสู่ระบบโดยการดับเบิลคลิกที่บล็อกด้วยปุ่มซ้ายของเมาส์เนื่องจากระบบย่อยจะได้รับข้อมูลจากอ็อบเจกต์ OutputBus ซึ่งเป็นบัสแบบ nonvirtual แล้วเราจำเป็นต้องเลือกสัญญาณจากช่องนี้ . ในการดำเนินการนี้เราจะเลือกส่วนของบล็อกที่ใช้บ่อยของ Simulink ในเบราเซอร์ของห้องสมุดและเพิ่มตัวเลือกบัส บล็อกจะมีอินพุท 1 และสัญญาณเอาท์พุท 2 เอาต์พุตในขณะที่เราต้องมี 10 สัญญาณดังกล่าว ให้เชื่อมต่อบล็อกกับพอร์ตอินพุท กดปุ่มเริ่มการจำลอง (นี่คือปุ่ม Play ของเรา) คอมไพเลอร์จะเริ่มสร้างโมเดล จะสร้างไม่สำเร็จ แต่จะสร้างสัญญาณอินพุทสำหรับบัสเลือก ถ้าเราเข้าไปในบล็อกเราจะเห็นสัญญาณที่ต้องการปรากฏทางด้านซ้ายมือของหน้าต่างซึ่งจะถูกส่งผ่านทาง OutputBus พวกเขาทั้งหมดต้องได้รับการคัดเลือกโดยใช้ปุ่มเลือกและย้ายไปทางด้านขวา - สัญญาณที่เลือก รูปที่ 8. พารามิเตอร์ของตัวเลือก Bus Selector ให้เราดูหมวดบล็อกที่ใช้กันทั่วไปในเบราว์เซอร์ของไลบรารี Simulink อีกครั้งและเพิ่มบล็อก multiplex ของ Mux แสดงจำนวนอินพุทซึ่งเท่ากับ 10 จากนั้นเข้าสู่ Sinks ส่วนของ Browser Simulink Library และย้าย ToWorkspace block ไปยังหน้าต่างย่อย ในนั้นเราจะระบุชื่อใหม่ของ AccountBalance แบบผันแปรและเปลี่ยนรูปแบบเอาต์พุต (บันทึกรูปแบบ) จากโครงสร้างเป็น Array รวมบล็อกกับ multiplex ลบพอร์ตเอาต์พุตเนื่องจากไม่จำเป็นต้องใช้อีกต่อไป กำหนดสีของบล็อก บันทึกหน้าต่าง ระบบย่อยพร้อมแล้ว ก่อนที่จะสร้างแบบจำลองเราควรตรวจสอบการปรากฏตัวของตัวแปรในพื้นที่ทำงาน ตัวแปรต่อไปนี้ต้องมีอยู่: InputBus, K, OutputBus, close, ema21, ema55, สูง, ต่ำ, num, เปิด, sl, spread, tp ให้ตั้งค่า Stop Time เป็นพารามิเตอร์เพื่อกำหนด num (end) ความหมายเวกเตอร์ที่ประมวลผลจะมีความยาวซึ่งกำหนดโดยองค์ประกอบสุดท้ายของอาร์เรย์ num ก่อนที่จะเริ่มสร้างโมเดลเราจำเป็นต้องเลือกคอมไพเลอร์โดยใช้คำสั่งต่อไปนี้: โปรดเลือกคอมไพเลอร์สำหรับสร้างไฟล์อินเตอร์เฟซภายนอก (MEX): คุณต้องการให้ mex ค้นหาคอมไพเลอร์ติดตั้ง yny เลือกคอมไพเลอร์: 1 Lcc-win32 C 2.4 .1 ใน C: PROGRA 2MATLABR2010asyslcc 2 Microsoft Visual C 2008 SP1 ใน C: แฟ้มโปรแกรม (x86) Microsoft Visual Studio 9.0 0 ไม่มีตามที่คุณสามารถดูฉันเลือก Microsoft Visual C 2008 compiler SP1 ให้เริ่มสร้าง กดปุ่มเริ่มการจำลอง เกิดข้อผิดพลาด: Stateflow Interface Error: ไม่ตรงกันของความกว้างพอร์ต การแพร่กระจายอินพุท (139) คาดว่าจะเป็นสเกลาร์ สัญญาณเป็นเวกเตอร์แบบหนึ่งมิติที่มีองค์ประกอบ 59739 การแพร่กระจายตัวแปรไม่ควรมีประเภท double แต่สืบทอด type จากสัญญาณจาก Simulink ในเบราเซอร์รุ่นสำหรับตัวแปรนี้เราระบุสืบทอด: เหมือนกับ Simulink และในฟิลด์ Size และระบุ -1 บันทึกการเปลี่ยนแปลง ให้ใช้โมเดลอีกครั้ง ตอนนี้คอมไพเลอร์ทำงาน จะแสดงคำเตือนเล็กน้อย และในเวลาไม่ถึง 40 วินาทีรุ่นจะประมวลผลข้อมูลเกือบ 60,000 บาร์ การค้าดำเนินการตั้งแต่ 2001.01.01 00:00 ถึง 2010 .08.16 11:00 จำนวนตำแหน่งงานที่เปิดอยู่ทั้งหมดคือ 461 คุณสามารถดูได้ว่ารูปแบบการทำงานของรูปแบบใดในคลิปต่อไปนี้ 4. การใช้กลยุทธ์ใน MQL5 และเพื่อให้ระบบการซื้อขายอัตโนมัติของเราได้รับการรวบรวมไว้ใน Simulink ตอนนี้เราจำเป็นต้องถ่ายโอนแนวคิดการซื้อขายนี้ไปสู่สภาพแวดล้อม MQL5 เราต้องรับมือกับกลุ่มและวัตถุต่างๆของ Simulink โดยที่เราได้แสดงเหตุผลของผู้เชี่ยวชาญด้านการซื้อขายของเรา งานปัจจุบันคือการโอนระบบการซื้อขายตรรกะไปยัง MQL5 Expert Advisor อย่างไรก็ตามควรสังเกตว่าบางบล็อกไม่จำเป็นต้องอยู่ในลักษณะที่กำหนดไว้ในรหัส MQL5 เนื่องจากหน้าที่ของตนอาจถูกซ่อนอยู่ ฉันจะพยายามแสดงความคิดเห็นกับจำนวนรายละเอียดสูงสุดเกี่ยวกับบรรทัดที่เกี่ยวข้องกับบล็อกใดในโค้ดจริง บางครั้งความสัมพันธ์นี้อาจเป็นทางอ้อม และบางครั้งก็สามารถสะท้อนถึงการเชื่อมต่ออินเตอร์เฟซของบล็อกหรือวัตถุ ก่อนที่จะเริ่มหัวข้อนี้ให้ฉันวาดความสนใจของคุณไปยังบทความคำแนะนำทีละขั้นตอนเพื่อเขียนที่ปรึกษาผู้เชี่ยวชาญใน MQL5 สำหรับผู้เริ่มต้นใช้งาน บทความนี้ให้คำอธิบายที่เข้าใจง่ายเกี่ยวกับแนวคิดหลักและกฎพื้นฐานในการเขียนที่ปรึกษาผู้เชี่ยวชาญใน MQL5 แต่ตอนนี้ฉันจะไม่ได้อยู่กับพวกเขา ฉันจะใช้บรรทัดของรหัส MQL5 จากที่นั่น 4.1 FromWorkspace Subsystem ตัวอย่างเช่นเรามีบล็อคเปิดอยู่ในระบบย่อย FromWorkspace ใน Simulink จำเป็นต้องใช้เพื่อให้ได้ราคาเปิดบาร์ระหว่างการทำ backtesting และเปิดตำแหน่งในราคานี้ในกรณีที่ได้รับสัญญาณการซื้อขาย บล็อกนี้ไม่มีอยู่ในโค้ด MQL5 เนื่องจากผู้เชี่ยวชาญที่ปรึกษาขอข้อมูลราคาทันทีหลังจากได้รับสัญญาณการซื้อขาย ในที่ปรึกษาผู้เชี่ยวชาญเราจะต้องประมวลผลข้อมูลที่ได้รับจากค่าเฉลี่ยเคลื่อนที่ ดังนั้นเราจะสร้างอาร์เรย์แบบไดนามิกและตัวแปรเสริมที่เกี่ยวข้องเช่นที่จับ สายอื่น ๆ ทั้งหมดซึ่งมีผลต่อการเคลื่อนย้าย ema21 และ ema55 อาจถือได้ว่าเป็นอุปกรณ์เสริม Take Profit และ Stop Loss หมายถึงตัวแปรอินพุต: โดยคำนึงถึงตัวเลขที่มีนัยสำคัญ 5 หลักสำหรับ EURUSD มูลค่าของ TakeProfit และ StopLoss จะต้องอัพเดตในลักษณะต่อไปนี้: อาร์เรย์ที่มีการแพร่กระจายสูงและต่ำจะใช้เพื่อให้บริการ เนื่องจากพวกเขามีหน้าที่รับผิดชอบในการจัดหาข้อมูลในอดีตในรูปแบบของข้อมูลราคาที่เกี่ยวข้องเพื่อระบุเงื่อนไขการค้า ไม่ได้ระบุไว้อย่างชัดเจนในโค้ด อย่างไรก็ตามอาจเป็นที่ถกเถียงกันอยู่ว่าอาร์เรย์การแพร่กระจายตัวอย่างเช่นเป็นสิ่งจำเป็นเพื่อสร้างกระแสราคา และอีกสองข้อจำเป็นสำหรับกำหนดเงื่อนไขสำหรับการปิดตำแหน่งซึ่งไม่ได้ระบุไว้ในโค้ดเนื่องจากจะมีการดำเนินการโดยอัตโนมัติใน MetaTrader 5 เมื่อเข้าถึงระดับราคาหนึ่ง ๆ บล็อกสัญญาณ num เป็นส่วนเสริมและไม่ปรากฏในรหัสของ Expert Advisor บล็อคที่แตกต่างกันของ emas จะตรวจสอบเงื่อนไขในการเปิดตำแหน่งสั้นหรือยาวโดยค้นหาความแตกต่าง K Delay สร้างความล่าช้าสำหรับอาร์เรย์ซึ่งค่าเฉลี่ยของค่า K. มีการสร้างเหตุการณ์ Buy หรือ Sell ซึ่งเป็นเหตุการณ์ที่ป้อนเข้าสำหรับระบบย่อยการเปิดตำแหน่ง ระบบจะสร้าง OpenBuy และ OpenSell เองซึ่งจะประมวลผลในระบบย่อยการจัดการตำแหน่งโดยใช้เงื่อนไขและขั้นตอน 4.2 การจัดการตำแหน่งระบบย่อยระบบย่อยเริ่มทำงานโดยการประมวลผลเหตุการณ์ OpenBuy OpenSell สำหรับการเปลี่ยนครั้งแรกของระบบย่อยหนึ่งเงื่อนไขคือการปรากฏตัวของไม่น้อยกว่า 56 บาร์ที่ระบุไว้ในรหัสผ่านการตรวจสอบเงื่อนไขดังกล่าวเงื่อนไขที่สองสำหรับการเปลี่ยนแปลง: จำนวนบาร์เปิดจะต้อง สูงกว่าที่แถบปิด (Input.num Output.barClose) เช่นตำแหน่งถูกปิด ในโค้ดจะมีการระบุดังนี้การเปลี่ยนที่ 4 เป็นหน้าที่ในการเปิดตำแหน่งที่ยาว การเปลี่ยนแปลงที่ 5 มีหน้าที่ในการเปิดตำแหน่งสั้น ๆ เนื่องจากขั้นตอนที่เหมาะสม (การเปิดใช้งานการหยุดทำงานหรือการบรรลุระดับ Take Profit) จะดำเนินการโดยอัตโนมัติใน MQL5 The ToWorkspace subsystem is not represented in the MQL5 code because its task is to present the output into the Matlab Workspaces. Conclusions Using a simple trading idea as an example, I have created the automated trading system in Simulink, in which I carried out a backtesting on historical data. At first I was bothered by the question: Is there a point in getting involved with all of this fuss when you can quickly implement a trading system through the MQL5 code Of course, you can do it without the visualization of the process of creating the system and the logic of its work. But most often than not, this is only for experienced programmers or simply talented people. When the trading system extends with new conditions and functions, the presence of the block diagram and its work will clearly the traders task. I would also like to mention that I did not try to oppose the Simulink language capabilities against the MQL5 language. I merely illustrated how you can create an automated trading system using a block design. Maybe, in the future, the MQL5 developers will create a visual constructor of strategies, which will facilitate the process of writing Expert Advisors.Automated Trading System Development with MATLAB Stuart Kozola, MathWorks Want to learn how to create an automated trading system that can handle multiple trading accounts, multiple asset classes, and trade across multiple trading venues Simultaneously In this webinar we will present an example workflow for researching, implementing, testing and deploying an automated trading strategy providing maximum flexibility in what and who you trade with. คุณจะได้เรียนรู้ว่าผลิตภัณฑ์ของ MATLAB สามารถนำมาใช้ในการรวบรวมข้อมูลการวิเคราะห์ข้อมูลและการสร้างภาพการพัฒนาโมเดลและการสอบเทียบการทำ backtesting การเดินไปข้างหน้าการทดสอบรวมกับระบบที่มีอยู่และใช้งานได้จริงในการซื้อขายแบบเรียลไทม์ เรามองไปที่แต่ละส่วนของกระบวนการนี้และดูว่า MATLAB เป็นแพลตฟอร์มเดียวที่ช่วยให้สามารถแก้ปัญหาได้ทุกส่วนของปัญหานี้ได้อย่างไร การสร้างโมเดลและการสร้างต้นแบบใน MATLAB การทำ Backtesting และการปรับเทียบรูปแบบการเดินหน้าทดสอบและการตรวจสอบแบบจำลองการโต้ตอบกับไลบรารีและซอฟต์แวร์ที่มีอยู่เพื่อการค้าการปรับใช้โปรแกรมประยุกต์ขั้นสุดท้าย ในหลายสภาพแวดล้อมรวมถึง JAVA และ Excel Tools สำหรับการซื้อขายความถี่สูง ได้แก่ การคำนวณแบบขนาน GPUs และการสร้างโค้ด C จาก MATLAB Product Focus เลือกการพัฒนาระบบการซื้อขายภาครัฐที่พัฒนาโดย MATLAB Stuart Kozola, MathWorks ต้องการเรียนรู้วิธีการสร้าง ระบบการซื้อขายอัตโนมัติที่สามารถจัดการกับบัญชีการค้าหลายประเภทสินทรัพย์หลายประเภทและการค้าขายในสถานที่จัดงานหลายแห่งได้พร้อม ๆ กันในการสัมมนาทางเว็บนี้เราจะนำเสนอเวิร์กโฟลว์ตัวอย่างสำหรับการค้นคว้าการใช้การทดสอบและการปรับใช้กลยุทธ์การซื้อขายอัตโนมัติให้ความยืดหยุ่นสูงสุดในสิ่งที่และใคร คุณค้ากับ คุณจะได้เรียนรู้ว่าผลิตภัณฑ์ของ MATLAB สามารถนำมาใช้ในการรวบรวมข้อมูลการวิเคราะห์ข้อมูลและการสร้างภาพการพัฒนาโมเดลและการสอบเทียบการทำ backtesting การเดินไปข้างหน้าการทดสอบรวมกับระบบที่มีอยู่และใช้งานได้จริงในการซื้อขายแบบเรียลไทม์ เรามองไปที่แต่ละส่วนของกระบวนการนี้และดูว่า MATLAB เป็นแพลตฟอร์มเดียวที่ช่วยให้สามารถแก้ปัญหาได้ทุกส่วนของปัญหานี้ได้อย่างไร การสร้างโมเดลและการสร้างต้นแบบใน MATLAB การทำ Backtesting และการปรับเทียบรูปแบบการเดินหน้าทดสอบและการตรวจสอบแบบจำลองการทำงานร่วมกับไลบรารีและซอฟต์แวร์ที่มีอยู่เพื่อการค้าการปรับใช้โปรแกรมประยุกต์ขั้นสุดท้าย ในหลายสภาพแวดล้อม ได้แก่ JAVA และ Excel Tools สำหรับการซื้อขายความถี่สูง ได้แก่ การคำนวณแบบขนาน GPUs และการสร้างรหัส C จาก MATLAB Product Focus เลือกประเทศของคุณ
ที่ดีที่สุด   Forex   ซื้อขาย ชั่วโมง ออสเตรเลีย
Forex- องค์กร   Sdn   Bhd - อาชีพ