| //+--------------------------------------------------------------------+ |
| // |کپی رایت: (ج) 2016 Forex Software Ltd. | |
| // |وب سایت: http://forexsb.com/ | |
| // |پشتیبانی: http://forexsb.com/forum/ | |
| // |مجوز: اختصاصی تحت شرایط زیر: | |
| //| | |
| // |این کد بخشی از سازنده استراتژی فارکس است. این برای | رایگان است |
| // |به عنوان بخشی جدایی ناپذیر از سازنده استراتژی فارکس استفاده کنید.| |
| // |می توان آن را به منظور بهبود کد یا متناسب کردن آن برای | |
| // |استفاده ی شخصی. این کد یا هر بخشی از آن در | |
| // |برنامه های دیگر بدون اجازه.| |
| // |اطلاعات تماس قابل تغییر نیست.| |
| //| | |
| // |هیچ مسئولیتی در قبال خسارت های ناشی از آن | |
| //| | |
| // |به هیچ وجه نویسنده مسئولیت هرگونه خسارت وارده نخواهد بود | |
| // |(از جمله ، بدون محدودیت ، اتفاقی ، مستقیم ، غیرمستقیم و | |
| // |خسارات ناشی از خسارت ، خسارت برای از دست دادن سود کسب و کار ، | |
| // |وقفه در تجارت ، از دست دادن اطلاعات کسب و کار یا موارد دیگر | |
| // |از دست دادن مالی) ناشی از استفاده یا عدم توانایی در استفاده از این | |
| // |محصول ، حتی اگر از احتمال چنین خسارت هایی توصیه شود.| |
| //+--------------------------------------------------------------------+ |
| #Property کپی رایت "کپی رایت (ج) 2016 Forex Software Ltd." |
| لینک #Property "http://forexsb.com" |
| #نسخه property "2. 00" |
| #سختگیرانه |
| #عبارتند از |
| #عبارتند از |
| //+------------------------------------------------------------------+ |
| //| | |
| //+------------------------------------------------------------------+ |
| کلاس MACD: نشانگر عمومی |
| |
| عمومی : |
| MACD (slottypes slottype) ؛ |
| محاسبه باطل مجازی (مجموعه داده و مجموعه داده) ؛ |
| >; |
| //+------------------------------------------------------------------+ |
| //| | |
| //+------------------------------------------------------------------+ |
| void macd :: macd (slottypes slottype) |
| |
| slottype = slottype ؛ |
| indicatoame = "MACD" ؛ |
| WaingMessage = "" ؛ |
| isallowltf = true ؛ |
| exectime = executionTime_DuringTheBar ؛ |
| isseparatechart = true ؛ |
| isdiscreteValues = false ؛ |
| isDefaultGroupAll = false ؛ |
| > |
| //+------------------------------------------------------------------+ |
| //| | |
| //+------------------------------------------------------------------+ |
| void macd :: محاسبه (مجموعه داده و مجموعه داده) |
| |
| data = getPointer (مجموعه داده) ؛ |
| MAMethod maMethod = ( MAMethod ) ListParam [ 1 ]. فهرست مطالب ؛ |
| MAMethod slMethod = ( MAMethod ) ListParam [ 3 ]. فهرست مطالب ؛ |
| BasePrice basePrice =( BasePrice ) ListParam [ 2 ]. فهرست مطالب ؛ |
| int slowPeriod = ( int ) NumParam [ 0 ]. ارزش ؛ |
| int fastPeriod = ( int ) NumParam [ 1 ]. ارزش ؛ |
| int signalPeriod =( int ) NumParam [ 2 ]. ارزش ؛ |
| int previous = CheckParam [ 0 ]. بررسی شد؟1 : 0 ; |
| int firstBar = MathMax ( MathMax ( slowPeriod , fastPeriod ), signalPeriod ) + قبلی + 2 ; |
| دو قیمت []; قیمت (پایه قیمت، قیمت); |
| دو برابر ما اسلو []; MovingAverage ( slowPeriod , 0 , maMethod , price , maSlow ); |
| دو مافست []; MovingAverage ( fastPeriod , 0 , maMethod , price , maFast ); |
| دو مک دی []; ArrayResize (macd، Data. Bars)؛ArrayInitialize (macd, 0); |
| برای (int bar = slowPeriod - 1 ; bar |
| |
| macd [ bar ]= maFast [ bar ]- maSlow [ bar ]; |
| > |
| دو maSignalLine []; |
| MovingAverage ( signalPeriod , 0 , slMethod , macd , maSignalLine ); |
| هیستوگرام دوگانه []; ArrayResize (هیستوگرام، داده. نوارها)؛ArrayInitialize (هیستوگرام، 0); |
| برای (int bar = slowPeriod + signalPeriod - 1 ; bar |
| |
| هیستوگرام [ bar ]= macd [ bar ]- maSignalLine [ bar ]; |
| > |
| ArrayResize (کامپوننت [0]. مقدار، داده. میله ها)؛ |
| جزء [0].compName = " هیستوگرام " ; |
| جزء [0]. DataType = IndComponentType_IndicatorValue ; |
| جزء [0]. FirstBar = firstBar ; |
| ArrayCopy (کامپوننت [0]. مقدار، هیستوگرام); |
| ArrayResize (کامپوننت [1]. مقدار، داده. نوارها)؛ |
| جزء [1].compName = " خط سیگنال " ; |
| جزء [1]. DataType = IndComponentType_IndicatorValue ; |
| جزء [1]. FirstBar = firstBar ; |
| ArrayCopy ( جزء [ 1 ]. Value , maSignalLine ); |
| ArrayResize (کامپوننت [2]. مقدار، داده. نوارها); |
| جزء [2].compName = "خط MACD"; |
| جزء [2]. DataType = IndComponentType_IndicatorValue ; |
| جزء [2]. FirstBar = firstBar ; |
| ArrayCopy (کامپوننت [2]. مقدار، macd); |
| ArrayResize (کامپوننت [3]. مقدار، داده. نوارها); |
| ArrayResize (کامپوننت [4]. مقدار، داده. نوارها); |
| if (SlotType == SlotTypes_OpenFilter) |
| |
| جزء [3]. DataType = IndComponentType_AllowOpenLong; |
| جزء [3].compName = " ورود طولانی مجاز است " ; |
| جزء [4]. DataType = IndComponentType_AllowOpenShort ; |
| جزء [4].compName = " ورود کوتاه مجاز است " ; |
| > |
| else if (SlotType == SlotTypes_CloseFilter) |
| |
| جزء [3]. DataType = IndComponentType_ForceCloseLong ; |
| جزء [3].compName = "بستن موقعیت طولانی"; |
| جزء [4]. DataType = IndComponentType_ForceCloseShort ; |
| مؤلفه [4].compName = "بستن موقعیت کوتاه" ؛ |
| > |
| if (listParam [0]. text == "خط MACD افزایش می یابد") |
| SpillatorLogic (FirstBar ، قبلی ، MACD ، 0 ، 0 ، مؤلفه [3] ، مؤلفه [4] ، IndicatorLogic_The_Indicator_rises) ؛ |
| دیگری اگر (ListParam [0]. text == "MacD Line Falls") |
| SpillatorLogic (FirstBar ، قبلی ، MACD ، 0 ، 0 ، مؤلفه [3] ، مؤلفه [4] ، IndicatorLogic_The_Indicator_falls) ؛ |
| دیگری اگر (ListParam [0]. text == "خط MACD بالاتر از صفر است") |
| SpillatorLogic (FirstBar ، قبلی ، MACD ، 0 ، 0 ، مؤلفه [3] ، مؤلفه [4] ، IndicatorLogic_The_Indicator_IS_HIGHER_THAN_THE_LEVEL_LINE) ؛ |
| دیگری اگر (ListParam [0]. text == "خط MACD پایین تر از صفر است") |
| SpillatorLogic (FirstBar ، قبلی ، MACD ، 0 ، 0 ، مؤلفه [3] ، مؤلفه [4] ، IndicatorLogic_The_Indicator_IS_LOWER_THAN_THE_LEVEL_LINE) ؛ |
| دیگری اگر (ListParam [0]. text == "خط MACD از خط صفر به سمت بالا عبور می کند") |
| AscillatorLogic (FirstBar ، قبلی ، MACD ، 0 ، 0 ، مؤلفه [3] ، مؤلفه [4] ، IndicatorLogic_The_Indicator_Crosses_The_Level_Line_upward) ؛ |
| دیگری اگر (ListParam [0]. text == "خط MACD از خط صفر به سمت پایین عبور می کند") |
| AscillatorLogic (FirstBar ، قبلی ، MACD ، 0 ، 0 ، مؤلفه [3] ، مؤلفه [4] ، IndicatorLogic_The_Indicator_Crosses_The_Level_Line_Downward) ؛ |
| دیگری اگر (ListParam [0]. متن == "خط MACD جهت خود را به سمت بالا تغییر می دهد") |
| AscillatorLogic (FirstBar ، قبلی ، MACD ، 0 ، 0 ، مؤلفه [3] ، مؤلفه [4] ، IndicatorLogic_The_Indicator_Changes_its_direction_upward) ؛ |
| دیگری اگر (ListParam [0]. متن == "خط MACD جهت خود را به سمت پایین تغییر می دهد") |
| AscillatorLogic (FirstBar ، قبلی ، MACD ، 0 ، 0 ، مؤلفه [3] ، مؤلفه [4] ، IndicatorLogic_The_Indicator_Changes_Its_Direction_Downward) ؛ |
| دیگری اگر (ListParam [0]. text == "خط MACD از خط سیگنال به سمت بالا عبور می کند") |
| OsillatorLogic (FirstBar ، قبلی ، هیستوگرام ، 0 ، 0 ، مؤلفه [3] ، مؤلفه [4] ، IndicatorLogic_The_Indicator_Crosses_The_Level_line_upward) ؛ |
| دیگری اگر (ListParam [0]. text == "خط MACD از خط سیگنال به سمت پایین عبور می کند") |
| AscillatorLogic (FirstBar ، قبلی ، هیستوگرام ، 0 ، 0 ، مؤلفه [3] ، مؤلفه [4] ، IndicatorLogic_The_Indicator_Crosses_The_Level_Line_Downward) ؛ |
| دیگری اگر (ListParam [0]. text == "خط MACD بالاتر از خط سیگنال است") |
| SpillatorLogic (FirstBar ، قبلی ، هیستوگرام ، 0 ، 0 ، مؤلفه [3] ، مؤلفه [4] ، IndicatorLogic_The_Indicator_IS_HIGHER_THAN_THE_LEVEL_LINE) ؛ |
| دیگری اگر (ListParam [0]. text == "خط MACD پایین تر از خط سیگنال است") |
| SpillatorLogic (FirstBar ، قبلی ، هیستوگرام ، 0 ، 0 ، مؤلفه [3] ، مؤلفه [4] ، IndicatorLogic_The_Indicator_IS_LOWER_THAN_THE_THE_LEVEL_LINE) ؛ |
| > |
| //+------------------------------------------------------------------+ |