MetaTrader 4 - ผู้เชี่ยวชาญด้านการเคลื่อนที่โดยเฉลี่ย - ผู้เชี่ยวชาญด้าน MetaTrader 4 ผู้เชี่ยวชาญด้านการย้ายค่าเฉลี่ยสำหรับการสร้างสัญญาณการค้าใช้ค่าเฉลี่ยเคลื่อนที่หนึ่งค่า การเปิดและปิดตำแหน่งจะดำเนินการเมื่อค่าเฉลี่ยเคลื่อนที่ตรงกับราคาที่แถบที่เพิ่งมีการสร้าง (ดัชนีแท่งเท่ากับ 1) ขนาดจำนวนมากจะได้รับการปรับให้เหมาะสมตามอัลกอริทึมพิเศษ ที่ปรึกษาผู้เชี่ยวชาญวิเคราะห์ความสอดคล้องกันของค่าเฉลี่ยเคลื่อนที่และแผนภูมิราคาในตลาด การตรวจสอบทำได้โดยใช้ฟังก์ชัน CheckForOpen () ถ้าค่าเฉลี่ยเคลื่อนที่ตรงแถบไปในทางที่อดีตสูงกว่าราคาเปิด แต่ต่ำกว่าราคาปิดจะมีการเปิดสถานะซื้อ หากค่าเฉลี่ยเคลื่อนที่ตรงแถบตามวิธีที่อดีตต่ำกว่าราคาเปิด แต่สูงกว่าราคาปิดจะมีการเปิดสถานะขาย การจัดการด้านการเงินที่ใช้ในผู้เชี่ยวชาญทำได้ง่ายมาก แต่มีประสิทธิภาพ: การควบคุมปริมาณตำแหน่งแต่ละครั้งขึ้นอยู่กับผลการดำเนินการก่อนหน้านี้ อัลกอริธึมนี้ถูกใช้โดยฟังก์ชัน LotsOptimized () ขนาดล็อตพื้นฐานจะคำนวณตามความเสี่ยงที่อนุญาตสูงสุด: พารามิเตอร์ MaximumRisk จะแสดงเปอร์เซ็นต์ความเสี่ยงขั้นพื้นฐานสำหรับแต่ละธุรกรรม มักมีค่าระหว่าง 0.01 (1) ถึง 1 (100) ตัวอย่างเช่นถ้า Free Margin (AccountFreeMargin) เท่ากับ 20,500 และกฎการจัดการเงินทุนกำหนดให้ใช้ความเสี่ยงของ 2 จำนวนล็อตพื้นฐานจะทำให้ 20500 0.02 1000 0.41 การควบคุมความถูกต้องของขนาดของล็อตเป็นสิ่งสำคัญมากและทำให้ผลลัพธ์เป็นไปตามปกติโดยมีค่าที่ยอมรับได้ โดยปกติจะอนุญาตให้เศษส่วนที่มีขั้นตอนที่ 0.1 ขึ้นไป ธุรกรรมที่มีปริมาณ 0.41 จะไม่ถูกดำเนินการ NormalizeDouble () ใช้ฟังก์ชันความถูกต้องไม่เกิน 1 ตัวหลังจากจุด ซึ่งส่งผลให้จำนวนพื้นฐานของ 0.4 การคำนวณล็อตล็อตพื้นฐานบนพื้นฐานของอัตรากำไรฟรีช่วยให้สามารถเพิ่มปริมาณการดำเนินงานได้ขึ้นอยู่กับความสำเร็จในการซื้อขายเช่นการค้ากับ reinvesting นี่คือกลไกพื้นฐานที่มีการจัดการเงินทุนที่จำเป็นเพื่อเพิ่มประสิทธิภาพในการซื้อขาย DecreaseFactor คือขอบเขตที่ขนาดของล็อตจะลดลงหลังจากการซื้อขายที่ไม่มีประโยชน์ ค่าปกติคือ 2,3,4,5 หากการทำธุรกรรมก่อนหน้านี้ไม่ทำกำไรปริมาณที่ตามมาจะลดลงตามปัจจัย DecreaseFactor เพื่อรอช่วงที่ไม่สามารถทำกำไรได้ นี่คือปัจจัยหลักในขั้นตอนวิธีการจัดการทุน ความคิดนี้ง่ายมาก: ถ้าการซื้อขายประสบความสำเร็จเพิ่มขึ้นผู้เชี่ยวชาญจะทำงานร่วมกับข้อมูลพื้นฐานที่ทำกำไรสูงสุด หลังจากการทำธุรกรรมที่ไม่มีประโยชน์ครั้งแรกผู้เชี่ยวชาญจะลดความเร็วจนกว่าจะมีการทำรายการใหม่ที่เป็นบวก อัลกอริธึมช่วยให้สามารถลดความเร็วได้โดยทำอย่างใดอย่างหนึ่งต้องระบุ DecreaseFactor 0 จำนวนธุรกรรมที่ไม่สามารถทำกำไรครั้งล่าสุดได้รับการคำนวณในประวัติการค้า จำนวนขั้นพื้นฐานจะถูกคำนวณใหม่บนพื้นฐานนี้ดังนั้นอัลกอริธึมจึงช่วยให้สามารถลดความเสี่ยงที่เกิดขึ้นได้อย่างมีประสิทธิภาพอันเนื่องมาจากการทำรายการที่ไม่ก่อให้เกิดประโยชน์จำนวนมากต้องได้รับการตรวจสอบขนาดล็อตที่อนุญาตต่ำสุดเมื่อสิ้นสุดการทำงานเนื่องจาก การคำนวณที่ทำไว้ก่อนหน้านี้อาจส่งผลให้เกิดข้อผิดพลาด 0: ผู้เชี่ยวชาญส่วนใหญ่มีไว้สำหรับการทำงานกับช่วงเวลารายวันและในโหมดการทดสอบ - สำหรับการทำในราคาที่ใกล้เคียง มันจะค้าเฉพาะที่เปิดบาร์ใหม่นั่นคือเหตุผลที่โหมดของการทำแบบจำลองทุกติ๊กไม่จำเป็นต้อง ผลการทดสอบแสดงไว้ในรายงานปัญหาที่พบบ่อยของผู้เชี่ยวชาญ 29 ปัญหาการสร้างที่ปรึกษาผู้เชี่ยวชาญด้านการซื้อขาย อาร์กิวเมนต์เบื้องต้นก่อนที่จะเริ่มจัดโปรแกรม Expert Advisor การซื้อขายจะต้องมีการกำหนดหลักการทั่วไปของโปรแกรมในอนาคต ไม่มีกฎการสร้างกฎอย่างเข้มงวด อย่างไรก็ตามเมื่อมีการสร้างโปรแกรมโปรแกรมเมอร์มักจะปรับปรุงอย่างต่อเนื่อง เพื่อให้เข้าใจได้ง่ายขึ้นในอนาคตโปรแกรมจะต้องถูกสร้างขึ้นตามแนวคิดที่มีความคิดและเข้าใจได้ง่าย (เป็นสิ่งสำคัญอย่างยิ่งหากโปรแกรมนี้ได้รับการปรับปรุงโดยโปรแกรมอื่น) โปรแกรมที่สะดวกที่สุดคือโปรแกรมที่ประกอบไปด้วยบล็อคการทำงานซึ่งแต่ละส่วนมีหน้าที่รับผิดชอบในการคำนวณ เพื่อสร้างอัลกอริทึมของ Expert Advisor เพื่อช่วยในการวิเคราะห์ว่าโปรแกรมปฏิบัติการควรทำอย่างไร หนึ่งในข้อมูลที่สำคัญที่สุดในการสร้างใบสั่งทางการค้าคือข้อมูลเกี่ยวกับใบสั่งซื้อที่มีอยู่แล้วในเทอร์มินัลไคลเอ็นต์ กลยุทธ์การซื้อขายบางส่วนอนุญาตให้ใช้ใบเดียวได้ โดยทั่วไปหากกลยุทธ์การซื้อขายอนุญาตให้เปิดคำสั่งซื้อหลายรายการในเทอร์มินอลได้ในเวลาเดียวกันแม้ว่าจำนวนดังกล่าวจะมี จำกัด เมื่อใช้กลยุทธ์ใด ๆ การตัดสินใจทางการค้าควรทำโดยคำนึงถึงสถานการณ์ปัจจุบัน ก่อนที่จะมีการตัดสินใจทางการค้าในโปรแกรมคุณจำเป็นต้องทราบว่ามีการเปิดหรือวางคำสั่งซื้อขายหลักทรัพย์ใดบ้าง ประการแรกโปรแกรมต้องมีกลุ่มของคำสั่งการบัญชีซึ่งเป็นหนึ่งในคนแรกที่จะดำเนินการ ในระหว่างการดำเนินการซื้อขายของอีเอจะต้องมีการดำเนินการซึ่งการดำเนินการดังกล่าวจะนำไปสู่การดำเนินการทางการค้า ส่วนรหัสที่รับผิดชอบในการสร้างใบสั่งทางการค้าดีกว่าในบล็อกที่แยกต่างหาก ที่ปรึกษาผู้เชี่ยวชาญสามารถสร้างคำขอซื้อขายสินค้าเพื่อเปิดคำสั่งซื้อใหม่หรือรอการขายปิดหรือปรับเปลี่ยนคำสั่งซื้อที่มีอยู่หรือดำเนินการใด ๆ ได้เลย EA ต้องคำนวณราคาสั่งซื้อขึ้นอยู่กับความต้องการของผู้ใช้ การตัดสินใจทางการค้าควรทำขึ้นในโปรแกรมตามเกณฑ์การค้า ความสำเร็จของโปรแกรมทั้งหมดขึ้นอยู่กับความถูกต้องของการตรวจจับเกณฑ์ทางการค้าในโปรแกรม เมื่อคำนวณเกณฑ์ทางการค้าโปรแกรมสามารถ (และต้อง) คำนึงถึงข้อมูลทั้งหมดที่เป็นประโยชน์ ตัวอย่างเช่นที่ปรึกษาผู้เชี่ยวชาญสามารถวิเคราะห์การรวมกันของค่าตัวบ่งชี้ทางเทคนิคเวลาของข่าวประชาสัมพันธ์ที่สำคัญเวลาปัจจุบันค่าของระดับราคาบางอย่าง ฯลฯ เพื่อความสะดวกส่วนโปรแกรมที่รับผิดชอบในการคำนวณเกณฑ์การซื้อขายควรจะเขียนแยกต่างหาก กลุ่ม ที่ปรึกษาผู้เชี่ยวชาญด้านการค้าจำเป็นต้องมีบล็อกการประมวลผลข้อผิดพลาด การวิเคราะห์ข้อผิดพลาดที่อาจเกิดขึ้นในการดำเนินการด้านการค้าช่วยให้ในด้านหนึ่งสามารถทำซ้ำคำขอซื้อขายและในทางกลับกันเพื่อแจ้งให้ผู้ใช้ทราบเกี่ยวกับสถานการณ์ความขัดแย้งที่เป็นไปได้ โครงสรางของที่ปรึกษาวิเคราะหแบบอยางนางตอไปนี้คือโครงสรางโครงสรางของที่ปรึกษาของผู้เชี่ยวชาญอยางเรียบง่ายที่สรางขึ้นบนพื้นฐานของบล็อคการทํางานหลายอยางในแตละบล็อก ในขั้นตอนการพัฒนา EA ต่อไปนี้ยังไม่มีรหัสโปรแกรม ในขณะเดียวกันอัลกอริธึมของโปรแกรมก็มีอยู่อย่างมาก วิธีการสร้างอีเอบนพื้นฐานของโครงการที่เสนอจะดำเนินการได้ง่ายเพียงแค่มองหาในโครงการและ orienting เมื่อชื่อบล็อกและอาร์เรย์ความสัมพันธ์ (ควบคุมผ่าน) ระหว่างพวกเขา หลังจากเริ่มต้นการควบคุมโปรแกรมจะส่งผ่านไปยังบล็อกของการประมวลผลเบื้องต้น ในบล็อกนี้พารามิเตอร์ทั่วไปบางอย่างสามารถวิเคราะห์ได้ ตัวอย่างเช่นหากมีแถบไม่เพียงพอในหน้าต่าง (แถบที่จำเป็นสำหรับการคำนวณพารามิเตอร์ของตัวชี้วัดทางเทคนิค) EA จะไม่สามารถทำงานได้อย่างเพียงพอ ในกรณีเช่นนี้อีเอต้องยกเลิกการดำเนินการเบื้องต้นแจ้งผู้ใช้เกี่ยวกับเรื่องนี้และรายงานเกี่ยวกับสาเหตุของการยกเลิก ถ้าไม่มี contraindicatons ของตัวอักษรทั่วไปการควบคุมจะถูกส่งไปยังบล็อกการสั่งซื้อ ในกลุ่มของใบสั่งทางบัญชีจำนวนและคุณภาพของใบสั่งซื้อที่มีอยู่ในเทอร์มินัลไคลเอ็นต์สำหรับการรักษาความปลอดภัย (ไปยังหน้าต่างที่มีการแนบ EA) ในคำสั่งบล็อกของหลักทรัพย์อื่น ๆ ต้องถูกตัดออก หากกลยุทธ์การซื้อขายตามแผนต้องใช้เฉพาะใบสั่งซื้อของตลาด (และไม่ใช้คำสั่งซื้อที่รอดำเนินการ) ต้องตรวจพบความเป็นจริงของการปรากฏตัวของคำสั่งซื้อที่รอดำเนินการ หากกลยุทธ์ยอมรับคำสั่งตลาดเพียงอย่างเดียวและมีคำสั่งซื้ออยู่หลายคำแล้วความเป็นจริงนี้ควรได้รับทราบด้วย งานของกลุ่มการบัญชีใบสั่งซื้อ (ในโครงการนี้) คือการกำหนดว่าสถานการณ์การค้าในปัจจุบันสอดคล้องกับสิ่งที่คาดหมายไว้หรือไม่เช่นว่าอีเอสามารถดำเนินการได้อย่างเหมาะสม ถ้าสถานการณ์สอดคล้องการควบคุมจะต้องถูกส่งผ่านไปยังบล็อกถัดไปเพื่อดำเนินการต่อการดำเนินงานของ EAs ถ้าไม่การดำเนินการของ EAs ต้องถูกยกเลิกและความเป็นจริงนี้จะต้องรายงานให้กับผู้ใช้ หากไม่มีคำสั่งใน terminal หรือจำนวนและคุณภาพของคำสั่งที่มีอยู่สอดคล้องกับสิ่งที่คาดหวังไว้การควบคุมจะถูกส่งไปยังกลุ่มของการกำหนดเกณฑ์การซื้อขาย ในเกณฑ์นี้เกณฑ์ทั้งหมดที่จำเป็นสำหรับการตัดสินใจทางการค้า ได้แก่ เกณฑ์ในการเปิดปิดและแก้ไขคำสั่งซื้อ การควบคุมเพิ่มเติมจะถูกส่งผ่านไปยังกลุ่มคำสั่งปิด มันง่ายที่จะเข้าใจว่าทำไมในโครงการที่เสนอ block ของคำสั่งปิดจะถูกดำเนินการเร็วกว่าบล็อกของการเปิดคำสั่ง การประมวลผลใบสั่งซื้อที่มีอยู่ครั้งแรก (ปิดหรือแก้ไขแล้ว) เป็นเรื่องที่สมเหตุสมผลมากขึ้นและหลังจากนั้นเท่านั้นที่จะเปิดคำสั่งซื้อใหม่ โดยทั่วไปมันถูกต้องที่จะแนะนำโดยความปรารถนาที่จะมีคำสั่งซื้อน้อยที่สุดเท่าที่เป็นไปได้ ในระหว่างการดำเนินการของบล็อกนี้ใบสั่งซื้อทั้งหมดที่ปิดใช้เกณฑ์การปิดบัญชีต้องปิดอยู่ หลังจากปิดคำสั่งซื้อที่จำเป็นแล้วระบบจะส่งการควบคุมไปยังกลุ่มการคำนวณขนาดคำสั่งใหม่ มีหลายขั้นตอนสำหรับการคำนวณปริมาณการสั่งซื้อ ที่ง่ายที่สุดของพวกเขาคือการใช้คงที่ขนาดล็อตถาวร สะดวกในการใช้อัลกอริธึมนี้ในโปรแกรมสำหรับการทดสอบกลยุทธ์ วิธีที่นิยมใช้ในการกำหนดขนาดใบสั่งคือการกำหนดจำนวนล็อตขึ้นอยู่กับจำนวนเงินที่ว่างเช่น 30-40 ของจำนวนเงิน หากอัตรากำไรฟรีไม่เพียงพอโปรแกรมจะยุติการดำเนินงานโดยแจ้งผู้ใช้เกี่ยวกับเหตุผล หลังจากมีการกำหนดจำนวนล็อตสำหรับการเปิดคำสั่งซื้อใหม่การควบคุมจะถูกส่งผ่านไปยังบล็อกการสั่งซื้อ หากเกณฑ์ใด ๆ ที่คำนวณได้ก่อนหน้านี้ชี้ไปที่ความจำเป็นในการเปิดคำสั่งซื้อของบางประเภทคำขอการค้าเพื่อเปิดคำสั่งซื้อจะถูกสร้างขึ้นในบล็อกนี้ นอกจากนี้ยังมีข้อผิดพลาดในการวิเคราะห์บล็อกในที่ปรึกษาผู้เชี่ยวชาญ หากการดำเนินการทางการค้าล้มเหลวการควบคุม (เฉพาะในกรณีนี้) จะถูกส่งผ่านไปยังบล็อกการประมวลผลข้อผิดพลาด หากข้อผิดพลาดที่ส่งกลับโดยเซิร์ฟเวอร์หรือเทอร์มินัลไคลเอ็นต์ไม่สำคัญอย่างใดอย่างหนึ่งจะมีการพยายามดำเนินการทางการค้ามากกว่าหนึ่งครั้ง หากข้อผิดพลาดสำคัญถูกส่งกลับ (เช่นบัญชีถูกบล็อก) EA จะต้องยุติการทำงาน โปรดจำไว้ว่าใน MQL4 ไม่มีความเป็นไปได้ที่โปรแกรมจะยกเลิกการดำเนินงานของ EAs ในหน้าต่างความปลอดภัย (แตกต่างจากสคริปต์โปรดดูที่ฟังก์ชันพิเศษ) สิ่งที่สามารถทำได้ในทางโปรแกรมคือการสิ้นสุดของ start () ที่จุดเริ่มต้นใหม่ของฟังก์ชันเริ่มต้น () ในการทำเครื่องหมายใหม่จะมีการวิเคราะห์ค่าของธงตัวแปรหนึ่งที่ห้ามซื้อขาย (ในกรณีนี้ที่เปิดใช้งานอันเป็นผลมาจากข้อผิดพลาดที่สำคัญ) และสามารถควบคุมการควบคุมเพื่อยุติการใช้งานได้ การทำงานของฟังก์ชันพิเศษจึงไม่สามารถขอคำร้องขอการค้าใหม่ได้ ในรูปแบบที่นำเสนอค่าสถานะจะถูกวิเคราะห์ในบล็อกของการประมวลผลเบื้องต้น กลยุทธ์การซื้อขายราคาตลาดมีการเคลื่อนไหวอย่างต่อเนื่อง สถานะการตลาดในช่วงเวลาใด ๆ สามารถกำหนดลักษณะตามเงื่อนไขได้เช่นแนวโน้ม - การเปลี่ยนแปลงราคาที่รุนแรงขึ้น (ขึ้นหรือลง) หรือการเคลื่อนไหวของราคาด้านข้างที่เบาบางกับค่าเฉลี่ยที่แน่นอน ลักษณะตลาดเหล่านี้มีเงื่อนไขเนื่องจากไม่มีเกณฑ์ที่ชัดเจนตามแนวโน้มหรือแบนที่สามารถระบุได้ ตัวอย่างเช่นการเคลื่อนไหวด้านข้างยาวที่มีความเบี่ยงเบนที่แข็งแกร่งซึ่งสามารถตรวจสอบได้ไม่ว่าจะเป็นแนวราบหรือแนวโน้ม โดยทั่วไปจะถือว่าตลาดส่วนใหญ่อยู่ในสถานะของการเคลื่อนไหวด้านข้างและแนวโน้มมักจะใช้สถานที่ 15-20 ของเวลา กลยุทธ์การซื้อขายทั้งหมดสามารถแบ่งออกได้เป็น 2 กลุ่มใหญ่ ๆ กลุ่มแรกประกอบด้วยกลยุทธ์แบบเน้นแบน แนวคิดหลักของกลยุทธ์ดังกล่าวคือหลังจากที่ค่าเบี่ยงเบนที่เห็นได้ชัดต้องกลับไปยังตำแหน่งก่อนหน้านี้นั่นคือเหตุผลที่คำสั่งซื้อถูกเปิดในทิศทางที่ขัดต่อการเคลื่อนไหวราคาครั้งล่าสุด กลยุทธ์กลุ่มที่สองคือกลยุทธ์แนวโน้มเมื่อมีการเปิดคำสั่งซื้อในลักษณะเดียวกับการเคลื่อนไหวของราคาเกลือ มีกลยุทธ์ที่ซับซ้อน (รวมกัน) มากขึ้น กลยุทธ์ดังกล่าวคำนึงถึงปัจจัยหลายอย่างที่มีลักษณะเฉพาะของตลาดซึ่งส่งผลให้การซื้อขายสามารถทำได้ทั้งในด้านแบนและแนวโน้ม ไม่ยากที่จะใช้การซื้อขายตามกลยุทธ์นี้หรือกลยุทธ์ MQL4 มีวิธีการที่จำเป็นทั้งหมด งานหลักในการสร้างกลยุทธ์ของตัวเองครั้งหนึ่งประกอบด้วยการค้นหาเกณฑ์การซื้อขาย เกณฑ์การซื้อขายในตัวอย่างนี้เราจะพยายามสร้างที่ปรึกษาผู้เชี่ยวชาญด้านเทรนด์นั่นคือจะมีการเปิดคำสั่งซื้อขายในทิศทางการเคลื่อนไหวราคา ดังนั้นเราจำเป็นต้องค้นหาตัวชี้วัดทางเทคนิคต่างๆที่ตรวจหาจุดเริ่มต้นของแนวโน้ม หนึ่งในวิธีที่ง่ายที่สุดในการค้นหาเกณฑ์การซื้อขายขึ้นอยู่กับการวิเคราะห์การรวมกันของ MAs ที่มีระยะเวลาเฉลี่ยต่างกัน มะเดื่อ. 111 และรูปที่ 112 แสดงตำแหน่งของ MA สองแบบต่างกัน (โดยมีช่วงเวลาเฉลี่ย 11 และ 31) ในส่วนต่างๆของตลาด ค่าเฉลี่ยที่มีระยะเวลาเฉลี่ยต่ำ (เส้นสีแดง) ใกล้เคียงกับกราฟราคาขยับและเคลื่อนย้ายได้ การเคลื่อนไหวโดยเฉลี่ยที่มีระยะเวลาเฉลี่ย (เส้นสีน้ำเงิน) จะเฉื่อยมากขึ้นมีความล่าช้ามากและอยู่ห่างจากราคาในตลาดมากขึ้น ให้ความสนใจกับสถานที่ที่แมสซาชูเซตส์มีระยะเวลาเฉลี่ยต่างกันข้ามไปและพยายามที่จะตัดสินใจว่าข้อเท็จจริงที่ว่า MA สามารถใช้เป็นเกณฑ์ในการอ่านได้หรือไม่ มะเดื่อ. 111. ข้าม MA (11) และ MA (31) เมื่อทิศทางการเคลื่อนไหวของราคาเปลี่ยนแปลง ในรูปที่ 111 เราเห็นตลาดที่คำสั่งเปิดในทิศทางของการเคลื่อนไหวของราคาที่ MA ข้ามเป็นธรรม ในจุด A เส้นสีแดงข้ามเส้นสีน้ำเงินจากด้านล่างขึ้นไปหลังจากที่ราคาในตลาดเพิ่มขึ้นเป็นระยะเวลาหนึ่ง การกลับ MA ข้ามเพิ่มเติมแสดงทิศทางการเคลื่อนไหวของราคาเปลี่ยนแปลง ถ้าเราเปิดใบสั่งซื้อที่จุด A และปิดที่ B เราจะได้รับผลกำไรตามสัดส่วนของราคา A และ B มะเดื่อ. 112. การข้าม MA (11) และ MA (31) เมื่อทิศทางการเคลื่อนไหวของราคาเปลี่ยนแปลง ในเวลาเดียวกันมีช่วงเวลาอื่น ๆ ในตลาดเมื่อ MA ข้าม แต่ไม่ได้นำไปสู่การเพิ่มขึ้นหรือลดลงของราคามากขึ้น (รูปที่ 112) คำสั่งเปิดที่ MA ข้ามในช่วงเวลาดังกล่าวจะนำไปสู่การสูญเสีย หากเปิดการขายที่ A และปิดที่ B การซื้อขายดังกล่าวจะทำให้เกิดความเสียหาย เดียวกันอาจกล่าวได้เกี่ยวกับคำสั่งซื้อเปิดที่ B และปิดที่ C. ความสำเร็จของกลยุทธ์ทั้งดำเนินการบนพื้นฐานของ MA ข้ามขึ้นอยู่กับจำนวนของชิ้นส่วนที่สามารถโดดเด่นเป็นแนวโน้มและแบน ในท้องฟ้ามักจะข้าม MA เป็นเหตุการณ์ปกติที่รบกวนกลยุทธ์แนวโน้มใด ๆ สัญญาณผิดพลาดจำนวนมากเป็นกฎนำไปสู่การสูญเสีย นั่นคือเหตุผลที่การลงนามเครื่องหมายการค้าระยะยาวที่มีระยะเวลาเฉลี่ยแตกต่างกัน - สามารถนำมาใช้ในการสร้างกลยุทธ์การซื้อขายเฉพาะเมื่อรวมกับสัญญาณอื่น ๆ ที่พิสูจน์ให้เห็นถึงแนวโน้ม ในตัวอย่างนี้ (สำหรับการสร้างที่ปรึกษาผู้เชี่ยวชาญอย่างง่าย) เราจะต้องปฏิเสธการใช้เครื่องหมายนี้ เราจะใช้เครื่องหมายอื่น เมื่อพิจารณาถึงลักษณะของการเปลี่ยนแปลงราคาในตลาดเราจะเห็นได้ว่าการขึ้นราคาหรือการล่มสลายของทิศทางเดียวที่เกิดขึ้นเป็นเวลานานมักเป็นผลมาจากการเคลื่อนไหวที่รุนแรงในระยะสั้น กล่าวอีกนัยหนึ่งถ้าภายในระยะเวลาสั้น ๆ การเคลื่อนไหวที่รุนแรงขึ้นเราอาจคาดหวังว่าจะมีการต่อเนื่องในระยะปานกลาง มะเดื่อ. 113 แสดงถึงช่วงเวลาที่ตลาดมีการเคลื่อนไหวที่แข็งแกร่งส่งผลต่อการเปลี่ยนแปลงราคาในทิศทางเดียวกัน เนื่องจากจำนวนโควต้าที่เคลื่อนไหวได้มากเราอาจใช้ความแตกต่างของแมสซาชูเซตส์ที่มีระยะเวลาเฉลี่ยต่างกัน การเคลื่อนไหวจะยิ่งใหญ่ขึ้นความล่าช้าของแมสซาชูเซตส์มีระยะเวลาเฉลี่ยที่มากขึ้นจากระยะเวลาเฉลี่ยโดยเฉลี่ย นอกจากนี้การเคลื่อนไหวของราคาต่อเนื่องที่ไม่ต่อเนื่องแม้ผลตอบแทนจะไม่ส่งผลต่อความแตกต่างระหว่าง MAs เช่นสัญญาณผิดพลาดจำนวนมากจะไม่ปรากฏขึ้น ยกตัวอย่างเช่นราคาที่เพิ่มขึ้น 50 จุดและผลตอบแทนที่เพิ่มขึ้น (ในศูนย์ในรูป 113) จะเพิ่มความแตกต่างระหว่าง MAs เพียง 20 คะแนนเท่านั้น ในเวลาเดียวกันการเคลื่อนไหวที่แข็งแกร่งมาก (ซึ่งโดยปกติจะไม่ได้มาพร้อมกับการแก้ไขมาก) ในจุด A ส่งผลให้ความแตกต่างเพิ่มขึ้น 25-30 คะแนน หากเปิดใบสั่งซื้อเมื่อมีการระบุค่าที่ต่างกันระหว่าง MAs เช่นใน A มากที่สุดคำสั่งซื้อจะทำกำไรได้เมื่อราคาถึงค่าสั่งซื้อที่ตั้งไว้ล่วงหน้า ให้ใช้ค่านี้เป็นเกณฑ์การซื้อขายใน Expert Advisor ของเรา จำนวนคำสั่งซื้อในตัวอย่างนี้เราจะวิเคราะห์ผู้เชี่ยวชาญที่ปรึกษาที่ยอมรับการแสดงใบสั่งซื้อแบบตลาดเดียวใบสั่งซื้อที่รอดำเนินการไม่ได้ระบุไว้ วิธีการดังกล่าวเป็นธรรมไม่เพียง แต่ในตัวอย่างนี้ แต่สามารถใช้เป็นพื้นฐานสำหรับกลยุทธ์ใด ๆ คำสั่งซื้อที่รอดำเนินการมักใช้เมื่อนักพัฒนาซอฟต์แวร์มีเกณฑ์ค่อนข้างน่าเชื่อถือในการคาดการณ์การเปลี่ยนแปลงราคาในอนาคตที่มีโอกาสสูง หากไม่มีเกณฑ์ดังกล่าวไม่จำเป็นต้องใช้คำสั่งที่รอดำเนินการ สถานการณ์เมื่อคำสั่งที่ตรงกันข้ามกันหลายข้อสำหรับการรักษาความปลอดภัยแบบหนึ่งเปิดอยู่ก็ไม่ถือว่าเหมาะสม ก่อนหน้านี้ได้รับการเขียนขึ้นจากมุมมองเชิงเศรษฐศาสตร์ในแง่ตรงกันข้ามกับคำสั่งซื้อที่ไม่ได้รับการพิจารณาโดยเฉพาะอย่างยิ่งหากราคาของใบสั่งซื้อเท่ากัน (ดูการปิดบัญชีและการลบคำสั่งซื้อ) ในกรณีเช่นนี้เราควรปิดคำสั่งซื้ออีกหนึ่งรายการและรอให้สัญญาณเปิดคำสั่งซื้อในทิศทางใดทิศทางหนึ่ง ความสัมพันธ์ของเกณฑ์การซื้อขายจากตำแหน่งนี้เป็นที่ชัดเจนว่าความสัมพันธ์เป็นไปได้ระหว่างเกณฑ์การซื้อขาย มะเดื่อ. 114 แสดงให้เห็นถึงสามรูปแบบของความสัมพันธ์ของเกณฑ์การค้าเมื่อแต่ละเกณฑ์มีความสำคัญ (ถูกต้อง) การดำเนินการ (การเปิดและปิดคำสั่งซื้อของตลาด) เกิดขึ้นตามเข็มนาฬิกาในภาพต่อไปนี้ มะเดื่อ. 114. ความสัมพันธ์ของเกณฑ์การเปิดและปิดบัญชี (a และ b - ถูกต้อง c - ไม่ถูกต้อง) ตัวแปรที่ได้รับความนิยมมากที่สุดของเกณฑ์การซื้อขายที่จัดตั้งขึ้นอย่างถูกต้องคือตัวแปร a. หลังจากเปิดคำสั่งซื้อของตลาดแล้วจะมีการจัดซื้อจนกว่าจะถึงเวลาที่เกณฑ์ต้องปิดทริกเกอร์ หลังจากนั้นการหยุดชั่วคราวจะเกิดขึ้นเมื่อไม่มีการเปิดคำสั่งซื้อ สามารถเปิดบัญชีเพื่อเปิดตลาดได้ เงื่อนไขในการปิดบัญชีขาย (ตามเกณฑ์ที่กำหนดไว้อย่างถูกต้อง) เกิดขึ้นก่อนหน้านี้กว่าเงื่อนไขในการเปิดใบสั่งซื้อ อย่างไรก็ตามคำสั่งซื้อสามารถเปิดได้อีกครั้งหากต้องการเกณฑ์การซื้อขายนี้ แต่ตามตัวแปรนี้จะไม่สามารถเปิดคำสั่งซื้อตามตลาดได้หากมีคำสั่งตลาดเปิดในทิศทางตรงกันข้าม ความคล้ายคลึงกันของเกณฑ์ความสัมพันธ์อยู่ในตัวแปร b. ความแตกต่างก็คือเกณฑ์ในการเปิดบัญชีตลาดใด ๆ ก็คือเกณฑ์ในการปิดคำสั่งที่ตรงกันข้าม ตัวแปรนี้เช่นเดียวกับตัวแปร a ไม่อนุญาตให้มีการเปิดคำสั่งซื้อหลายรายการในเทอร์มินัลในเวลาเดียวกันกับการรักษาความปลอดภัยอย่างใดอย่างหนึ่ง ตัวแปรของเกณฑ์ความสัมพันธ์ไม่ถูกต้อง ตามการเปิดการสั่งซื้อตามรูปแบบนี้จะได้รับอนุญาตเมื่อคำสั่งซื้อแบบตรงกันข้ามยังไม่ปิดซึ่งเป็นเรื่องที่ไร้สาระ อาจมีกรณีที่ไม่ค่อยพบเมื่อตัวแปรนี้มีเหตุผลบางส่วน การเปิดคำสั่งซื้อในทางตรงกันข้ามบางครั้งก็เป็นที่ยอมรับได้เพื่อชดเชยความสูญเสียที่เกิดขึ้นในการแก้ไขเล็กน้อยหลังการเคลื่อนไหวของราคาที่แข็งแกร่ง ในกรณีเช่นนี้คำสั่งที่ตรงกันข้ามสามารถเปิดได้ด้วยค่าเดียวกันหรือเล็กกว่าที่มีอยู่แล้วและปิดเมื่อการแก้ไขสิ้นสุดลง กลยุทธ์ดังกล่าวไม่สามารถแทรกแซงคำสั่ง quotmainquot ที่เปิดขึ้นในทิศทางของแนวโน้ม โดยทั่วไปแล้วคำสั่งซื้อแบบทิศทางเดียวก็เป็นได้ นี่อาจเป็นเหตุผลเมื่อคำสั่งเปิดก่อนหน้านี้ได้รับการป้องกันโดยคำสั่ง Stop และเกณฑ์ที่ชี้ไปที่การพัฒนาราคาในทิศทางเดียวกันจะเรียกอีกครั้ง อย่างไรก็ตามเมื่อสร้างกลยุทธ์ดังกล่าวนักพัฒนาซอฟต์แวร์จะต้องตระหนักดีว่าในกรณีที่มีการเปลี่ยนแปลงราคาที่รุนแรงคำสั่งหยุดที่วางไว้อาจไม่ได้รับการดำเนินการโดยบางโบรกเกอร์ในราคาแรก และการสูญเสียจะเป็นไปตามมูลค่ารวมของคำสั่งตลาดแบบทิศทางเดียว ในตัวอย่างของเราเราใช้ตัวแปร b ของเกณฑ์การซื้อขายความสัมพันธ์ ใบสั่งซื้อที่เปิดอยู่ทั้งหมดจะถูกปิดโดยคำสั่งหยุดหรือหลังจากมีการเปิดคำสั่งในทิศทางตรงกันข้าม (เกณฑ์การปิดบัญชีใกล้เคียงกับการเปิดขายและในทางกลับกัน) ขนาดของใบสั่งที่เปิดอยู่ในใบสั่งกลยุทธ์การค้าขายใด ๆ ควรมีขนาด จำกัด ในกรณีง่ายๆขนาดคำสั่งคงที่จะใช้ในที่ปรึกษาผู้เชี่ยวชาญ ก่อนเริ่มดำเนินการ EA ผู้ใช้สามารถกำหนดขนาดของคำสั่งซื้อในอนาคตและปล่อยให้ไม่เปลี่ยนแปลงได้ในบางเวลา นอกจากนี้หากการเปลี่ยนแปลงสมดุลผู้ใช้สามารถตั้งค่าใหม่จำนวนมากของคำสั่งที่เปิดอยู่ ขนาดใบสั่งที่เล็กเกินไปทำให้มั่นใจได้มากขึ้นในการดำเนินงานเมื่อมีการเปลี่ยนแปลงในตลาดที่คาดเดาไม่ได้ แต่กำไรในกรณีที่ประสบความสำเร็จจะไม่มากนัก หากขนาดคำสั่งซื้อใหญ่เกินไปคุณสามารถหากำไรได้มาก แต่ EA อาจเสี่ยงเกินไป โดยปกติแล้วขนาดของคำสั่งซื้อที่เปิดอยู่จะถูกตั้งขึ้นเพื่อให้ความต้องการของมาร์จินไม่เกิน 2-35 เปอร์เซ็นต์ของยอดคงเหลือหรือ Free Margin (ถ้ากลยุทธ์อนุญาตให้มีการเปิดใบสั่งซื้อยอดดุลและ Free Margin เพียงหนึ่งคำก่อนที่จะมีการเปิดคำสั่งซื้อ เท่ากัน). ในตัวอย่างนี้จะใช้ทั้งสองรูปแบบ ผู้ใช้สามารถเลือกเพื่อระบุมูลค่าของคำสั่งซื้อโดยตรงหรือตั้งค่าเป็นเปอร์เซ็นต์จากส่วนต่างราคาได้ รายละเอียดการเขียนโปรแกรมแนวโน้มที่เรียบง่าย Expert Advisor tradingexpert. mq4 สร้างขึ้นบนพื้นฐานของอาร์กิวเมนต์ก่อนหน้านี้สามารถมีลักษณะดังนี้: การอธิบายตัวแปรหนึ่งเกณฑ์เพิ่มเติมในการประมาณโปรแกรมคือการอ่านของ โปรแกรมได้รับการพิจารณาให้เขียนได้อย่างถูกต้องหากสามารถอ่านได้โดยโปรแกรมเมอร์อื่น ๆ นั่นเป็นเหตุผลว่าทำไมทุกส่วนของโปรแกรมหลักและช่วงเวลาสำคัญที่ต้องใช้กลยุทธ์จะต้องได้รับการกล่าวถึง นี่คือเหตุผลที่แนะนำและประกาศตัวแปรทั้งหมดในช่วงเริ่มต้นของโครงการ ในบล็อก 1-2 ตัวแปรภายนอกและส่วนกลางถูกอธิบายไว้ ตามกฎตัวแปรภายนอกและส่วนกลางต้องเปิดขึ้นก่อนการใช้งานครั้งแรก (ดูประเภทตัวแปร) เหตุใดจึงมีการประกาศในส่วนหัวของโปรแกรม ตัวแปรท้องถิ่นทั้งหมดของฟังก์ชันเริ่มต้น () จะรวบรวมและอธิบายในส่วนของฟังก์ชันด้านบน (บล็อก 2-3) ทันทีหลังจากส่วนหัวของฟังก์ชัน กฎของการประกาศตัวแปรท้องถิ่นไม่จำเป็นต้องมี แต่ไม่ห้ามด้วย หากโปรแกรมเมอร์ประสบปัญหาในการเข้าใจความหมายของตัวแปรเมื่ออ่านโปรแกรมเขาสามารถอ้างอิงถึงส่วนของโปรแกรมด้านบนและค้นหาความหมายและชนิดของตัวแปรใดก็ได้ สะดวกในการเขียนโปรแกรม บล็อกของการประมวลผลเบื้องต้นในตัวอย่างนี้ preprocessing ประกอบด้วยสองส่วน (block 3-4) โปรแกรมจะยุติการดำเนินงานหากมีแถบไม่เพียงพอในหน้าต่างความปลอดภัยในกรณีเช่นนี้จะไม่สามารถตรวจจับค่าเฉลี่ยเคลื่อนที่ที่จำเป็นสำหรับการคำนวณเกณฑ์ (ในบล็อก 5-6) ได้อย่างถูกต้อง นอกจากนี้จะมีการวิเคราะห์ค่าของตัวแปร Work ในการดำเนินการตามปกติของ EA ค่าตัวแปรจะเป็นความจริงเสมอ (โดยจะตั้งค่าครั้งเดียวระหว่างการเริ่มต้น) หากข้อผิดพลาดที่สำคัญเกิดขึ้นในการทำงานของโปรแกรมเท็จจะถูกกำหนดให้กับตัวแปรนี้และ start () จะดำเนินการเสร็จสิ้น ค่านี้จะไม่เปลี่ยนแปลงในอนาคตนั่นคือเหตุผลที่โค้ดต่อไปนี้ไม่ได้ถูกเรียกใช้งาน ในกรณีเช่นนี้ต้องหยุดการทำงานของโปรแกรมและต้องตรวจหาสาเหตุของข้อผิดพลาดที่สำคัญ (ถ้าจำเป็นต้องติดต่อศูนย์ติดต่อ) หลังจากที่สถานการณ์ได้รับการแก้ไขแล้วโปรแกรมจะเริ่มทำงานอีกครั้งนั่นคือ EA สามารถเชื่อมต่อกับหน้าต่างความปลอดภัยได้ ใบสั่งงานทางการเงินที่ปรึกษาผู้เชี่ยวชาญที่อธิบายไว้ช่วยให้สามารถทำงานได้เฉพาะกับใบสั่งซื้อตามท้องตลาดเท่านั้น งานของกลุ่มการบัญชีใบสั่ง (บล็อก 4-5) คือการกำหนดลักษณะของคำสั่งที่เปิดถ้ามีอยู่ ในห่วงจะผ่านคำสั่งสำหรับตลาดที่มีอยู่ทั้งหมดและคำสั่งที่รอการตรวจสอบคือจากครั้งแรก (int i1) ไปที่สุดท้าย (iampltOrdersTotal ()) ในการวนซ้ำแต่ละรอบจะมีการเลือกลำดับถัดไปโดยฟังก์ชัน OrderSelect () การเลือกทำจากแหล่งที่มาของคำสั่งซื้อที่เปิดอยู่และรอการสั่งซื้อ (SELECTBYPOS) ถ้าการเลือกดำเนินการสำเร็จ (เช่นมีคำสั่งซื้ออีกหนึ่งชุดในเครื่องเทอร์มินัล) ให้สั่งซื้อและวิเคราะห์สถานการณ์เพิ่มเติมต่อไปว่าคำสั่งซื้อถูกเปิดเพื่อความปลอดภัยหรือไม่ที่อีเอดำเนินการ นอกจากนี้ยังต้องคำนึงถึงการนับคำสั่งซื้อ ในบรรทัด: คำสั่งซื้อทั้งหมดที่เปิดเพื่อความปลอดภัยอื่นจะถูกตัดออก ผู้ดำเนินการยังคงหยุดการทำซ้ำและลักษณะของคำสั่งดังกล่าวจะไม่ได้รับการประมวลผล แต่ถ้าคำสั่งเปิดเพื่อความปลอดภัยหน้าต่างที่มีการแนบ EA จะมีการวิเคราะห์ต่อไป ถ้า OrderType () ส่งคืนค่ามากกว่า 1 (ดูประเภทของ Trades) คำสั่งที่เลือกจะเป็นค่าที่รอดำเนินการ แต่ในที่ปรึกษาผู้เชี่ยวชาญนี้การจัดการคำสั่งซื้อที่รอดำเนินการไม่ได้ระบุไว้ หมายถึงการดำเนินการ start () ต้องถูกยกเลิกเนื่องจากสถานการณ์ความขัดแย้งเกิดขึ้น ในกรณีเช่นนี้หลังจากที่ผู้ดำเนินการกลับข้อความหยุดการดำเนินการเริ่มต้น () หากการตรวจสอบครั้งล่าสุดแสดงให้เห็นว่าคำสั่งซื้อที่วิเคราะห์เป็นคำสั่งตลาดจำนวนคำสั่งซื้อทั้งหมดสำหรับการรักษาความปลอดภัยจะถูกคำนวณและวิเคราะห์ สำหรับคำสั่งดังกล่าวครั้งแรกจะกำหนดลักษณะที่จำเป็นทั้งหมดไว้ ถ้าในการทำซ้ำถัดไปตัวนับคำสั่งซื้อ (ตัวแปรรวม) พบคำสั่งตลาดที่สองสถานการณ์นี้ถือเป็นความขัดแย้งเนื่องจาก EA ไม่สามารถจัดการใบสั่งตลาดได้มากกว่าหนึ่งคำ ในกรณีเช่นนี้ start () จะหยุดการทำงานหลังจากแสดงข้อความที่เกี่ยวข้อง จากการดำเนินการตามคำสั่งในการดำเนินการทางบัญชี (หากการตรวจสอบทั้งหมดสำเร็จ) ตัวแปร Total จะรักษาค่าเป็นศูนย์หากไม่มีคำสั่งตลาดหรือได้รับค่า 1 หากมีคำสั่งตลาดเพื่อความปลอดภัยของเรา ในกรณีหลังตัวแปรบางอย่างที่สอดคล้องกับลักษณะการสั่งซื้อ (จำนวนชนิดราคาเปิดระดับหยุดและมูลค่าคำสั่งซื้อ) ยังมีค่า การคำนวณเกณฑ์การซื้อขาย (Trading Criteria) ในตัวอย่างการวิเคราะห์ความหมายของเกณฑ์การซื้อขาย (block 5-6) คำนวณจากฐานความแตกต่างระหว่าง Moving Averages กับช่วงเวลาเฉลี่ยที่แตกต่างกัน ตามเกณฑ์ที่ยอมรับแผนภูมิเป็นวัวกำกับหากค่าปัจจุบันของ MA ที่มีระยะเวลาน้อยกว่ามีขนาดใหญ่กว่าค่าของ MA ที่มีระยะเวลามากขึ้นและความแตกต่างระหว่างค่ามีค่ามากกว่าค่าที่กำหนด ในการเคลื่อนไหวหมี MA ที่มีระยะเวลาน้อยกว่าจะต่ำกว่า MA ที่มีระยะเวลามากขึ้นและความแตกต่างยังมีขนาดใหญ่กว่าค่าที่สำคัญบางอย่าง ที่จุดเริ่มต้นของบล็อกของ MA ที่มีการคำนวณระยะเวลา PeriodMA1 และ PeriodMA2 ความจริงของความสำคัญของเกณฑ์การค้าใด ๆ จะแสดงผ่านค่าของตัวแปรที่เกี่ยวข้อง ตัวแปร OpnB และ OpnS แสดงถึงเกณฑ์ที่เรียกใช้สำหรับการเปิดใบสั่งซื้อและขายตัวแปร Cls และ ClsS - สำหรับการปิด ตัวอย่างเช่นถ้าเกณฑ์สำหรับการเปิด Buy ไม่ได้เรียกใช้ค่า OpnB ยังคงเป็น false (ตั้งไว้ที่ initialization ตัวแปร) ถ้ามีการเรียกใช้ OpnB จะได้ค่า true ในกรณีนี้เกณฑ์การปิดบัญชีมีความคล้ายคลึงกับการเปิดบัญชีซื้อเกณฑ์ในการเปิดขายสอดคล้องกับที่กำหนดไว้สำหรับการปิดบัญชีซื้อ เกณฑ์การซื้อขายที่ยอมรับในตัวอย่างนี้ใช้เพื่อการศึกษาเท่านั้นและไม่ถือเป็นแนวทางในการซื้อขายหลักทรัพย์จริง คำสั่งปิดบัญชีฉบับนี้ได้รับการเขียนขึ้นก่อนหน้านี้ว่าที่ปรึกษาผู้เชี่ยวชาญนี้มีไว้สำหรับการดำเนินการเฉพาะกับคำสั่งตลาดที่เปิดขึ้นเพื่อความปลอดภัยซึ่งเป็นหน้าต่างที่ EA แนบไว้ ในขณะที่การควบคุมในโปรแกรมถูกส่งผ่านไปยังการปิดคำสั่งซื้อจะเป็นที่ทราบกันดีว่าในขณะปัจจุบันมีคำสั่งซื้อสำหรับการรักษาความปลอดภัยหรือมีคำสั่งตลาดเพียงอย่างเดียว Thats ทำไมรหัสในใบสั่งปิดบล็อคจึงถูกเขียนขึ้นเพื่อให้สามารถปิดบัญชีได้เพียงหนึ่งใบเท่านั้น บล็อกนี้จะขึ้นอยู่กับวง จำกัด ในขณะที่ร่างกายซึ่งประกอบด้วยสองส่วนที่คล้ายคลึงกัน: หนึ่งสำหรับการสั่งซื้อซื้ออีกสำหรับการปิดคำสั่งขาย ในขณะที่มีการใช้ที่นี่เพื่อจุดประสงค์ที่ในกรณีที่เกิดความล้มเหลวในการดำเนินการด้านการค้าอาจมีการทำซ้ำอีกครั้ง ในส่วนหัวของโอเปอเรเตอร์ตัวแรกหากมีการคำนวณเงื่อนไขสำหรับการปิดใบสั่งซื้อ (ใบสั่งขายจะปิดในลักษณะที่คล้ายคลึงกัน) ถ้าประเภทของใบสั่งที่เปิดก่อนหน้านี้สอดคล้องกับการซื้อ (ดูประเภทการขาย) และเครื่องหมายสำหรับการปิดบัญชีซื้อมีความเกี่ยวข้องการควบคุมจะถูกส่งผ่านไปยังตัวของผู้ดำเนินการหากมีการร้องขอให้ปิดเกิดขึ้น เป็นราคาปิดคำสั่งในฟังก์ชั่น OrderClose () จะแสดงมูลค่าของใบเสนอราคาสองด้านที่ตรงกับประเภทใบสั่งซื้อ (ดูข้อกำหนดและข้อ จำกัด ในการทำธุรกรรม) หากการดำเนินการทางการค้าเสร็จสิ้นลงหลังจากข้อความเกี่ยวกับการปิดคำสั่งซื้อจะปรากฏขึ้นในขณะที่มีการหยุดการทำซ้ำและการดำเนินการของบล็อกการสั่งซื้อสิ้นสุดลง แต่ถ้าการดำเนินการล้มเหลวฟังก์ชันที่ผู้ใช้กำหนดสำหรับการประมวลผลข้อผิดพลาด FunError () เรียกว่า (บล็อค 10-11) ข้อผิดพลาดในการประมวลผลเป็นพารามิเตอร์ที่ส่งผ่านใน FunError () รหัสข้อผิดพลาดล่าสุดที่คำนวณโดย GetLastError () จะถูกใช้ FunError () ส่งกลับค่า 1 หากข้อผิดพลาดไม่สำคัญและสามารถทำซ้ำได้และ 0 ถ้าข้อผิดพลาดมีความสำคัญ ข้อผิดพลาดที่สำคัญจะแบ่งออกเป็นสองประเภทคือหลังจากนั้นจะสามารถดำเนินการโปรแกรมต่อได้ (เช่นข้อผิดพลาดทั่วไป) และข้อผิดพลาดเหล่านี้หลังจากที่ต้องหยุดการดำเนินการทางการค้าใด ๆ (เช่นบัญชีที่ถูกปิดกั้น) ถ้าหลังจากการดำเนินการทางการค้าที่ไม่สำเร็จฟังก์ชันที่ผู้ใช้กำหนดจะส่งกลับ 1 ปัจจุบันขณะที่ทำซ้ำจะถูกยกเลิกและในระหว่างทำซ้ำครั้งถัดไปจะมีการพยายามดำเนินการอีกครั้งเพื่อปิดคำสั่ง ถ้าฟังก์ชันส่งกลับ 0 การดำเนินการเริ่มต้นในปัจจุบัน () จะหยุดลง ในการเริ่มต้นติ๊กครั้งต่อไป () จะเริ่มต้นโดยเทอร์มินัลไคลเอ็นต์อีกครั้งและหากมีการเก็บรักษาเงื่อนไขในการปิดคำสั่งซื้อจะมีการพยายามปิดคำสั่งซื้ออีกครั้ง หากในระหว่างการประมวลผลข้อผิดพลาดพบว่าการดำเนินการโปรแกรมต่อไปนี้ไม่มีสาระ (เช่นโปรแกรมทำงานกับเวอร์ชันเทอร์มินัลไคลเอ็นต์เก่า) ในระหว่างการเริ่มต้นถัดไปการทำงานของฟังก์ชันพิเศษเริ่มต้น () จะถูกยกเลิกในบล็อกของการประมวลผลเบื้องต้นเมื่อ การวิเคราะห์ค่าของตัวแปร Work การคำนวณจำนวนเงินสำหรับการสั่งซื้อใหม่จำนวนเงินที่สามารถคำนวณได้ตามการตั้งค่าของผู้ใช้ตามหนึ่งในสองรูปแบบ ตัวแปรแรกคือค่าคงที่บางค่าที่ผู้ใช้กำหนด ตามรูปแบบที่สองจำนวนเงินที่คำนวณจากผลรวมของจำนวนเงินที่มีค่าเท่ากับร้อยละหนึ่ง (กำหนดโดยผู้ใช้) ของอัตราแลกเปลี่ยนที่ฟรี ที่จุดเริ่มต้นของบล็อกในการกำหนดจำนวนเงินสำหรับคำสั่งซื้อใหม่ (บล็อก 7-8) ค่าที่จำเป็นของตัวแปรบางตัวจะถูกคำนวณ - จำนวนเงินที่อนุญาตน้อยที่สุดของจำนวนและขั้นตอนการเปลี่ยนแปลงจำนวนมากที่ตั้งขึ้นโดยนายหน้าอัตรากำไรและราคา หนึ่งมากสำหรับการรักษาความปลอดภัย ในตัวอย่างนี้มีให้ ถ้าผู้ใช้มีการตั้งค่าตัวแปรภายนอกที่ไม่ใช่ศูนย์ของตัวแปรภายนอกเช่น 0.5 จะถือว่าเป็นจำนวน Lts เมื่อมีการร้องขอการค้าเพื่อเปิดคำสั่งซื้อ ถ้าจำนวน 0 ถูกกำหนดให้กับ Lts จำนวน Lts จะถูกกำหนดบนพื้นฐานของตัวแปร Prots (percentage), free margin และเงื่อนไขที่นายหน้ากำหนด หลังจากคำนวณ Lts แล้วจะมีการตรวจสอบ ถ้าค่านี้ต่ำกว่าค่าที่อนุญาตให้น้อยที่สุดยอมรับค่าที่ยอมรับได้น้อยที่สุด แต่ถ้าอัตรากำไรฟรีไม่เพียงพอหลังจากข้อความที่เกี่ยวข้องการเริ่มต้น () จะสิ้นสุดลง Opening Orders The block of opening orders (block 8-9) like the bloke of opening orders is an infinite loop while. In the header of the first operator if conditions for opening a Buy order are calculated: if there are no orders for the security (variable Total is equal to 0) and the sign for opening a Buy order is relevant (OpnB is true ), control is passed to if operator body for opening an order. In such a case after rates are refreshed prices for stop levels are calculated. Values of stop levels are initially set by a user in external variables StopLoss and TakeProfit. In a general case a user can set values for this parameters smaller that a broker allows. Besides a broker may change the minimal allowed distance at any moment (it is an often case at strong market movements, for example, before important news release). Thats why before each order opening stop levels must be calculate taking into account values set bu a user and the minimal allowed value set up by a broker. For calculating stop levels the user-defined function NewStop() is used as a passed parameter the stop level value set by a user is used. In NewStop() first the current minimal allowed distance is calculated. If the value set by a user corresponds to a brokers requirements, this value is returned. If it is smaller than the allowed value, the value allowed by a broker is used. Prices of stop requests are calculated from the corresponding two-sided quote (see Requirements and Limitations in Making Trades ). A trade request to open an order is formed using the function OrderSend(). For the calculation of order opening price and prices of stop requests the two-sided quote values corresponding to the order type are used. If a trade operation was successful (i. e. a server returned the number of an opened order) after a message about a successful order opening is shown. start() execution is finished. If an order was not opened and the client terminal returned an error, the error is processed according to the algorithm described earlier. Some Code Peculiarities The analyzed Expert Advisor code is oriented to the implementation of a certain strategy. Note, some program lines contain variables and calculations that would be changed, if the strategy were changed. For example, according to the accepted strategy the Expert Advisor is developed to work only with one order. This allowed to use the variable Ticket both for the identification of a closing order number (in block of closing 6-7) and for the identification of a success of a trade operation execution when opening an order (in the block of opening 8-9). In this case such a solution is acceptable. However, if we take the analyzed code as the basis for the implementation of another strategy (for example allow opposite orders) we will have to introduce one or several variables to be able to recognize numbers of opened orders and identify the success of trade operations. In further strategy modifications we will have to change come program lines containing part of logics contained in the source strategy. Namely in the order accounting block we will not have to terminate the program operation if there are several open orders for a security. Besides, conditions for opening and closing orders will alslo change. This will entail the code changing in blocks of opening and closing orders. On the basis of this analysis we can easily conclude that the described simple Expert Advisor is not perfect. In a general case, for the implementation of order accounting one should use a universal function based on using data arrays and not containing logics of a certain strategy. The same can be said about the blocks of opening and closing orders. A more complete program must contain a main analytical function, all other user-defined functions must be subordinate to it. This analytical function must contain a program code, in which all conditions for the implementation of any strategy are analyzed all subordinate functions must perform limited actions. The function of accounting orders must only account orders, functions of opening and closing orders must only open and close orders, and the analytical function must quotthinkquot and manage all other functions, i. e. call them when needed. Typically, two moving averages can be used to create a forex strategy (EA for MT4) with these rules: Buy when the short period moving average is above the long period moving average Sell when the long period moving average is above the short period moving average On the following graph from MetaTrader Terminal, the yellow line is the short period moving average (Period9) and the red line is the long period moving average (Period18). Analizing the graph, we could rewrite the trading rules or forex signals as: Buy when the yellow line is above the red line Sell when the yellow line is below the red line Instead of spending a long time coding this forex strategy, with Molanis Strategy Builder you can create a trading diagram that represents the moving average strategy in minutes. Just drag and drop two Technical Analysis blocks, one Buy block and one Sell block. เชื่อมต่อและตั้งค่าพารามิเตอร์บล็อกเพื่อให้ได้แผนภาพดังต่อไปนี้แผนภาพการซื้อขายนี้มีเส้นทางการซื้อขาย 2 ช่อง ทางด้านซ้ายจะเน้น มันไปจากบล็อก START ไปยังบล็อก END One could read it as: Buy 1 lot of EURCAD (with a 100 pip Take Profit and 50 pip Stop Loss) when the short period moving average (9) is above the long period moving average (18). อย่าลืมอ่านกราฟการซื้อขายในทิศทางตรงกันข้ามกับกระแสการซื้อขาย เส้นทางการค้าที่ถูกต้องสามารถอ่านได้ว่าขาย 1 lot ของ EURCAD (มี 100 pip Take Profit และ 50 Stop Stop Loss) เมื่อค่าเฉลี่ยเคลื่อนที่ยาว (18) อยู่เหนือค่าเฉลี่ยเคลื่อนที่ระยะสั้น (9) การสร้างรหัส MQL สำหรับ MetaTrader โดยคลิกเพียงครั้งเดียวในเมนู Diagram Trading คลิกที่ Generate MQL4 Code เพื่อรับหน้าต่าง MQL4 Code Molanis Strategy Builder ช่วยให้คุณสามารถเปิดที่ปรึกษาผู้เชี่ยวชาญของคุณโดยตรงกับ MetaTrader หรือบันทึกเป็นไฟล์ MQ4 ค่าเฉลี่ยเคลื่อนที่เป็นตัวบ่งชี้ที่ใช้มากที่สุดและเป็นค่าเริ่มต้นรวมอยู่ใน Metatrader 4 และ 5 ค่าเฉลี่ยเคลื่อนที่แบบธรรมดาคำนวณจากค่าเฉลี่ยของราคาปิดที่ต้องการของแต่ละเทียน ตัวบ่งชี้ Moving Average มี 4 วิธีในการคำนวณ ง่าย, เลขชี้กำลัง, เรียบและ LinearWeighted การตั้งค่าช่วงเวลาเริ่มต้นคือ 14 ตรรกะทางการค้าของหุ่นยนต์อัตราแลกเปลี่ยนนี้ Moving Average EA เป็นหุ่นยนต์อัตราแลกเปลี่ยนและใช้ Moving Average เพื่อการค้า หากเทียนผ่านค่า Moving Average จากด้านล่าง EA จะเข้าสู่สถานะ Long รองในทางกลับกันสำหรับตำแหน่งสั้น ๆ MA Trend Filter EA เฉลี่ยเคลื่อนที่มีฟังก์ชัน MA Trend Filter ปกติที่รวมอยู่ใน 3 เวอร์ชันและมีการตั้งค่าเพิ่มเติม 3 ค่า เปิดใช้งานตัวกรองนี้เพื่อรับสัญญาณเข้าที่ดีขึ้น Advanced MA Trend Filter Settings: ราคา: เฉพาะเมื่อราคาปัจจุบันอยู่เหนือกว่าตัวกรองเทรนด์ของ MA Signal MA: เฉพาะเมื่อมีค่าเฉลี่ยการเคลื่อนที่ของสัญญาณอยู่เหนือกว่าตัวกรองเทรนด์ของ MA ลาด: เฉพาะเมื่อความลาดเอียงของ MA Trend Filte ในทิศทางขึ้นไปข้างบน Reverse On Opposite Signal ตั้งแต่รุ่น 2.00 รุ่น PRO มีฟังก์ชัน Reverse On On Signal ถ้าฟังก์ชันนี้ทำงานอยู่ EA มีสถานะเปิดค้างและมีสัญญาณสั้น ๆ EA จะปิดตำแหน่งยาวและป้อนตำแหน่งสั้น ๆ พารามิเตอร์สำหรับระยะเวลา EA Moving Average ระยะเวลาที่ EA ควรจะทำงานได้ไม่ว่าตารางเวลาของคุณจะถูกตั้งค่าเป็นอย่างไร ระยะเวลาเฉลี่ยของค่าเฉลี่ยเคลื่อนที่ (ค่าเริ่มต้นคือ 80) Shift การเปลี่ยนค่าตัวบ่งชี้เทียบกับแผนภูมิ (ค่าเริ่มต้นคือ 0) วิธีเฉลี่ยวิธีการของชุดราคาราคาที่ใช้ราคาราคา ซึ่งจะมีการคำนวณผลการดำเนินงานภาพรวมของรุ่นทุกรุ่นจะมีหมายเลข Magic Number, Take Profit, Stop Loss, Lot Size และ Slippage 25 สิงหาคม 2016 Tweak: เขียนกลยุทธ์ใหม่เพื่อความเสถียรมากขึ้นปรับปรุง: MA Filter มีวางจำหน่ายแล้วในทุกเวอร์ชัน Added: 8220Reverse On Oppsite Signal8221 (เฉพาะเวอร์ชั่น) เพิ่ม: New 8220 การตั้งค่าตัวกรอง Trendline เพิ่มเติม 8221 ในทุกเวอร์ชันลบออก: 8220highlow8221 กลยุทธ์ในทุกเวอร์ชันลบ: 8220Trade max. หนึ่งครั้งต่อบาร์ 8221 (สำหรับเหตุผลด้านความปลอดภัยกับ EA นี้) 13 ม. ค. 2016 การปรับปรุงและการแก้ไขเล็กน้อยในรุ่น MT4 ทั้งหมด 24 กันยายน 2015 การเปิดตัวครั้งแรก MT4 Pro 11 เม. ย. 2015 การปรับปรุงบางอย่างในทุกรุ่น MT4 เพิ่ม 8220Max หนึ่งครั้งต่อหนึ่งฟังก์ชัน Bar8221 ไปยัง MT4 ทั้งหมด เวอร์ชันขั้นสูงและเวอร์ชัน Pro 09 กุมภาพันธ์ 2558 แก้ไขข้อผิดพลาดเมื่อเปิด openclose คำสั่งซื้อและตัวเลือก highlow เพิ่มเมื่อวันที่ 7 ก. พ. 2558 เริ่มต้นการเปิดตัว MT4 Basic และ MT4 Advanced hi ที่รัก Yannick ฉันดาวน์โหลดเวอร์ชันพื้นฐานของ ea นี้ดีเพื่อทดสอบแล้วหลังจากที่ซื้อเวอร์ชัน Pro . ฉันต้องการใช้สำหรับวิธีนี้กฎ: 1 มอง MA X และเตรียมการซื้อขายเมื่อราคา HIT CROSSED MA X. 2. ใส่ LONG เมื่อราคาเทียนถัดไปปิดอยู่เหนือ MA. 3. ป้อน SHORT เมื่อราคาปิดของ candle ถัดไปด้านล่าง MA 4. ปิดสถานะปัจจุบันด้วยกำไรหรือขาดทุน และเปิดตำแหน่งใหม่เมื่อเริ่มต้นสัญญาณใหม่ และฉันสามารถใช้ผู้เชี่ยวชาญนี้ได้หรือไม่? ถ้าใช่ฉันจะตั้งค่าให้กับกฎนี้ได้อย่างไรโปรดช่วยขอบคุณ Hi Yannick การออกจาก Basic Version จะทำแบบเดียวกับที่ทำในเวอร์ชันเดิมหรือไม่ก่อนที่คุณจะเพิ่มคุณลักษณะบางอย่างขึ้น 8216Trade Mode8217 ทำในอภิธานศัพท์ doesn8217t พูดอะไรเกี่ยวกับเรื่องนี้ สุดท้าย I8217m สงสัยว่าหมดอายุใบอนุญาตจะมีผลต่อการค้าที่เปิดขอบคุณสำหรับการทำงานที่ดีของคุณและสำหรับ freebies ของคุณ I8217ll จะซื้ออะไรบางอย่างในภายหลังรุ่นพื้นฐานไม่ได้มีกลยุทธ์ทางออกและจะจึงออกจาก SL หรือ TP TradeMode: เลือกว่าคุณต้องการป้อนการค้าหรือไม่ถ้า HighLow ข้าม MA หรือถ้า CloseOpen ข้าม MA ไม่ EA จะตรวจสอบใบอนุญาตในการเริ่มต้นเท่านั้นหมายถึงเมื่อ MT เริ่มทำงานเมื่อคุณต่อ EA เข้ากับแผนภูมิหรือถ้าคุณ เปลี่ยนระยะเวลาสวัสดีมีวิธีใดที่จะปิดตำแหน่งด้วยการข้ามฉันหมายถึงเปิดข้าม (เช่นกำลังทำอยู่ในขณะนี้) และปิดข้ามอีก
No comments:
Post a Comment