mql5.com pipfinite free version pipmaster
The pipfinite is no different from the step ma 9 indicator indicator from the Igorad.It is just a moving average indicator.The stepma sashken v4 is also better..
The video advertising of pipfinite is misleading , with 95 % hit rate etcEven 5 moving averages is as good and probably better. The chart below is 5 moving averages on hourly charts
Indicator code is enclosed.
//+------------------------------------------------------------------+
//| pipmaster_Colour.mq4 |
//| Copyright 2015, @ |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2015, Raj Enterprises Limited"
#property link "eatrader@pfitabletraders.co.uk"
#property version "1.00"
#property strict
#property indicator_chart_window
#property indicator_buffers 10
input color UpColor=clrGreen;
input color DownColor=clrRed;
input int LWMA1=20;
input int LWMA2=30;
input int LWMA3=100;
input int LWMA4=200;
input int LWMA5=1000;
double upma1[],upma2[],upma3[],upma4[],upma5[];
double downma1[],downma2[],downma3[],downma4[],downma5[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//--- indicator buffers mapping
SetIndexBuffer(0,upma1);
SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2,UpColor);
SetIndexDrawBegin(0,LWMA1);
SetIndexBuffer(1,downma1);
SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,2,DownColor);
SetIndexDrawBegin(1,LWMA1);
SetIndexLabel(0,"LWMA("+IntegerToString(LWMA1)+")");
SetIndexLabel(1,"LWMA("+IntegerToString(LWMA1)+")");
SetIndexBuffer(2,upma2);
SetIndexStyle(2,DRAW_LINE,STYLE_SOLID,2,UpColor);
SetIndexDrawBegin(2,LWMA2);
SetIndexBuffer(3,downma2);
SetIndexStyle(3,DRAW_LINE,STYLE_SOLID,2,DownColor);
SetIndexDrawBegin(3,LWMA2);
SetIndexLabel(2,"LWMA("+IntegerToString(LWMA2)+")");
SetIndexLabel(3,"LWMA("+IntegerToString(LWMA2)+")");
SetIndexBuffer(4,upma3);
SetIndexStyle(4,DRAW_LINE,STYLE_SOLID,2,UpColor);
SetIndexDrawBegin(4,LWMA3);
SetIndexBuffer(5,downma3);
SetIndexStyle(5,DRAW_LINE,STYLE_SOLID,2,DownColor);
SetIndexDrawBegin(5,LWMA3);
SetIndexLabel(4,"LWMA("+IntegerToString(LWMA3)+")");
SetIndexLabel(5,"LWMA("+IntegerToString(LWMA3)+")");
SetIndexBuffer(6,upma4);
SetIndexStyle(6,DRAW_LINE,STYLE_SOLID,2,UpColor);
SetIndexDrawBegin(6,LWMA4);
SetIndexBuffer(7,downma4);
SetIndexStyle(7,DRAW_LINE,STYLE_SOLID,2,DownColor);
SetIndexDrawBegin(7,LWMA4);
SetIndexLabel(6,"LWMA("+IntegerToString(LWMA4)+")");
SetIndexLabel(7,"LWMA("+IntegerToString(LWMA4)+")");
SetIndexBuffer(8,upma5);
SetIndexStyle(8,DRAW_LINE,STYLE_SOLID,2,UpColor);
SetIndexDrawBegin(8,LWMA5);
SetIndexBuffer(9,downma5);
SetIndexStyle(9,DRAW_LINE,STYLE_SOLID,2,DownColor);
SetIndexDrawBegin(9,LWMA5);
SetIndexLabel(8,"LWMA("+IntegerToString(LWMA5)+")");
SetIndexLabel(9,"LWMA("+IntegerToString(LWMA5)+")");
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
//---
int limit=rates_total-prev_calculated;
if(rates_total<=LWMA1) return(0);
if(prev_calculated==0)limit=rates_total-2;
for( int i=limit;i>=0;i--){
double curMa1=iMA(Symbol(),0,LWMA1,0,MODE_LWMA,PRICE_CLOSE,i);
double prevMa1=iMA(Symbol(),0,LWMA1,0,MODE_LWMA,PRICE_CLOSE,i+1);
double curMa2=iMA(Symbol(),0,LWMA2,0,MODE_LWMA,PRICE_CLOSE,i);
double prevMa2=iMA(Symbol(),0,LWMA2,0,MODE_LWMA,PRICE_CLOSE,i+1);
double curMa3=iMA(Symbol(),0,LWMA3,0,MODE_LWMA,PRICE_CLOSE,i);
double prevMa3=iMA(Symbol(),0,LWMA3,0,MODE_LWMA,PRICE_CLOSE,i+1);
double curMa4=iMA(Symbol(),0,LWMA4,0,MODE_LWMA,PRICE_CLOSE,i);
double prevMa4=iMA(Symbol(),0,LWMA4,0,MODE_LWMA,PRICE_CLOSE,i+1);
double curMa5=iMA(Symbol(),0,LWMA5,0,MODE_LWMA,PRICE_CLOSE,i);
double prevMa5=iMA(Symbol(),0,LWMA5,0,MODE_LWMA,PRICE_CLOSE,i+1);
downma1[i]=EMPTY_VALUE;
upma1[i]=EMPTY_VALUE;
downma2[i]=EMPTY_VALUE;
upma2[i]=EMPTY_VALUE;
if(curMa1>prevMa1){
upma1[i]=curMa1;
upma1[i+1]=prevMa1;
}
if(curMa1<prevMa1){
downma1[i]=curMa1;
downma1[i+1]=prevMa1;
}
if(curMa2>prevMa2){
upma2[i]=curMa2;
upma2[i+1]=prevMa2;
}
if(curMa2<prevMa2){
downma2[i]=curMa2;
downma2[i+1]=prevMa2;
}
if(curMa3>prevMa3){
upma3[i]=curMa3;
upma3[i+1]=prevMa3;
}
if(curMa3<prevMa3){
downma3[i]=curMa3;
downma3[i+1]=prevMa3;
}
if(curMa4>prevMa4){
upma4[i]=curMa4;
upma4[i+1]=prevMa4;
}
if(curMa4<prevMa4){
downma4[i]=curMa4;
downma4[i+1]=prevMa4;
}
if(curMa5>prevMa5){
upma5[i]=curMa5;
upma5[i+1]=prevMa5;
}
if(curMa5<prevMa5){
downma5[i]=curMa5;
downma5[i+1]=prevMa5;
}
}
//--- return value of prev_calculated for next call
return(rates_total);
}
//+------------------------------------------------------------------+
The video advertising of pipfinite is misleading , with 95 % hit rate etcEven 5 moving averages is as good and probably better. The chart below is 5 moving averages on hourly charts
Indicator code is enclosed.
//+------------------------------------------------------------------+
//| pipmaster_Colour.mq4 |
//| Copyright 2015, @ |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2015, Raj Enterprises Limited"
#property link "eatrader@pfitabletraders.co.uk"
#property version "1.00"
#property strict
#property indicator_chart_window
#property indicator_buffers 10
input color UpColor=clrGreen;
input color DownColor=clrRed;
input int LWMA1=20;
input int LWMA2=30;
input int LWMA3=100;
input int LWMA4=200;
input int LWMA5=1000;
double upma1[],upma2[],upma3[],upma4[],upma5[];
double downma1[],downma2[],downma3[],downma4[],downma5[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//--- indicator buffers mapping
SetIndexBuffer(0,upma1);
SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2,UpColor);
SetIndexDrawBegin(0,LWMA1);
SetIndexBuffer(1,downma1);
SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,2,DownColor);
SetIndexDrawBegin(1,LWMA1);
SetIndexLabel(0,"LWMA("+IntegerToString(LWMA1)+")");
SetIndexLabel(1,"LWMA("+IntegerToString(LWMA1)+")");
SetIndexBuffer(2,upma2);
SetIndexStyle(2,DRAW_LINE,STYLE_SOLID,2,UpColor);
SetIndexDrawBegin(2,LWMA2);
SetIndexBuffer(3,downma2);
SetIndexStyle(3,DRAW_LINE,STYLE_SOLID,2,DownColor);
SetIndexDrawBegin(3,LWMA2);
SetIndexLabel(2,"LWMA("+IntegerToString(LWMA2)+")");
SetIndexLabel(3,"LWMA("+IntegerToString(LWMA2)+")");
SetIndexBuffer(4,upma3);
SetIndexStyle(4,DRAW_LINE,STYLE_SOLID,2,UpColor);
SetIndexDrawBegin(4,LWMA3);
SetIndexBuffer(5,downma3);
SetIndexStyle(5,DRAW_LINE,STYLE_SOLID,2,DownColor);
SetIndexDrawBegin(5,LWMA3);
SetIndexLabel(4,"LWMA("+IntegerToString(LWMA3)+")");
SetIndexLabel(5,"LWMA("+IntegerToString(LWMA3)+")");
SetIndexBuffer(6,upma4);
SetIndexStyle(6,DRAW_LINE,STYLE_SOLID,2,UpColor);
SetIndexDrawBegin(6,LWMA4);
SetIndexBuffer(7,downma4);
SetIndexStyle(7,DRAW_LINE,STYLE_SOLID,2,DownColor);
SetIndexDrawBegin(7,LWMA4);
SetIndexLabel(6,"LWMA("+IntegerToString(LWMA4)+")");
SetIndexLabel(7,"LWMA("+IntegerToString(LWMA4)+")");
SetIndexBuffer(8,upma5);
SetIndexStyle(8,DRAW_LINE,STYLE_SOLID,2,UpColor);
SetIndexDrawBegin(8,LWMA5);
SetIndexBuffer(9,downma5);
SetIndexStyle(9,DRAW_LINE,STYLE_SOLID,2,DownColor);
SetIndexDrawBegin(9,LWMA5);
SetIndexLabel(8,"LWMA("+IntegerToString(LWMA5)+")");
SetIndexLabel(9,"LWMA("+IntegerToString(LWMA5)+")");
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
//---
int limit=rates_total-prev_calculated;
if(rates_total<=LWMA1) return(0);
if(prev_calculated==0)limit=rates_total-2;
for( int i=limit;i>=0;i--){
double curMa1=iMA(Symbol(),0,LWMA1,0,MODE_LWMA,PRICE_CLOSE,i);
double prevMa1=iMA(Symbol(),0,LWMA1,0,MODE_LWMA,PRICE_CLOSE,i+1);
double curMa2=iMA(Symbol(),0,LWMA2,0,MODE_LWMA,PRICE_CLOSE,i);
double prevMa2=iMA(Symbol(),0,LWMA2,0,MODE_LWMA,PRICE_CLOSE,i+1);
double curMa3=iMA(Symbol(),0,LWMA3,0,MODE_LWMA,PRICE_CLOSE,i);
double prevMa3=iMA(Symbol(),0,LWMA3,0,MODE_LWMA,PRICE_CLOSE,i+1);
double curMa4=iMA(Symbol(),0,LWMA4,0,MODE_LWMA,PRICE_CLOSE,i);
double prevMa4=iMA(Symbol(),0,LWMA4,0,MODE_LWMA,PRICE_CLOSE,i+1);
double curMa5=iMA(Symbol(),0,LWMA5,0,MODE_LWMA,PRICE_CLOSE,i);
double prevMa5=iMA(Symbol(),0,LWMA5,0,MODE_LWMA,PRICE_CLOSE,i+1);
downma1[i]=EMPTY_VALUE;
upma1[i]=EMPTY_VALUE;
downma2[i]=EMPTY_VALUE;
upma2[i]=EMPTY_VALUE;
if(curMa1>prevMa1){
upma1[i]=curMa1;
upma1[i+1]=prevMa1;
}
if(curMa1<prevMa1){
downma1[i]=curMa1;
downma1[i+1]=prevMa1;
}
if(curMa2>prevMa2){
upma2[i]=curMa2;
upma2[i+1]=prevMa2;
}
if(curMa2<prevMa2){
downma2[i]=curMa2;
downma2[i+1]=prevMa2;
}
if(curMa3>prevMa3){
upma3[i]=curMa3;
upma3[i+1]=prevMa3;
}
if(curMa3<prevMa3){
downma3[i]=curMa3;
downma3[i+1]=prevMa3;
}
if(curMa4>prevMa4){
upma4[i]=curMa4;
upma4[i+1]=prevMa4;
}
if(curMa4<prevMa4){
downma4[i]=curMa4;
downma4[i+1]=prevMa4;
}
if(curMa5>prevMa5){
upma5[i]=curMa5;
upma5[i+1]=prevMa5;
}
if(curMa5<prevMa5){
downma5[i]=curMa5;
downma5[i+1]=prevMa5;
}
}
//--- return value of prev_calculated for next call
return(rates_total);
}
//+------------------------------------------------------------------+
Comments
Post a Comment