Miscellaneous
0
Views
0
Downloads
0
Favorites
MultiSSRCplusSM
//+------------+-----------------------------------------------------+
//| v.27.04.07 | MultiSSRC_plus_SnakeMood.mq4 |
//+------------+ |
//| | Bookkeeper, 2007, yuzefovich@gmail.com |
//+------------+-----------------------------------------------------+
/********************************************************************/
/************ Presence SSRC.mq4 v.12.04.07 is necessary ************/
/************ Presence Snake.mq4 v.19.04.07 is necessary ************/
/********************************************************************/
/*** Working window Additional windows should be ***/
/*** with indicator open for loading quotations ***/
/*** M1....................M15,M30,H1 ***/
/*** M5....................M15,M30,H1 ***/
/*** M15...................M30,H1,H4 ***/
/*** M30...................H1,H4 ***/
/*** H1....................H4 ***/
/*** H4....................D1 ***/
/*** If the terminal has been switched off, ***/
/*** and then again included, ***/
/*** after loading quotations it is necessary ***/
/*** to restart the indicator ***/
/********************************************************************/
#property copyright ""
#property link "http://www.forexter.land.ru/indicators.htm"
//----
#property indicator_separate_window
#property indicator_maximum 1.3
#property indicator_minimum -1.3
#property indicator_level1 0.9
#property indicator_level2 -0.9
#property indicator_level3 0.7
#property indicator_level4 -0.7
#property indicator_levelcolor Black
#property indicator_levelstyle 0
#property indicator_buffers 6
#property indicator_color1 PaleGreen
#property indicator_color2 LightSalmon
#property indicator_color3 Crimson
#property indicator_color4 MediumVioletRed
#property indicator_color5 BlueViolet
#property indicator_color6 Blue
/********************************************************************/
//---- Snake
extern int SnakeRange =3;
extern int FilterPeriod =21;
extern double MartFiltr =2;
extern int PriceConst =0; // 0 - Close
// 1 - Open
// 2 - High
// 3 - Low
// 4 - (H+L)/2
// 5 - (H+L+C)/3
// 6 - (H+L+2*C)/4
extern bool HardCalc =false;
/********************************************************************/
double SRC1[];
double SRC2[];
double SRC3[];
double SRC4[];
double SMUp[];
double SMDn[];
double SM00[];
/********************************************************************/
int rangeN=14,Maxrange=30,p1,p2,p3,p4,q;
bool First=true;
/********************************************************************/
void deinit() { return; }
/********************************************************************/
void init() { string str,str2; int n=Period(); IndicatorBuffers(7);
SetIndexBuffer(0,SMUp); SetIndexStyle(0,DRAW_HISTOGRAM,EMPTY,2);
SetIndexBuffer(1,SMDn); SetIndexStyle(1,DRAW_HISTOGRAM,EMPTY,2);
SetIndexBuffer(2,SRC1); SetIndexStyle(2,DRAW_LINE,EMPTY,2);
SetIndexBuffer(3,SRC2); SetIndexStyle(3,DRAW_LINE,EMPTY,3);
SetIndexBuffer(4,SRC3); SetIndexStyle(4,DRAW_LINE,EMPTY,2);
SetIndexBuffer(5,SRC4); SetIndexStyle(5,DRAW_LINE,STYLE_DOT);
SetIndexBuffer(6,SM00); SetIndexStyle(6,DRAW_NONE);
SetIndexEmptyValue(0,0.0); SetIndexEmptyValue(1,0.0);
switch(n) {
case 1: str="M15,M30,H1"; str2="M15"; break;
case 5: str="M15,M30,H1"; str2="M15"; break;
case 15: str="M15,M30,H1,H4"; str2="M30"; break;
case 30: str="M30,H1,H4"; str2="H1"; break;
case 60: str="H1,H4"; str2="H4"; break;
case 240: str="H4,D1"; str2="D1"; break; }
IndicatorShortName("MultiSSRC("+str+") & SMood("+str2+") "); return; }
/********************************************************************/
void start() { int counted_bars=IndicatorCounted();
int n,n1,n2,n3,n4,limit; double sm;
if(Period()>240) { Alert("Period()>H4 - error!"); return; }
if(counted_bars<0) return(-1);
if(First==true) { n=Period(); switch(n) {
case 1: p1=15; p2=30; p3=60; p4=240; q=480; break;
case 5: p1=15; p2=30; p3=60; p4=240; q=96; break;
case 15: p1=15; p2=30; p3=60; p4=240; q=32; break;
case 30: p1=30; p2=60; p3=240; p4=0; q=16; break;
case 60: p1=60; p2=240; p3=0; p4=0; q=8; break;
case 240: p1=240; p2=1440; p3=0; p4=0; q=12; break; }
limit=Bars-(rangeN+FilterPeriod+SnakeRange+4);
for(n=limit;n>=0;n--) {
n1=iBarShift(Symbol(),p1,Time[n]);
SRC1[n]=iCustom(NULL,p1,"SSRC",
SnakeRange,FilterPeriod,MartFiltr,PriceConst,0,n1);
if(p2>0) {
n2=iBarShift(Symbol(),p2,Time[n]);
SM00[n]=iCustom(NULL,p2,"Snake",
SnakeRange,FilterPeriod,MartFiltr,0,HardCalc,4,n2);
if(SM00[n]>0.9 || SM00[n]<-0.9) {
if(SM00[n]>0.9) { SMUp[n]=SM00[n]; SMDn[n]=0; }
if(SM00[n]<-0.9) { SMUp[n]=0; SMDn[n]=SM00[n]; } }
else {
if(SM00[n]!=SM00[n+1]) {
if(SM00[n]>SM00[n+p2/p1]) { SMUp[n]=SM00[n]; SMDn[n]=0; }
if(SM00[n]<SM00[n+p2/p1]) { SMUp[n]=0; SMDn[n]=SM00[n]; } }
else { SMUp[n]=SMUp[n+1]; SMDn[n]=SMDn[n+1]; }
}
SRC2[n]=iCustom(NULL,p2,"SSRC",
SnakeRange,FilterPeriod,MartFiltr,PriceConst,0,n2);
}
if(p3>0) { n3=iBarShift(Symbol(),p3,Time[n]);
SRC3[n]=iCustom(NULL,p3,"SSRC",
SnakeRange,FilterPeriod,MartFiltr,PriceConst,0,n3); }
if(p4>0) { n4=iBarShift(Symbol(),p4,Time[n]);
SRC4[n]=iCustom(NULL,p4,"SSRC",
SnakeRange,FilterPeriod,MartFiltr,PriceConst,0,n4); }
} First=false; }
else { limit=Bars-counted_bars+q+1;
for(n=limit;n>=0;n--) {
n1=iBarShift(Symbol(),p1,Time[n]);
SRC1[n]=iCustom(NULL,p1,"SSRC",
SnakeRange,FilterPeriod,MartFiltr,PriceConst,0,n1);
if(p2>0) { n2=iBarShift(Symbol(),p2,Time[n]);
SM00[n]=iCustom(NULL,p2,"Snake",
SnakeRange,FilterPeriod,MartFiltr,PriceConst,HardCalc,4,n2);
if(SM00[n]>0.9 || SM00[n]<-0.9) {
if(SM00[n]>0.9) { SMUp[n]=SM00[n]; SMDn[n]=0; }
if(SM00[n]<-0.9) { SMUp[n]=0; SMDn[n]=SM00[n]; } }
else {
if(SM00[n]!=SM00[n+1]) {
if(SM00[n]>SM00[n+p2/p1]) { SMUp[n]=SM00[n]; SMDn[n]=0; }
if(SM00[n]<SM00[n+p2/p1]) { SMUp[n]=0; SMDn[n]=SM00[n]; } }
else { SMUp[n]=SMUp[n+1]; SMDn[n]=SMDn[n+1]; }
}
SRC2[n]=iCustom(NULL,p2,"SSRC",
SnakeRange,FilterPeriod,MartFiltr,PriceConst,0,n2); }
if(p3>0) { n3=iBarShift(Symbol(),p3,Time[n]);
SRC3[n]=iCustom(NULL,p3,"SSRC",
SnakeRange,FilterPeriod,MartFiltr,PriceConst,0,n3); }
if(p4>0) { n4=iBarShift(Symbol(),p4,Time[n]);
SRC4[n]=iCustom(NULL,p4,"SSRC",
SnakeRange,FilterPeriod,MartFiltr,PriceConst,0,n4); }
} } return; }
/********************************************************************/
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
---