harami_ma_rsi_macd

Author: Copyright � 2016, Forex-Index-Intraday, Ger
harami_ma_rsi_macd
Price Data Components
Series array that contains close prices for each barSeries array that contains open prices of each barSeries array that contains the lowest prices of each barSeries array that contains the highest prices of each bar
Indicators Used
Indicator of the average true rangeMoving average indicatorRelative strength indexMACD Histogram
Miscellaneous
Implements a curve of type %1It issuies visual alerts to the screen
0 Views
0 Downloads
0 Favorites
harami_ma_rsi_macd
//+------------------------------------------------------------------+
//|                                           Harami MA RSI MACD.ex4 |
//|                      Copyright © 2016, Forex-Index-Intraday, Ger |
//|                             http://www.forex-index-intraday.com/ |
//+------------------------------------------------------------------+
#property strict
#property copyright "Copyright © 2016, Forex-Index-Intraday, Ger"
#property link      "http://www.forex-index-intraday.com/"
#property version   "16.04"
#property description "simple Harami -MA -RSI -MACD indicator;"
#property description "signal after close;"
#property description "alert;"

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Green
#property indicator_width1 1
#property indicator_color2 Red
#property indicator_width2 1

extern int barsToProcess=5000; //Bars to process
extern string line0______________________________________="---------------------------------------------------------------"; //----------------------------------------------------------------
extern bool Alert_On=false; //Alert On
extern string line1______________________________________="---------------------------------------------------------------"; //----------------------------------------------------------------
extern bool MA_filter=false; //MA filter
extern bool RSI_filter=false; //RSI filter
extern bool MACD_filter=false; // MACD filter
extern bool One_Candle_before=false; //One Candle before
extern string line2______________________________________="---------------------------------------------------------------"; //----------------------------------------------------------------
extern int Trend_MA=12; //Trend MA
input int MA_shift=0; //MA Shift
input ENUM_MA_METHOD MA_Mode=MODE_EMA; //MA Mode
input ENUM_APPLIED_PRICE MA_price=PRICE_HIGH; //MA Price
extern string line3______________________________________="---------------------------------------------------------------"; //----------------------------------------------------------------
extern int RSI_Period=5; //RSI Period
extern int RSI_upper_level=70; //RSI upper level
extern int RSI_lower_level=30; //RSI lower level
extern string line4______________________________________="---------------------------------------------------------------"; //----------------------------------------------------------------
extern int MACD_fast_EMA=12; //MACD fast EMA
extern int MACD_slow_EMA=26; //MACD slow EMA
extern int MACD_SMA=9; //MACD SMA
extern string End_____________________________="________________________________";

double One_Candle_before_a;
double One_Candle_before_b;
double One_Candle_before_c;
double One_Candle_before_d;

double MA_filter_a;
double MA_filter_b;
double MA_filter_c;
double MA_filter_d;

double RSI_filter_a;
double RSI_filter_b;
double RSI_filter_c;
double RSI_filter_d;

double MACD_filter_a;
double MACD_filter_b;
double MACD_filter_c;
double MACD_filter_d;

double movesUp[];
double movesDown[];
string TimeFrameStr;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
string GetTimeFrameStr()
  {
   switch(Period())
     {
      case 1 : TimeFrameStr="M1"; break;
      case 5 : TimeFrameStr="M5"; break;
      case 15 : TimeFrameStr="M15"; break;
      case 30 : TimeFrameStr="M30"; break;
      case 60 : TimeFrameStr="H1"; break;
      case 240 : TimeFrameStr="H4"; break;
      case 1440 : TimeFrameStr="D1"; break;
      case 10080 : TimeFrameStr="W1"; break;
      case 43200 : TimeFrameStr="MN"; break;
      default : TimeFrameStr=(string)Period();
     }
   return (TimeFrameStr);
  }
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+

int OnInit()
  {
     {
      SetIndexStyle(0,DRAW_ARROW); SetIndexArrow(0,233);
      SetIndexStyle(1,DRAW_ARROW); SetIndexArrow(1,234);
     }
   SetIndexBuffer(0,movesUp);
   SetIndexBuffer(1,movesDown);

   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool NewBar()
  {
   static datetime lastbar;
   datetime curbar=Time[0];
   if(lastbar!=curbar)
     {
      lastbar=curbar;
      return (true);
     }
   else
     {
      return(false);
     }
  }
//+------------------------------------------------------------------+
//| 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,i;
   double Range;
   int counted_bars=IndicatorCounted();

   if(counted_bars<0) return(-1);

   if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;
   if(limit>barsToProcess) limit=barsToProcess;
   for(i=0; i<=limit; i++)
     {
      Range=(iATR(NULL,NULL,40,i+1));

      if(MA_filter==true)
        {
         MA_filter_a=(((iClose(NULL,0,i+1))>=(iMA(NULL,0,Trend_MA,MA_shift,MA_Mode,MA_price,i+1)))
                     || ((iOpen(NULL,0,i+1))>=(iMA(NULL,0,Trend_MA,MA_shift,MA_Mode,MA_price,i+1))));
         MA_filter_b=(((iClose(NULL,0,1))>=(iMA(NULL,0,Trend_MA,MA_shift,MA_Mode,MA_price,1)))
                     || ((iOpen(NULL,0,1))>=(iMA(NULL,0,Trend_MA,MA_shift,MA_Mode,MA_price,1))));
         MA_filter_c=(((iClose(NULL,0,i+1))<=(iMA(NULL,0,Trend_MA,MA_shift,MA_Mode,MA_price,i+1)))
                     || ((iOpen(NULL,0,i+1))<=(iMA(NULL,0,Trend_MA,MA_shift,MA_Mode,MA_price,i+1))));
         MA_filter_d=(((iClose(NULL,0,1))<=(iMA(NULL,0,Trend_MA,MA_shift,MA_Mode,MA_price,1)))
                     || ((iOpen(NULL,0,1))<=(iMA(NULL,0,Trend_MA,MA_shift,MA_Mode,MA_price,1))));
        }

      if(MA_filter==false)
        {
         MA_filter_a=((iLow(NULL, 0, i+1)) > (iLow(NULL, 0, i+2)));
         MA_filter_b=((iLow(NULL, 0, 1)) > (iLow(NULL, 0, 2)));
         MA_filter_c=((iLow(NULL, 0, i+1)) > (iLow(NULL, 0, i+2)));
         MA_filter_d=((iLow(NULL, 0, 1)) > (iLow(NULL, 0, 2)));
        }

      if(RSI_filter==true)
        {
         RSI_filter_a=((iRSI(NULL, 0, RSI_Period, 0, i+1)) < RSI_lower_level);
         RSI_filter_b=((iRSI(NULL, 0, RSI_Period, 0, 1)) < RSI_lower_level);
         RSI_filter_c=((iRSI(NULL, 0, RSI_Period, 0, i+1)) > RSI_upper_level);
         RSI_filter_d=((iRSI(NULL, 0, RSI_Period, 0, 1)) > RSI_upper_level);
        }

      if(RSI_filter==false)
        {
         RSI_filter_a=((iLow(NULL, 0, i+1)) > (iLow(NULL, 0, i+2)));
         RSI_filter_b=((iLow(NULL, 0, 1)) > (iLow(NULL, 0, 2)));
         RSI_filter_c=((iLow(NULL, 0, i+1)) > (iLow(NULL, 0, i+2)));
         RSI_filter_d=((iLow(NULL, 0, 1)) > (iLow(NULL, 0, 2)));
        }

      if(MACD_filter==true)
        {
         MACD_filter_a=((iMACD(NULL,0,MACD_fast_EMA,MACD_slow_EMA,MACD_SMA,0,0,i+1))>
                        (iMACD(NULL,0,MACD_fast_EMA,MACD_slow_EMA,MACD_SMA,0,0,i+2)));
         MACD_filter_b=((iMACD(NULL,0,MACD_fast_EMA,MACD_slow_EMA,MACD_SMA,0,0,1))>
                        (iMACD(NULL,0,MACD_fast_EMA,MACD_slow_EMA,MACD_SMA,0,0,2)));
         MACD_filter_c=((iMACD(NULL,0,MACD_fast_EMA,MACD_slow_EMA,MACD_SMA,0,0,i+1))<
                        (iMACD(NULL,0,MACD_fast_EMA,MACD_slow_EMA,MACD_SMA,0,0,i+2)));
         MACD_filter_d=((iMACD(NULL,0,MACD_fast_EMA,MACD_slow_EMA,MACD_SMA,0,0,1))<
                        (iMACD(NULL,0,MACD_fast_EMA,MACD_slow_EMA,MACD_SMA,0,0,2)));
        }

      if(MACD_filter==false)
        {
         MACD_filter_a=((iLow(NULL, 0, i+1)) > (iLow(NULL, 0, i+2)));
         MACD_filter_b=((iLow(NULL, 0, 1)) > (iLow(NULL, 0, 2)));
         MACD_filter_c=((iLow(NULL, 0, i+1)) > (iLow(NULL, 0, i+2)));
         MACD_filter_d=((iLow(NULL, 0, 1)) > (iLow(NULL, 0, 2)));
        }

      if(One_Candle_before==true)
        {
         One_Candle_before_a=((iClose(NULL, 0, i+3)) < (iOpen(NULL, 0, i+3)));
         One_Candle_before_b=((iClose(NULL, 0, 3)) < (iOpen(NULL, 0, 3)));
         One_Candle_before_c=((iOpen(NULL, 0, i+3)) < (iClose(NULL, 0, i+3)));
         One_Candle_before_d=((iOpen(NULL, 0, 3)) < (iClose(NULL, 0, 3)));
        }

      if(One_Candle_before==false)
        {
         One_Candle_before_a=((iLow(NULL, 0, i+1)) > (iLow(NULL, 0, i+2)));
         One_Candle_before_b=((iLow(NULL, 0, 1)) > (iLow(NULL, 0, 2)));
         One_Candle_before_c=((iLow(NULL, 0, i+1)) > (iLow(NULL, 0, i+2)));
         One_Candle_before_d=((iLow(NULL, 0, 1)) > (iLow(NULL, 0, 2)));
        }

        {
         if(((iLow(NULL,0,i+1))>(iLow(NULL,0,i+2))
            && ((iHigh(NULL,0,i+1))<(iHigh(NULL,0,i+2)))
            && ((iClose(NULL,0,i+2))<(iOpen(NULL,0,i+2)))
            && ((iClose(NULL,0,i+1))>(iOpen(NULL,0,i+1)))
            && MA_filter_a
            && RSI_filter_a
            && MACD_filter_a
            && One_Candle_before_a
            ))
           {
            movesUp[i+1]=Low[i+1]-Range*0.3;
           }
         if(((iLow(NULL,0,1))>(iLow(NULL,0,2))
            && ((iHigh(NULL,0,1))<(iHigh(NULL,0,2)))
            && ((iClose(NULL,0,2))<(iOpen(NULL,0,2)))
            && ((iClose(NULL,0,1))>(iOpen(NULL,0,1)))
            && MA_filter_b
            && RSI_filter_b
            && MACD_filter_b
            && One_Candle_before_b
            ))
           {
            if(NewBar())
              {
               if(Alert_On==true)
                 {
                  Alert(Symbol()+"  "+GetTimeFrameStr()+"  "+"Arrow =>  up, "+" Harami");
                 }
              }
           }

         if(((iLow(NULL,0,i+1))>(iLow(NULL,0,i+2))
            && ((iHigh(NULL,0,i+1))<(iHigh(NULL,0,i+2)))
            && ((iOpen(NULL,0,i+2))<(iClose(NULL,0,i+2)))
            && ((iOpen(NULL,0,i+1))>(iClose(NULL,0,i+1)))
            && MA_filter_c
            && RSI_filter_c
            && MACD_filter_c
            && One_Candle_before_c
            ))
           {
            movesDown[i+1]=High[i+1]+Range*0.3;
           }
         if(((iLow(NULL,0,1))>(iLow(NULL,0,2))
            && ((iHigh(NULL,0,1))<(iHigh(NULL,0,2)))
            && ((iOpen(NULL,0,2))<(iClose(NULL,0,2)))
            && ((iOpen(NULL,0,1))>(iClose(NULL,0,1)))
            && MA_filter_d
            && RSI_filter_d
            && MACD_filter_d
            && One_Candle_before_d
            ))
           {
            if(NewBar())
              {
               if(Alert_On==true)
                 {
                  Alert(Symbol()+"  "+GetTimeFrameStr()+"  "+"Arrow =>  down, "+" Harami");
                 }
              }
           }
        }
     }
   return(0);
  }
//+------------------------------------------------------------------+

Comments

Markdown supported. Formatting help

Markdown Formatting Guide

Element Markdown Syntax
Heading # H1
## H2
### H3
Bold **bold text**
Italic *italicized text*
Link [title](https://www.example.com)
Image ![alt text](image.jpg)
Code `code`
Code Block ```
code block
```
Quote > blockquote
Unordered List - Item 1
- Item 2
Ordered List 1. First item
2. Second item
Horizontal Rule ---