All_Info_1.5

Author: Copyright © 2025, Drknn
0 Views
0 Downloads
0 Favorites
All_Info_1.5
//+------------------------------------------------------------------+
//|                                                 All_Info_1.5.mq4 |
//|                                          Copyright © 2025, Drknn |
//|                                                    drknn@mail.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2025, Drknn"
#property link      "drknn@mail.ru"
#property show_inputs
#property strict
extern int HowManyDays=21;// How Many Days
// количество дней для среднесуточного среднего движения валютной пары

/*
	ВНИМАНИЕ! Перед использованием скрипта нужно обновить график D1

	Добавить в скрипт:
	 - Рассчёт стоимости пункта при минимальном лоте
*/

//+------------------------------------------------------------------+
//|          Старт работы скрипта                                    |
//+------------------------------------------------------------------+
int start(){
  string    SMB=Symbol();
  string    Priznak;// Признак плавающего спреда
	if(SymbolInfoInteger(SMB,SYMBOL_SPREAD_FLOAT)){
		Priznak=Text("  (Плавающий)","  (Float)");
	}
	else{
		Priznak=Text("  (Фиксированный)","  (Fixed)");
	}
	double Laverage =  MarketInfo(SMB,MODE_TICKVALUE)*Bid / MarketInfo(SMB,MODE_MARGINREQUIRED) / MarketInfo(SMB,MODE_POINT);
	string NameScript="============ All_Info_1.5 ("+SMB+") ============";
	
  int Zalog=(int)MarketInfo(SMB,MODE_MARGINCALCMODE);//Способ расчета залоговых средств. 0 - Forex; 1 - CFD; 2 - Futures; 3 - CFD на индексы
  int PoSkolkoPunktov=0;
  string Type;
  if(Zalog==0){
    Type="Forex";
  }
  if(Zalog==1){
    Type="CFD";
  }
  if(Zalog==2){
    Type="Futures";//фьючерсы
  }
  if(Zalog==3){
    Type="CFD on Index";
  }
	double FreeMargin=MarketInfo(SMB,MODE_MARGINREQUIRED);
  PoSkolkoPunktov=MarketInfo(SMB,MODE_TICKSIZE)/Point;
	Alert(Text("Уровень заморозки отложенных ордеров = ","Freezing distance for pending orders = "),MarketInfo(SMB,MODE_FREEZELEVEL)," (pt)");
	Alert(Text("Время окончания торгов = ","Trade End Time = "),TimeToString(SymbolInfoInteger(SMB,SYMBOL_EXPIRATION_TIME),TIME_DATE|TIME_MINUTES));
	Alert(Text("Время начала торгов = ","Trade Start Time = "),TimeToString(SymbolInfoInteger(SMB,SYMBOL_START_TIME),TIME_DATE|TIME_MINUTES));
	Alert(Text("Миниальная цена сегодня = ","Today Min Price = "),MarketInfo(SMB,MODE_LOW)); 
  Alert(Text("Максимальная цена сегодня = ","Today Max Price = "),MarketInfo(SMB,MODE_HIGH));
  Alert(Text("Своп для Селл-ордеров = ","Swap For Sell = "),NormalizeDouble(MarketInfo(SMB,MODE_SWAPSHORT),2)," ($)");
  Alert(Text("Своп для Бай-ордеров = ","Swap for Buy = "),NormalizeDouble(MarketInfo(SMB,MODE_SWAPLONG),2)," ($)");
	Alert("TickSize = ",PoSkolkoPunktov," pt");
	Alert("Point = ",DoubleToString(Point(),5),"    Digits = ",(int)MarketInfo(SMB,MODE_DIGITS));
	Alert(Text("Спред = ","Spraed = "),(int)MarketInfo(SMB,MODE_SPREAD),Priznak);
	Alert("Min Level = ",(int)MarketInfo(SMB,MODE_STOPLEVEL)," pt");
  Alert("Lot Step = ",MarketInfo(SMB,MODE_LOTSTEP));
  Alert("Max Lot = ",MarketInfo(SMB,MODE_MAXLOT));
  Alert("Min Lot = ",MarketInfo(SMB,MODE_MINLOT));
	Alert(Text("Залог за 1 лот = ","Zalog for 1 Lot = "),NormalizeDouble(MarketInfo(SMB,MODE_MARGININIT),2)," ($)");
	Alert(Text("Контракт в базовой валюте = ","Contract in base currency = "),MarketInfo(SMB,MODE_LOTSIZE));
  Alert(Text("Размер залоговых средств для поддержки открытых ордеров в расчете на 1 лот = ","Amount of collateral to support open orders per 1 lot = "),NormalizeDouble(MarketInfo(SMB,MODE_MARGINMAINTENANCE),2)," ($)");
	Alert(Text("Свободная маржа для открытия 1 лота = ","Free Margin for open 1 Lot = "),NormalizeDouble(FreeMargin,2)," ($)");
	Alert(Text("Текущее кредитное плечо 1 : ","Leverage at this point in time 1 : "),NormalizeDouble(Laverage,0));
	Alert(Text("В среднем валюта ходит по ","On average, the currency moves at "),Srednestatistich(HowManyDays),Text(" пунктов в день"," pt. for 1 day"));
	Alert(Text("Тип инструмента - ","Tool Type - "),Type);
	Alert(NameScript);
  return(0);
}
//+------------------------------------------------------------------+
//|          Пользовательские подпрограммы                           |
//+------------------------------------------------------------------+

// ================ Srednestatistich(int PeriodSMB) ================================================
// функция возвращает число пунктов, которое делает валюта в среднем в день
//-------------
// входные параметры:
// int PeriodSMB - число дней, на которых вычисляется, сколько валюта проходит пунктов в день
int Srednestatistich(int PeriodSMB){
	int PunktovSegodnya=0,Srednee=0;
	for(int i=1; i<=PeriodSMB; i++){
		PunktovSegodnya=(iHigh(Symbol(),PERIOD_D1,i)-iLow(Symbol(),PERIOD_D1,i))/Point;
		if(i==1){
			Srednee=PunktovSegodnya;
		}
		else{
			Srednee=Srednee+PunktovSegodnya;
		}
	}
	Srednee=Srednee/PeriodSMB;
	NormalizeDouble(Srednee,0);
	return(Srednee);
}
// =================== Text ========================================================================
// Функция возвращает текст на выбраном языке терминала.
// Если терминал русскоязычный, то возвращается строка на русском. В противном случае на английском.
// -------------------------------------------------------------------------------------------------
string Text(string Russ,string Engl){
	if(TerminalInfoString(TERMINAL_LANGUAGE)=="Russian"){
		return(Russ);
	}
  else return(Engl);
}
// ========================== Leverage() ==========================================================
double Leverage(int PoSkPunkt){
	double Rez=0;
	Rez=PoSkPunkt*Bid/MarketInfo(Symbol(),MODE_MARGINREQUIRED)/Point();
	return(Rez);
}

//	Формула расчета текущего кредитного плеча:
//Laverage =  MarketInfo(SMB,MODE_TICKVALUE)*Bid / MarketInfo(SMB,MODE_MARGINREQUIRED) / MarketInfo(SMB,MODE_POINT);

Comments