Jump to content

⤴️-Paid Ad- Check advertising disclaimer here. Add your banner here.🔥

Recommended Posts

Posted

I have an open levels indicator probably from this site, that needs code adjusting so that the lines refresh at the open of each hour.

I use it as a basic trend indicator. Anyone can help please, indicator attached ?

Thanks in advance.

 

//+------------------------------------------------------------------+
//|                                           open levels hourly.mq4 |
//|                      Copyright © 2011, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+

#property copyright "By cja - cjatradingtools.com "
#property link      ""

#property indicator_chart_window

extern int OPEN_PERIOD_1 = 60;
extern int OPEN_PERIOD_2 = 240;
extern int OPEN_PERIOD_3 = 1440;
extern bool Show_LABELS = TRUE;
extern bool Show_OPEN1_LINE = TRUE;
extern int OPEN1_LABEL_Color = Black;
extern color OPEN1_LINE_Color = Green;
extern int OPEN1_LINE_Style = 2;
extern int OPEN1_LINE_Width = 5;
extern bool Show_OPEN2_LINE = TRUE;
extern int OPEN2_LABEL_Color = Black;
extern color OPEN2_LINE_Color = Aqua;
extern int OPEN2_LINE_Style = 2;
extern int OPEN2_LINE_Width = 5;
extern bool Show_OPEN3_LINE = TRUE;
extern int OPEN3_LABEL_Color = Black;
extern color OPEN3_LINE_Color = Orange;
extern int OPEN3_LINE_Style = 2;
extern int OPEN3_LINE_Width = 5;
string gs_152;
string gs_160;
string gs_168;

int init() {
  IndicatorShortName("OPEN Levels");
  switch (OPEN_PERIOD_1) {
  case 1:
     gs_152 = "M1";
     break;
  case 5:
     gs_152 = "M5";
     break;
  case 15:
     gs_152 = "M15";
     break;
  case 30:
     gs_152 = "M30";
     break;
  case 60:
     gs_152 = "Hourly";
     break;
  case 240:
     gs_152 = "4 Hourly";
     break;
  case 1440:
     gs_152 = "Daily";
     break;
  case 10080:
     gs_152 = "Weekly";
     break;
  case 43200:
     gs_152 = "Monthly";
  }
  switch (OPEN_PERIOD_2) {
  case 1:
     gs_160 = "M1";
     break;
  case 5:
     gs_160 = "M5";
     break;
  case 15:
     gs_160 = "M15";
     break;
  case 30:
     gs_160 = "M30";
     break;
  case 60:
     gs_160 = "Hourly";
     break;
  case 240:
     gs_160 = "4 Hourly";
     break;
  case 1440:
     gs_160 = "Daily";
     break;
  case 10080:
     gs_160 = "Weekly";
     break;
  case 43200:
     gs_160 = "Monthly";
  }
  switch (OPEN_PERIOD_3) {
  case 1:
     gs_168 = "M1";
     break;
  case 5:
     gs_168 = "M5";
     break;
  case 15:
     gs_168 = "M15";
     break;
  case 30:
     gs_168 = "M30";
     break;
  case 60:
     gs_168 = "Hourly";
     break;
  case 240:
     gs_168 = "4 Hourly";
     break;
  case 1440:
     gs_168 = "Daily";
     break;
  case 10080:
     gs_168 = "Weekly";
     break;
  case 43200:
     gs_168 = "Monthly";
  }
  return (0);
}

int deinit() {
  ObjectDelete("OP1");
  ObjectDelete("OP2");
  ObjectDelete("OP3");
  ObjectDelete("OP_1");
  ObjectDelete("OP_2");
  ObjectDelete("OP_3");
  return (0);
}

int start() {
  CreateOP1();
  return (0);
}

void CreateOpen1(string a_name_0, double a_price_8, double a_price_16, double a_width_24, double a_style_32, color a_color_40) {
  ObjectCreate(a_name_0, OBJ_TREND, 0, iTime(NULL, OPEN_PERIOD_1, 1), a_price_8, Time[0], a_price_16);
  ObjectSet(a_name_0, OBJPROP_COLOR, a_color_40);
  ObjectSet(a_name_0, OBJPROP_RAY, FALSE);
  ObjectSet(a_name_0, OBJPROP_WIDTH, a_width_24);
  ObjectSet(a_name_0, OBJPROP_STYLE, a_style_32);
}

void DeleteOpen1() {
  ObjectDelete("OP1");
}

void CreateOP1() {
  DeleteOpen1();
  CreateOP2();
}

void CreateOpen2(string a_name_0, double a_price_8, double a_price_16, double a_width_24, double a_style_32, color a_color_40) {
  ObjectCreate(a_name_0, OBJ_TREND, 0, iTime(NULL, OPEN_PERIOD_2, 1), a_price_8, Time[0], a_price_16);
  ObjectSet(a_name_0, OBJPROP_COLOR, a_color_40);
  ObjectSet(a_name_0, OBJPROP_RAY, FALSE);
  ObjectSet(a_name_0, OBJPROP_WIDTH, a_width_24);
  ObjectSet(a_name_0, OBJPROP_STYLE, a_style_32);
}

void DeleteOpen2() {
  ObjectDelete("OP2");
}

void CreateOP2() {
  DeleteOpen2();
  CreateOP3();
}

void CreateOpen3(string a_name_0, double a_price_8, double a_price_16, double a_width_24, double a_style_32, color a_color_40) {
  ObjectCreate(a_name_0, OBJ_TREND, 0, iTime(NULL, OPEN_PERIOD_3, 1), a_price_8, Time[0], a_price_16);
  ObjectSet(a_name_0, OBJPROP_COLOR, a_color_40);
  ObjectSet(a_name_0, OBJPROP_RAY, FALSE);
  ObjectSet(a_name_0, OBJPROP_WIDTH, a_width_24);
  ObjectSet(a_name_0, OBJPROP_STYLE, a_style_32);
}

void DeleteOpen3() {
  ObjectDelete("OP3");
}

void CreateOP3() {
  DeleteOpen3();
  double l_iopen_0 = iOpen(NULL, OPEN_PERIOD_1, 1);
  double l_iopen_8 = iOpen(NULL, OPEN_PERIOD_2, 1);
  double l_iopen_16 = iOpen(NULL, OPEN_PERIOD_3, 1);
  if (Show_OPEN1_LINE == TRUE) CreateOpen1("OP1", l_iopen_0, l_iopen_0, OPEN1_LINE_Width, OPEN1_LINE_Style, OPEN1_LINE_Color);
  if (Show_OPEN2_LINE == TRUE) CreateOpen2("OP2", l_iopen_8, l_iopen_8, OPEN2_LINE_Width, OPEN2_LINE_Style, OPEN2_LINE_Color);
  if (Show_OPEN3_LINE == TRUE) CreateOpen3("OP3", l_iopen_16, l_iopen_16, OPEN3_LINE_Width, OPEN3_LINE_Style, OPEN3_LINE_Color);
  if (Show_LABELS == TRUE) {
     ObjectDelete("OP_1");
     if (ObjectFind("OP_1") != 0) {
        ObjectCreate("OP_1", OBJ_TEXT, 0, Time[0], l_iopen_0);
        ObjectSetText("OP_1", "" + gs_152 + " " + DoubleToStr(l_iopen_0, Digits) + "", 11, "Arial", OPEN1_LABEL_Color);
     } else ObjectMove("OP_1", 0, Time[0], l_iopen_0);
     ObjectDelete("OP_2");
     if (ObjectFind("OP_2") != 0) {
        ObjectCreate("OP_2", OBJ_TEXT, 0, Time[0], l_iopen_8);
        ObjectSetText("OP_2", "" + gs_160 + " " + DoubleToStr(l_iopen_8, Digits) + "", 11, "Arial", OPEN2_LABEL_Color);
     } else ObjectMove("OP_2", 0, Time[0], l_iopen_8);
     ObjectDelete("OP_3");
     if (ObjectFind("OP_3") != 0) {
        ObjectCreate("OP_3", OBJ_TEXT, 0, Time[0], l_iopen_16);
        ObjectSetText("OP_3", "" + gs_168 + " " + DoubleToStr(l_iopen_16, Digits) + "", 11, "Arial", OPEN3_LABEL_Color);
     } else ObjectMove("OP_3", 0, Time[0], l_iopen_16);
  }
}

Posted (edited)

Thanks for your help drbastem.

I think the problem is still there, it does not pick up the new 4 hour candle open, eg. at the moment it is 22.15 , it has not picked up the 20.00 open, it is still showing the 16.00 open.

The hourly & daily is not a problem.

Any ideas ? it may not be a refresh problem as I thought.

Edited by shabz

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

⤴️-Paid Ad- Check advertising disclaimer here. Add your banner here.🔥

×
×
  • Create New...