forked from rosh/MQL5Book
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);
| |
}
| |
//+------------------------------------------------------------------+
|