73 lines
2.5 KiB
MQL5
73 lines
2.5 KiB
MQL5
//+------------------------------------------------------------------+
|
|
//| 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);
|
|
}
|
|
//+------------------------------------------------------------------+
|