MQL5Book/Indicators/p7/SubFolder/EmbeddedIndicator.mq5

74 lines
2.5 KiB
MQL5
Raw Permalink Normal View History

2025-05-30 16:09:41 +02:00
//+------------------------------------------------------------------+
//| EmbeddedIndicator.mq5 |
//| Copyright 2022, MetaQuotes Ltd. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property indicator_chart_window
#property indicator_buffers 0
#property indicator_plots 0
input int Reference = 0;
int handle = 0;
//+------------------------------------------------------------------+
//| Helper function to get relative location inside MQL5 folder |
//+------------------------------------------------------------------+
string GetMQL5Path()
{
static const string MQL5 = "\\MQL5\\";
static const int length = StringLen(MQL5) - 1;
static const string path = MQLInfoString(MQL_PROGRAM_PATH);
const int start = StringFind(path, MQL5);
if(start != -1)
{
return StringSubstr(path, start + length);
}
return path;
}
//+------------------------------------------------------------------+
//| Indicator initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
Print(Reference);
Print("Name: " + MQLInfoString(MQL_PROGRAM_NAME));
Print("Full path: " + MQLInfoString(MQL_PROGRAM_PATH));
const string location = GetMQL5Path();
Print("Location in MQL5:" + location);
if(Reference == 0)
{
handle = iCustom(_Symbol, _Period, location, 1);
if(handle == INVALID_HANDLE)
{
return INIT_FAILED;
}
}
Print("Success");
return INIT_SUCCEEDED;
}
//+------------------------------------------------------------------+
//| Indicator calculation function (dummy here) |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const int begin,
const double &price[])
{
return rates_total;
}
//+------------------------------------------------------------------+
//| Indicator finalization function |
//+------------------------------------------------------------------+
void OnDeinit(const int)
{
Print("Deinit ", Reference);
IndicatorRelease(handle);
}
//+------------------------------------------------------------------+