Miscellaneous
0
Views
0
Downloads
0
Favorites
NRTR_NK
//+------------------------------------------------------------------+
//| Version July 20, 2006 |
//| Editing Nikolay Kositsin 15.06.2006 farria@mail.redcom.ru |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| NRTR.mq4 |
//| Ramdass - Conversion only |
//+------------------------------------------------------------------+
#property copyright "CRamdass - Conversion only"
#property link ""
//---- îòðèñîâêà èíäèêàòîðà â ãëàâíîì îêíå
#property indicator_chart_window
//---- êîëè÷åñòâî èíäèêàòîðíûõ áóôôåðîâ
#property indicator_buffers 2
//---- öâåòà èíäèêàòîðà
#property indicator_color1 Blue
#property indicator_color2 Red
//---- òîëùèíà èíäèêàòîðíûõ ëèíèé
#property indicator_width1 1
#property indicator_width2 1
//---- ÂÕÎÄÍÛÅ ÏÀÐÀÌÅÒÐÛ ÈÍÄÈÊÀÒÎÐÀ
extern int AveragePeriod = 10;
//---- èíäèêàòîðíûå áóôôåðû
double Ind_Buffer1[];
double Ind_Buffer2[];
//+------------------------------------------------------------------+
//| NRTR initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- 2 èíäèêàòîðíûõ áóôôåðà èñïîëüçîâàíû äëÿ ñ÷¸òà
SetIndexBuffer(0, Ind_Buffer1);
SetIndexBuffer(1, Ind_Buffer2);
//---- Ñòèëü èñïîëíåíèÿ ãðàôèêà
SetIndexStyle(0, DRAW_ARROW);
SetIndexStyle(1, DRAW_ARROW);
SetIndexArrow(0, 159);
SetIndexArrow(1, 159);
//---- óñòàíîâêà çíà÷åíèé èíäèêàòîðà, êîòîðûå íå áóäóò âèäèìû íà ãðàôèêå
SetIndexEmptyValue(0, 0.0);
SetIndexEmptyValue(1, 0.0);
//---- èìÿ äëÿ îêîí äàííûõ è ëýéáà äëÿ ñóáúîêîí
SetIndexLabel(0, "NRTRUp(" + AveragePeriod + ")");
SetIndexLabel(1, "NRTRDown(" + AveragePeriod + ")");
//---- óñòàíîâêà íîìåðà áàðà, íà÷èíàÿ ñ êîòîðîãî áóäåò îòðèñîâûâàòüñÿ èíäèêàòîð
SetIndexDrawBegin(0,AveragePeriod);
SetIndexDrawBegin(1,AveragePeriod);
//---- Óñòàíîâêà ôîðìàòà òî÷íîñòè (êîëè÷åñòâî çíàêîâ ïîñëå äåñÿòè÷íîé òî÷êè)
// äëÿ âèçóàëèçàöèè çíà÷åíèé èíäèêàòîðà
IndicatorDigits(Digits);
//---- çàâåðøåíèå èíèöèàëèçàöèè
return(0);
}
//+------------------------------------------------------------------+
//| NRTR |
//+------------------------------------------------------------------+
int start()
{
//---- ïðîâåðêà êîëè÷åñòâà áàðîâ íà äîñòàòî÷íîñòü äëÿ ðàñ÷¸òà
if(Bars <= AveragePeriod)
return(0);
//---- ââåäåíèå ïåðåìåííûõ ïàìÿòè
static double PRICE,RESALT;
static bool TREND;
static int time2;
//----+ Ââåäåíèå ïåðåìåííûõ ñ ïëàâàþùåé òî÷êîé
double Resalt, close, open, dK, AvgRange, price, NewVel;
//---- ââåäåíèå ëîãè÷åñêèõ ïåðåìåííûõ
bool trend;
//----+ Ââåäåíèå öåëûõ ïåðåìåííûõ è ïîëó÷åíèå óæå ïîäñ÷èòàííûõ áàðîâ
int bar, MaxBar, limit, counted_bars = IndicatorCounted();
//---- ïðîâåðêà íà âîçìîæíûå îøèáêè
if(counted_bars < 0)
return(-1);
//---- ïîñëåäíèé ïîäñ÷èòàííûé áàð äîëæåí áûòü ïåðåñ÷èòàí
if(counted_bars > 0)
counted_bars--;
//---- îïðåäåëåíèå íîìåðà ñàìîãî ñòàðîãî áàðà, íà÷èíàÿ ñ êîòîðîãî áóäåò
// ïðîèçâåä¸í ïîëíûé ïåðåñ÷¸ò âñåõ áàðîâ
MaxBar = Bars - 1 - AveragePeriod;
//---- îïðåäåëåíèå íîìåðà ñàìîãî ñòàðîãî áàðà, íà÷èíàÿ ñ êîòîðîãî áóäåò
// ïðîèçåä¸í ïåðåñ÷¸ò òîëüêî íîâûõ áàðîâ
limit = Bars - 1 - counted_bars;
//+--- âîññòàíîâëåíèå çíà÷åíèé ïåðåìåííûõ
int Tnew = Time[limit + 1];
if(limit < MaxBar)
if(Tnew == time2)
{
price = PRICE;
trend = TREND;
Resalt = RESALT;
}
else
{
if(Tnew > time2)
Print("ERROR01");
else
Print("ERROR02");
return(-1);
}
//---- èíèöèàëèçàöèÿ íóëÿ
if(limit >= MaxBar)
{
for(int iii = 0; iii < AveragePeriod; iii++)
{
Ind_Buffer1[MaxBar-iii] = 0.0;
Ind_Buffer2[MaxBar-iii] = 0.0;
limit = MaxBar - AveragePeriod;
}
//----
AvgRange = 0;
for(int jjj = AveragePeriod - 1; jjj >= 0; jjj--)
AvgRange += MathAbs(High[MaxBar+jjj] - Low[MaxBar+jjj]);
dK = AvgRange / (AveragePeriod*10000*Point );
close = Close[MaxBar];
open = Open [MaxBar];
price = close;
//----
if(close > open)
{
Resalt = close * (1 - dK);
trend = true;
}
//----
if(close < open)
{
Resalt = close * (1 + dK);
trend = false;
}
if(trend)
Ind_Buffer1[MaxBar] = Resalt;
if(!trend)
Ind_Buffer2[MaxBar] = Resalt;
}
//----+ îñíîâíîé öèêë ðàñ÷¸òà èíäèàòîðà
bar = limit;
while(bar >= 0)
{
//+--- Ñîõðàíåíèå çíà÷åíèé ïåðåìåííûõ
if(bar == 1)
if(((limit == 1) && (time2 == Time[2])) || (limit > 1))
{
time2 = Time[2];
PRICE = price;
TREND = trend;
RESALT = Resalt;
}
//+---+==========================================+
AvgRange = 0;
for(int kkk = AveragePeriod-1; kkk >= 0; kkk--)
AvgRange += MathAbs(High[bar+kkk] - Low[bar+kkk]);
dK = AvgRange / (AveragePeriod*10000*Point );
close = Close[bar];
Ind_Buffer1[bar] = 0;
Ind_Buffer2[bar] = 0;
//----
if(trend)
{
if(close > price)
{
price = close;
NewVel = close * (1 - dK);
if(NewVel > Resalt)
Resalt=NewVel;
}
else
if(close < Resalt)
{
price = close;
Resalt = close * (1 + dK);
trend = false;
}
}
//----
if(!trend)
{
if(close < price)
{
price = close;
NewVel = close * (1 + dK);
if(NewVel < Resalt)
Resalt=NewVel;
}
else
if(close > Resalt)
{
price = close;
Resalt = close * (1 - dK);
trend = true;
}
}
//----
if(trend)
Ind_Buffer1[bar] = Resalt;
if(!trend)
Ind_Buffer2[bar] = Resalt;
bar--;
}
//----+ çàâåðøåíèå îñíîâíîãî öèêëà
return(0);
}
//+---------------------------------------------------------------------------------------------------------------------------+
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
---