2
Views
0
Downloads
0
Favorites
LRMA
/*
* Äëÿ ðàáîòû èíäèêàòîðà ñëåäóåò ïîëîæèòü ôàéëû
* SmoothAlgorithms.mqh
* IndicatorsAlgorithms.mqh
* â ïàïêó (äèðåêòîðèþ): MetaTrader\\MQL5\Include
*/
//+X================================================================X+
//| LRMA.mq5 |
//| Copyright © 2010, Nikolay Kositsin |
//| Khabarovsk, farria@mail.redcom.ru |
//+X================================================================X+
#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 LimeGreen
//---- âõîäíûå ïàðàìåòðû èíäèêàòîðà
input double LRMAPeriod = 13; // Ïåðèîä LRMA
input int LRMAShift = 0; // Ñäâèã LRMA ïî ãîðèçîíòàëè â áàðàõ
input int LRMAPriceShift = 0; // LRMA ìóâèíãà ïî âåðòèêàëè â ïóíêòàõ
//--- Èíäèêàòîðíûé áóôåð
double ExtLineBuffer[];
double dPriceShift;
//+X================================================================X+
//| Custom indicator initialization function |
//+X================================================================X+
void OnInit()
{
//----+
//---- èìÿ äëÿ îêîí äàííûõ è ëýéáà äëÿ ñóáúîêîí
string short_name = "LRMA";
IndicatorSetString(INDICATOR_SHORTNAME, short_name + "(" + string(LRMAPeriod) + ")");
//---- îñóùåñòâëåíèå ñäâèãà íà÷àëà îòñ÷¸òà îòðèñîâêè èíäèêàòîðà
PlotIndexSetInteger(0, PLOT_DRAW_BEGIN, LRMAPeriod);
//---- óñòàíîâêà çíà÷åíèé èíäèêàòîðà, êîòîðûå íå áóäóò âèäèìû íà ãðàôèêå
PlotIndexSetDouble(0, PLOT_EMPTY_VALUE, EMPTY_VALUE);
//---- ïðåâðàùåíèå äèíàìè÷åñêîãî ìàññèâà ExtLineBuffer â èíäèêàòîðíûé áóôåð
SetIndexBuffer(0, ExtLineBuffer, INDICATOR_DATA);
//---- îñóùåñòâëåíèå ñäâèãà ñêîëüçÿùåé ñðåäíåé ïî ãîðèçîíòàëè íà MAShift
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);
//----+
}
//+X================================================================X+
// Îïèñàíèå êëàññîâ óñðåäíåíèÿ è èíäèêàòîðîâ |
//+X================================================================X+
#include <SmoothAlgorithms.mqh>
#include <IndicatorsAlgorithms.mqh>
//+X================================================================X+
//| Moving Average |
//+X================================================================X+
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 == 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);
}
//+X----------------------+ <<< The End >>> +-----------------------X+
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
---