0
Views
0
Downloads
0
Favorites
LRMA_v4
//+------------------------------------------------------------------+
//| LRMA.mq5 |
//| Copyright © 2010, Nikolay Kositsin |
//| Khabarovsk, farria@mail.redcom.ru |
//+------------------------------------------------------------------+
//| Äëÿ ðàáîòû èíäèêàòîðà ôàéë SmoothAlgorithms.mqh |
//| ñëåäóåò ïîëîæèòü â ïàïêó: êàòàëîã_äàííûõ_òåðìèíàëà\MQL5\Include |
//+------------------------------------------------------------------+
#property copyright "2010, Nikolay Kositsin"
#property link "farria@mail.redcom.ru"
#property version "1.00"
//---- îòðèñîâêà èíäèêàòîðà â îñíîâíîì îêíå
#property indicator_chart_window
//---- äëÿ ðàñ÷¸òà è îòðèñîâêè èíäèêàòîðà èñïîëüçîâàí îäèí áóôåð
#property indicator_buffers 1
//---- èñïîëüçîâàíî âñåãî îäíî ãðàôè÷åñêîå ïîñòðîåíèå
#property indicator_plots 1
//---- îòðèñîâêà èíäèêàòîðà â âèäå ëèíèè
#property indicator_type1 DRAW_LINE
//---- â êà÷åñòâå öâåòà ëèíèè èíäèêàòîðà èñïîëüçîâàí çåë¸íûé öâåò
#property indicator_color1 clrLimeGreen
//+----------------------------------------------+
//| Âõîäíûå ïàðàìåòðû èíäèêàòîðà |
//+----------------------------------------------+
input int LRMAPeriod=13; //Ïåðèîä LRMA
input int LRMAShift=0; //Ñäâèã LRMA ïî ãîðèçîíòàëè â áàðàõ
input int LRMAPriceShift=0; //Ñäâèã LRMA ïî âåðòèêàëè â ïóíêòàõ
//+----------------------------------------------+
//--- Èíäèêàòîðíûé áóôåð
double ExtLineBuffer[];
double dPriceShift;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
void OnInit()
{
//---- èìÿ äëÿ îêîí äàííûõ è ëýéáà äëÿ ñóáúîêîí
string short_name="LRMA";
IndicatorSetString(INDICATOR_SHORTNAME,short_name+"("+string(LRMAPeriod)+")");
//---- îñóùåñòâëåíèå ñäâèãà íà÷àëà îòñ÷¸òà îòðèñîâêè èíäèêàòîðà
PlotIndexSetInteger(0,PLOT_DRAW_BEGIN,LRMAPeriod+1);
//---- óñòàíîâêà çíà÷åíèé èíäèêàòîðà, êîòîðûå íå áóäóò âèäèìû íà ãðàôèêå
PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,EMPTY_VALUE);
//---- ïðåâðàùåíèå äèíàìè÷åñêîãî ìàññèâà ExtLineBuffer â èíäèêàòîðíûé áóôåð
SetIndexBuffer(0,ExtLineBuffer,INDICATOR_DATA);
//---- îñóùåñòâëåíèå ñäâèãà ìóâèíãà ïî ãîðèçîíòàëè íà LRMAShift
PlotIndexSetInteger(0,PLOT_SHIFT,LRMAShift);
//---- Óñòàíîâêà ôîðìàòà òî÷íîñòè îòîáðàæåíèÿ èíäèêàòîðà
IndicatorSetInteger(INDICATOR_DIGITS,_Digits+1);
//---- Èíèöèàëèçàöèÿ ñäâèãà ïî âåðòèêàëè
dPriceShift=_Point*LRMAPriceShift;
//---- îáúÿâëåíèå ïåðåìåííîé êëàññà Moving_Average èç ôàéëà MASeries_Cls.mqh
CMoving_Average LRMA1;
//---- óñòàíîâêà àëåðòîâ íà íåäîïóñòèìûå çíà÷åíèÿ âíåøíèõ ïåðåìåííûõ
LRMA1.MALengthCheck("LRMAPeriod",LRMAPeriod);
//----
}
//+------------------------------------------------------------------+
// Îïèñàíèå êëàññîâ óñðåäíåíèÿ è èíäèêàòîðîâ |
//+------------------------------------------------------------------+
#include <SmoothAlgorithms.mqh>
#include <IndicatorsAlgorithms.mqh>
//+------------------------------------------------------------------+
//| Moving Average |
//+------------------------------------------------------------------+
int OnCalculate
(
const int rates_total,// êîëè÷åñòâî èñòîðèè â áàðàõ íà òåêóùåì òèêå
const int prev_calculated,// êîëè÷åñòâî èñòîðèè â áàðàõ íà ïðåäûäóùåì òèêå
const int begin,// íîìåð íà÷àëà äîñòîâåðíîãî îòñ÷¸òà áàðîâ
const double &price[]// öåíîâîé ìàññèâ äëÿ ðàñ÷¸òà èíäèêàòîðà
)
{
//---- ïðîâåðêà êîëè÷åñòâà áàðîâ íà äîñòàòî÷íîñòü äëÿ ðàñ÷¸òà
if(rates_total<begin+LRMAPeriod)
return(0);
//---- îáúÿâëåíèÿ ëîêàëüíûõ ïåðåìåííûõ
int first,bar;
//---- ðàñ÷¸ò ñòàðòîâîãî íîìåðà first äëÿ öèêëà ïåðåñ÷¸òà áàðîâ
if(prev_calculated>rates_total || prev_calculated<=0) // ïðîâåðêà íà ïåðâûé ñòàðò ðàñ÷¸òà èíäèêàòîðà
{
first=begin; // ñòàðòîâûé íîìåð äëÿ ðàñ÷¸òà âñåõ áàðîâ
for(bar=0; bar<=begin; bar++)
ExtLineBuffer[bar]=0;
}
else first=prev_calculated-1; // ñòàðòîâûé íîìåð äëÿ ðàñ÷¸òà íîâûõ áàðîâ
//---- îáúÿâëåíèå ïåðåìåííîé êëàññà Moving_Average èç ôàéëà LRMASeries_Cls.mqh
static CLRMA LRMA1;
//---- îñíîâíîé öèêë ðàñ÷¸òà èíäèêàòîðà
for(bar=first; bar<rates_total; bar++)
{
//---- Ïîëó÷åíèå ñðåäíåãî çíà÷åíèÿ. Îäèí âûçîâ ôóíêöèè LRMASeries.
ExtLineBuffer[bar]=LRMA1.LRMASeries(begin,prev_calculated,rates_total,LRMAPeriod,price[bar],bar,false)+dPriceShift;
}
//----
return(rates_total);
}
//+------------------------------------------------------------------+
Comments
Markdown Formatting Guide
# H1
## H2
### H3
**bold text**
*italicized text*
[title](https://www.example.com)

`code`
```
code block
```
> blockquote
- Item 1
- Item 2
1. First item
2. Second item
---