客服热线:18391752892

3shadeopen

   日期:2019-01-12     浏览:479    

//+------------------------------------------------------------------+
//|                                     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 New York
#define NY_OPEN_HH   06 // NY session open hour
#define NY_OPEN_MM   30 // NY session open minutes
#define NY_CLOSE_HH 13 // NY session close hour
#define NY_CLOSE_MM 05 // NY session close minutes


#define MAX_DAYS_TO_SHADE 5 // 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[i])*PERIOD_MN1*12+TimeMonth(Time[i])*PERIOD_MN1+TimeDay(Time[i])*PERIOD_D1;
     iBarTime=iBarDay+TimeHour(Time[i])*60+TimeMinute(Time[i]);
     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 i--)
   {
     iBarDay=TimeYear(Time[i])*PERIOD_MN1*12+TimeMonth(Time[i])*PERIOD_MN1+TimeDay(Time[i])*PERIOD_D1;
     iBarTime=iBarDay+TimeHour(Time[i])*60+TimeMinute(Time[i]);
     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[i]);
         dHigh=MathMax(dHigh, High[i]);
       }
       else               // new NY session
       {
         dLow=Low[i];
         dHigh=High[i];
         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[i]) -1) ObjectDelete(obj[i]);
   }
   return(0);
 }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                     |
//+------------------------------------------------------------------+
int start()
 {
   int i=0, iBarDay, iBarTime;
   iBarDay=TimeYear(Time[i])*PERIOD_MN1*12+TimeMonth(Time[i])*PERIOD_MN1+TimeDay(Time[i])*PERIOD_D1;
   iBarTime=iBarDay+TimeHour(Time[i])*60+TimeMinute(Time[i]);
   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[i]);
       dHigh=MathMax(dHigh, High[i]);
     }
     else               // new NY session
     {
       dLow=Low[i];
       dHigh=High[i];
       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[iEnd]);
     ObjectSet(sObj,OBJPROP_PRICE2,dHigh+Point);
   }
   else
   {
     // otherwise create new object for the session
     int iaCount=ArraySize(obj);
     ArrayResize(obj, iaCount+1);
     obj[iaCount]=sObj;
     ObjectCreate(sObj,OBJ_RECTANGLE,0,Time[iStart],dLow-Point,Time[iEnd],dHigh+Point);
     ObjectSet(sObj,OBJPROP_COLOR,ShadeColor);
   }
 }   
//+------------------------------------------------------------------+复制代码

瞬间的光辉 的全套EA教程视频(带讲课源码和讲义)
土豆可以搜到部分视频教程,我花钱买了全套的,
加Q2011108529 免费送
外汇交易有很大的风险性,本站所有资源均来自网络,请选择使用,如若出现亏损,本站不承担任何责任!

特别提示:本信息由相关企业自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


0相关评论
相关行情
推荐行情
点击排行