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