Tuesday 15 August 2017

80 Trading กลยุทธ์ สำหรับ มือใหม่


MetaTrader 5 - Trading Systems กลยุทธ์การซื้อขาย 80-20 บทนำ 80-20 เป็นชื่อของหนึ่งในกลยุทธ์การซื้อขาย (TS) ที่อธิบายไว้ในหนังสือ Street Smarts: กลยุทธ์การซื้อขายระยะสั้นความน่าจะเป็นสูงของ Linda Raschke และ Laurence Connors คล้ายคลึงกับกลยุทธ์ที่กล่าวถึงในบทความก่อนหน้านี้ ผู้เขียนให้แอตทริบิวต์ดังกล่าวอยู่ในขั้นตอนเมื่อราคาทดสอบเส้นขอบช่วง นอกจากนี้ยังมุ่งเน้นไปที่การแสวงหาประโยชน์จากฝ่ามือปลอมและการม้วนหลังจากชายแดน แต่คราวนี้เราวิเคราะห์การเคลื่อนไหวของราคาในช่วงเวลาที่สั้นลงอย่างมากซึ่งเกี่ยวข้องกับวันก่อนหน้าเท่านั้น อายุการใช้งานของสัญญาณที่ได้รับค่อนข้างสั้นเนื่องจากระบบนี้มีไว้สำหรับการซื้อขายระหว่างวัน วัตถุประสงค์แรกของบทความนี้คือเพื่ออธิบายการพัฒนาโมดูลสัญญาณกลยุทธ์การซื้อขาย 80-20 โดยใช้ภาษา MQL5 จากนั้นเราจะเชื่อมต่อโมดูลนี้กับรุ่นที่แก้ไขเล็กน้อยของหุ่นยนต์การค้าขั้นพื้นฐานที่พัฒนาขึ้นในบทความก่อนหน้านี้ของชุด นอกจากนี้เราจะใช้โมดูลเดียวกันมากสำหรับการพัฒนาตัวบ่งชี้สำหรับการซื้อขายด้วยตนเอง ดังที่กล่าวมาแล้วโค้ดที่ระบุในชุดบทความมีวัตถุประสงค์เพื่อให้โปรแกรมเมอร์ขั้นสูงขั้นสูงเพียงเล็กน้อย ดังนั้นนอกเหนือจากวัตถุประสงค์หลักของรหัสได้รับการออกแบบมาเพื่อช่วยให้ย้ายจากการเขียนโปรแกรมขั้นตอนหนึ่งไปยังเชิงวัตถุ รหัสจะไม่มีการเรียน แต่จะใช้โครงสร้างที่ง่ายกว่าการควบคุม ยังมีวัตถุประสงค์อื่นของบทความนี้คือการพัฒนาเครื่องมือที่ช่วยให้เราสามารถตรวจสอบได้ว่ากลยุทธ์นี้ยังใช้ได้หรือไม่ตั้งแต่วันนี้เนื่องจาก Raschke และ Connors ใช้พฤติกรรมทางการตลาดในช่วงปลายศตวรรษที่ผ่านมาเมื่อสร้างมันขึ้นมา การทดสอบ EA ไม่กี่ครั้งจะขึ้นอยู่กับข้อมูลประวัติที่ทันสมัยอยู่ในตอนท้ายของบทความ ระบบการซื้อขาย 80-20 ชื่อผู้เขียนชื่อจอร์จเทย์เลอร์เทย์เลอร์เทรดดิ้งเทคนิค เช่นเดียวกับ Steve Moores ทำงานในการวิเคราะห์คอมพิวเตอร์ของตลาดซื้อขายล่วงหน้าและประสบการณ์การซื้อขาย Derek Gipsons เป็นพื้นฐานทางทฤษฎีสำหรับการทำงานของตัวเอง สาระสำคัญของกลยุทธ์การซื้อขายสามารถอธิบายได้โดยย่อดังต่อไปนี้ถ้าวันก่อนหน้าราคาเปิดและปิดตั้งอยู่ในพื้นที่ช่วงต่าง ๆ ของวันที่ตรงกันข้ามความน่าจะเป็นของการกลับรายการในวันเปิดวันก่อนนั้นสูงมาก ราคาเปิดและปิดในวันก่อนหน้าควรอยู่ใกล้กับเส้นขอบช่วง การกลับรายการควรเริ่มต้นวันปัจจุบัน (ไม่ใช่ก่อนที่เทียนวันก่อนหน้าจะถูกปิด) กฎของกลยุทธ์ในการซื้อมีดังต่อไปนี้ 1. ตรวจสอบให้แน่ใจว่าตลาดเปิดในช่วง 20 วันและปิดต่ำกว่า 20 วันในช่วงวันนี้ 2. รอจนถึงวันนี้ต่ำแบ่งวันก่อนหน้าอย่างน้อย 5 tick 3. วางใบสั่งซื้อที่รอดำเนินการในเส้นขอบล่างของช่วงของปีที่ผ่านมา 4 เมื่อใบสั่งซื้อที่รอดำเนินการตั้งค่าเริ่มต้น StopLoss ไว้ในวันที่ต่ำสุด 5. ใช้เครื่องหมายต่อท้ายเพื่อป้องกันกำไรที่ได้รับกฎการขายที่ขายจะเหมือนกัน แต่ควรระบุแถบเมื่อวานนี้ รั้นสั่งซื้อควรอยู่ที่ขอบด้านบนของแถบขณะที่ StopLoss ควรวางไว้ที่ระดับสูงในปัจจุบัน รายละเอียดที่สำคัญอื่น ๆ ก็คือขนาดของบาร์ปิดทุกวัน ตามที่ Linda Raschke ควรมีขนาดใหญ่พอสมควร - มากกว่าขนาดเฉลี่ยของบาร์ทุกวัน อย่างไรก็ตามเธอไม่ได้ระบุจำนวนวันในประวัติศาสตร์ที่ควรคำนึงถึงเมื่อคำนวณค่าเฉลี่ยรายวัน เราควรจำไว้ว่า TS ถูกออกแบบมาเฉพาะสำหรับตัวอย่างการค้าระหว่างวันที่แสดงในหนังสือใช้แผนภูมิ M15 บล็อกสัญญาณและตัวบ่งชี้การจัดวางตามกลยุทธ์จะอธิบายไว้ด้านล่าง นอกจากนี้คุณยังสามารถดูภาพหน้าจอที่มีผลการดำเนินงานของตัวบ่งชี้ได้ พวกเขาแสดงให้เห็นถึงรูปแบบที่สอดคล้องกับกฎของระบบและระดับการซื้อขายที่เชื่อมโยงกับรูปแบบ การวิเคราะห์รูปแบบควรมีผลในการวางคำสั่งซื้อที่รอดำเนินการ ระดับการซื้อขายที่เหมาะสมกับระยะเวลา M1: รูปแบบเดียวกันกับทิศทางการซื้อขายในทิศทางตรงกันข้ามกับระยะเวลา M5: ระดับการซื้อขาย (ระยะเวลา M1): โมดูลสัญญาณอนุญาตให้เพิ่มการคำนวณระดับกำไรเพื่อแสดงการเพิ่มตัวเลือกใหม่ให้กับ TS ที่กำหนดเอง ไม่มีระดับดังกล่าวในเวอร์ชันต้นฉบับเนื่องจากมีเพียงจุดต่อท้ายที่ใช้เพื่อปิดตำแหน่งเท่านั้น ให้ทำกำไรขึ้นอยู่กับระดับการแบ่งระดับขั้นต่ำที่กำหนดเอง (TS8020ExtremumBreak) เราจะคูณด้วยอัตราส่วนที่กำหนดเอง TS8020TakeProfitRatio เราจำเป็นต้องมีองค์ประกอบดังต่อไปนี้ของฟังก์ชั่นหลักของโมดูลสัญญาณ feGetEntrySignal: สถานะสัญญาณปัจจุบัน, ระดับรายการที่คำนวณได้และระดับการออก (Stop Loss และ Take Profit) เช่นเดียวกับเส้นขอบช่วง yesterdays ทุกระดับจะได้รับผ่านทางลิงก์ไปยังตัวแปรที่ส่งผ่านไปยังฟังก์ชันในขณะที่สถานะการส่งกลับของสัญญาณใช้รายการตัวเลือกจากบทความก่อนหน้านี้: Enum ENUMENTRYSIGNAL ENTRYBUY, ซื้อสัญญาณ ENTRYSELL, ขายสัญญาณ ENTRYNONE, ไม่มีสัญญาณ ENTRYUNKNOWN สถานะไม่ได้กำหนด ENUMENTRYSIGNAL feGetEntrySignal ( D1 การวิเคราะห์รูปแบบเทียนสองแบบ datetime tTime, เวลาปัจจุบันคู่ amp dEntryLevel, ระดับรายการ (เชื่อมโยงไปยังตัวแปร) แอมป์คู่ dSL, ระดับ StopLoss (เชื่อมโยงไปยังตัวแปร) คู่ dTP, ระดับ TakeProfit (เชื่อมโยงไปยังตัวแปร) amp dRangeHigh คู่ , สูงของรูปแบบ 1 st bar (เชื่อมโยงไปยังตัวแปร) amp คู่ dRangeLow ต่ำของรูปแบบ 1 st bar (เชื่อมโยงไปยังตัวแปร)) เพื่อตรวจจับสัญญาณเราจำเป็นต้องวิเคราะห์สองแถบสุดท้ายของ D1 ระยะเวลา ให้เริ่มจากส่วนแรกหากไม่ตรงตามเกณฑ์ของ TS คุณไม่จำเป็นต้องตรวจสอบแถบที่สอง มีสองเกณฑ์คือ 1. ขนาดแถบ (ความแตกต่างระหว่างสูงและต่ำ) ควรเกินค่าเฉลี่ยสำหรับ XX วันที่ผ่านมา (กำหนดโดย TS8020D1AveragePeriod กำหนดเอง) 2. ระดับการเปิดและปิดบาร์ควรอยู่ที่ 20 ช่วงของบาร์หากเงื่อนไขเหล่านี้ตรงตามราคาสูงและราคาต่ำควรได้รับการบันทึกไว้เพื่อใช้งานต่อไป เนื่องจากพารามิเตอร์ของแถบแรกไม่เปลี่ยนแปลงภายในทั้งวันจะไม่มีจุดใดในการตรวจสอบได้ที่การเรียกฟังก์ชันแต่ละครั้ง ให้เก็บไว้ในตัวแปรคงที่: การตั้งค่าที่กำหนดเอง uint TS8020D1AveragePeriod 20 80-20: จำนวนวันสำหรับการคำนวณค่าเฉลี่ยของช่วง uint ประจำวัน TS8020ExtremumBreak 50 80-20: การฝ่าฝืนขั้นต่ำสุดของสุดยอด yesterdays extremum (in points) รูปแบบ ENUMENTRYSIGNAL sePossibleSignal ENTRYUNKNOWN ทิศทางสัญญาณบาร์ตัวแปรคู่คงที่สำหรับการจัดเก็บระดับคำนวณระหว่างเห็บ sdEntryLevel 0, SDSL 0. sdTP 0, sdRangeHigh 0. sdRangeLow 0 ตรวจสอบรูปแบบครั้งแรกในแถบ D1: ถ้า (sePossibleSignal ENTRYUNKNOWN) stLastD1Bar tCurrD1Bar 1 บาร์ไม่เปลี่ยนแปลงเฉลี่ยของวันนี้ (seaperly) หมายถึงไม่มีสัญญาณในวันนี้กลับ (sePossibleSignal) double d20Percents 0.2 (maRates 0.high maRates 0.low) 20 จากช่วง yesterdays ถ้า ((แถบหยาบคาย: maRates 0 เปิดใช้งานในส่วนบน 20 แอมป์โมต์ 0.close lt maRates 0. w2020 แรงดันและปิดต่ำกว่า 20) (รั้น: maRates 0.close gt maRates 0. สูง d20 แถบผู้ขายปิดในด้านบน 20 ampamp maRates 0 เปิดใช้งานต่ำกว่า 0.low d20 ผู้ขายและเปิดในด้านล่าง 20)) 1 st bar ตรงกับเงื่อนไขกำหนดทิศทางการซื้อขายปัจจุบันสำหรับรูปแบบ 1 st bar: sePossibleSignal maRates 0.open gt maRates 0.close ENTRYBUY ระดับการเข้าตลาด ENTRYSELL: sDEntryLevel seEntryLevel sePossibleSignal ENTRYBUY maRates 0.low maRates 0 รูปแบบมากขอบแถบ 1 แถบ: sdRangeHigh dRangeHigh maRates 0. สูง sDrangeLow dRangeLow maRates 0.wlow อื่นระดับแถบ 1 openclose ไม่ตรงกับเงื่อนไข sePossibleSignal ENTRYNONE หมายถึงไม่มีสัญญาณกลับวันนี้ (sePossibleSignal) รายการของฟังก์ชันสำหรับการกำหนด ช่วงเฉลี่ยบาร์ภายในจำนวนที่ระบุของบาร์ในช่วงเวลาที่ระบุเริ่มต้นจากฟังก์ชันเวลาที่ระบุ: double fdAverageBarRange (คำนวณแถบขนาดเฉลี่ย int iBarsLimit จำนวนบาร์ที่จะต้องพิจารณา ENUMTIMEFRAMES eTF PERIODCURRENT แถบเวลา timetime ของ datetime tTime WRONGVALUE เมื่อเริ่มคำนวณ) double dAverageRange 0 ตัวแปรสำหรับการรวมค่าถ้า (iBarsLimit lt 1) return (dAverageRange) MqlRates maRates bar information array รับข้อมูลแถบจากช่วงเวลาที่ระบุไว้ในประวัติศาสตร์: if (tTime WRONGVALUE) tTime TimeCurrent () int iPriceBars CopyRates (สัญลักษณ์ eTF, tTime, iBarsLimit , maRates) ถ้า (iPriceBars WRONGVALUE) ถ้า (LogLevel gt LOGLEVELNONE) PrintFor เสื่อ (s: สำเนา: ข้อผิดพลาด u. ฟังก์ชั่น LastError) ผลตอบแทน (dAverageRange) ถ้า (iPriceBars LT iBarsLimit) ถ้า (LogLevel gt LOGLEVELNONE) PrintFormat (s: CopyRates: คัดลอกยูแท่ง U ฟังก์ชั่ iPriceBars, iBarsLimit) ผลรวมของช่วง.. int iBar iPriceBars ในขณะที่ (iBar-- gt 0 ) dAverageRange maRatesiBar. high maRatesiBar. low ค่าเฉลี่ย: return (dAverageRange double (iPriceBars)) มีเพียงเกณฑ์เดียวเท่านั้นสำหรับรูปแบบการ breakout แถบที่สอง (ปัจจุบัน) ของเส้นขอบช่วงของ yesterdays ไม่ควรน้อยกว่าที่ระบุในการตั้งค่า TS8020ExtremumBreak) ทันทีที่ถึงระดับสัญญาณจะแสดงสัญญาณสำหรับการวางคำสั่งซื้อที่รอดำเนินการ: ตรวจสอบรูปแบบแถบที่ 2 (ปัจจุบัน) ที่ D1: ถ้า (sePossibleSignal ENTRYBUY) sdSL dSL maRates 1.low StopLoss ไปยังสถานะ High if (TS8020TakeProfitRatio gt 0 ) sdTP dTP dEntryLevel Point TS8020ExtremumBreak TS8020TakeProfitRatio TakeProfit return (คือการลดลงอย่างเห็นได้ชัดโดยมีค่าบริการ 1. กำหนดอัตรานาที 0. จุดต่ำสุด TS8020ExtremumBreak ENTRYBUY ENTRYNONE) ถ้า (sePossibleSignal ENTRYSELL) sdSL dSL maRates 1. StopLoss สูงถึงปัจจุบันต่ำถ้า (TS8020TakeProfitRatio gt 0) sdTP DTP dEntryLevel จุด TS8020ExtremumBreak TS8020TakeProfitRatio TakeProfit ผลตอบแทน (เป็นฝ่าวงล้อมขึ้นเห็นได้อย่างชัดเจน maRates 1.close maRates gt 0.high จุด TS8020ExtremumBreak ENTRYSELL. ENTRYNONE) บันทึกทั้งสองฟังก์ชั่นดังกล่าวข้างต้น (feGetEntrySignal และ fdAverageBarRange) และการตั้งค่าที่กำหนดเองที่เกี่ยวข้องกับ รับสัญญาณไปยังไฟล์ไลบรารี mqh รายชื่อเต็มแนบอยู่ด้านล่าง อนุญาตให้ตั้งชื่อไฟล์ Signal80-20.mqh และวางไว้ในไดเร็กทอรีที่เหมาะสมของโฟลเดอร์ข้อมูลเทอร์มินัล (MQL5IncludeExpertSignal) ตัวบ่งชี้สำหรับการซื้อขายด้วยตนเองเช่นเดียวกับ EA ตัวบ่งชี้คือการใช้โมดูลสัญญาณที่อธิบายไว้ด้านบน ตัวบ่งชี้ควรแจ้งให้ผู้ประกอบการค้าทราบเกี่ยวกับการรับสัญญาณตำแหน่งคำสั่งซื้อที่ค้างอยู่และระบุระดับการสั่งซื้อเพื่อรับผลกำไรและระดับการหยุดขาดทุน ผู้ใช้สามารถเลือกวิธีการแจ้งเตือนหน้าต่างป๊อปอัปมาตรฐานการแจ้งเตือนทางอีเมลหรือการแจ้งเตือนแบบพุช คุณสามารถเลือกทั้งหมดพร้อมกันหรือชุดค่าผสมที่คุณต้องการ วัตถุประสงค์ของการบ่งชี้อีกประการหนึ่งคือรูปแบบประวัติการซื้อขายตาม 80-20 TS ตัวบ่งชี้คือการเน้นแถบรายวันที่สอดคล้องกับเกณฑ์ของระบบและพล็อตการคำนวณระดับการซื้อขาย เส้นระดับแสดงว่าสถานการณ์มีการเปลี่ยนแปลงตามเวลาอย่างไร เพื่อความชัดเจนมากขึ้นให้ทำดังนี้: เมื่อราคาแตะเส้นสัญญาณจะถูกแทนที่ด้วยบรรทัดคำสั่งซื้อที่รอดำเนินการ เมื่อมีการเปิดใช้ใบสั่งซื้อที่รอดำเนินการสายจะถูกแทนที่ด้วยบรรทัด Take Profit และ Stop Loss บรรทัดเหล่านี้ถูกขัดจังหวะเมื่อราคาแตะที่หนึ่งในนั้น (คำสั่งถูกปิด) รูปแบบนี้ทำให้ง่ายต่อการประเมินประสิทธิภาพของกฎของระบบการค้าและกำหนดสิ่งที่สามารถปรับปรุงได้ ให้เริ่มต้นด้วยการประกาศบัฟเฟอร์และพารามิเตอร์การแสดงผล ขั้นแรกเราต้องประกาศสองบัฟเฟอร์ด้วยการกรอกข้อมูลในแนวตั้ง (DRAWFILLING) วิธีแรกคือการเน้นแถบบาร์เต็มวันของวันก่อนหน้าในขณะที่อีกจุดหนึ่งคือการเน้นพื้นที่ภายในเท่านั้นเพื่อแยกออกจากด้านบนและด้านล่าง 20 ของช่วงที่ใช้ใน TS หลังจากนั้นให้ประกาศบัฟเฟอร์สองชุดสำหรับเส้นสัญญาณหลายสีและบรรทัดคำสั่งที่รอดำเนินการ (DRAWCOLORLINE) สีของพวกเขาขึ้นอยู่กับทิศทางการซื้อขาย มีอีกสองบรรทัด (Take Proft และ Stop Loss) โดยมีสีเหลืออยู่ (DRAWLINE) โดยจะใช้สีมาตรฐานเดียวกันกับที่กำหนดในเทอร์มินัล ทุกประเภทการแสดงผลที่เลือกยกเว้นบรรทัดที่เรียบง่ายต้องมีบัฟเฟอร์สองชุดแต่ละส่วนดังนั้นโค้ดจะมีลักษณะดังนี้: คุณสมบัติตัวบ่งชี้คุณสมบัติตัวบ่งชี้คุณสมบัติ 10 ตัวบ่งชี้คุณสมบัติ 6 ตัวบ่งชี้คุณสมบัติ 1 แถบ 1 ของคุณสมบัติของรูปแบบ indicatortype1 DRAWFILLING ตัวบ่งชี้คุณสมบัติของคุณสมบัติ 1 clrDeepPink ตัวบ่งชี้คุณสมบัติ clrDodgerBlue 1 ตัวบ่งชี้คุณสมบัติ 1 แถบคุณสมบัติของคุณสมบัติรูปแบบ indicatortype2 ตัวชี้วัดคุณสมบัติการวาดภาพ 2 clrDeepPink ตัวบ่งชี้คุณสมบัติ clrDodgerBlue indicatorwidth2 1 ตัวบ่งชี้คุณสมบัติ 3 ค่าระดับสัญญาณบ่งชี้คุณสมบัติ 3 ตัวชี้วัดคุณสมบัติ DRAWCOLORLINE3 ตัวบ่งชี้คุณสมบัติ STYLESOLID3 clrDeepPink ตัวบ่งชี้คุณสมบัติ clrDodgerBlue 2 ตัวบ่งชี้คุณสมบัติ 4 ตัวบ่งชี้คุณสมบัติระดับรายการ indicatortype4 DRAWCOLORLINE ตัวบ่งชี้คุณสมบัติ 4 ตัวบ่งชี้คุณสมบัติ STYLEDASHDOT4 clrDeepPink ตัวบ่งชี้ทรัพย์สิน clrDodgerBlue indicatorwidth4 2 ตัวบ่งชี้คุณสมบัติ 5 ตัวบ่งชี้ทรัพย์สินสูญหายบ่งชี้ตัวบ่งชี้สถานที่ 5 ตัวชี้วัดคุณสมบัติ DRAWLINE 5 ตัวชี้วัดคุณสมบัติ STYLEDASHDOTDOT 5 ตัวบ่งชี้สถานที่ให้บริการ clrCrimson5 ตัวบ่งชี้สถานที่ให้บริการ 1 ตัวบ่งชี้สถานที่ให้บริการ 6 นำคุณสมบัติกำไรบ่งชี้สถานที่ให้บริการ 6 ตัวชี้วัดคุณสมบัติ DRAWLINE6 ตัวบ่งชี้ทรัพย์สิน STYLEDASHDOTDOT ตัวบ่งชี้สถานที่ให้บริการ 6 ตัวบ่งชี้ clrLime6 1 ช่วยให้ผู้ค้าสามารถปิดการเติมรูปแบบรายวัน แถบแรกเลือกตัวเลือกการแจ้งเตือนสัญญาณและ จำกัด ความลึกของเค้าโครงประวัติ การตั้งค่าระบบการซื้อขายทั้งหมดจากโมดูลสัญญาณจะรวมอยู่ที่นี่ ในการทำเช่นนี้เราจำเป็นต้องระบุตัวแปรที่ใช้ในโมดูลก่อนโดยเบื้องต้นแม้ว่าบางส่วนจะใช้เฉพาะในอีเอและไม่จำเป็นต้องใช้ตัวบ่งชี้ดังกล่าว: รวมเอาต์พุตโมดูล TS-80-20 TS ของเอ๊กซ์เพรสทีจ bool ShowOuter จริงแถบที่ 1 ของรูปแบบ: แสดงช่วงป้อนข้อมูลเต็มรูปแบบ bool ShowInner จริงแถบที่ 1 ของรูปแบบ: แสดงพื้นที่ด้านในการป้อนข้อมูล bool AlertPopup true การแจ้งเตือน: แสดงหน้าต่างป๊อปอัปใส่ bool AlertEmail เท็จแจ้งเตือน: ส่ง eMail สายป้อน AlertEmailSubj แจ้งเตือน: ใส่อีเมล์ของท่านเรื่องบูล AlertPush แจ้งเตือนจริง: ส่งป้อนข้อมูลแจ้งเตือนผลักดัน UINT BarsLimit ลึกเค้าโครงประวัติศาสตร์ 2000 (ในบาร์ TF ปัจจุบัน) ENUMLOGLEVEL LogLevel LOGLEVELNONE โหมดการบันทึก buff1stBarOuter คู่ buff1stBarOuterZero บัฟเฟอร์สำหรับพล็อตเต็มรูปแบบของรูปแบบ 1 st bar buff1stBarInner, buff1stBarInnerZero บัฟเฟอร์สำหรับการวางแผนภายใน 60 ของรูปแบบ 1 st bar buffSignal, buffSignalColor, บัฟเฟอร์บรรทัดสัญญาณ buffEntry, บัฟเฟอร์ที่รอดำเนินการ buffSL buffTP, stopLoss และ TakeProfit บรรทัดบัฟเฟอร์ gdExtremumBreak 0 TS8020ExtremumBreak ในราคาสัญลักษณ์ giD1AveragePeriod 1. ค่าที่ถูกต้องสำหรับ TS8020D1AveragePeriod giMinBars WRONGVALUE จำนวนบาร์ที่ต้องการขั้นต่ำสำหรับการคำนวณอีกครั้ง OnInit () ตรวจสอบพารามิเตอร์ TS8020D1AveragePeriod ที่ป้อน: giD1AveragePeriod int (fmin ( 1. TS8020D1AveragePeriod)) แปลงจุดราคาสัญลักษณ์: gdExtremumBreak TS8020ExtremumBreak จุดต่ำสุดที่จำเป็นจำนวนแถบหมายเลขใหม่คำนวณจากบาร์ของ TF ปัจจุบันภายในวัน giMinBars int วัตถุประสงค์ (86400 PeriodSeconds ()) ตัวบ่งชี้บัฟเฟอร์: แถบที่ 1 เต็มรูปสี่เหลี่ยมผืนผ้า SetIndexBuffer (0. buff1stBarOuter, INDICATORDATA) PlotIndexSetDouble (0 PLOTEMPTYVALUE 1) SetIndexBuffer (1 buff1stBarOuterZero, INDICATORDATA) 1 แท่งรูปสี่เหลี่ยมผืนผ้าด้านใน SetIndexBuffer (2. buff1stBarInner, INDICATORDATA) PlotIndexSetDouble (1. PLOTEMPTYVALUE.) SetIndexBuffer (3. buff1stBarInnerZero, INDICATORDATA) สายสัญญาณ SetIndexBuffer (4. buffSignal, INDICATORDATA) PlotIndexSetDouble (2. PLOTEMPTYVALUE 0) SetIndexBuffer (5. buffSignalColor, INDICATORCOLORINDEX) รอการจัดวางตำแหน่ง SetIndexBuffer (6. buffEntry, INDICATORDATA) PlotIndexSetDouble (3. PLOTEMPTYVALUE 0) SetIndexBuffer (7. buffEntryColor, INDICATORCOLORINDEX) บรรทัด SL SetIndexBuffer (8. (INDICATORORD_CHITS, ตัวเลข) IndicatorSetString (INDICATORORDIONS. svg 80-20 TS) วางรหัสของโปรแกรมหลัก (PLOTEMPTYVALUE) PlotIndexSetDouble (4 PLOTEMPTYVALUE 0) บรรทัด TP SetIndexBuffer (9. buffTP, INDICATORDATA) PlotIndexSetDouble (5 PLOTEMPTYVALUE 0) IndicatorSetInteger ไปยังฟังก์ชัน OnCalculate ที่มีอยู่ภายในจะจัดลูปสำหรับ iterating เหนือ t ปัจจุบัน imeframes บาร์จากอดีตไปสู่อนาคตเพื่อค้นหาสัญญาณโดยใช้ฟังก์ชันจากโมดูลสัญญาณ ประกาศและเริ่มต้นตัวแปรที่จำเป็นโดยใช้ค่าเริ่มต้น ให้กำหนดแถบวนรอบที่เก่าแก่ที่สุดสำหรับการคำนวณครั้งแรกโดยคำนึงถึงขีดจำกัดความลึกของประวัติที่ผู้ใช้กำหนด (BarsLimit) สำหรับการโทรที่ตามมาแถบทั้งหมดของวันปัจจุบัน (แทนที่จะเป็นแถบสุดท้าย) จะถูกคำนวณใหม่เนื่องจากรูปแบบสองแท่งอยู่ในแผนภูมิ D1 โดยไม่คำนึงถึงช่วงเวลาปัจจุบัน นอกจากนี้เราควรป้องกันสิ่งที่เรียกว่าภูตผี: ถ้าเราไม่ดำเนินการบัฟเฟอร์ตัวบ่งชี้ที่ถูกต้องในระหว่างการเริ่มต้นใหม่อีกครั้งไม่มีพื้นที่ที่เต็มไปด้วยความเกี่ยวข้องที่ยังคงอยู่บนหน้าจอเมื่อเปลี่ยนกรอบเวลาหรือสัญลักษณ์ การล้างบัฟเฟอร์ควรถูกผูกไว้กับการเรียกฟังก์ชัน OnCalculate แรกหลังการเริ่มต้นตัวบ่งชี้ อย่างไรก็ตามตัวแปร prevcalculated มาตรฐานไม่เพียงพอสำหรับการกำหนดถ้าสายเป็นครั้งแรกเพราะมันอาจมีศูนย์ไม่เพียง แต่ในระหว่างการเรียกฟังก์ชันครั้งแรก แต่ยังเมื่อเปลี่ยน checksum ให้ใช้เวลาพอสมควรในการแก้ปัญหานี้โดยการสร้างโครงสร้างที่ไม่ได้รับผลกระทบจากการตั้งค่าตัวแปรที่คำนวณไว้ล่วงหน้าเป็นศูนย์ โครงสร้างคือการจัดเก็บและประมวลผลข้อมูลที่ใช้บ่อยในตัวบ่งชี้: - ธงของฟังก์ชัน OnCalculate เปิดตัวครั้งแรก - ตัวนับของแถบคำนวณซึ่งไม่ได้ตั้งค่าเป็นศูนย์เมื่อเปลี่ยนค่า checksum - ค่าสถานะของการตรวจสอบ - แฟล็กของจุดเริ่มต้น แถบใหม่ - เวลาเริ่มต้นของแถบปัจจุบัน โครงสร้างที่รวมข้อมูลทั้งหมดนี้จะได้รับการประกาศในระดับโลก ควรจะสามารถรวบรวมหรือนำเสนอข้อมูลจากฟังก์ชันที่มีอยู่ภายในหรือแบบกำหนดเองได้ ให้ชื่อโครงสร้างนี้บราวนี่ สามารถวางไว้ที่ส่วนท้ายของรหัสบ่งชี้ วัตถุโครงสร้างแบบโกลบอลตัวเดียวที่ชื่อ goBrownie จะต้องถูกประกาศด้วยเช่นกัน: struct BROWNIE datetime tLastBarTime เวลาของแถบประมวลผลล่าสุด iPrewCalculated จำนวนบาร์ที่คำนวณได้ bool bFirstRun ธงเริ่มต้นครั้งแรก bHistory อัปเดตประวัติการอัพเดต flag bool bIsNewBar แถบเปิดใหม่ BROWNIE ( ) เป็นค่าเริ่มต้น: tLastBarTime 0 iPrewCalculated WRONGVALUE bFirstRun bIsNewBar จริง bHistoryUpdated เท็จโมฆะ fReset (บูล bResetFirstRun จริง) เป็นค่าเริ่มต้น: tLastBarTime 0 iPrewCalculated WRONGVALUE ถ้า (ชุดจริง bResetFirstRun) bFirstRun ให้เป็นศูนย์ถ้ามีได้รับอนุญาต bIsNewBar จริง bHistoryUpdated เท็จ fUpdate void (int iNewPrewCalculated WRONGVALUE ) ธงของ OnCalculate ในตัวฟังก์ชั่นแรกที่โทร (ถ้า bFirstRun ampamp iPrewCalculated gt 0) bFirstRun เท็จบาร์ datetime ใหม่ tThisBarTime TimeCurrent () - TimeCurrent () PeriodSeconds () bIsNewBar tLastBarTime tThisBarTime อัปเดตครั้งบาร์ปัจจุบันถ้า (bIsNewBar) tLastBar เวลา tThisBarTime ถ้า (iNewPrewCalculated gt - 1) จะมีการเปลี่ยนแปลงใด ๆ ในประวัติศาสตร์ bHistoryUpdated iNewPrewCalculated 0 ampamp iPrewCalculated ใช้ gt WRONGVALUE prewcalculated ในกรณีของ OnCalculate 1 โทรถ้า (iPrewCalculated WRONGVALUE) iPrewCalculated iNewPrewCalculated หรือถ้าไม่มีประวัติการอัพเดทอื่นถ้า (iNewPrewCalculated gt 0) iPrewCalculated iNewPrewCalculated BROWNIE goBrownie แจ้งให้บราวนี่ของเหตุการณ์ de-initialization ตัวบ่งชี้: void OnDeinit (const int reason) goBrownie. fReset () แจ้ง Brownie ถ้าจำเป็นจำนวนข้อมูลที่เก็บไว้โดย Brownie สามารถขยายได้หากฟังก์ชันที่กำหนดเองหรือ คลาสที่ต้องการราคาไดรฟ์ข้อมูลหรือแถบปัจจุบันมีการแพร่กระจายค่า (Open, High, Low, Close, Tickvolume, Volume, Spread) สะดวกกว่าการใช้ข้อมูลสำเร็จรูปจากฟังก์ชั่น OnCalculate และส่งผ่านทาง Brownie แทนที่จะใช้ฟังก์ชันคัดลอกชุดเวลา (CopyOpen, CopyHigh ฯลฯ หรือ CopyRates) ซึ่งช่วยประหยัดทรัพยากรของซีพียูและลดความจำเป็นในการจัดการกับข้อผิดพลาด ของฟังก์ชันภาษาเหล่านี้ ให้กลับไปที่ฟังก์ชันตัวบ่งชี้หลัก การประกาศตัวแปรและการจัดเตรียมอาร์เรย์โดยใช้โครงสร้าง goBrownie ดูข้อมูลต่อไปนี้: goBrownie. fUpdate (prevcalculated) ฟีดข้อมูลไปยัง Brownie int iPeriodBar 0. ตัวนับเสริม iCurrentTFBar ratestotal - int (BarsLimit) ดัชนีบาร์ของลูป TF ปัจจุบันเริ่มต้น datetime stLastD1Bar แบบคงที่ 0 ครั้ง ของแถบการประมวลผลล่าสุดของคู่ของแถบ D1 (รูปแบบ 2 nd bar) int คงที่ si1stBarofDay 0 ดัชนีของแถบปัจจุบันวันแรกถ้า (goBrownie. bFirstRun) ล้างบัฟเฟอร์ในระหว่างการเตรียมใช้งานใหม่: ArrayInitialize (buff1stBarInner, 0) ArrayInitialize ( buff1stBarInnerZero, 0) ArrayInitialize (buff1stBarOuter, 0) ArrayInitialize (buff1stBarOuterZero, 0) ArrayInitialize (buffEntry, 0) ArrayInitialize (buffEntryColor, 0) ArrayInitialize (buffSignal, 0) ArrayInitialize (buffSignalColor, 0) ArrayInitialize (buffTP, 0) ArrayInitialize (buffSL, 0) stLastD1Bar 0 si1stBarofDay 0 else datetime tTime TimeCurrent () ความลึกในการคำนวณใหม่ขั้นต่ำ - จากวันก่อนหน้า: iCurrentTFBar คะแนน - บาร์ (สัญลักษณ์ PERIODCURRENT tTime - tTime 86400. tTime) - 1 ENUMENTRYSIGNAL eSignal ENTRYUNKNOWN สัญญาณคู่ dSL WRONGVALUE ระดับ SL dTP WRONGVALUE ระดับ TP ระดับ WRONGVALUE ระดับรายการ DONGSEHigh WRONGVALUE dRangeLow WRONGVALUE เส้นขอบของรูปแบบช่วงแท่งบาร์ 1 ช่วงเวลา datetime tCurrD1Bar 0. current เวลาแถบ D1 (รูปแบบ 2 nd bar) tD1BarToFill 0 D1 แถบเวลาที่จะเติมเต็ม (รูปแบบ 1 st bar) ตรวจสอบให้แน่ใจว่าดัชนีบาร์คำนวณใหม่อยู่ภายในยอมรับได้ ช่วง iCurrentTFBar int (fmax (0. fmin (iCurrentTFBar, ratestotal - giMinBars))) ในขณะที่ (iCurrentTFBar lt ratestotal ampamp. IsStopped ()) จะมีการตั้งโปรแกรมลูปหลักอยู่ที่นี่ตรวจสอบสถานะของสัญญาณเมื่อทำซ้ำในปัจจุบัน แถบเวลา: eSignal feGetEntrySignal (เวลา iCurrentTFBar, dEntryLevel, dSL, dTP, dRangeHigh, dRangeLow) ถ้า (eSignal gt 1) ไม่มีสัญญาณต่อในระหว่างวันที่แถบเป็นของถ้ามีสัญญาณในแถบแรกวันใหม่ช่วงของ แถบรายวันก่อนหน้านี้ควรจะเต็มไป ค่าของตัวแปร tD1BarToFill ของชนิด datetime ใช้เป็นค่าสถานะ ถ้ามีค่าเท่ากับ WRONGVALUE ไม่จำเป็นต้องกรอกข้อมูลลงในแถบนี้ เส้นสัญญาณควรเริ่มต้นที่แถบแรกเดียวกัน แต่ให้ขยายไปยังแถบสุดท้ายของวันก่อนหน้าเพื่อให้ได้รับการจัดรูปแบบที่ดีขึ้น เนื่องจากการคำนวณของเส้นสัญญาณรวมทั้งเส้นและสีเติมสำหรับแถบรุกและหยาบคายจะแตกต่างกันให้ทำสองช่วงที่คล้ายกัน: tCurrD1Bar เวลา iCurrentTFBar เวลา iCurrentTFBar 86400 เริ่มต้นของวันแถบเป็นของ if (stLastD1Bar lt tCurrD1Bar) tD1BarToFill เวลา iCurrentTFBar 1 เวลา iCurrentTFBar 1 86400 si1stBarofDay iCurrentTFBar อื่น tD1BarToFill WRONGVALUE บาร์วันก่อนหน้านี้ไม่มีการบรรจุใหม่ต้อง stLastD1Bar tCurrD1Bar จำถ้า (tD1BarToFill WRONGVALUE) กรอกวันก่อนหน้า D1 บาร์: iPeriodBar iCurrentTFBar ถ้า (dEntryLevel LT dRangeHigh) ถ้า (ShowOuter) ในขณะที่ (- - iPeriodBar gt 0) ถ้า (เวลา iPeriodBar LT tD1BarToFill) ทำลาย buff1stBarOuterZeroiPeriodBar dRangeLow buff1stBarOuteriPeriodBar dRangeHigh ถ้า (ShowInner) iPeriodBar iCurrentTFBar ในขณะที่ (--iPeriodBar gt 0) (เวลา iPeriodBar LT tD1BarToFill) ทำลาย buff1stBarInnerZeroiPeriodBar dRangeLow 0.2 (dRangeHigh dRangeLow) buff1stBarInneriPeriodBar dRangeHigh 0.2 ถ้า (dRangeHigh dRangeLow) จุดเริ่มต้นของสายสัญญาณจากวันก่อนหน้าบาร์สุดท้าย buffSignaliCurrentTFBar buffSignaliCurrentTFBar 1 dRangeLow gdExtremumBreak buffSignalColoriCurrentTFBar buffSignalColoriCurrentTFBar 1 0 อื่นถ้า (ShowOuter) ในขณะที่ (--iPeriodBar gt 0) ถ้า (เวลา iPeriodBar LT tD1BarToFill) ทำลาย buff1stBarOuterZeroiPeriodBar dRangeHigh buff1stBarOuteriPeriodBar dRangeLow ถ้า (ShowInner) iPeriodBar iCurrentTFBar ในขณะที่ (--iPeriodBar gt 0) ถ้า (เวลา iPeriodBar LT tD1BarToFill) ทำลาย buff1stBarInnerZeroiPeriodBar dRangeHigh 0.2 (dRangeHigh dRangeLow) buff1stBarInneriPeriodBar dRangeLow 0.2 (dRangeHigh dRangeLow) จุดเริ่มต้นของสายสัญญาณจากวันก่อนหน้าบาร์สุดท้าย buffSignaliCurrentTFBar buffSignaliCurrentTFBar 1 dRangeHigh gdExtremumBreak buffSignalColoriCurrentTFBar buffSignalColoriCurrentTFBar 1 1 else continue ทุกเส้นที่เหลือจะถูกจัดวางไว้ในลูปวนรอบ iterometer ในปัจจุบัน ดังที่กล่าวมาแล้วสัญญาณจะสิ้นสุดลงที่แถบที่ราคาแตะที่ บรรทัดคำสั่งที่รอดำเนินการควรเริ่มต้นที่แถบเดียวกันและสิ้นสุดในแถบซึ่งจะมีการติดต่อกับราคา ทำกำไรและหยุดขาดทุนบรรทัดควรเริ่มต้นที่แถบเดียวกัน รูปแบบของรูปแบบเสร็จสิ้นที่แถบที่ราคาแตะที่หนึ่งในนั้น: สายสัญญาณจนถึงแถบที่ข้ามไป: iPeriodBar iCurrentTFBar ถ้า (dEntryLevel lt dRangeHigh) ในขณะที่ (iPeriodBar lt ratestotal) ถ้า (Time iPeriodBar gt tCurrD1Bar 86399) ทำลาย buffSignaliPeriodBar dRangeLow gdExtremumBreak buffSignalColoriPeriodBar 0 ถ้า (dRangeLow gdExtremumBreak gt iPeriodBar ต่ำ) ทำลายอื่นในขณะที่ (iPeriodBar LT ratestotal) ถ้า (เวลา iPeriodBar gt tCurrD1Bar 86399) ทำลาย buffSignaliPeriodBar dRangeHigh gdExtremumBreak buffSignalColoriPeriodBar 1 ถ้า (dRangeHigh gdExtremumBreak LT iPeriodBar สูง) แบ่งบรรทัดรายการจนโดน บาร์: ถ้า (dEntryLevel LT dRangeHigh) ในขณะที่ (iPeriodBar LT ratestotal) ถ้า (เวลา iPeriodBar gt tCurrD1Bar 86399) ทำลาย buffEntryiPeriodBar dRangeLow buffEntryColoriPeriodBar 0 ถ้า (dRangeLow LT สูง iPeriodBar) ถ้า (. buffEntryiPeriodBar 1 0) เริ่มต้นและสิ้นสุดในวันที่บาร์เดี่ยว ขยายโดย 1 บาร์ไปยัง buffEntryiPeriodBar ที่ผ่านมา 1 dR angeLow buffEntryColoriPeriodBar 1 0 แบ่งอื่นในขณะที่ (iPeriodBar LT ratestotal) ถ้า (เวลา iPeriodBar gt tCurrD1Bar 86399) ทำลาย buffEntryiPeriodBar dRangeHigh buffEntryColoriPeriodBar 1 ถ้า (dRangeHigh gt iPeriodBar ต่ำ) ถ้า (buffEntryiPeriodBar 1 0.) เริ่มต้นและสิ้นสุดในวันที่บาร์เดี่ยวขยายจาก 1 บาร์ที่ผ่านมา buffEntryiPeriodBar 1 dRangeHigh buffEntryColoriPeriodBar 1 1 แบ่งเส้น TP และ SL ไปจนถึงแถบใดแถบหนึ่งถูกข้ามโดยแถบ: if (dEntryLevel lt dRangeHigh) SL เท่ากับ Low ตั้งแต่เริ่มต้นวัน: dSL Low ArrayMinimum (ต่ำสุด) si1stBarofDay, iPeriodBar si1stBarofDay) ในขณะที่ (iPeriodBar lt ratestotal) ถ้า (Time iPeriodBar gt tCurrD1Bar 86399) แบ่งข้อมูล buffSLiPeriodBar dSL buffTPiPeriodBar dTP ถ้า (dTP l สูง iPeriodBar dSL gt ต่ำ iPeriodBar) ถ้า (buffSLiPeriodBar 1 0.) เริ่มต้นและสิ้นสุดในแถบเดียว ขยายเวลา 1 bar ไปยัง buff ที่ผ่านมา 1 dSL buffTPiPeriodBar 1 dTP break อื่น SL เท่ากับ High ตั้งแต่จุดเริ่มต้นของวัน: dSL High ArrayMaximum (สูง si1stBarofDay, iPeriodBar si1stBarofDay) ในขณะที่ (iPeriodBar lt ratestotal) ถ้า (Time iPeriodBar gt tCurrD1Bar 86399) break buffSLiPeriodBar dSL buffTPiPeriodBar dTP if (buffSLiPeriodBar 1 0) เริ่มต้นและสิ้นสุดบนแถบเดียวขยายโดย 1 บาร์ไป buffSLiPeriodBar ที่ผ่านมา 1 dSL buffTPiPeriodBar 1 dTP break ให้ไปที่ รหัสการโทรของฟังก์ชั่นการแจ้งเตือน fDoAlert ออกจากลูป ในความเป็นจริงมันมีโอกาสที่กว้างขึ้นเล็กน้อยเมื่อเทียบกับที่เกี่ยวข้องในตัวบ่งชี้นี้ฟังก์ชั่นสามารถทำงานร่วมกับไฟล์เสียงซึ่งหมายความว่าตัวเลือกนี้สามารถเพิ่มการตั้งค่าที่กำหนดเอง เช่นเดียวกับความสามารถในการเลือกไฟล์แยกต่างหากสำหรับสัญญาณซื้อและขาย รายการฟังก์ชั่น: void fDoAlert (ฟังก์ชั่นสำหรับการส่งสัญญาณและสายการแจ้งเตือน sMessage, ข้อความแจ้งเตือน bool bAlert จริงแสดงหน้าต่างป๊อปอัพ bool bSound เท็จเล่นไฟล์เสียง bool bEmail เท็จส่ง eMail bool bNotification เท็จส่งการแจ้งเตือนผลักดัน สตริง sEmailSubject สตริงข้อความ eSail sSound แฟ้มเสียง alert. wav) สตริงแบบคงที่ ssPrevMessage มีข้อความแจ้งเตือนก่อนหน้าเงียบไม่หยุดนิ่ง datetime stPrevTime แถบการแจ้งเตือนก่อนเวลา datetime tThisBarTime TimeCurrent () PeriodSeconds () PeriodSeconds () เวลาแถบปัจจุบันถ้า (ssPrevMessage sMessage stPreTime tThisBarTime) อื่น ๆ ที่ 1 ที่แถบนี้โปรดจำไว้ว่า: ssPrevMessage sMessage stPreTime tThisBarTime สร้างสตริงข้อความ: sSessage StringFormat (ssss, TimeToString (TimeLocal (), TIMESECONDS), เวลาท้องถิ่นสัญลักษณ์ Symbol StringSubstr (EnumToString (ENUMTIMEFRAMES (Period)), 7) ข้อความ TF sMessage) เปิดใช้งานสัญญาณแจ้งเตือน: if (bAlert) Alert (sMessag e) if (bEmail) SendMail (สัญลักษณ์ sEmailSubject sMessage) if (bNotification) SendNotification (sMessage) if (bSound) PlaySound (sSound) รหัสสำหรับตรวจสอบความจำเป็นในการเรียกฟังก์ชันและสร้างข้อความสำหรับมันอยู่ในตัวโปรแกรมก่อนที่จะดำเนินการจัดการเหตุการณ์ OnCalculate: แจ้งเตือน iPeriodBar ratestotal 1 แถบปัจจุบันถ้า (AlertPopup AlertEmail AlertPush 0) return (ratestotal) ทั้งหมดถูกปิดใช้งานถ้า (buffSignaliPeriodBar 0) return (ratestotal) ไม่มีอะไรที่จะจับ (หรือ) ถ้า (buffSignaliPeriodBar gt High iPeriodBar buffSignaliPeriodBar lt Low iPeriodBar) return (ratestotal) ไม่ สายสัญญาณการสัมผัสข้อความข้อความ: สตริง sMessage StringFormat (TS 80-20: ต้อง ss, TP: s, SL: s, buffSignalColoriPeriodBar gt 0. BuyStop SellStop, DoubleToString (dEntryLevel, ตัวเลข), DoubleToString (dTP, Digits), DoubleToString ( การแจ้งเตือน: fDoAlert (sMessage, AlertPopup, false AlertEmail, AlertPush, AlertEmailSubj) return (ratestotal) การดำเนินการ OnCalculate เสร็จสมบูรณ์แหล่งข้อมูลทั้งหมด c สามารถดูได้จากไฟล์แนบ (TS80-20.mq5) รูปแบบการซื้อขายตามระบบจะดีที่สุดในแผนภูมินาที โปรดทราบว่าตัวบ่งชี้จะใช้ข้อมูลแถบแทนที่จะทำเครื่องหมายลำดับในแถบ ซึ่งหมายความว่าถ้าราคาถูกข้ามเส้นโครงร่างหลายรูปแบบ (ตัวอย่างเช่น Take Profit และเส้นขาดทุนขาดทุน) ในแถบเดียวคุณจะไม่สามารถกำหนดได้ว่าจะข้ามไขว้เป็นอันดับแรก ความไม่แน่นอนอีกอย่างหนึ่งเกิดจากความจริงที่ว่าเส้นเริ่มต้นและปลายสายไม่สามารถเกิดขึ้นได้ มิฉะนั้นเส้นจากบัฟเฟอร์ DRAWLINE และ DRAWCOLORLINE จะไม่ปรากฏแก่ผู้ใช้ คุณลักษณะเหล่านี้ช่วยลดความถูกต้องของรูปแบบ แต่ยังคงมีความชัดเจนอยู่ ที่ปรึกษาผู้เชี่ยวชาญสำหรับการทดสอบกลยุทธ์การซื้อขาย 80-20 กลยุทธ์พื้นฐานสำหรับกลยุทธ์การทดสอบจากหนังสือ Street Smarts: กลยุทธ์การซื้อขายระยะสั้นที่มีความน่าเชื่อถือสูงได้อธิบายไว้ในรายละเอียดแล้ว ให้แทรกสองการเปลี่ยนแปลงที่สำคัญในนั้น ประการแรกโมดูลสัญญาณจะใช้ในตัวบ่งชี้เช่นกันซึ่งหมายความว่ามันจะเหมาะสมที่จะตั้งการคำนวณระดับการซื้อขายในนั้น เราได้ดำเนินการตามข้างต้นแล้ว นอกเหนือจากสถานะของสัญญาณแล้วฟังก์ชัน feGetEntrySignal จะส่งคืนตำแหน่งคำสั่ง Stop Loss และ Take Profit Therefore, lets remove the appropriate part of the code from the previous EA version adding the variables for accepting levels from the function and edit the function call itself. The listings of the old and new code blocks can be found in the attached file (strings 128-141). Another significant addition to the basic EA code is due to the fact that, unlike the previous two, this TS deals with a short-term trend. It assumes that the roll-back happens once a day and is unlikely to be repeated. This means that the robot has to make only one entry ignoring the existing signal all the rest of the time until the next day. The easiest way to implement that is to use a special flag static or global variable of bool type in the program memory. But if the EA operation is interrupted for some reason (the terminal is closed, the EA is removed from the chart, etc.), the flag value is lost as well. Thus, we should have the ability to check if todays signal was activated previously. To do this, we may analyze the history of trades for today or store the date of the last entry in the terminal global variables rather than in the program. Let us use the second option since it is much easier to implement. Provide users with the ability to manage one entry per day option and set an ID of each launched version of the robot it is needed to use global variables of the terminal level: input bool OneTrade false One position per day input uint MagicNumber 2016 EA magic number Lets add the variables necessary to implement one entry per day option to the programs global variables definition block. Initialize them in the OnInit function: string gsPrefix identifier of (super)global variables bool gbPositionToday false , gbPendingToday false Create a prefix of (super)global variable names: gsPrefix StringFormat ( SSB s u s. Symbol. MagicNumber, MQLInfoInteger ( MQLTESTER ). t . ) Has the robot worked with market or pending orders today gbPositionToday int ( GlobalVariableGet (gsPrefix LastPositionDate )) TimeCurrent () TimeCurrent () 86400 gbPendingToday int ( GlobalVariableGet (gsPrefix LastPendingDate )) TimeCurrent () TimeCurrent () 86400 Here the robot reads the values of global variables and compares the written time with the day start time, thus defining if the todays signal has already been processed. Time is written to the variables in two places lets add the appropriate block to the pending order installation code (additions highlighted): if (iTry - 10 ) if (LogLevel gt LOGLEVELNONE) Print ( Pending order placing error ) the distance from the current price is not enough :( if (LogLevel gt LOGLEVELERR) PrintFormat ( Pending order cannot be placed at the s level. Bid: s Ask: s StopLevel: s , DoubleToString (dEntryLevel, Digits ), DoubleToString (goTick. bid, Digits ), DoubleToString (goTick. ask, Digits ), DoubleToString (gdStopLevel, Digits ) ) else to update the flag: GlobalVariableSet ( in the terminal global variables gsPrefix LastPendingDate , TimeCurrent () TimeCurrent () 86400 ) gbPendingToday true in the program global variables The second block is placed after the code defining a newly opened position: if ( PositionSelect ( Symbol )) if ( PositionGetDouble ( POSITIONSL ) 0 .) if (gbPositionToday) update the flag: GlobalVariableSet ( in the terminal global vari ables gsPrefix LastPositionDate , TimeCurrent () TimeCurrent () 86400 ) gbPositionToday true in the program global variables . These are the only significant changes in the previous EA version code. The finalized source code of the new version is attached below. Strategy backtesting In order to illustrate the trading system viability, its authors use patterns detected on the charts from the end of the last century. Therefore, we need to check its relevance in todays market conditions. For testing, I took the most popular Forex pair EURUSD, the most volatile pair USDJPY and one of the metals XAUUSD. I increased the indents specified by Raschke and Connors 10 times, since four-digit quotes were used when the book was written, while I tested the EA on five-digit ones. Since there is no any guidance concerning the trailing parameters, I have selected the ones that seem to be most appropriate to daily timeframe and instrument volatility. The same applies to the Take Profit calculation algorithm added to the original rules the ratio for its calculation was chosen arbitrarily, without deep optimization. The balance chart when testing on the five-year EURUSD history with the original rules (no Take Profit): The same settings and Take Profit: The balance chart when testing the original rules on the five-year USDJPY history: The same settings and Take Profit: The balance chart when testing the original rules on the daily gold quotes for the last 4 years: The full data on the robot settings used in each test can be found in the attached archive containing the complete reports. Conclusion The rules programmed in the signal module match the 80-20 trading system description provided by Linda Raschke and Laurence Connors in their book Street Smarts: High Probability Short-Term Trading Strategies. However, we have extended the original rules a bit. The tools (the robot and the indicator) are to help traders draw their own conclusions concerning the TS relevance in todays market. In my humble opinion, the TS needs a serious upgrade. In this article, I have tried to make some detailed comments on developing the code of the signal module, as well as the appropriate robot and indicator. I hope, this will help those who decide to do the upgrade. Apart from modifying the rules, it is also possible to find trading instruments that fit better to the system, as well as signal detection and tracking parameters. Best easy Forex strategies Easy forex strategies for beginners should help even novice forex market traders achieve success in their transactions. กลยุทธ์ดังกล่าวไม่จำเป็นต้องมีทักษะที่กว้างขวางหรือซับซ้อนในการซื้อขายสกุลเงินในตลาด Forex และอาจถูกนำมาใช้อย่างมีประสิทธิภาพโดยผู้เริ่มต้นนำผลตอบแทน นักลงทุนในตลาดต่างประเทศที่มีประสบการณ์มักจะใช้แผนการซื้อขายเครื่องมือและวิธีการซื้อขายที่ซับซ้อนและซับซ้อนเพื่อให้ได้ผลลัพธ์ที่ดีที่สุดจากกิจกรรมการตลาดแบบอัตราแลกเปลี่ยน อย่างไรก็ตามในขณะที่วิธีการดังกล่าวเหมาะสำหรับมืออาชีพผู้ค้ามือใหม่อาจต้องการใช้กลยุทธ์ที่ง่ายกว่าสำหรับการพุ่งลึกลงไปในตลาดอัตราแลกเปลี่ยนและเพื่อให้บรรลุผลการค้าในเชิงบวกได้ในครั้งเดียว ในบทความนี้เราจะตรวจสอบกลยุทธ์การซื้อขาย forex ที่ง่ายที่สุดที่ดีที่สุดสำหรับผู้ค้า forex ยุทธวิธี Breakout Forex ง่ายกลยุทธ์ breakout เป็นกลยุทธ์ forex ง่าย ๆ ฟรีสำหรับผู้เริ่มต้นทุกคนที่ต้องการเริ่มต้นใน forex ในภาพด้านบนแถบสีแดงจะแสดงเป็นสีแดง กับบาร์ที่กำลังหดตัวต่อเนื่องการขายกำลังได้รับแรงผลักดัน ดังนั้นผู้ค้าจะต้องติดตามแนวโน้มอย่างใกล้ชิดในการระบุเมื่อต้องทำการค้าโดยคำนึงถึงความเป็นไปได้ที่จะเปลี่ยนแปลงแนวโน้มในปัจจุบัน วงกลมสีเหลืองในภาพแสดงให้เห็นถึงจุดเริ่มต้นของขาลง (ซึ่งได้รับการยืนยันจากข้อเท็จจริงที่ว่าระดับต่ำใหม่เริ่มผันผวนจากระดับต่ำสุดก่อนหน้านี้) เครื่องหมายลบสีแดงที่ใหญ่ที่สุดนี้แสดงถึงแรงขับเคลื่อนการขายที่แข็งแกร่งมาก ขณะนี้คำสั่งซื้อที่รอดำเนินการอาจอยู่ใต้บาร์โดยคำนึงถึงสภาวะที่เอื้ออำนวยต่อการค้า คำสั่งซื้อที่รอดำเนินการนี้แสดงด้วยเส้นจุดสีเหลืองในแผนภูมิ การหยุดขาดทุนจะอยู่เหนือการเปิดและปิดแถบก่อนหน้า (บรรทัด SL ในภาพ) เป้าหมายแรกของผลกำไรแสดงด้วยเส้นของ TP1 ในภาพและเป้าหมายทางผลกำไรขั้นสุดท้ายแสดงด้วยเส้นของ TP2 เส้นทั้งสองยืนสำหรับระดับต่ำสุดก่อนหน้าและถัดไปตามลำดับ ดังนั้น breakout ค่อนข้างเป็นกลยุทธ์ที่ง่ายของการซื้อขาย forex และสิ่งเดียวที่คุณต้องการสำหรับการใช้งานได้อย่างมีประสิทธิภาพก็คือการเห็นภาพและตรวจสอบช่วงเวลาของการกลับรายการแนวโน้มซึ่งเป็นโมเมนตัมที่เหมาะสมสำหรับการทำธุรกรรม กลยุทธ์ Scalping Forex ง่ายกลยุทธ์ forex scalping เป็นหนึ่งในกลยุทธ์ forex ง่ายที่ทำงานแม้แต่สำหรับ traders สามเณรและใช้ตามอัตภาพในช่วงเวลาสั้น ๆ ตั้งแต่หลายนาทีถึง 15 นาทีหรือน้อยกว่า เพื่อให้ได้ผลลัพธ์ที่ดีที่สุดในยุทธศาสตร์นี้จะใช้ตัวบ่งชี้เพียงสองตัวคือ 200 EMA และตัวบ่งชี้แบบสุ่ม จุดมุ่งหมายหลักของอดีตคือการเปิดเผยแนวโน้มและหลังถูกใช้เป็นเครื่องกำเนิดไฟฟ้าที่แสดงว่าตลาดถูกครอบงำด้วยความต้องการหรืออุปทานที่มากเกินไป สำหรับการซื้อภายใต้กลยุทธ์ forex ที่ง่ายที่สุดสำหรับการทำธุรกรรมด่วนนี้จำเป็นต้องมีเงื่อนไขเบื้องต้นหลายอย่าง อันดับแรกราคาต้องอยู่เหนือ 200 EMA ถัดไปสายสุ่มต้องขับรถต่ำกว่า 20 เส้นและชี้ขึ้น เมื่อถึงจุดนี้พ่อค้าต้องเปิดใช้งานคำสั่งซื้อของเขาอย่างรวดเร็วโดยทันทีวางหยุดการสูญเสีย 15 ถึง 20 pips ออกไป ทำกำไรในกรณีนี้จะถูกตั้งค่าเป็น 20 ถึง 30 จุด สำหรับการขายภายใต้กลยุทธ์ scalping forex ง่ายงานนี้ในทางตรงกันข้ามค่อนข้าง ดังนั้นราคาควรอยู่ต่ำกว่า 200 EMA และเส้น stochastic ต้องสูงกว่า 80 บรรทัดและชี้ลง ถัดไปพ่อค้าได้เปิดใช้ใบสั่งขายของเขาได้อย่างรวดเร็วและสถานที่หยุดการสูญเสีย 15 ถึง 20 pips ออกไป ในทำนองเดียวกันกับการตั้งค่าการซื้อทำกำไรในกรณีนี้จะถูกตั้งค่าเป็น 20 ถึง 30 pips กลยุทธ์ scalping ที่อธิบายไว้ข้างต้นเป็นกลยุทธ์ forex ง่ายสำหรับผู้เริ่มต้น ยังคงควรระลึกไว้เสมอว่ายังมีความเสี่ยงอยู่บ้าง กล่าวคือตลาดอาจสร้างสัญญาณผิดพลาดจำนวนมากซึ่งควรได้รับการตรวจสอบผ่านมุม 200 EMA เมื่อมุมนี้หรือคล้ายกับแบนการค้าควรหลีกเลี่ยง มิฉะนั้นหากนักลงทุนสามารถตัดสินใจได้อย่างรวดเร็วโดยการประเมินการเปลี่ยนแปลงของตลาดในปัจจุบันกลยุทธ์นี้อาจมีประสิทธิภาพแม้กระทั่งสำหรับผู้เล่นในตลาด forex สามเณร 100 EMA และ Parabolic Stop และ Reversal กลยุทธ์ Forex แบบง่ายๆกลยุทธ์นี้เป็นหนึ่งในกลยุทธ์การเทรดแบบง่ายที่ผู้เริ่มต้นใช้งานได้อย่างมีประสิทธิภาพสามารถใช้ในธุรกรรมการค้า forex ได้ ใช้ดัชนีชี้วัดพื้นฐานสองตัวเพื่อวิเคราะห์สถานการณ์ตลาดและตัดสินใจซื้อที่ดีที่สุด: 100 EMA และดัชนี SAR (หยุดและพลิกกลับ) พาราโบลา สำหรับการซื้อโดยใช้กลยุทธ์นี้ราคาต้องอยู่เหนือเส้นแทน 100 EMA ถัดไปจุด SAR แบบพาราโบลาจะต้องโผล่ขึ้นใต้เชิงเทียน ขณะนี้ผู้ค้าต้องวางคำสั่งซื้อสะสมที่รอดำเนินการไว้ 2 จุดเหนือจุดสูงของเชิงเทียนที่กล่าวถึงข้างต้น หยุดการสูญเสียควรวาง 2 pips ต่ำกว่าจุดต่ำสุดที่ใกล้เคียงที่สุด การแกว่งสูงครั้งก่อนในกรณีนี้ใช้เป็นกำไร สำหรับการขายภายใต้กลยุทธ์นี้เงื่อนไขตรงกันข้าม คือราคาต้องอยู่ต่ำกว่า 100 EMA และจุด SAR พาราโบลาจะต้องโผล่ขึ้นเหนือแท่งเทียน ผู้ค้ารายย่อยกว่าวางคำสั่งซื้อที่รอดำเนินการ 2 จุดต่ำกว่าจุดต่ำสุดของเชิงเทียนที่กล่าวถึงข้างต้น หยุดการสูญเสียควรวาง 2 pips เหนือ swing high ที่ใกล้เคียงที่สุด การแกว่งต่ำครั้งก่อนในกรณีนี้ใช้เป็นกำไร นี่อาจเป็นกลยุทธ์อัตราแลกเปลี่ยนที่ง่ายและให้ผลกำไรโดยเฉพาะอย่างยิ่งในตลาดที่มีแนวโน้มสูงซึ่งมีสัญญาณที่เห็นได้ชัดเจนในการซื้อและขาย การใช้จุดสูงสุดของการแกว่งก่อนหน้านี้เป็นมูลค่ากำไรเป็นอีกหนึ่งประโยชน์ของกลยุทธ์นี้ซึ่งจะทำให้เข้าใจได้ง่ายขึ้นและใช้งานได้ง่ายขึ้น อย่างไรก็ตามตลาดอาจสร้างสัญญาณเท็จด้วยและการล่าช้าอาจมีบทบาทสำคัญ ดังนั้นพ่อค้าควรจะยังคงใส่ใจในการหลีกเลี่ยงความสูญเสียที่ไม่คาดฝัน ข้อสรุปกลยุทธ์ที่เราพิจารณาในบทความนี้เป็นเพียงส่วนเล็ก ๆ ของกลยุทธ์ forex ที่ง่ายสำหรับผู้เริ่มต้นที่มีอยู่ในตลาด Find an easy trading strategy in forex which suits best your goals and skills, and you will be able to start effectively trading an gaining yields from the forex market.80 trading strategies for novice The system is amongst the most typically used Forex software in part for the: high shopping for and selling frequency, little stop losses, chance totrade many currencies at the identical time and effectiveness at compounding smaller accounts. Its high trading turnover is done achievable merely asa result of it can actually take and assess a heap of trades a day. On the other hand, this specific strength can be a drawback providing it demandsincreased risk taking. I would like to thank Scott for such great help and instruction with all of your program (TOW 3.0). For me your Integrity, your caring andconsideration is very much appreciated. 80 trading strategies for novice (bonus ) The Fapturbo Evolution was revealed throughout 2009 to produce a ton higher FX trading overall performance and conjointly higher profits compared tothe former edition. This Forex automatic robot is placed among the Gold category that has a rating of nine over 10 for profitability and ease of use. As regards to tech support team its rated seven over ten. It is easy to setup and theres a relevant video guide to guide folks within the setupstage. Individuals do not require in-depth data of FX shopping for and selling to begin using this software package considering that it carries outalmost all the actual task. With the Play characteristic, users just would like to let the software trade with one fr1 of their own play bucks andthey are going to determine their funds multiply each week. Video 80 trading strategies for novice Proprietary Trading Strategies: 80-90 Winner Market Analysis 80 trading strategies for novice trade. An Forex Trading Strategy Perfect For Novice Traders And Triple. Forex Strategy Trading Tips The Forex Trading Every Trader. Forex Trading for Novices. In order to build your online trading skills we offer to get started trading with one of the best online trading software. Read the top Forex softwaretrading reviews to find out more about different trading software and their advantages. Description 80 trading strategies for novice I made 0 this morning on four trades (30 70 50 70) on the CL and am calling it quits for today. Good too as I had brought my live account balancedown to 27. I have bounced off the mat and reentered the fightYahoo I would have said just like you have been saying cut the darn computer OFF. My wife had to tell me. Did great some days but wouldnt follow my ruleor your guide lines and that is after some good trades and hitting a target goal. Cut The Computer Off. You cannot stress that enough to the group. Keep up the great work P S I sound like a trader in this email. Bonus 80 trading strategies for novice. An Forex Trading Strategy Perfect For Novice Traders And Triple. Forex Strategy Trading Tips The Forex Trading Every Trader. Forex Trading for Novices. Any recommendation, opinion or advice contained in such material reflects the views of TFF, and TFF expressly disclaims any responsibility for anydecisions or for the suitability of any security or transaction based on it. Specifically, any decisions you may make to buy, sell or hold a securitybased on such research will be entirely your own and not in any way deemed to be endorsed or influenced by or attributed to TFF. For the purposes of the new series, a nearby street location serves for exterior shots 187 North Gower Street in Bloomsbury. The currentresident copes very well indeed with the crowds of tourists taking selfies outside his door (all day at the weekend) and was amused to receive aletter addressed to the actors who the Sherlock fan letter-writer believed lived inside. Interiors are shot in film studios in Cardiff. (Bonus 80 trading strategies for novice.) Had a great time at the Vegas Live Trading Event Awesome stuff to say the least. I want to attend the upcoming event as well. Love the energy 4 years. Scott, youre one of the few folks I know who can say it like it really is - no BS. I wasted 5 years in college Lots of college debt tooonce I was out - what a waste. Discovered futures trading while in college in 1990 but never successful with it. Didnt have a computer with chartsthen either (had to actually call a broker on the phone - impossible to day trade) so times have changed for the better. Thanks for everything.

No comments:

Post a Comment