Download LOC Signal MACD Double Pike MT4 Indicator

MACD is capable of measuring momentum and therefore it supplies very valuable information on the strength of the price movement. Moving Average Convergence / Divergence is frequently to gauge the strength of the price move than to determine the direction of a trend.

LOCSignal-MACDDoublePike indicator uses MACD to generate signals. LOCSignal-MACDDoublePike indicator detects MACD Main line extreme value. It filters first spike and displays all after the first. This indicator is very easy to use as it displays arrows on the chart.

 

How To Trade With LOCSignal-MACDDoublePike:

This is an easy to use signal indicator that displays arrows on the chart.

Buy Signal: Wait for an up arrow to appear below the price bar.

Sell Signal: Wait for a down arrow to appear above the price bar.

 

[php]

//+———————————————————————+
//| LOCSignal-MACDDoublePike.mq4 |
//| For more EXPERTS, INDICATORS, TRAILING EAs and SUPPORT Please visit:|
//| http://www.landofcash.net |
//| Our forum is at: http://forex-forum.landofcash.net |
//+———————————————————————+
#property copyright “Mikhail LandOfCash”
#property link “http://www.landofcash.net”

#property indicator_chart_window
#property indicator_buffers 3
//Buy signal
#property indicator_color1 OrangeRed
#property indicator_width1 1
#property indicator_style1 STYLE_SOLID
//Sell signal
#property indicator_color2 OrangeRed
#property indicator_width2 1
#property indicator_style2 STYLE_SOLID
//Lot size
#property indicator_color3 CLR_NONE
#property indicator_width3 0

string _name = “LOCSignal-MACDDoublePike”;
string _ver=”v1.0″;
//———————————————
//indicator parameters
int _fastEmaPeriod=24;
int _slowEmaPeriod=52;
int _signalPeriod =9;
int _appliedPrice =PRICE_CLOSE;
//lot size is constant
double _lotSizeDefault=0;
//———————————————
double _buySignal[];
double _sellSignal[];
double _lotSize[];

double _pipsMultiplyer=1;
int init()
{
Print(_name+” – ” + _ver);
IndicatorShortName(_name+” – ” + _ver);
Comment(_name+” ” + _ver+” @ “+”http://www.landofcash.net”);

_lotSizeDefault=MarketInfo(Symbol(),MODE_MINLOT);
//init buffers
IndicatorBuffers(3);
SetIndexBuffer(0,_buySignal);
SetIndexBuffer(1,_sellSignal);
SetIndexBuffer(2,_lotSize);
//set draw style
SetIndexStyle(0,DRAW_ARROW);
SetIndexStyle(1,DRAW_ARROW);
SetIndexStyle(2,DRAW_NONE);

SetIndexLabel(0,”Buy”);
SetIndexLabel(1,”Sell”);
SetIndexLabel(2,”Lot”);
SetIndexArrow(0,233);
SetIndexArrow(1,234);
//get pip value
if(Digits == 2 || Digits == 4) {
_pipsMultiplyer = 1;
} else {
if(Digits == 3 || Digits == 5) {
_pipsMultiplyer = 10;
}
}
return(0);
}

int deinit()
{
return(0);
}

int start()
{
double visualAddition= 3*_pipsMultiplyer*Point;
int counted_bars=IndicatorCounted();
if(Bars<=100) {return(0);}
int i=Bars-counted_bars-1;
while(i>=0)
{
_buySignal[i]=EMPTY_VALUE;
_sellSignal[i]=EMPTY_VALUE;
_lotSize[i]=_lotSizeDefault;

double macdMain=iMACD(Symbol(),Period(),_fastEmaPeriod,_slowEmaPeriod,_signalPeriod,_appliedPrice,MODE_MAIN,i);
double macdMainP1=iMACD(Symbol(),Period(),_fastEmaPeriod,_slowEmaPeriod,_signalPeriod,_appliedPrice,MODE_MAIN,i+1);
double macdMainP2=iMACD(Symbol(),Period(),_fastEmaPeriod,_slowEmaPeriod,_signalPeriod,_appliedPrice,MODE_MAIN,i+2);
double macdMainP3=iMACD(Symbol(),Period(),_fastEmaPeriod,_slowEmaPeriod,_signalPeriod,_appliedPrice,MODE_MAIN,i+3);
double macdMainP4=iMACD(Symbol(),Period(),_fastEmaPeriod,_slowEmaPeriod,_signalPeriod,_appliedPrice,MODE_MAIN,i+4);
double macdSignal=iMACD(Symbol(),Period(),_fastEmaPeriod,_slowEmaPeriod,_signalPeriod,_appliedPrice,MODE_SIGNAL,i);
double pikeP=0;
//macd neg pike
if( macdMain>macdMainP1 && macdMainP2>macdMainP1 && macdMain<0){
if(macdMainP1<macdMainP2 && macdMainP2<macdMainP3 && macdMainP3<macdMainP4){
pikeP=PikeDetect(i+4);
if(pikeP<0/* && pikeP<macdMainP1*/){
_buySignal[i]=iLow(Symbol(),Period(),i)-visualAddition;
}
}
}
//macd pike
if( macdMain<macdMainP1 && macdMainP2<macdMainP1 && macdMain>0){
if(macdMainP1>macdMainP2 && macdMainP2>macdMainP3 && macdMainP3>macdMainP4){
pikeP=PikeDetect(i+4);
if(pikeP>0 /*&& pikeP>macdMainP1*/){
_sellSignal[i]=iHigh(Symbol(),Period(),i)+visualAddition;
}
}
}
i–;
}
return(0);
}
double PikeDetect(int i){
bool signalGood=false;
double macdLast=iMACD(Symbol(),Period(),_fastEmaPeriod,_slowEmaPeriod,_signalPeriod,_appliedPrice,MODE_MAIN,i);
while(i<=Bars-2)
{
double macdMain=iMACD(Symbol(),Period(),_fastEmaPeriod,_slowEmaPeriod,_signalPeriod,_appliedPrice,MODE_MAIN,i);
double macdMainP1=iMACD(Symbol(),Period(),_fastEmaPeriod,_slowEmaPeriod,_signalPeriod,_appliedPrice,MODE_MAIN,i+1);
double macdMainP2=iMACD(Symbol(),Period(),_fastEmaPeriod,_slowEmaPeriod,_signalPeriod,_appliedPrice,MODE_MAIN,i+2);
double macdSignal=iMACD(Symbol(),Period(),_fastEmaPeriod,_slowEmaPeriod,_signalPeriod,_appliedPrice,MODE_SIGNAL,i);
if((macdMain>0 && macdLast<0)||(macdMain<0 && macdLast>0)){
return(0);
}
if(macdLast<0 && macdSignal<macdMain){
signalGood=true;
}
if(macdLast>0 && macdSignal>macdMain){
signalGood=true;
}
if(macdLast<0 && macdMain>macdMainP1 && macdMainP2>macdMainP1 && macdMain<0 && signalGood){
return (macdMainP1);
}
if(macdLast>0 && macdMain<macdMainP1 && macdMainP2<macdMainP1 && macdMain>0 && signalGood){
return (macdMainP1);
}
i++;
}
return (0);
}

[/php]

 

 

Click Here to Download

0 replies

Leave a Reply

Want to join the discussion?
Feel free to contribute!

Leave a Reply

Your email address will not be published. Required fields are marked *