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