Indicators Used
Miscellaneous
2
Views
0
Downloads
0
Favorites
cci_with_arrow_v1
//+------------------------------------------------------------------+
//| cci with arrow.mq4 |
//| StarLimit Software Corps. |
//| starlimit03@yahoo.com |
//| CREATED 08/05/2010(GOLDEN DAY)........3:45AM.......|
//+------------------------------------------------------------------+
#property copyright "StarLimit Software Corps."
#property link "starlimit03@yahoo.com"
#property indicator_separate_window
#property indicator_buffers 3
#property indicator_level1 100
#property indicator_level2 -100
#property indicator_level3 0
#property indicator_level4 200
#property indicator_level5 -200
#property indicator_levelwidth 1
#property indicator_levelcolor Gold
#property indicator_levelstyle 4
double uparrow[],downarrow[];
extern double barheight=300;
extern int BarCount=3000;
extern bool showheightline=false,showarrowline=false;
extern bool sound=false;
extern bool usechart=true;
extern int period=20;
extern int per=0;
datetime bartime;
extern int price_type=1;
extern string pair="EURUSD";
double cc[];
double lasthigh,high,highest,newhigh,lastlow,low,lowest,newlow;
color col=Lime;
double cci;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
if(usechart) {pair=Symbol();}
//---- indicators
//----
for(int h=0;h<=Bars;h++)
{
ObjectDelete("UP"+h);
ObjectDelete("SELL"+h);
}
string name="CCI with ARROW("+period+") on "+pair+per;
if(per==5)col=Aqua;
else if(per==15)col=Blue;
else if(per==30)col=Coral;
else if(per==60)col=Red;
else col=Lime;
IndicatorShortName(name);
SetIndexStyle(0,DRAW_LINE,0,2,col);
SetIndexBuffer(0,cc);
SetIndexStyle(1, DRAW_ARROW,EMPTY,2,Blue);
SetIndexBuffer(1, uparrow);
SetIndexArrow(1, 233);
SetIndexStyle(2, DRAW_ARROW,EMPTY,2,Red);
SetIndexBuffer(2, downarrow);
SetIndexArrow(2, 234);
SetIndexEmptyValue(1,0);
SetIndexEmptyValue(2,0);
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
for(int h=0;h<=Bars;h++)
{
ObjectDelete("UP"+h);
ObjectDelete("SELL"+h);
}
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
// int Counted_bars=IndicatorCounted();
// int newbars = Bars-Counted_bars-1;
int counted_bars = IndicatorCounted();
if(counted_bars < 0) return(-1);
if(counted_bars > 0) counted_bars--;
int limit = Bars - counted_bars;
if(counted_bars==0) limit--;
// if(IsConnected()) limit=BarCount;
// get last high...........
highest=0; lasthigh=0;high=0;newhigh=0;lowest=200; int chan=0;int chan2=0;int bar=Bars-1;
bool arrow=false,arrow2=false;
for(int y=limit;y>=0;y--)
{
datetime time=iTime(pair,Period(),y);
int shift1=iBarShift(pair,per,time,true);
cc[y] =iCCI(pair,per,period,price_type,shift1);
cci=cc[y];//iCCI(pair,per,period,price_type,shift1);
// get last high...........
if(High[y]- Low[y]>=barheight*Point && showheightline)
{
ObjectCreate("UP"+y, OBJ_VLINE,0,0,0);
ObjectSet("UP"+y, OBJPROP_TIME1, Time[y]);
ObjectSet("UP"+y, OBJPROP_COLOR, Blue);
ObjectSet("UP"+y, OBJPROP_STYLE, 1);
ObjectSet("UP"+y, OBJPROP_WIDTH, 0);
}
if(cci>=100)
{
chan=0;
if(cci>=highest)
{
highest=cci;high=cci;
if(cci>=lasthigh)
{
newhigh=cci; bar=y;
if (arrow)
continue;
else {
uparrow[bar]=newhigh;
if(showarrowline)
{
ObjectCreate("UP"+bar,OBJ_VLINE,0,0,0);
ObjectSet("UP"+bar, OBJPROP_TIME1, Time[bar]);
ObjectSet("UP"+bar, OBJPROP_COLOR, Blue);
ObjectSet("UP"+bar, OBJPROP_STYLE, 2);
ObjectSet("UP"+bar, OBJPROP_WIDTH, 0);
}
if(sound&&bartime!=Time[bar])PlaySound( "alert2.wav");bartime=Time[bar];
}
}
else
{
newhigh=0;continue;
}
}
else continue;
}
else
{
if(chan==1) {}//continue;
else
{
lasthigh=high; highest=0;arrow=false;
// if(newhigh>0)
// uparrow[bar]=newhigh;
chan=1;// continue;
}
}
// get last new lows
if(cci<=-100)
{
chan2=0;
if(cci<=lowest)
{
lowest=cci;low=cci;
if(cci<=lastlow)
{
newlow=cci; bar=y;
if(arrow2)continue;
else {
downarrow[bar]=newlow;
if(showarrowline){ ObjectCreate("SELL"+bar,OBJ_VLINE,0,0,0);
ObjectSet("SELL"+bar, OBJPROP_TIME1, Time[bar]);
ObjectSet("SELL"+bar, OBJPROP_COLOR, Red);
ObjectSet("SELL"+bar, OBJPROP_STYLE, 2);
ObjectSet("SELL"+bar, OBJPROP_WIDTH, 0);}
if(sound&&bartime!=Time[bar])PlaySound("alert2.wav");bartime=Time[bar];}
}
else
{
newlow=0;continue;
}
}
else continue;
}
else
{
if(chan2==1) continue;
else
{
lastlow=low; lowest=0;arrow2=false;
// if(newlow<0)
// downarrow[bar]=newlow;
chan2=1; continue;
}
}
}
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
---