Re: MT4 Indicator requests and ideas

21771
BeatlemaniaSA wrote: Mon Nov 17, 2025 8:27 pm Dude,

Maybe learn to use AI to express your ideas? Learn to ask the right questions.

Done by GROK in a couple of seconds. It may not be absolutely perfect, but a great place to start.

Question: Grok, can you make an MT4 indicator that will highlight the open, close, high and low of the 6am GMT candle every day?

Here's a clean and efficient MT4 custom indicator that will automatically highlight the **daily 6:00 AM GMT candle** (which is the first full candle after the typical Forex daily rollover).

This indicator draws:
- A rectangle covering the full High-Low range of the 6 AM GMT candle
- Horizontal lines for Open and Close prices
- Labels showing O, H, L, C values
- Works on any timeframe (even M1) and updates automatically each day

### Indicator Name: Daily_6AM_GMT_Candle_Highlighter.mq4

Code: Select all

#property copyright "Grok @ xAI - 2025"
#property link      "https://x.ai"
#property version   "1.00"
#property strict
#property indicator_chart_window

// Input parameters
input color   RectangleColor   = clrDarkOrange;   // Color of the high-low rectangle
input color   OpenCloseColor   = clrWhite;        // Color of Open/Close lines
input int     RectangleOpacity = 15;             // 0-255 (lower = more transparent)
input bool    ShowLabels       = true;            // Show O/H/L/C labels
input int     FontSize         = 9;

// Global variables
datetime lastBarDate = 0;

//+------------------------------------------------------------------+
int OnInit()
{
   IndicatorShortName("6 AM GMT Candle Highlighter");
   return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
   ObjectsDeleteAll(0, "6AM_");
}
//+------------------------------------------------------------------+
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 currentBarTime = time[rates_total-1];
   datetime currentDay     = currentBarTime - (currentBarTime % 86400); // Midnight GMT of today
   
   // We only need to recalculate once per day
   if(currentDay == lastBarDate) return(rates_total);
   lastBarDate = currentDay;
   
   // Clean previous objects
   ObjectsDeleteAll(0, "6AM_");
   
   // Find the 6 AM GMT candle
   datetime targetTime = currentDay + 6*3600;  // 6:00 AM GMT today
   
   int shift = iBarShift(NULL, 0, targetTime, true);
   if(shift == -1) return(rates_total); // Candle not formed yet (e.g., weekend)
   
   double o = Open[shift];
   double h = High[shift];
   double l = Low[shift];
   double c = Close[shift];
   datetime candleTime = Time[shift];
   datetime nextCandleTime = (iTime(NULL,0,shift-1) != 0) ? iTime(NULL,0,shift-1) : TimeCurrent()+PeriodSeconds();
   
   string namePrefix = "6AM_"+TimeToString(candleTime,TIME_DATE);
   
   // 1. High-Low Rectangle
   ObjectCreate(0, namePrefix+"_Rect", OBJ_RECTANGLE, 0, candleTime, h, nextCandleTime, l);
   ObjectSetInteger(0, namePrefix+"_Rect", OBJPROP_COLOR, RectangleColor);
   ObjectSetInteger(0, namePrefix+"_Rect", OBJPROP_BACK, true);
   ObjectSetInteger(0, namePrefix+"_Rect", OBJPROP_STYLE, STYLE_SOLID);
   ObjectSetInteger(0, namePrefix+"_Rect", OBJPROP_WIDTH, 1);
   ObjectSetInteger(0, namePrefix+"_Rect", OBJPROP_BACK_FILL, true);
   ObjectSetInteger(0, namePrefix+"_Rect", OBJPROP_TRANSPARENCY, 255-RectangleOpacity*255/100);
   
   // 2. Open Line
   ObjectCreate(0, namePrefix+"_Open", OBJ_HLINE, 0, 0, o);
   ObjectSetInteger(0, namePrefix+"_Open", OBJPROP_COLOR, OpenCloseColor);
   ObjectSetInteger(0, namePrefix+"_Open", OBJPROP_STYLE, STYLE_DOT);
   ObjectSetInteger(0, namePrefix+"_Open", OBJPROP_WIDTH, 1);
   
   // 3. Close Line
   ObjectCreate(0, namePrefix+"_Close", OBJ_HLINE, 0, 0, c);
   ObjectSetInteger(0, namePrefix+"_Close", OBJPROP_COLOR, OpenCloseColor);
   ObjectSetInteger(0, namePrefix+"_Close", OBJPROP_STYLE, STYLE_DOT);
   ObjectSetInteger(0, namePrefix+"_Close", OBJPROP_WIDTH, 1);
   
   // 4. Labels (optional)
   if(ShowLabels)
   {
      string labelText = StringFormat("6AM GMT\nO: %.5f\nH: %.5f\nL: %.5f\nC: %.5f", o,h,l,c);
      ObjectCreate(0, namePrefix+"_Label", OBJ_TEXT, 0, candleTime + (nextCandleTime-candleTime)/2, h*1.0005);
      ObjectSetString(0, namePrefix+"_Label", OBJPROP_TEXT, labelText);
      ObjectSetInteger(0, namePrefix+"_Label", OBJPROP_COLOR, clrYellow);
      ObjectSetInteger(0, namePrefix+"_Label", OBJPROP_FONTSIZE, FontSize);
      ObjectSetString(0, namePrefix+"_Label", OBJPROP_FONT, "Arial Bold");
      ObjectSetInteger(0, namePrefix+"_Label", OBJPROP_ANCHOR, ANCHOR_TOP);
   }
   
   ChartRedraw();
   return(rates_total);
}
### How to install:
1. Open MetaEditor (in MT4: Tools → MetaQuotes Language Editor)
2. File → New → Indicator → From template → Next → Name it `Daily_6AM_GMT_Candle_Highlighter`
3. Replace all code with the one above
4. Compile (F7) – no errors should appear
5. Restart MT4 or refresh the Navigator
6. Drag the indicator onto any chart

### Features:
- Works on any symbol and any timeframe
- Automatically finds the correct 6 AM GMT candle every day
- Skips weekends
- Very lightweight (only updates once per day)
- Customizable colors and transparency
wow! that sounds good-- I'll keep that in mind
thanks for your help


Re: MT4 Indicator requests and ideas

21774
hello mrtools,
requesting for ur help again please.
I downloaded this indicator from mql5 site.
I think it shows max drawdown based on closed candles. is it possible to make it like plotting info based on tick by tick? the reason I'm asking is because I had trades open with -100$ floating then once they closed all in profit the indicator is showing -65$ as max drawdown. doesnt show the actual drawdown.
also, please have a look if there are any alerts in it and if there are then please kindly remove them.

for some reason I coudnt attach the file itself directly so I had to compress it then it worked.

Re: MT4 Indicator requests and ideas

21775
CrystalG wrote: Sat Nov 22, 2025 3:32 am hello mrtools,
requesting for ur help again please.
I downloaded this indicator from mql5 site.
I think it shows max drawdown based on closed candles. is it possible to make it like plotting info based on tick by tick? the reason I'm asking is because I had trades open with -100$ floating then once they closed all in profit the indicator is showing -65$ as max drawdown. doesnt show the actual drawdown.
also, please have a look if there are any alerts in it and if there are then please kindly remove them.

for some reason I coudnt attach the file itself directly so I had to compress it then it worked.
Removed the alerts that I could find as far as the rest not completely sure maybe someone else knows an easy fix.

ps) for some reason getting an error with the attachment will upload once that is fixed.
These users thanked the author mrtools for the post:
CrystalG