admin 发表于 2018-1-22 16:14:14

CCT_Breakout_Box



//+------------------------------------------------------------------+
//|                                              CCT_BreakoutBox.mq4 |
//|                           Copyright Complete Currency Trader Ltd |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "Copyright, Complete Currency Trader Ltd"
#property link      ""
#property version   "1.00"
#property strict
#property indicator_chart_window

extern string OpenTime = "10:00";
extern int PipsAbove = 100;
extern int PipsBelow = 100;
extern color BoxColor = DarkOliveGreen;
extern int MaxBoxes = 50;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
{
   return(INIT_SUCCEEDED);
}

void OnDeinit(const int reason)
{
   for(int i = ObjectsTotal()-1; i>=0; i--)
   {
      if(StringFind(ObjectName(i),"BOXMODEL9") != -1)
         ObjectDelete(ObjectName(i));
   }
}

//+------------------------------------------------------------------+
//| 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[])
{
   datetime startTime = StrToTime(OpenTime);   
   int targetTimeframe = getTargetTf(startTime);
   
   int days = -1, lastDay = -1;
   for(int i = 0; i < Bars; i++)
   {
      int today = iTime(Symbol(), PERIOD_D1, iBarShift(Symbol(), PERIOD_D1, Time));
      
      // skip till new day
      if(today == lastDay)
         continue;
      else
      {
         days++;
         lastDay = today;   
      }   
      
      // objects drawn, exit
      if(ObjectFind("BOXMODEL9"+DoubleToStr(today,0)) != -1)
      break;
      
      // draw box on new day         
      if(ObjectFind("BOXMODEL9"+DoubleToStr(today,0)) == -1)
      {
         int shift = iBarShift(Symbol(), targetTimeframe, startTime-days*1440*60, true);
         if(shift != -1)
         {
            double price = iOpen(Symbol(), targetTimeframe, shift);
            ObjectCreate("BOXMODEL9"+DoubleToStr(today,0), OBJ_RECTANGLE, 0, startTime-days*1440*60, price+PipsAbove*Point, startTime-(days-1)*1440*60-TimeHour(startTime)*60*60-TimeMinute(startTime)*60, price-PipsBelow*Point);
            ObjectSet("BOXMODEL9"+DoubleToStr(today, 0), OBJPROP_COLOR, BoxColor);
         }
      }
      
      if(days == MaxBoxes)
         break;         
   }
   return(rates_total);
}

//+------------------------------------------------------------------+
// returns tf to get data from depending on user input
//+------------------------------------------------------------------+
int getTargetTf(datetime time)
{
   if(TimeMinute(time) == 0 && Period() <= 60)
      return(Period());
   else if(TimeMinute(time) == 0 && Period() >= 60)
      return(PERIOD_H1);
   else if(TimeMinute(time) == 15)
      return(PERIOD_M15);
   else if(TimeMinute(time) == 30)
      return(PERIOD_M30);
   else if(TimeMinute(time) == 45)
      return(PERIOD_M15);   
   else
      return(PERIOD_M1);   
}


bjnojmid 发表于 2020-6-29 17:29:06

没看完~~~~~~ 先顶,好同志

风灰 发表于 2020-7-6 18:10:39

谢谢楼主分享

cfxgroup 发表于 2020-9-5 12:19:35

帮你顶下哈!!

好诗岚 发表于 2020-11-26 17:05:46

支持下

ytmfcu 发表于 2021-7-20 19:23:00

谢谢

乾坤天地 发表于 2021-7-29 19:38:44

顶下

bdeka 发表于 2021-8-1 18:37:52

顶下

钟灵瑜金 发表于 2021-8-5 10:00:19

顶下
页: [1]
查看完整版本: CCT_Breakout_Box