老王吧 发表于 2016-4-22 10:17:14

3shadeopen



//+------------------------------------------------------------------+
//|                                                      3shadeopen.mq4 |
//|                                       Copyright © 2006, sx ted |
//| Purpose: shade New York or other sessions for chart time frames|
//|          M1 to H4 (at a push).                                 |
//| version: 2 - enhanced for speed but with MT4 beeing so fast no   |
//|            difference will be noticed, all the sessions are    |
//|            shaded in the init(), last session if it is current |
//|            is widened in the start() in lieu of repainting all.|
//+------------------------------------------------------------------+
#property copyright "Copyright © 2006, sx ted"
#property link      ""

#property indicator_chart_window

//---- input parameters
extern color   ShadeColor=Gold;

/*
// if in Moscow
#define NY_OPEN_HH   17 // NY session open hour
#define NY_OPEN_MM   30 // NY session open minutes
#define NY_CLOSE_HH00 // NY session close hour
#define NY_CLOSE_MM05 // NY session close minutes
*/


/* if in London
#define NY_OPEN_HH   14 // NY session open hour
#define NY_OPEN_MM   30 // NY session open minutes
#define NY_CLOSE_HH21 // NY session close hour
#define NY_CLOSE_MM05 // NY session close minutes
*/


// if in New York
#define NY_OPEN_HH   06 // NY session open hour
#define NY_OPEN_MM   30 // NY session open minutes
#define NY_CLOSE_HH13 // NY session close hour
#define NY_CLOSE_MM05 // NY session close minutes


#define MAX_DAYS_TO_SHADE5 // maximum number of days back from last chart date to be shaded

//---- global variables to program
string obj[]; //array of object names
int    iPrevious=0, iStart=-1, iEnd;
double dLow, dHigh;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
{
   if(Period()>PERIOD_H4) return(0); // no shading required
   int iMaxBarsOnChart=iBars(NULL,0), i, iBarDay, iBarTime;
   // find approximate start of first day to shade
   int iBarsToDo=MathMin((MAX_DAYS_TO_SHADE*PERIOD_D1)/Period(),iMaxBarsOnChart);
   // find start of first day to shade
   for(i=iBarsToDo; i<iMaxBarsOnChart; i++)
   {
      iBarDay=TimeYear(Time)*PERIOD_MN1*12+TimeMonth(Time)*PERIOD_MN1+TimeDay(Time)*PERIOD_D1;
      iBarTime=iBarDay+TimeHour(Time)*60+TimeMinute(Time);
      if(iBarTime>=iBarDay+NY_OPEN_HH*60+NY_OPEN_MM && iBarTime<=iBarDay+NY_CLOSE_HH*60+NY_CLOSE_MM) iStart=i;
      else if(iStart>-1) break;
   }
   if(iStart>-1) iBarsToDo=iStart;
   iStart=-1;
   // shade previous sessions and current session if started
   for(i=iBarsToDo; i>=0; i--)
   {
      iBarDay=TimeYear(Time)*PERIOD_MN1*12+TimeMonth(Time)*PERIOD_MN1+TimeDay(Time)*PERIOD_D1;
      iBarTime=iBarDay+TimeHour(Time)*60+TimeMinute(Time);
      if(iBarTime>=iBarDay+NY_OPEN_HH*60+NY_OPEN_MM && iBarTime<=iBarDay+NY_CLOSE_HH*60+NY_CLOSE_MM)
      {
         if(iBarDay==iPrevious)   // current NY session
         {
            dLow =MathMin(dLow,Low);
            dHigh=MathMax(dHigh, High);
         }
         else                     // new NY session
         {
            dLow=Low;
            dHigh=High;
            iStart=i;
            iPrevious=iBarDay;
         }      
         iEnd=i;
      }
      else if(iStart>-1)
      {
         PaintRectangle();
         iStart=-1;
      }
   }
   if(iStart>-1) PaintRectangle(); // paint the last one if session not closed
   return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                     |
//+------------------------------------------------------------------+
int deinit()
{
   int iaCount=ArraySize(obj);
   for(int i=0; i<iaCount; i++)
   {
      if(ObjectFind(obj)>-1) ObjectDelete(obj);
   }
   return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
{
   int i=0, iBarDay, iBarTime;
   iBarDay=TimeYear(Time)*PERIOD_MN1*12+TimeMonth(Time)*PERIOD_MN1+TimeDay(Time)*PERIOD_D1;
   iBarTime=iBarDay+TimeHour(Time)*60+TimeMinute(Time);
   if(iBarTime>=iBarDay+NY_OPEN_HH*60+NY_OPEN_MM && iBarTime<=iBarDay+NY_CLOSE_HH*60+NY_CLOSE_MM)
   {
      if(iBarDay==iPrevious)   // current NY session
      {
         dLow =MathMin(dLow,Low);
         dHigh=MathMax(dHigh, High);
      }
      else                     // new NY session
      {
         dLow=Low;
         dHigh=High;
         iStart=i;
         iPrevious=iBarDay;
      }      
      iEnd=i;
      PaintRectangle();
   }
   return(0);
}
//+------------------------------------------------------------------+
//| Paint rectangle                                                |
//+------------------------------------------------------------------+
void PaintRectangle()
{
   string sObj="ShadeNY_"+DoubleToStr(iPrevious, 0); // name for the object
   if(ObjectFind(sObj)>-1)
   {
      // current session object found, so just widen it
      ObjectSet(sObj,OBJPROP_PRICE1,dLow-Point);
      ObjectSet(sObj,OBJPROP_TIME2 ,Time);
      ObjectSet(sObj,OBJPROP_PRICE2,dHigh+Point);
   }
   else
   {
      // otherwise create new object for the session
      int iaCount=ArraySize(obj);
      ArrayResize(obj, iaCount+1);
      obj=sObj;
      ObjectCreate(sObj,OBJ_RECTANGLE,0,Time,dLow-Point,Time,dHigh+Point);
      ObjectSet(sObj,OBJPROP_COLOR,ShadeColor);
   }
}   
//+------------------------------------------------------------------+


abiao915659 发表于 2016-5-18 15:05:40


瞬间的光辉 的全套EA教程视频(带讲课源码和讲义)
土豆可以搜到部分视频教程,我花钱买了全套的,
加Q2011108529 免费送

hijk345 发表于 2018-6-5 06:53:20

好哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈和

awcyj 发表于 2020-4-12 22:08:46

过来看看的

相依爲命 发表于 2020-6-16 19:57:17

学习了,谢谢分享、、、

飞火流星 发表于 2020-6-24 19:39:33

好好 学习了 确实不错

故乡 发表于 2020-7-11 10:00:47

学习了,不错

淡定哥 发表于 2020-7-15 17:34:40

帮你顶下哈!!

赵四 发表于 2020-7-18 21:20:19

帮你顶下哈!!

btclyb85 发表于 2020-7-31 14:03:48

谢谢楼主分享
页: [1] 2
查看完整版本: 3shadeopen