//+------------------------------------------------------------------+
//|                                    PrintIndicatorsParameters.mq5 |
//|                                  Copyright 2026, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2026, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
	ulong StartMsCount = GetMicrosecondCount();
//---
	int total = ChartIndicatorsTotal(0,0);
	for(int i = 0; i < total; i++){
	PrintFormat("window = %d, indicator #%d, indicators total = %d",0,i,total);
	string name = ChartIndicatorName(0,0,i);
	int handle = ChartIndicatorGet(0,0,name);
//---
	MqlParam parameters[];
	ENUM_INDICATOR indicator_type;
	int params = IndicatorParameters(handle,indicator_type,parameters);
	string par_info = "short name = " + name + ", type = " + EnumToString(ENUM_INDICATOR(indicator_type)) +
	                  ", handle = " + string(handle) + ", params = " + string(params) + "\r\n";
//---
	for(int k = 0; k < params; k++)
	par_info += StringFormat("parameter %d: type = %s, long_value = %d, double_value = %G, string_value = %s\r\n",
									  k,
									  EnumToString((ENUM_DATATYPE)parameters[k].type),
									  parameters[k].integer_value,
									  parameters[k].double_value,
									  parameters[k].string_value);
	Print(par_info);}
	Print("Print Indicators Parameters finished in ",DoubleToString((GetMicrosecondCount() - StartMsCount)/1000.0,2)," milliseconds");
  }
//+------------------------------------------------------------------+
