Can anyone help me convert this MT4 indicator to MT5, Shortcut key to switch period
#property description "The indicator will change the timeframe of the chart with key press"
#property description "1 55- Daily, 2 54- 4Hr, 3 53- 1Hr, 4 52- 30Mins, 5 51- 15Mins, 6 50- 5Mins, 7 49-Mins, 48- CHARTFIX P 80- Hide "
#define KEY_DAILY 55
#define KEY_4HOUR 54
#define KEY_1HOUR 53
#define KEY_30MIN 52
#define KEY_15MIN 51
#define KEY_5MIN 50
#define KEY_1MIN 49
#define KEY_CHARTFIX 48
#define KEY_P 80
input bool showInfo=false;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| 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[])
{
if(showInfo==true)
{
ObjectCreate("Hotkey Obj1",OBJ_LABEL,0,0,0);
ObjectSetText("Hotkey Obj1",Symbol()+"-"+IntegerToString(Period())+" Min",12,"Calibri",DodgerBlue);
ObjectSet("Hotkey Obj1",OBJPROP_CORNER,0);
ObjectSet("Hotkey Obj1",OBJPROP_XDISTANCE,15);
ObjectSet("Hotkey Obj1",OBJPROP_YDISTANCE,10);
ObjectCreate("Hotkey Obj2",OBJ_LABEL,0,0,0);
ObjectSetText("Hotkey Obj2","Ask:"+DoubleToStr(Ask),8,"Verdana",Red);
ObjectSet("Hotkey Obj2",OBJPROP_CORNER,0);
ObjectSet("Hotkey Obj2",OBJPROP_XDISTANCE,15);
ObjectSet("Hotkey Obj2",OBJPROP_YDISTANCE,30);
ObjectCreate("Hotkey Obj3",OBJ_LABEL,0,0,0);
ObjectSetText("Hotkey Obj3","Bid:"+DoubleToStr(Bid),8,"Verdana",Green);
ObjectSet("Hotkey Obj3",OBJPROP_CORNER,0);
ObjectSet("Hotkey Obj3",OBJPROP_XDISTANCE,15);
ObjectSet("Hotkey Obj3",OBJPROP_YDISTANCE,40);
ObjectCreate("Hotkey Obj4",OBJ_LABEL,0,0,0);
ObjectSetText("Hotkey Obj4","Spread:"+DoubleToStr(NormalizeDouble((Ask-Bid),5)),8,"Verdana",Gray);
ObjectSet("Hotkey Obj4",OBJPROP_CORNER,0);
ObjectSet("Hotkey Obj4",OBJPROP_XDISTANCE,15);
ObjectSet("Hotkey Obj4",OBJPROP_YDISTANCE,50);
}
//--- return value of prev_calculated for next call
return(rates_total);
}
//+------------------------------------------------------------------+
//| ChartEvent function |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
const long &lparam,
const double &dparam,
const string &sparam)
{
//---
if(id==CHARTEVENT_KEYDOWN)
{
switch(int(lparam))
{
case KEY_DAILY:
ChartSetSymbolPeriod(0,NULL,1440);
break;
case KEY_4HOUR:
ChartSetSymbolPeriod(0,NULL,240);
break;
case KEY_1HOUR:
ChartSetSymbolPeriod(0,NULL,60);
break;
case KEY_30MIN:
ChartSetSymbolPeriod(0,NULL,30);
break;
case KEY_15MIN:
ChartSetSymbolPeriod(0,NULL,15);
break;
case KEY_5MIN:
ChartSetSymbolPeriod(0,NULL,5);
break;
case KEY_1MIN:
ChartSetSymbolPeriod(0,NULL,1);
break;
case KEY_CHARTFIX:
{
bool isFixed=ChartGetInteger(0,CHART_SCALEFIX,true);
if(!isFixed)
{
ChartSetInteger(0,CHART_SCALEFIX,true);
}
else
{
ChartSetInteger(0,CHART_SCALEFIX,false);
}
}
break;
case KEY_P:
{
bool isFixed=ChartGetInteger(0,CHART_SHOW_PRICE_SCALE,true);
if(!isFixed)
{
ChartSetInteger(0,CHART_SHOW_PRICE_SCALE,true);
}
else
{
ChartSetInteger(0,CHART_SHOW_PRICE_SCALE,false);
}
}
break;
}
ChartRedraw();
}
}
//+------------------------------------------------------------------+
int deinit()
{
ObjectsDeleteAll(0,"Hotkey",0,OBJ_LABEL);
return(0);
}
//+------------------------------------------------------------------+
#property description "The indicator will change the timeframe of the chart with key press"
#property description "1 55- Daily, 2 54- 4Hr, 3 53- 1Hr, 4 52- 30Mins, 5 51- 15Mins, 6 50- 5Mins, 7 49-Mins, 48- CHARTFIX P 80- Hide "
#define KEY_DAILY 55
#define KEY_4HOUR 54
#define KEY_1HOUR 53
#define KEY_30MIN 52
#define KEY_15MIN 51
#define KEY_5MIN 50
#define KEY_1MIN 49
#define KEY_CHARTFIX 48
#define KEY_P 80
input bool showInfo=false;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| 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[])
{
if(showInfo==true)
{
ObjectCreate("Hotkey Obj1",OBJ_LABEL,0,0,0);
ObjectSetText("Hotkey Obj1",Symbol()+"-"+IntegerToString(Period())+" Min",12,"Calibri",DodgerBlue);
ObjectSet("Hotkey Obj1",OBJPROP_CORNER,0);
ObjectSet("Hotkey Obj1",OBJPROP_XDISTANCE,15);
ObjectSet("Hotkey Obj1",OBJPROP_YDISTANCE,10);
ObjectCreate("Hotkey Obj2",OBJ_LABEL,0,0,0);
ObjectSetText("Hotkey Obj2","Ask:"+DoubleToStr(Ask),8,"Verdana",Red);
ObjectSet("Hotkey Obj2",OBJPROP_CORNER,0);
ObjectSet("Hotkey Obj2",OBJPROP_XDISTANCE,15);
ObjectSet("Hotkey Obj2",OBJPROP_YDISTANCE,30);
ObjectCreate("Hotkey Obj3",OBJ_LABEL,0,0,0);
ObjectSetText("Hotkey Obj3","Bid:"+DoubleToStr(Bid),8,"Verdana",Green);
ObjectSet("Hotkey Obj3",OBJPROP_CORNER,0);
ObjectSet("Hotkey Obj3",OBJPROP_XDISTANCE,15);
ObjectSet("Hotkey Obj3",OBJPROP_YDISTANCE,40);
ObjectCreate("Hotkey Obj4",OBJ_LABEL,0,0,0);
ObjectSetText("Hotkey Obj4","Spread:"+DoubleToStr(NormalizeDouble((Ask-Bid),5)),8,"Verdana",Gray);
ObjectSet("Hotkey Obj4",OBJPROP_CORNER,0);
ObjectSet("Hotkey Obj4",OBJPROP_XDISTANCE,15);
ObjectSet("Hotkey Obj4",OBJPROP_YDISTANCE,50);
}
//--- return value of prev_calculated for next call
return(rates_total);
}
//+------------------------------------------------------------------+
//| ChartEvent function |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
const long &lparam,
const double &dparam,
const string &sparam)
{
//---
if(id==CHARTEVENT_KEYDOWN)
{
switch(int(lparam))
{
case KEY_DAILY:
ChartSetSymbolPeriod(0,NULL,1440);
break;
case KEY_4HOUR:
ChartSetSymbolPeriod(0,NULL,240);
break;
case KEY_1HOUR:
ChartSetSymbolPeriod(0,NULL,60);
break;
case KEY_30MIN:
ChartSetSymbolPeriod(0,NULL,30);
break;
case KEY_15MIN:
ChartSetSymbolPeriod(0,NULL,15);
break;
case KEY_5MIN:
ChartSetSymbolPeriod(0,NULL,5);
break;
case KEY_1MIN:
ChartSetSymbolPeriod(0,NULL,1);
break;
case KEY_CHARTFIX:
{
bool isFixed=ChartGetInteger(0,CHART_SCALEFIX,true);
if(!isFixed)
{
ChartSetInteger(0,CHART_SCALEFIX,true);
}
else
{
ChartSetInteger(0,CHART_SCALEFIX,false);
}
}
break;
case KEY_P:
{
bool isFixed=ChartGetInteger(0,CHART_SHOW_PRICE_SCALE,true);
if(!isFixed)
{
ChartSetInteger(0,CHART_SHOW_PRICE_SCALE,true);
}
else
{
ChartSetInteger(0,CHART_SHOW_PRICE_SCALE,false);
}
}
break;
}
ChartRedraw();
}
}
//+------------------------------------------------------------------+
int deinit()
{
ObjectsDeleteAll(0,"Hotkey",0,OBJ_LABEL);
return(0);
}
//+------------------------------------------------------------------+
Attached File(s)
Identifying losers equals victory