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