NRTR Rosh v2

Další indikátor bez bližší specifikace.

 

 

//+——————————————————————+
//|                                                 NRTR Rosh v2.mq4 |
//|                                                             Rosh |
//|                           http://forexsystems.ru/phpBB/index.php |
//+——————————————————————+
#property copyright „Rosh“
#property link      „http://forexsystems.ru/phpBB/index.php“

#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 Tomato
#property indicator_color2 DeepSkyBlue
#property indicator_color3 DeepSkyBlue
#property indicator_color4 Tomato
//—- input parameters
extern int       PerATR=40;
extern double    kATR=2.0;
extern bool      useSendMail=true;
//—- buffers
double SellBuffer[];
double BuyBuffer[];
double Ceil[];
double Floor[];
double Trend[];
int sm_Bars;
//+——————————————————————+
//| Custom indicator initialization function                         |
//+——————————————————————+
int init()
{
//—- indicators
IndicatorBuffers(5);

SetIndexStyle(0,DRAW_ARROW);
SetIndexArrow(0,251);
SetIndexBuffer(0,SellBuffer);
SetIndexEmptyValue(0,0.0);

SetIndexStyle(1,DRAW_ARROW);
SetIndexArrow(1,251);
SetIndexBuffer(1,BuyBuffer);
SetIndexEmptyValue(1,0.0);

SetIndexStyle(2,DRAW_ARROW);
SetIndexArrow(2,159);
SetIndexBuffer(2,Ceil);
SetIndexEmptyValue(2,0.0);

SetIndexStyle(3,DRAW_ARROW);
SetIndexArrow(3,159);
SetIndexBuffer(3,Floor);
SetIndexEmptyValue(3,0.0);

SetIndexBuffer(4,Trend);
SetIndexEmptyValue(4,0);
//—-
return(0);
}
//+——————————————————————+
//| ďđîáčňčĺ âĺđőŕ ÄŔÓÍňđĺíäŕ                              |
//+——————————————————————+
bool BreakDown(int shift)
{
bool result=false;
if (Close[shift]>SellBuffer[shift+1]) result=true;
return(result);
}

//+——————————————————————+
//| ďđîáčňčĺ äíŕ ŔĎňđĺíäŕ                              |
//+——————————————————————+
bool BreakUp(int shift)
{
bool result=false;
if (Close[shift]<buybuffer[shift+1]) result=“true;<br“>    return(result);
}

//+——————————————————————+
//| âç˙ňčĺ íîâîăî ěčíčěóěŕ ďî ÄŔÓÍňđĺíäó                             |
//+——————————————————————+
bool BreakFloor(int shift)
{
bool result=false;
if (High[shift]<floor[shift+1]) result=“true;<br“>    return(result);
}

//+——————————————————————+
//| âç˙ňčĺ íîâîăî ěŕęńčěóěŕ ďî ŔĎňđĺíäó                              |
//+——————————————————————+
bool BreakCeil(int shift)
{
bool result=false;
if (Low[shift]>Ceil[shift+1]) result=true;
return(result);
}

//+——————————————————————+
//| îďđĺäĺëĺíčĺ ďđĺäűäóůĺăî ňđĺíäŕ                                   |
//+——————————————————————+
bool Uptrend(int shift)
{
//Print(„Trend=“,Trend[shift+1]);
bool result=false;
if (Trend[shift+1]==1) result=true;
if (Trend[shift+1]==-1) result=false;
if ((Trend[shift+1]!=1)&&(Trend[shift+1]!=-1)) Print(„Âíčěŕíčĺ! Ňđĺíä íĺ îďđĺäĺëĺí, ňŕęîăî áűňü íĺ ěîćĺň. Áŕđ îň ęîíöŕ „,(Bars-shift));
return(result);
}

//+——————————————————————+
//| âű÷čńëĺíčĺ âîëŕňčëüíîńňč                                         |
//+——————————————————————+
double ATR(int iPer,int shift)
{
double result;
//result=iMA(NULL,0,Per,0,MODE_SMA,PRICE_HIGH,shift+1)-iMA(NULL,0,Per,0,MODE_SMA,PRICE_LOW,shift+1);
result=iATR(NULL,0,iPer,shift);
//if (result>1.0) Alert(„Áîëüřîé ŔŇĐ=“,result);
//Print(„ATR[„,shift,“]=“,result);
return(result);
}
//+——————————————————————+
//| óńňŕíîâęŕ íîâîăî óđîâí˙ ďîňîëęŕ                                  |
//+——————————————————————+
void NewCeil(int shift)
{
Ceil[shift]=Close[shift];
Floor[shift]=0.0;
}

//+——————————————————————+
//| óńňŕíîâęŕ íîâîăî óđîâí˙ ďîëŕ                                     |
//+——————————————————————+
void NewFloor(int shift)
{
Floor[shift]=Close[shift];
Ceil[shift]=0.0;
}

//+——————————————————————+
//| óńňŕíîâęŕ óđîâí˙ ďîääĺđćęč ŔĎňđĺíäŕ                              |
//+——————————————————————+
void SetBuyBuffer(int shift)
{
BuyBuffer[shift]=Close[shift]-kATR*ATR(PerATR,shift);
SellBuffer[shift]=0.0;
}

//+——————————————————————+
//| óńňŕíîâęŕ óđîâí˙ ďîääĺđćęč ÄŔÓÍňđĺíäŕ                            |
//+——————————————————————+
void SetSellBuffer(int shift)
{
SellBuffer[shift]=Close[shift]+kATR*ATR(PerATR,shift);
BuyBuffer[shift]=0.0;
}

//+——————————————————————+
//| đĺâĺđń ňđĺíäŕ č óńňŕíîâęŕ íîâűő óđîâíĺé                          |
//+——————————————————————+
void NewTrend(int shift)
{
if (Trend[shift+1]==1)
{
Trend[shift]=-1;
NewFloor(shift);
SetSellBuffer(shift);
}
else
{
Trend[shift]=1;
NewCeil(shift);
SetBuyBuffer(shift);
}
if ((Trend[shift+1]!=1)&&(Trend[shift+1]!=-1)) Print(„Âíčěŕíčĺ! Ňđĺíä íĺ îďđĺäĺëĺí, ňŕęîăî áűňü íĺ ěîćĺň“);
}

//+——————————————————————+
//| ďđîäîëćĺíčĺ ňđĺíäŕ                                               |
//+——————————————————————+
void CopyLastValues(int shift)
{
SellBuffer[shift]=SellBuffer[shift+1];
BuyBuffer[shift]=BuyBuffer[shift+1];
Ceil[shift]=Ceil[shift+1];
Floor[shift]=Floor[shift+1];
Trend[shift]=Trend[shift+1];
}
//+——————————————————————+
//| ďđîäîëćĺíčĺ ňđĺíäŕ                                               |
//+——————————————————————+
void SendSMS(int shift)
{
if (sm_Bars!=Bars)
sm_Bars=Bars;
if ((Trend[shift+1]*Trend[shift+2]==-1)&&(shift==0)&&useSendMail) // ńěĺíčëń˙ ňđĺíä
{
if (Trend[shift+1]==1)
{
SendMail(„NRTR“,Symbol()+“ „+Period()+“ đŕçâĺđíóëń˙ ââĺđő, Bid=“+NormalizeDouble(Bid,Digits));
}
else
{
SendMail(„NRTR“,Symbol()+“ „+Period()+“ đŕçâĺđíóëń˙ âíčç, Bid=“+Bid);
}
}
return;
}
//+——————————————————————+
//| Custor indicator deinitialization function                       |
//+——————————————————————+
int deinit()
{
//—-

//—-
return(0);
}
//+——————————————————————+
//| Custom indicator iteration function                              |
//+——————————————————————+
int start()
{
int    counted_bars=IndicatorCounted();
int limit;
if (counted_bars>0) limit=Bars-counted_bars;
if (counted_bars<0) return(0);
if (counted_bars==0)
{
limit=Bars-PerATR-1;
if (Close[limit+1]>Open[limit+1]) {Trend[limit+1]=1;Ceil[limit+1]=Close[limit+1];BuyBuffer[limit+1]=Close[limit+1]-kATR*ATR(PerATR,limit+1);}
if (Close[limit+1]<open[limit+1])>       if (Close[limit+1]==Open[limit+1]) {Trend[limit+1]=1;Ceil[limit+1]=Close[limit+1];BuyBuffer[limit+1]=Close[limit+1]-kATR*ATR(PerATR,limit+1);}
}
//—-
for (int cnt=limit;cnt>=0;cnt–)
{
SendSMS(cnt);
if (Uptrend(cnt))
{
//Print(„UpTrend“);
if (BreakCeil(cnt))
{
NewCeil(cnt);
SetBuyBuffer(cnt);
Trend[cnt]=1;
continue;
}
if (BreakUp(cnt))
{
NewTrend(cnt);
continue;
}
CopyLastValues(cnt);
}
else
{
//Print(„DownTrend“);
if (BreakFloor(cnt))
{
NewFloor(cnt);
SetSellBuffer(cnt);
Trend[cnt]=-1;
continue;
}
if (BreakDown(cnt))
{
NewTrend(cnt);
continue;
}
CopyLastValues(cnt);
}
}

//—-
return(0);
}
//+——————————————————————+

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *