Fabio dos Santos

MQL4 インディケータ

指定

Eu preciso de um filtro adicional para o indicador que colocarei em seguida abaixo, após a explicação:

O primeiro indicador (PADRÃO), sinalizará o momento da entrada. Mas antes, deve consultar o filtro abaixo:

Stochastic: 21.1.1 

Call: Quando stochastic estiver subindo entre os  níveis  de 35 até o 50 (Precisa ser dentro deste limite)

Put: Quando stochastic estiver descendo entre os níveis  de 65 até o 50 (Precisa ser dentro deste limite)

Preciso que envie em mq4. 

 

Segue abaixo o indicador padrão:

//+------------------------------------------------------------------+

//|                                         EMA-Crossover_Signal.mq4 |

//|         Copyright © 2005, Jason Robinson (jnrtrading)            |

//|                   http://www.jnrtading.co.uk                     |

//+------------------------------------------------------------------+


/*

  +------------------------------------------------------------------+

  | Allows you to enter two ema periods and it will then show you at |

  | Which point they crossed over. It is more usful on the shorter   |

  | periods that get obscured by the bars / candlesticks and when    |

  | the zoom level is out. Also allows you then to remove the emas   |

  | from the chart. (emas are initially set at 5 and 6)              |

  +------------------------------------------------------------------+

*/   

#property copyright "Copyright © 2005, Jason Robinson (jnrtrading)"

#property link      "http://www.jnrtrading.co.uk"


#property indicator_chart_window

#property indicator_buffers 2

#property indicator_color1 Yellow

#property indicator_color2 Aqua


#property indicator_width1 1

#property indicator_width2 1


double CrossUp[];

double CrossDown[];

extern int FasterEMA = 1;

extern int SlowerEMA = 13;

extern int RSIPeriod = 21;

extern bool Alerts = false;


bool EMACrossedUp = false;

bool RSICrossedUp = false;

bool EMACrossedDown = false;

bool RSICrossedDown = false;

int SignalLabeled = 0; // 0: initial state; 1: up; 2: down.

int upalert=false,downalert=false;

//+------------------------------------------------------------------+

//| Custom indicator initialization function                         |

//+------------------------------------------------------------------+

int init()

  {

//---- indicators

   SetIndexStyle(0, DRAW_ARROW, EMPTY);

   SetIndexArrow(0, 241);

   SetIndexBuffer(0, CrossUp);

   SetIndexStyle(1, DRAW_ARROW, EMPTY);

   SetIndexArrow(1, 242);

   SetIndexBuffer(1, CrossDown);

//----

   return(0);

  }

//+------------------------------------------------------------------+

//| Custom indicator deinitialization function                       |

//+------------------------------------------------------------------+

int deinit()

  {

//---- 


//----

   return(0);

  }

//+------------------------------------------------------------------+

//| Custom indicator iteration function                              |

//+------------------------------------------------------------------+

int start() {

   int limit, i, counter;

   double fasterEMAnow, slowerEMAnow, fasterEMAprevious, slowerEMAprevious, fasterEMAafter, slowerEMAafter;

   double RSInow, RSIprevious, RSIafter;

   double Range, AvgRange;


   int counted_bars=IndicatorCounted();

//---- check for possible errors

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

//---- last counted bar will be recounted

   if(counted_bars>0) counted_bars--;


   limit=Bars-counted_bars;

   

   for(i = 0; i <= limit; i++) {

   

      counter=i;

      Range=0;

      AvgRange=0;

      for (counter=i ;counter<=i+9;counter++)

      {

         AvgRange=AvgRange+MathAbs(High[counter]-Low[counter]);

      }

      Range=AvgRange/10;

       

      fasterEMAnow = iMA(NULL, 0, FasterEMA, 0, MODE_EMA, PRICE_CLOSE, i);

      fasterEMAprevious = iMA(NULL, 0, FasterEMA, 0, MODE_EMA, PRICE_CLOSE, i+1);

      fasterEMAafter = iMA(NULL, 0, FasterEMA, 0, MODE_EMA, PRICE_CLOSE, i-1);


      slowerEMAnow = iMA(NULL, 0, SlowerEMA, 0, MODE_EMA, PRICE_CLOSE, i);

      slowerEMAprevious = iMA(NULL, 0, SlowerEMA, 0, MODE_EMA, PRICE_CLOSE, i+1);

      slowerEMAafter = iMA(NULL, 0, SlowerEMA, 0, MODE_EMA, PRICE_CLOSE, i-1);

      

      RSInow=iRSI(NULL,0,RSIPeriod,PRICE_CLOSE,i);

      RSIprevious=iRSI(NULL,0,RSIPeriod,PRICE_CLOSE,i+1);

      RSIafter=iRSI(NULL,0,RSIPeriod,PRICE_CLOSE,i-1);

      

      if ((RSInow > 50) && (RSIprevious < 50) && (RSIafter > 50)) {

         RSICrossedUp = true;

         RSICrossedDown = false;

      }

      

      if ((RSInow < 50) && (RSIprevious > 50) && (RSIafter < 50)) {

         RSICrossedUp = false;

         RSICrossedDown = true;

      }

      

      if ((fasterEMAnow > slowerEMAnow) && (fasterEMAprevious < slowerEMAprevious) && (fasterEMAafter > slowerEMAafter)) {

         EMACrossedUp = true;

         EMACrossedDown = false;

      }


      if ((fasterEMAnow < slowerEMAnow) && (fasterEMAprevious > slowerEMAprevious) && (fasterEMAafter < slowerEMAafter)) {

         EMACrossedUp = false;

         EMACrossedDown = true;

      }


      if ((EMACrossedUp == true) && (RSICrossedUp == true) && (SignalLabeled != 1)) {

         CrossUp[i] = Low[i] - Range*1.3;

         if(i<=2 && Alerts && !upalert)

           {

            Alert (Symbol()," ",Period(),"M  EMACross UP ");

            //SendMail("EMA Cross Up on "+Symbol(),"");

            upalert=true;

            downalert=false;

           }

         SignalLabeled = 1;

      }


      else if ((EMACrossedDown == true) && (RSICrossedDown == true) && (SignalLabeled != 2)) {

         CrossDown[i] = High[i] + Range*1.3;

         if(i<=2 && Alerts && !downalert)

           {

            Alert (Symbol()," ",Period(),"M  EMACross DOWN ");

            //SendMail("EMA Cross Down on "+Symbol(),"");

            downalert=true;

            upalert=false;

           }

         SignalLabeled = 2;

      }

   }

   return(0);

}


 

 

応答済み

1
開発者 1
評価
プロジェクト
0
0%
仲裁
0
期限切れ
0
2
開発者 2
評価
プロジェクト
0
0%
仲裁
0
期限切れ
0
3
開発者 3
評価
(2103)
プロジェクト
2674
62%
仲裁
114
46% / 25%
期限切れ
420
16%
取り込み中
4
開発者 4
評価
(2442)
プロジェクト
3079
66%
仲裁
77
48% / 14%
期限切れ
340
11%

プロジェクト情報

予算
30 - 50 USD
開発者用
27 - 45 USD
締め切り
最低 1 日