Article-12953-MQL5-SymbolIn.../Article-12953-MQL5-SymbolInfo-Functions.mqh
2026-03-17 21:16:34 +07:00

3092 Zeilen
215 KiB
MQL5

//+------------------------------------------------------------------+
//| Article-12953-MQL5-SymbolInfo-Functions.mqh |
//| Copyright 2026, MetaQuotes Ltd. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2026, MetaQuotes Ltd."
#property link "https://www.mql5.com"
//+------------------------------------------------------------------+
//| Принимает дату в мс, возвращает время в формате Date Time.Msc |
//+------------------------------------------------------------------+
string TimeMSC(const long time_msc)
{
return StringFormat("%s.%.3hu",string((datetime)time_msc / 1000),time_msc % 1000);
/* Пример вывода:
2023.07.13 09:31:58.177
*/
}
//+------------------------------------------------------------------+
//| Возвращает как строку признак того, |
//} что данные по символу идут с задержкой |
//+------------------------------------------------------------------+
string SymbolSubscriptionDelay(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Если символа symbol не существует - возвращаем текст ошибки
if(!SymbolInfoInteger(symbol,SYMBOL_EXIST))
return StringFormat("%s: Error. Symbol '%s' is not exist",__FUNCTION__,symbol);
//--- Если символ не выбран в окне MarketWatch - пробуем его выбрать
if(!SymbolInfoInteger(symbol,SYMBOL_SELECT))
{
//--- Если не удалось выбрать символ в окне MarketWatch - возвращаем текст ошибки
if(!SymbolSelect(symbol,true))
return StringFormat("%s: Failed to select '%s' symbol in MarketWatch. Error %lu",__FUNCTION__,symbol,GetLastError());
}
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Subscription Delay:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%-s",indent,"",w,header,(bool)SymbolInfoInteger(symbol,SYMBOL_SUBSCRIPTION_DELAY) ? "Yes" : "No");
/* Пример вывода:
Subscription Delay: No
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал признак того, |
//| что данные по символу идут с задержкой |
//+------------------------------------------------------------------+
void SymbolSubscriptionDelayPrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolSubscriptionDelay(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку сектор экономики, |
//| к которому относится символ |
//+------------------------------------------------------------------+
string SymbolSector(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Получаем значение сектора экономики
ENUM_SYMBOL_SECTOR symbol_sector=(ENUM_SYMBOL_SECTOR)SymbolInfoInteger(symbol,SYMBOL_SECTOR);
//--- "Вырезаем" из строки, полученной из enum, только наименование сектора
string sector=StringSubstr(EnumToString(symbol_sector),7);
//--- Преобразуем все полученные символы в нижний регистр и заменяем первую букву с маленькой на заглавную
if(sector.Lower())
sector.SetChar(0,ushort(sector.GetChar(0)-0x20));
//--- Заменяем в полученной строке все символы подчёркивания на символ пробела
StringReplace(sector,"_"," ");
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Sector:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%-s",indent,"",w,header,sector);
/* Пример вывода:
Sector: Currency
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал сектор экономики, к которому относится символ |
//+------------------------------------------------------------------+
void SymbolSectorPrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolSector(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку вид промышленности или отрасль экономики, |
//| к которому относится символ |
//+------------------------------------------------------------------+
string SymbolIndustry(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Получаем значение вида промышленности
ENUM_SYMBOL_INDUSTRY symbol_industry=(ENUM_SYMBOL_INDUSTRY)SymbolInfoInteger(symbol,SYMBOL_INDUSTRY);
//--- "Вырезаем" из строки, полученной из enum, только наименование вида промышленности
string industry=StringSubstr(EnumToString(symbol_industry),9);
//--- Преобразуем все полученные символы в нижний регистр и заменяем первую букву с маленькой на заглавную
if(industry.Lower())
industry.SetChar(0,ushort(industry.GetChar(0)-0x20));
//--- Заменяем в полученной строке все символы подчёркивания на символ пробела
StringReplace(industry,"_"," ");
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Industry:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%-s",indent,"",w,header,industry);
/* Пример вывода:
Industry: Undefined
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал вид промышленности или отрасль экономики, |
//| к которому относится символ |
//+------------------------------------------------------------------+
void SymbolIndustryPrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolIndustry(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку признак того, |
//| что символ является пользовательским |
//+------------------------------------------------------------------+
string SymbolCustom(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Custom symbol:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%-s",indent,"",w,header,(bool)SymbolInfoInteger(symbol,SYMBOL_CUSTOM) ? "Yes" : "No");
/* Пример вывода:
Custom symbol: No
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал признак того, |
//| что символ является пользовательским |
//+------------------------------------------------------------------+
void SymbolCustomPrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolCustom(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку цвет фона, которым подсвечивается |
//| символ в Market Watch |
//+------------------------------------------------------------------+
string SymbolBackgroundColor(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Background color:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Получаем цвет фона символа в Market Watch
color back_color=(color)SymbolInfoInteger(symbol,SYMBOL_BACKGROUND_COLOR);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
//--- Если для символа установлен цвет по умолчанию (0xFF000000), то возвращаем 'Default', иначе - его строковое описание
return StringFormat("%*s%-*s%-s",indent,"",w,header,back_color==0xFF000000 ? "Default" : ColorToString(back_color,true));
/* Пример вывода:
Background color: Default
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал цвет фона, которым подсвечивается |
//| символ в Market Watch |
//+------------------------------------------------------------------+
void SymbolBackgroundColorPrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolBackgroundColor(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку тип цены для построения баров |
//+------------------------------------------------------------------+
string SymbolChartMode(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Получаем тип цены для построения баров
ENUM_SYMBOL_CHART_MODE symbol_chart_mode=(ENUM_SYMBOL_CHART_MODE)SymbolInfoInteger(symbol,SYMBOL_CHART_MODE);
//--- "Вырезаем" из строки, полученной из enum, только наименование типа цены
string chart_mode=StringSubstr(EnumToString(symbol_chart_mode),18);
//--- Преобразуем все полученные символы в нижний регистр и заменяем первую букву с маленькой на заглавную
if(chart_mode.Lower())
chart_mode.SetChar(0,ushort(chart_mode.GetChar(0)-0x20));
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Chart mode:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%-s",indent,"",w,header,chart_mode);
/* Пример вывода:
Chart mode: Bid
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал тип цены для построения баров |
//+------------------------------------------------------------------+
void SymbolChartModePrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolChartMode(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку признак того, |
//| что символ с таким именем существует |
//+------------------------------------------------------------------+
string SymbolExists(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Exists:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%-s",indent,"",w,header,(bool)SymbolInfoInteger(symbol,SYMBOL_EXIST) ? "Yes" : "No");
/* Пример вывода:
Exists: Yes
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал признак того, |
//| что символ с таким именем существует |
//+------------------------------------------------------------------+
void SymbolExistsPrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolExists(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку признак того, |
//| что символ выбран в Market Watch |
//+------------------------------------------------------------------+
string SymbolSelected(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Selected:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%-s",indent,"",w,header,(bool)SymbolInfoInteger(symbol,SYMBOL_SELECT) ? "Yes" : "No");
/* Пример вывода:
Selected: Yes
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал признак того, что символ выбран в Market Watch |
//+------------------------------------------------------------------+
void SymbolSelectedPrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolSelected(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку признак того, |
//| что символ отображается в Market Watch |
//+------------------------------------------------------------------+
string SymbolVisible(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Visible:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%-s",indent,"",w,header,(bool)SymbolInfoInteger(symbol,SYMBOL_VISIBLE) ? "Yes" : "No");
/* Пример вывода:
Visible: Yes
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал признак того, |
//| что символ отображается в Market Watch |
//+------------------------------------------------------------------+
void SymbolVisiblePrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolVisible(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку количество сделок в текущей сессии |
//+------------------------------------------------------------------+
string SymbolSessionDeals(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Session deals:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%-llu",indent,"",w,header,SymbolInfoInteger(symbol,SYMBOL_SESSION_DEALS));
/* Пример вывода:
Session deals: 0
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал количество сделок в текущей сессии |
//+------------------------------------------------------------------+
void SymbolSessionDealsPrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolSessionDeals(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку общее число |
//| ордеров на покупку в текущий момент |
//+------------------------------------------------------------------+
string SymbolSessionBuyOrders(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Session Buy orders:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%-llu",indent,"",w,header,SymbolInfoInteger(symbol,SYMBOL_SESSION_BUY_ORDERS));
/* Пример вывода:
Session Buy orders: 0
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал общее число ордеров на покупку в текущий момент |
//+------------------------------------------------------------------+
void SymbolSessionBuyOrdersPrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolSessionBuyOrders(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку общее число |
//| ордеров на продажу в текущий момент |
//+------------------------------------------------------------------+
string SymbolSessionSellOrders(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Session Sell orders:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%-llu",indent,"",w,header,SymbolInfoInteger(symbol,SYMBOL_SESSION_BUY_ORDERS));
/* Пример вывода:
Session Sell orders: 0
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал общее число ордеров на продажу в текущий момент |
//+------------------------------------------------------------------+
void SymbolSessionSellOrdersPrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolSessionSellOrders(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку объем в последней сделке |
//+------------------------------------------------------------------+
string SymbolVolume(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Volume:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%-llu",indent,"",w,header,SymbolInfoInteger(symbol,SYMBOL_VOLUME));
/* Пример вывода:
Volume: 0
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал объем в последней сделке |
//+------------------------------------------------------------------+
void SymbolVolumePrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolVolume(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку максимальный объем за день |
//+------------------------------------------------------------------+
string SymbolVolumeHigh(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Volume high:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%-llu",indent,"",w,header,SymbolInfoInteger(symbol,SYMBOL_VOLUMEHIGH));
/* Пример вывода:
Volume high: 0
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал максимальный объем за день |
//+------------------------------------------------------------------+
void SymbolVolumeHighPrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolVolumeHigh(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку минимальный объем за день |
//+------------------------------------------------------------------+
string SymbolVolumeLow(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Volume low:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%-llu",indent,"",w,header,SymbolInfoInteger(symbol,SYMBOL_VOLUMELOW));
/* Пример вывода:
Volume low: 0
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал минимальный объем за день |
//+------------------------------------------------------------------+
void SymbolVolumeLowPrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolVolumeLow(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку время последней котировки |
//+------------------------------------------------------------------+
string SymbolTime(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Time:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%-s",indent,"",w,header,(string)(datetime)SymbolInfoInteger(symbol,SYMBOL_TIME));
/* Пример вывода:
Time: 2023.07.13 21:05:12
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал время последней котировки |
//+------------------------------------------------------------------+
void SymbolTimePrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolTime(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку время последней котировки в миллисекундах |
//+------------------------------------------------------------------+
string SymbolTimeMSC(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Time msc:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%-s",indent,"",w,header,TimeMSC(SymbolInfoInteger(symbol,SYMBOL_TIME_MSC)));
/* Пример вывода:
Time msc: 2023.07.13 21:09:24.327
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал время последней котировки в миллисекундах |
//+------------------------------------------------------------------+
void SymbolTimeMSCPrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolTimeMSC(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку количество знаков после запятой |
//+------------------------------------------------------------------+
string SymbolDigits(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Digits:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%-lu",indent,"",w,header,SymbolInfoInteger(symbol,SYMBOL_DIGITS));
/* Пример вывода:
Digits: 5
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал количество знаков после запятой |
//+------------------------------------------------------------------+
void SymbolDigitsPrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolDigits(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку размер спреда в пунктах |
//+------------------------------------------------------------------+
string SymbolSpread(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Spread:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%-lu",indent,"",w,header,SymbolInfoInteger(symbol,SYMBOL_SPREAD));
/* Пример вывода:
Spread: 7
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал размер спреда в пунктах |
//+------------------------------------------------------------------+
void SymbolSpreadPrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolSpread(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку признак плавающего спреда |
//+------------------------------------------------------------------+
string SymbolSpreadFloat(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Floating Spread:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%-s",indent,"",w,header,(bool)SymbolInfoInteger(symbol,SYMBOL_SPREAD_FLOAT) ? "Yes" : "No");
/* Пример вывода:
Spread float: Yes
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал признак плавающего спреда |
//+------------------------------------------------------------------+
void SymbolSpreadFloatPrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolSpreadFloat(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку максимальное количество |
//| показываемых заявок в стакане |
//+------------------------------------------------------------------+
string SymbolTicksBookDepth(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Ticks book depth:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%-lu",indent,"",w,header,SymbolInfoInteger(symbol,SYMBOL_TICKS_BOOKDEPTH));
/* Пример вывода:
Ticks book depth: 10
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал максимальное количество |
//| показываемых заявок в стакане |
//+------------------------------------------------------------------+
void SymbolTicksBookDepthPrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolTicksBookDepth(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку способ вычисления стоимости контракта |
//+------------------------------------------------------------------+
string SymbolTradeCalcMode(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Получаем значение способа вычисления стоимости контракта
ENUM_SYMBOL_CALC_MODE symbol_trade_calc_mode=(ENUM_SYMBOL_CALC_MODE)SymbolInfoInteger(symbol,SYMBOL_TRADE_CALC_MODE);
//--- "Вырезаем" из строки, полученной из enum, только наименование способа вычисления стоимости контракта
string trade_calc_mode=StringSubstr(EnumToString(symbol_trade_calc_mode),17);
//--- Преобразуем все полученные символы в нижний регистр и заменяем первую букву с маленькой на заглавную
if(trade_calc_mode.Lower())
trade_calc_mode.SetChar(0,ushort(trade_calc_mode.GetChar(0)-0x20));
//--- Заменяем в полученной строке все символы подчёркивания на символ пробела
StringReplace(trade_calc_mode,"_"," ");
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Trade calculation mode:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%-s",indent,"",w,header,trade_calc_mode);
/* Пример вывода:
Trade calculation mode: Forex
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал способ вычисления стоимости контракта |
//+------------------------------------------------------------------+
void SymbolTradeCalcModePrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolTradeCalcMode(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку тип исполнения ордеров |
//+------------------------------------------------------------------+
string SymbolTradeMode(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Получаем значение способа вычисления стоимости контракта
ENUM_SYMBOL_TRADE_MODE symbol_trade_mode=(ENUM_SYMBOL_TRADE_MODE)SymbolInfoInteger(symbol,SYMBOL_TRADE_MODE);
//--- "Вырезаем" из строки, полученной из enum, только наименование способа вычисления стоимости контракта
string trade_mode=StringSubstr(EnumToString(symbol_trade_mode),18);
//--- Преобразуем все полученные символы в нижний регистр и заменяем первую букву с маленькой на заглавную
if(trade_mode.Lower())
trade_mode.SetChar(0,ushort(trade_mode.GetChar(0)-0x20));
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Trade mode:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%-s",indent,"",w,header,trade_mode);
/* Пример вывода:
Trade mode: Full
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал тип исполнения ордеров |
//+------------------------------------------------------------------+
void SymbolTradeModePrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolTradeMode(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку дату начала торгов по инструменту |
//+------------------------------------------------------------------+
string SymbolStartTime(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Start time:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Получаем значение свойства и определяем его описание
long time=SymbolInfoInteger(symbol,SYMBOL_START_TIME);
string descr=(time==0 ? " (Not used)" : "");
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%-s%s",indent,"",w,header,(string)(datetime)time,descr);
/* Пример вывода:
Start time: 1970.01.01 00:00:00 (Not used)
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал дату начала торгов по инструменту |
//+------------------------------------------------------------------+
void SymbolSymbolStartTimePrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolStartTime(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку дату окончания торгов по инструменту |
//+------------------------------------------------------------------+
string SymbolExpirationTime(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Expiration time:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Получаем значение свойства и определяем его описание
long time=SymbolInfoInteger(symbol,SYMBOL_EXPIRATION_TIME);
string descr=(time==0 ? " (Not used)" : "");
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%-s%s",indent,"",w,header,(string)(datetime)time,descr);
/* Пример вывода:
Expiration time: 1970.01.01 00:00:00 (Not used)
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал дату окончания торгов по инструменту |
//+------------------------------------------------------------------+
void SymbolSymbolExpirationTimePrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolExpirationTime(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку минимальный отступ в пунктах |
//| от текущей цены закрытиядля установки Stop ордеров |
//+------------------------------------------------------------------+
string SymbolTradeStopsLevel(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Stops level:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Получаем значение свойства и определяем его описание
int stops_level=(int)SymbolInfoInteger(symbol,SYMBOL_TRADE_STOPS_LEVEL);
string descr=(stops_level==0 ? " (By Spread)" : "");
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%-lu%s",indent,"",w,header,stops_level,descr);
/* Пример вывода:
Stops level: 0 (By Spread)
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал минимальный отступ в пунктах от текущей |
//| цены закрытия для установки Stop ордеров |
//+------------------------------------------------------------------+
void SymbolTradeStopsLevelPrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolTradeStopsLevel(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку дистанцию заморозки |
//| торговых операций в пунктах |
//+------------------------------------------------------------------+
string SymbolTradeFreezeLevel(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Freeze level:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Получаем значение свойства и определяем его описание
int freeze_level=(int)SymbolInfoInteger(symbol,SYMBOL_TRADE_FREEZE_LEVEL);
string descr=(freeze_level==0 ? " (Not used)" : "");
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%-lu%s",indent,"",w,header,freeze_level,descr);
/* Пример вывода:
Freeze level: 0 (Not used)
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал дистанцию заморозки торговых операций в пунктах |
//+------------------------------------------------------------------+
void SymbolTradeFreezeLevelPrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolTradeFreezeLevel(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку режим заключения сделок |
//+------------------------------------------------------------------+
string SymbolTradeExeMode(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Получаем значение способа вычисления стоимости контракта
ENUM_SYMBOL_TRADE_EXECUTION symbol_trade_exemode=(ENUM_SYMBOL_TRADE_EXECUTION)SymbolInfoInteger(symbol,SYMBOL_TRADE_EXEMODE);
//--- "Вырезаем" из строки, полученной из enum, только наименование способа вычисления стоимости контракта
string trade_exemode=StringSubstr(EnumToString(symbol_trade_exemode),23);
//--- Преобразуем все полученные символы в нижний регистр и заменяем первую букву с маленькой на заглавную
if(trade_exemode.Lower())
trade_exemode.SetChar(0,ushort(trade_exemode.GetChar(0)-0x20));
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Trade Execution mode:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%-s",indent,"",w,header,trade_exemode);
/* Пример вывода:
Trade Execution mode: Instant
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал режим заключения сделок |
//+------------------------------------------------------------------+
void SymbolTradeExeModePrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolTradeExeMode(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку модель расчета свопа |
//+------------------------------------------------------------------+
string SymbolSwapMode(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Получаем значение модели расчета свопа
ENUM_SYMBOL_SWAP_MODE symbol_swap_mode=(ENUM_SYMBOL_SWAP_MODE)SymbolInfoInteger(symbol,SYMBOL_SWAP_MODE);
//--- "Вырезаем" из строки, полученной из enum, только модель расчета свопа
string swap_mode=StringSubstr(EnumToString(symbol_swap_mode),17);
//--- Преобразуем все полученные символы в нижний регистр и заменяем первую букву с маленькой на заглавную
if(swap_mode.Lower())
swap_mode.SetChar(0,ushort(swap_mode.GetChar(0)-0x20));
//--- Заменяем в полученной строке все символы подчёркивания на символ пробела
StringReplace(swap_mode,"_"," ");
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Swap mode:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%-s",indent,"",w,header,swap_mode);
/* Пример вывода:
Swap mode: Points
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал модель расчета свопа |
//+------------------------------------------------------------------+
void SymbolSwapModePrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolSwapMode(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку день недели для начисления тройного свопа |
//+------------------------------------------------------------------+
string SymbolSwapRollover3Days(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Получаем значение модели расчета свопа
ENUM_DAY_OF_WEEK symbol_swap_rollover3days=(ENUM_DAY_OF_WEEK)SymbolInfoInteger(symbol,SYMBOL_SWAP_ROLLOVER3DAYS);
//--- Переобразуем enum в строку с наименованием дня недели
string swap_rollover3days=EnumToString(symbol_swap_rollover3days);
//--- Преобразуем все полученные символы в нижний регистр и заменяем первую букву с маленькой на заглавную
if(swap_rollover3days.Lower())
swap_rollover3days.SetChar(0,ushort(swap_rollover3days.GetChar(0)-0x20));
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Swap Rollover 3 days:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%-s",indent,"",w,header,swap_rollover3days);
/* Пример вывода:
Swap Rollover 3 days: Wednesday
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал день недели для начисления тройного свопа |
//+------------------------------------------------------------------+
void SymbolSwapRollover3DaysPrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolSwapRollover3Days(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку режим расчета |
//| хеджированной маржи по наибольшей стороне |
//+------------------------------------------------------------------+
string SymbolMarginHedgedUseLeg(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Margin hedged use leg:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%-s",indent,"",w,header,(bool)SymbolInfoInteger(symbol,SYMBOL_MARGIN_HEDGED_USE_LEG) ? "Yes" : "No");
/* Пример вывода:
Margin hedged use leg: No
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал режим расчета хеджированной |
//| маржи по наибольшей стороне |
//+------------------------------------------------------------------+
void SymbolMarginHedgedUseLegPrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolMarginHedgedUseLeg(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку флаги разрешенных режимов истечения ордера |
//+------------------------------------------------------------------+
string SymbolExpirationMode(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Получаем режимы истечения ордера
int exp_mode=(int)SymbolInfoInteger(symbol,SYMBOL_EXPIRATION_MODE);
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Expiration mode:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Разбираем флаги режимов на составляющие
string flags="";
if((exp_mode&SYMBOL_EXPIRATION_GTC)==SYMBOL_EXPIRATION_GTC)
flags+=(flags.Length()>0 ? "|" : "")+"GTC";
if((exp_mode&SYMBOL_EXPIRATION_DAY)==SYMBOL_EXPIRATION_DAY)
flags+=(flags.Length()>0 ? "|" : "")+"DAY";
if((exp_mode&SYMBOL_EXPIRATION_SPECIFIED)==SYMBOL_EXPIRATION_SPECIFIED)
flags+=(flags.Length()>0 ? "|" : "")+"SPECIFIED";
if((exp_mode&SYMBOL_EXPIRATION_SPECIFIED_DAY)==SYMBOL_EXPIRATION_SPECIFIED_DAY)
flags+=(flags.Length()>0 ? "|" : "")+"SPECIFIED_DAY";
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%-s",indent,"",w,header,flags);
/* Пример вывода:
Expiration mode: GTC|DAY|SPECIFIED
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал флаги разрешенных режимов истечения ордера |
//+------------------------------------------------------------------+
void SymbolExpirationModePrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolExpirationMode(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку флаги разрешенных режимов заливки ордера |
//+------------------------------------------------------------------+
string SymbolFillingMode(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Получаем режимы заливки ордера
int fill_mode=(int)SymbolInfoInteger(symbol,SYMBOL_FILLING_MODE);
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Filling mode:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Разбираем флаги режимов на составляющие
string flags="";
if((fill_mode&ORDER_FILLING_FOK)==ORDER_FILLING_FOK)
flags+=(flags.Length()>0 ? "|" : "")+"FOK";
if((fill_mode&ORDER_FILLING_IOC)==ORDER_FILLING_IOC)
flags+=(flags.Length()>0 ? "|" : "")+"IOC";
if((fill_mode&ORDER_FILLING_BOC)==ORDER_FILLING_BOC)
flags+=(flags.Length()>0 ? "|" : "")+"BOC";
if(SymbolInfoInteger(symbol,SYMBOL_TRADE_EXEMODE)!=SYMBOL_TRADE_EXECUTION_MARKET)
flags+=(flags.Length()>0 ? "|" : "")+"RETURN";
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%-s",indent,"",w,header,flags);
/* Пример вывода:
Filling mode: FOK|IOC|RETURN
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал флаги разрешенных режимов заливки ордера |
//+------------------------------------------------------------------+
void SymbolFillingModePrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolFillingMode(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку флаги разрешенных типов ордера |
//+------------------------------------------------------------------+
string SymbolOrderMode(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Получаем типы ордера
int order_mode=(int)SymbolInfoInteger(symbol,SYMBOL_ORDER_MODE);
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Order mode:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Разбираем флаги типов на составляющие
string flags="";
if((order_mode&SYMBOL_ORDER_MARKET)==SYMBOL_ORDER_MARKET)
flags+=(flags.Length()>0 ? "|" : "")+"MARKET";
if((order_mode&SYMBOL_ORDER_LIMIT)==SYMBOL_ORDER_LIMIT)
flags+=(flags.Length()>0 ? "|" : "")+"LIMIT";
if((order_mode&SYMBOL_ORDER_STOP)==SYMBOL_ORDER_STOP)
flags+=(flags.Length()>0 ? "|" : "")+"STOP";
if((order_mode&SYMBOL_ORDER_STOP_LIMIT )==SYMBOL_ORDER_STOP_LIMIT )
flags+=(flags.Length()>0 ? "|" : "")+"STOP_LIMIT";
if((order_mode&SYMBOL_ORDER_SL)==SYMBOL_ORDER_SL)
flags+=(flags.Length()>0 ? "|" : "")+"SL";
if((order_mode&SYMBOL_ORDER_TP)==SYMBOL_ORDER_TP)
flags+=(flags.Length()>0 ? "|" : "")+"TP";
if((order_mode&SYMBOL_ORDER_CLOSEBY)==SYMBOL_ORDER_CLOSEBY)
flags+=(flags.Length()>0 ? "|" : "")+"CLOSEBY";
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%-s",indent,"",w,header,flags);
/* Пример вывода:
Order mode: MARKET|LIMIT|STOP|STOP_LIMIT|SL|TP|CLOSEBY
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал флаги разрешенных типов ордера |
//+------------------------------------------------------------------+
void SymbolOrderModePrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolOrderMode(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку срок действия StopLoss и TakeProfit ордеров|
//+------------------------------------------------------------------+
string SymbolOrderGTCMode(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Получаем значение срока действия отложенных ордеров, StopLoss и TakeProfit ордеров
ENUM_SYMBOL_ORDER_GTC_MODE symbol_order_gtc_mode=(ENUM_SYMBOL_ORDER_GTC_MODE)SymbolInfoInteger(symbol,SYMBOL_ORDER_GTC_MODE);
//--- Устанавливаем описание срока действия как 'GTC'
string gtc_mode="GTC";
//--- Если срок действия не GTC
if(symbol_order_gtc_mode!=SYMBOL_ORDERS_GTC)
{
//--- "Вырезаем" из строки, полученной из enum, только описание срока действия отложенных ордеров, StopLoss и TakeProfit ордеров
StringSubstr(EnumToString(symbol_order_gtc_mode),14);
//--- Преобразуем все полученные символы в нижний регистр и заменяем первую букву с маленькой на заглавную
if(gtc_mode.Lower())
gtc_mode.SetChar(0,ushort(gtc_mode.GetChar(0)-0x20));
//--- Заменяем в полученной строке все символы подчёркивания на символ пробела
StringReplace(gtc_mode,"_"," ");
}
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Order GTC mode:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%-s",indent,"",w,header,gtc_mode);
/* Пример вывода:
Order GTC mode: GTC
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал срок действия StopLoss и TakeProfit ордеров |
//+------------------------------------------------------------------+
void SymbolOrderGTCModePrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolOrderGTCMode(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку тип опциона |
//+------------------------------------------------------------------+
string SymbolOptionMode(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Получаем значение модели типа опциона
ENUM_SYMBOL_OPTION_MODE symbol_option_mode=(ENUM_SYMBOL_OPTION_MODE)SymbolInfoInteger(symbol,SYMBOL_OPTION_MODE);
//--- "Вырезаем" из строки, полученной из enum, только тип опциона
string option_mode=StringSubstr(EnumToString(symbol_option_mode),19);
//--- Преобразуем все полученные символы в нижний регистр и заменяем первую букву с маленькой на заглавную
if(option_mode.Lower())
option_mode.SetChar(0,ushort(option_mode.GetChar(0)-0x20));
//--- Заменяем в полученной строке все символы подчёркивания на символ пробела
StringReplace(option_mode,"_"," ");
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Option mode:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%-s",indent,"",w,header,option_mode);
/* Пример вывода:
Option mode: European
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал тип опциона |
//+------------------------------------------------------------------+
void SymbolOptionModePrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolOptionMode(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку право опциона |
//+------------------------------------------------------------------+
string SymbolOptionRight(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Получаем значение права опциона
ENUM_SYMBOL_OPTION_RIGHT symbol_option_right=(ENUM_SYMBOL_OPTION_RIGHT)SymbolInfoInteger(symbol,SYMBOL_OPTION_RIGHT);
//--- "Вырезаем" из строки, полученной из enum, только право опциона
string option_right=StringSubstr(EnumToString(symbol_option_right),20);
//--- Преобразуем все полученные символы в нижний регистр и заменяем первую букву с маленькой на заглавную
if(option_right.Lower())
option_right.SetChar(0,ushort(option_right.GetChar(0)-0x20));
//--- Заменяем в полученной строке все символы подчёркивания на символ пробела
StringReplace(option_right,"_"," ");
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Option right:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%-s",indent,"",w,header,option_right);
/* Пример вывода:
Option right: Call
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал право опциона |
//+------------------------------------------------------------------+
void SymbolOptionRightPrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolOptionRight(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку цену Bid |
//+------------------------------------------------------------------+
string SymbolBid(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Bid:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Получаем количество знаков после запятой
int dg=(int)SymbolInfoInteger(symbol,SYMBOL_DIGITS);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%-.*f",indent,"",w,header,dg,SymbolInfoDouble(symbol,SYMBOL_BID));
/* Пример вывода:
Bid: 1.31017
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал цену Bid |
//+------------------------------------------------------------------+
void SymbolBidPrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolBid(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку максимальный Bid за день |
//+------------------------------------------------------------------+
string SymbolBidHigh(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Bid High:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Получаем количество знаков после запятой
int dg=(int)SymbolInfoInteger(symbol,SYMBOL_DIGITS);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%-.*f",indent,"",w,header,dg,SymbolInfoDouble(symbol,SYMBOL_BIDHIGH));
/* Пример вывода:
Bid High: 1.31422
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал максимальный Bid за день |
//+------------------------------------------------------------------+
void SymbolBidHighPrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolBidHigh(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку минимальный Bid за день |
//+------------------------------------------------------------------+
string SymbolBidLow(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Bid Low:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Получаем количество знаков после запятой
int dg=(int)SymbolInfoInteger(symbol,SYMBOL_DIGITS);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%-.*f",indent,"",w,header,dg,SymbolInfoDouble(symbol,SYMBOL_BIDLOW));
/* Пример вывода:
Bid Low: 1.30934
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал минимальный Bid за день |
//+------------------------------------------------------------------+
void SymbolBidLowPrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolBidLow(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку цену Ask |
//+------------------------------------------------------------------+
string SymbolAsk(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Ask:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Получаем количество знаков после запятой
int dg=(int)SymbolInfoInteger(symbol,SYMBOL_DIGITS);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%-.*f",indent,"",w,header,dg,SymbolInfoDouble(symbol,SYMBOL_ASK));
/* Пример вывода:
Ask: 1.31060
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал цену Ask |
//+------------------------------------------------------------------+
void SymbolAskPrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolAsk(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку максимальный Ask за день |
//+------------------------------------------------------------------+
string SymbolAskHigh(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Ask High:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Получаем количество знаков после запятой
int dg=(int)SymbolInfoInteger(symbol,SYMBOL_DIGITS);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%-.*f",indent,"",w,header,dg,SymbolInfoDouble(symbol,SYMBOL_ASKHIGH));
/* Пример вывода:
Ask High: 1.31427
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал максимальный Ask за день |
//+------------------------------------------------------------------+
void SymbolAskHighPrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolAskHigh(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку минимальный Ask за день |
//+------------------------------------------------------------------+
string SymbolAskLow(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Ask Low:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Получаем количество знаков после запятой
int dg=(int)SymbolInfoInteger(symbol,SYMBOL_DIGITS);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%-.*f",indent,"",w,header,dg,SymbolInfoDouble(symbol,SYMBOL_ASKLOW));
/* Пример вывода:
Ask Low: 1.30938
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал минимальный Ask за день |
//+------------------------------------------------------------------+
void SymbolAskLowPrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolAskLow(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку цену Last |
//+------------------------------------------------------------------+
string SymbolLast(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Last:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Получаем количество знаков после запятой
int dg=(int)SymbolInfoInteger(symbol,SYMBOL_DIGITS);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%-.*f",indent,"",w,header,dg,SymbolInfoDouble(symbol,SYMBOL_LAST));
/* Пример вывода:
Last: 0.00000
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал цену Last |
//+------------------------------------------------------------------+
void SymbolLastPrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolLast(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку максимальный Last за день |
//+------------------------------------------------------------------+
string SymbolLastHigh(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Last High:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Получаем количество знаков после запятой
int dg=(int)SymbolInfoInteger(symbol,SYMBOL_DIGITS);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%-.*f",indent,"",w,header,dg,SymbolInfoDouble(symbol,SYMBOL_LASTHIGH));
/* Пример вывода:
Last High: 0.00000
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал максимальный Last за день |
//+------------------------------------------------------------------+
void SymbolLastHighPrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolLastHigh(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку минимальный Last за день |
//+------------------------------------------------------------------+
string SymbolLastLow(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Last Low:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Получаем количество знаков после запятой
int dg=(int)SymbolInfoInteger(symbol,SYMBOL_DIGITS);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%-.*f",indent,"",w,header,dg,SymbolInfoDouble(symbol,SYMBOL_LASTLOW));
/* Пример вывода:
Last Low: 0.00000
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал минимальный Last за день |
//+------------------------------------------------------------------+
void SymbolLastLowPrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolLastLow(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку объем последней совершенной сделки |
//+------------------------------------------------------------------+
string SymbolVolumeReal(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Volume real:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%-.2f",indent,"",w,header,SymbolInfoDouble(symbol,SYMBOL_VOLUME_REAL));
/* Пример вывода:
Volume real: 0.00
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал объем последней совершенной сделки |
//+------------------------------------------------------------------+
void SymbolVolumeRealPrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolVolumeReal(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку максимальный объем за день |
//+------------------------------------------------------------------+
string SymbolVolumeHighReal(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Volume High real:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%-.2f",indent,"",w,header,SymbolInfoDouble(symbol,SYMBOL_VOLUMEHIGH_REAL));
/* Пример вывода:
Volume High real: 0.00
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал максимальный объем за день |
//+------------------------------------------------------------------+
void SymbolVolumeHighRealPrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolVolumeHighReal(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку минимальный объем за день |
//+------------------------------------------------------------------+
string SymbolVolumeLowReal(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Volume Low real:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%-.2f",indent,"",w,header,SymbolInfoDouble(symbol,SYMBOL_VOLUMELOW_REAL));
/* Пример вывода:
Volume Low real: 0.00
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал минимальный объем за день |
//+------------------------------------------------------------------+
void SymbolVolumeLowRealPrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolVolumeLowReal(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку цену исполнения опциона |
//+------------------------------------------------------------------+
string SymbolOptionStrike(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Option strike:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Получаем количество знаков после запятой
int dg=(int)SymbolInfoInteger(symbol,SYMBOL_DIGITS);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%-.*f",indent,"",w,header,dg,SymbolInfoDouble(symbol,SYMBOL_OPTION_STRIKE));
/* Пример вывода:
Option strike: 0.00000
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал цену исполнения опциона |
//+------------------------------------------------------------------+
void SymbolOptionStrikePrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolOptionStrike(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку значение одного пункта |
//+------------------------------------------------------------------+
string SymbolPoint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Point:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Получаем количество знаков после запятой
int dg=(int)SymbolInfoInteger(symbol,SYMBOL_DIGITS);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%-.*f",indent,"",w,header,dg,SymbolInfoDouble(symbol,SYMBOL_POINT));
/* Пример вывода:
Point: 0.00001
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал значение одного пункта |
//+------------------------------------------------------------------+
void SymbolPointPrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolPoint(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку стоимость тика |
//+------------------------------------------------------------------+
string SymbolTradeTickValue(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Tick value:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Получаем количество знаков после запятой
int dg=(int)SymbolInfoInteger(symbol,SYMBOL_DIGITS);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%-.*f",indent,"",w,header,dg,SymbolInfoDouble(symbol,SYMBOL_TRADE_TICK_VALUE));
/* Пример вывода:
Tick value: 1.00000
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал стоимость тика |
//+------------------------------------------------------------------+
void SymbolTradeTickValuePrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolTradeTickValue(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку рассчитанную стоимость тика |
//| для прибыльной позиции |
//+------------------------------------------------------------------+
string SymbolTradeTickValueProfit(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Tick value profit:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Получаем количество знаков после запятой
int dg=(int)SymbolInfoInteger(symbol,SYMBOL_DIGITS);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%-.*f",indent,"",w,header,dg,SymbolInfoDouble(symbol,SYMBOL_TRADE_TICK_VALUE_PROFIT));
/* Пример вывода:
Tick value profit: 1.00000
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал рассчитанную стоимость тика |
//| для прибыльной позиции |
//+------------------------------------------------------------------+
void SymbolTradeTickValueProfitPrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolTradeTickValueProfit(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку рассчитанную стоимость тика |
//| для убыточной позиции |
//+------------------------------------------------------------------+
string SymbolTradeTickValueLoss(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Tick value loss:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Получаем количество знаков после запятой
int dg=(int)SymbolInfoInteger(symbol,SYMBOL_DIGITS);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%-.*f",indent,"",w,header,dg,SymbolInfoDouble(symbol,SYMBOL_TRADE_TICK_VALUE_LOSS));
/* Пример вывода:
Tick value loss: 1.00000
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал рассчитанную стоимость тика |
//| для убыточной позиции |
//+------------------------------------------------------------------+
void SymbolTradeTickValueLossPrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolTradeTickValueLoss(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку минимальное изменение цены |
//+------------------------------------------------------------------+
string SymbolTradeTickSize(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Tick size:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Получаем количество знаков после запятой
int dg=(int)SymbolInfoInteger(symbol,SYMBOL_DIGITS);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%-.*f",indent,"",w,header,dg,SymbolInfoDouble(symbol,SYMBOL_TRADE_TICK_SIZE));
/* Пример вывода:
Tick size: 0.00001
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал минимальное изменение цены |
//+------------------------------------------------------------------+
void SymbolTradeTickSizePrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolTradeTickSize(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку размер торгового контракта |
//+------------------------------------------------------------------+
string SymbolTradeContractSize(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Contract size:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%-.2f %s",indent,"",w,header,SymbolInfoDouble(symbol,SYMBOL_TRADE_CONTRACT_SIZE),SymbolInfoString(symbol,SYMBOL_CURRENCY_BASE));
/* Пример вывода:
Contract size: 100000.00 GBP
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал размер торгового контракта |
//+------------------------------------------------------------------+
void SymbolTradeContractSizePrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolTradeContractSize(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку накопленный купонный доход |
//+------------------------------------------------------------------+
string SymbolTradeAccruedInterest(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Accrued interest:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%-.2f",indent,"",w,header,SymbolInfoDouble(symbol,SYMBOL_TRADE_ACCRUED_INTEREST));
/* Пример вывода:
Accrued interest: 0.00
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал накопленный купонный доход |
//+------------------------------------------------------------------+
void SymbolTradeAccruedInterestPrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolTradeAccruedInterest(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку номинальную стоимость |
//+------------------------------------------------------------------+
string SymbolTradeFaceValue(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Face value:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%-.2f",indent,"",w,header,SymbolInfoDouble(symbol,SYMBOL_TRADE_FACE_VALUE));
/* Пример вывода:
Face value: 0.00
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал номинальную стоимость |
//+------------------------------------------------------------------+
void SymbolTradeFaceValuePrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolTradeFaceValue(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку коэффициент ликвидности |
//+------------------------------------------------------------------+
string SymbolTradeLiquidityRate(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Liquidity rate:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%-.2f",indent,"",w,header,SymbolInfoDouble(symbol,SYMBOL_TRADE_LIQUIDITY_RATE));
/* Пример вывода:
Liquidity rate: 0.00
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал коэффициент ликвидности |
//+------------------------------------------------------------------+
void SymbolTradeLiquidityRatePrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolTradeLiquidityRate(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку минимальный объем |
//+------------------------------------------------------------------+
string SymbolVolumeMin(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Volume min:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Получаем количество знаков после запятой в значении лота
int dg=(int)ceil(fabs(log10(SymbolInfoDouble(symbol,SYMBOL_VOLUME_STEP))));
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%-.*f",indent,"",w,header,dg,SymbolInfoDouble(symbol,SYMBOL_VOLUME_MIN));
/* Пример вывода:
Volume min: 0.01
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал минимальный объем |
//+------------------------------------------------------------------+
void SymbolVolumeMinPrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolVolumeMin(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку максимальный объем |
//+------------------------------------------------------------------+
string SymbolVolumeMax(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Volume max:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Получаем количество знаков после запятой в значении лота
int dg=(int)ceil(fabs(log10(SymbolInfoDouble(symbol,SYMBOL_VOLUME_STEP))));
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%-.*f",indent,"",w,header,dg,SymbolInfoDouble(symbol,SYMBOL_VOLUME_MAX));
/* Пример вывода:
Volume max: 500.00
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал максимальный объем |
//+------------------------------------------------------------------+
void SymbolVolumeMaxPrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolVolumeMax(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку минимальный шаг изменения объема |
//+------------------------------------------------------------------+
string SymbolVolumeStep(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Volume step:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Получаем количество знаков после запятой в значении лота
int dg=(int)ceil(fabs(log10(SymbolInfoDouble(symbol,SYMBOL_VOLUME_STEP))));
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%-.*f",indent,"",w,header,dg,SymbolInfoDouble(symbol,SYMBOL_VOLUME_STEP));
/* Пример вывода:
Volume step: 0.01
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал минимальный шаг изменения объема |
//+------------------------------------------------------------------+
void SymbolVolumeStepPrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolVolumeStep(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку максимально допустимый для символа |
//| совокупный объем открытой позиции и отложенных ордеров |
//+------------------------------------------------------------------+
string SymbolVolumeLimit(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Volume limit:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Получаем количество знаков после запятой в значении лота
int dg=(int)ceil(fabs(log10(SymbolInfoDouble(symbol,SYMBOL_VOLUME_STEP))));
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%-.*f",indent,"",w,header,dg,SymbolInfoDouble(symbol,SYMBOL_VOLUME_LIMIT));
/* Пример вывода:
Volume limit: 0.00
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал максимально допустимый для символа |
//| совокупный объем открытой позиции и отложенных ордеров |
//+------------------------------------------------------------------+
void SymbolVolumeLimitPrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolVolumeLimit(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку значение свопа в покупку |
//+------------------------------------------------------------------+
string SymbolSwapLong(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Swap long:";
uint w=(header_width==0 ? header.Length()+1 : header_width-1);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%- .2f",indent,"",w,header,SymbolInfoDouble(symbol,SYMBOL_SWAP_LONG));
/* Пример вывода:
Swap long: -0.20
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал значение свопа в покупку |
//+------------------------------------------------------------------+
void SymbolSwapLongPrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolSwapLong(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку значение свопа в продажу |
//+------------------------------------------------------------------+
string SymbolSwapShort(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Swap short:";
uint w=(header_width==0 ? header.Length()+1 : header_width-1);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%- .2f",indent,"",w,header,SymbolInfoDouble(symbol,SYMBOL_SWAP_SHORT));
/* Пример вывода:
Swap short: -2.20
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал значение свопа в продажу |
//+------------------------------------------------------------------+
void SymbolSwapShortPrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolSwapShort(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку коэффициент начисления свопов |
//| при переносе позиции с воскресения на понедельник |
//+------------------------------------------------------------------+
string SymbolSwapSunday(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Swap sunday:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Получаем коэффициент и определяем строку его описания
double swap_coeff=SymbolInfoDouble(symbol,SYMBOL_SWAP_SUNDAY);
string coeff_descr=(swap_coeff==1 ? "single swap" : swap_coeff==3 ? "triple swap" : "no swap is charged");
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%.0f (%s)",indent,"",w,header,swap_coeff,coeff_descr);
/* Пример вывода:
Swap sunday: 0 (no swap is charged)
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал коэффициент начисления свопов |
//| при переносе позиции с воскресения на понедельник |
//+------------------------------------------------------------------+
void SymbolSwapSundayPrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolSwapSunday(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку коэффициент начисления свопов |
//| при переносе позиции с понедельника на вторник |
//+------------------------------------------------------------------+
string SymbolSwapMonday(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Swap monday:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Получаем коэффициент и определяем строку его описания
double swap_coeff=SymbolInfoDouble(symbol,SYMBOL_SWAP_MONDAY);
string coeff_descr=(swap_coeff==1 ? "single swap" : swap_coeff==3 ? "triple swap" : "no swap is charged");
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%.0f (%s)",indent,"",w,header,swap_coeff,coeff_descr);
/* Пример вывода:
Swap monday: 1 (single swap)
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал коэффициент начисления свопов |
//| при переносе позиции с понедельника на вторник |
//+------------------------------------------------------------------+
void SymbolSwapMondayPrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolSwapMonday(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку коэффициент начисления свопов |
//| при переносе позиции со вторника на среду |
//+------------------------------------------------------------------+
string SymbolSwapTuesday(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Swap Tuesday:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Получаем коэффициент и определяем строку его описания
double swap_coeff=SymbolInfoDouble(symbol,SYMBOL_SWAP_TUESDAY);
string coeff_descr=(swap_coeff==1 ? "single swap" : swap_coeff==3 ? "triple swap" : "no swap is charged");
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%.0f (%s)",indent,"",w,header,swap_coeff,coeff_descr);
/* Пример вывода:
Swap Tuesday: 1 (single swap)
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал коэффициент начисления свопов |
//| при переносе позиции со вторника на среду |
//+------------------------------------------------------------------+
void SymbolSwapTuesdayPrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolSwapTuesday(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку коэффициент начисления свопов |
//| при переносе позиции со среды на четверг |
//+------------------------------------------------------------------+
string SymbolSwapWednesday(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Swap Wednesday:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Получаем коэффициент и определяем строку его описания
double swap_coeff=SymbolInfoDouble(symbol,SYMBOL_SWAP_WEDNESDAY);
string coeff_descr=(swap_coeff==1 ? "single swap" : swap_coeff==3 ? "triple swap" : "no swap is charged");
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%.0f (%s)",indent,"",w,header,swap_coeff,coeff_descr);
/* Пример вывода:
Swap Wednesday: 3 (triple swap)
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал коэффициент начисления свопов |
//| при переносе позиции со среды на четверг |
//+------------------------------------------------------------------+
void SymbolSwapWednesdayPrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolSwapWednesday(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку коэффициент начисления свопов |
//| при переносе позиции с четверга на пятницу |
//+------------------------------------------------------------------+
string SymbolSwapThursday(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Swap Thursday:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Получаем коэффициент и определяем строку его описания
double swap_coeff=SymbolInfoDouble(symbol,SYMBOL_SWAP_THURSDAY);
string coeff_descr=(swap_coeff==1 ? "single swap" : swap_coeff==3 ? "triple swap" : "no swap is charged");
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%.0f (%s)",indent,"",w,header,swap_coeff,coeff_descr);
/* Пример вывода:
Swap Thursday: 1 (single swap)
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал коэффициент начисления свопов |
//| при переносе позиции с четверга на пятницу |
//+------------------------------------------------------------------+
void SymbolSwapThursdayPrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolSwapThursday(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку коэффициент начисления свопов |
//| при переносе позиции с пятницы на субботу |
//+------------------------------------------------------------------+
string SymbolSwapFriday(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Swap Friday:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Получаем коэффициент и определяем строку его описания
double swap_coeff=SymbolInfoDouble(symbol,SYMBOL_SWAP_FRIDAY);
string coeff_descr=(swap_coeff==1 ? "single swap" : swap_coeff==3 ? "triple swap" : "no swap is charged");
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%.0f (%s)",indent,"",w,header,swap_coeff,coeff_descr);
/* Пример вывода:
Swap Friday: 1 (single swap)
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал коэффициент начисления свопов |
//| при переносе позиции с пятницы на субботу |
//+------------------------------------------------------------------+
void SymbolSwapFridayPrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolSwapFriday(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку коэффициент начисления свопов |
//| при переносе позиции с субботы на воскресенье |
//+------------------------------------------------------------------+
string SymbolSwapSaturday(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Swap Saturday:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Получаем коэффициент и определяем строку его описания
double swap_coeff=SymbolInfoDouble(symbol,SYMBOL_SWAP_SATURDAY);
string coeff_descr=(swap_coeff==1 ? "single swap" : swap_coeff==3 ? "triple swap" : "no swap is charged");
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%.0f (%s)",indent,"",w,header,swap_coeff,coeff_descr);
/* Пример вывода:
Swap Saturday: 0 (no swap is charged)
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал коэффициент начисления свопов |
//| при переносе позиции с субботы на воскресенье |
//+------------------------------------------------------------------+
void SymbolSwapSaturdayPrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolSwapSaturday(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку коэффициент начисления свопов |
//| по указанному дню недели |
//+------------------------------------------------------------------+
string SymbolSwapByDay(const string symbol,const ENUM_DAY_OF_WEEK day_week,const uint header_width=0,const uint indent=0)
{
//--- Получаем текстовое описание дня недели
string day=EnumToString(day_week);
//--- Преобразуем все полученные символы в нижний регистр и заменяем первую букву с маленькой на заглавную
if(day.Lower())
day.SetChar(0,ushort(day.GetChar(0)-0x20));
//--- Создаём текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header=StringFormat("Swap %s:",day);
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Объявляем свойство, которое необходимо запросить в SymbolInfoDouble()
int prop=SYMBOL_SWAP_SUNDAY;
//--- В зависимости от дня недели указываем запрашиваемое свойство
switch(day_week)
{
case MONDAY : prop=SYMBOL_SWAP_MONDAY; break;
case TUESDAY : prop=SYMBOL_SWAP_TUESDAY; break;
case WEDNESDAY : prop=SYMBOL_SWAP_WEDNESDAY; break;
case THURSDAY : prop=SYMBOL_SWAP_THURSDAY; break;
case FRIDAY : prop=SYMBOL_SWAP_FRIDAY; break;
case SATURDAY : prop=SYMBOL_SWAP_SATURDAY; break;
default/*SUNDAY*/ : prop=SYMBOL_SWAP_SUNDAY; break;
}
//--- Получаем коэффициент по выбранному свойству и определяем строку его описания
double swap_coeff=SymbolInfoDouble(symbol,(ENUM_SYMBOL_INFO_DOUBLE)prop);
string coeff_descr=(swap_coeff==1 ? "single swap" : swap_coeff==3 ? "triple swap" : "no swap is charged");
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%.0f (%s)",indent,"",w,header,swap_coeff,coeff_descr);
/* Пример вывода:
Swap Sunday: 0 (no swap is charged)
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал коэффициент начисления свопов |
//| по указанному дню недели |
//+------------------------------------------------------------------+
void SymbolSwapByDayPrint(const string symbol,const ENUM_DAY_OF_WEEK day_week,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolSwapByDay(symbol,day_week,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку начальную (инициирующую) маржу |
//+------------------------------------------------------------------+
string SymbolMarginInitial(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Margin initial:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%-.2f %s",indent,"",w,header,SymbolInfoDouble(symbol,SYMBOL_MARGIN_INITIAL),SymbolInfoString(symbol,SYMBOL_CURRENCY_MARGIN));
/* Пример вывода:
Margin initial: 0.00 GBP
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал начальную (инициирующую) маржу |
//+------------------------------------------------------------------+
void SymbolMarginInitialPrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolMarginInitial(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку поддерживающую маржу по инструменту |
//+------------------------------------------------------------------+
string SymbolMarginMaintenance(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Margin maintenance:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%-.2f %s",indent,"",w,header,SymbolInfoDouble(symbol,SYMBOL_MARGIN_MAINTENANCE),SymbolInfoString(symbol,SYMBOL_CURRENCY_MARGIN));
/* Пример вывода:
Margin maintenance: 0.00 GBP
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал поддерживающую маржу по инструменту |
//+------------------------------------------------------------------+
void SymbolMarginMaintenancePrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolMarginMaintenance(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку суммарный объём сделок в текущую сессию |
//+------------------------------------------------------------------+
string SymbolSessionVolume(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Session volume:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%-.2f",indent,"",w,header,SymbolInfoDouble(symbol,SYMBOL_SESSION_VOLUME));
/* Пример вывода:
Session volume: 0.00
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал суммарный объём сделок в текущую сессию |
//+------------------------------------------------------------------+
void SymbolSessionVolumePrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolSessionVolume(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку суммарный оборот в текущую сессию |
//+------------------------------------------------------------------+
string SymbolSessionTurnover(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Session turnover:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%-.2f",indent,"",w,header,SymbolInfoDouble(symbol,SYMBOL_SESSION_TURNOVER));
/* Пример вывода:
Session turnover: 0.00
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал суммарный оборот в текущую сессию |
//+------------------------------------------------------------------+
void SymbolSessionTurnoverPrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolSessionTurnover(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку суммарный объём открытых позиций |
//+------------------------------------------------------------------+
string SymbolSessionInterest(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Session interest:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%-.2f",indent,"",w,header,SymbolInfoDouble(symbol,SYMBOL_SESSION_INTEREST));
/* Пример вывода:
Session interest: 0.00
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал суммарный объём открытых позиций |
//+------------------------------------------------------------------+
void SymbolSessionInterestPrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolSessionInterest(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку общий объём ордеров на покупку |
//| в текущий момент |
//+------------------------------------------------------------------+
string SymbolSessionBuyOrdersVolume(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Session Buy orders volume:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%-.2f",indent,"",w,header,SymbolInfoDouble(symbol,SYMBOL_SESSION_BUY_ORDERS_VOLUME));
/* Пример вывода:
Session Buy orders volume: 0.00
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал общий объём ордеров на покупку в текущий момент |
//+------------------------------------------------------------------+
void SymbolSessionBuyOrdersVolumePrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolSessionBuyOrdersVolume(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку общий объём ордеров на продажу |
//| в текущий момент |
//+------------------------------------------------------------------+
string SymbolSessionSellOrdersVolume(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Session Sell orders volume:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%-.2f",indent,"",w,header,SymbolInfoDouble(symbol,SYMBOL_SESSION_SELL_ORDERS_VOLUME));
/* Пример вывода:
Session Sell orders volume: 0.00
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал общий объём ордеров на продажу в текущий момент |
//+------------------------------------------------------------------+
void SymbolSessionSellOrdersVolumePrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolSessionSellOrdersVolume(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку цену открытия сессии |
//+------------------------------------------------------------------+
string SymbolSessionOpen(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Session Open:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Получаем количество знаков после запятой
int dg=(int)SymbolInfoInteger(symbol,SYMBOL_DIGITS);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%-.*f",indent,"",w,header,dg,SymbolInfoDouble(symbol,SYMBOL_SESSION_OPEN));
/* Пример вывода:
Session Open: 1.31314
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал цену открытия сессии |
//+------------------------------------------------------------------+
void SymbolSessionOpenPrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolSessionOpen(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку цену закрытия сессии |
//+------------------------------------------------------------------+
string SymbolSessionClose(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Session Close:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Получаем количество знаков после запятой
int dg=(int)SymbolInfoInteger(symbol,SYMBOL_DIGITS);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%-.*f",indent,"",w,header,dg,SymbolInfoDouble(symbol,SYMBOL_SESSION_CLOSE));
/* Пример вывода:
Session Close: 1.31349
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал цену закрытия сессии |
//+------------------------------------------------------------------+
void SymbolSessionClosePrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolSessionClose(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку средневзвешенную цену сессии |
//+------------------------------------------------------------------+
string SymbolSessionAW(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Session AW:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Получаем количество знаков после запятой
int dg=(int)SymbolInfoInteger(symbol,SYMBOL_DIGITS);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%-.*f",indent,"",w,header,dg,SymbolInfoDouble(symbol,SYMBOL_SESSION_AW));
/* Пример вывода:
Session AW: 0.00000
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал средневзвешенную цену сессии |
//+------------------------------------------------------------------+
void SymbolSessionAWPrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolSessionAW(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку цену поставки на текущую сессию |
//+------------------------------------------------------------------+
string SymbolSessionPriceSettlement(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Session price settlement:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Получаем количество знаков после запятой
int dg=(int)SymbolInfoInteger(symbol,SYMBOL_DIGITS);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%-.*f",indent,"",w,header,dg,SymbolInfoDouble(symbol,SYMBOL_SESSION_PRICE_SETTLEMENT));
/* Пример вывода:
Session price settlement: 0.00000
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал цену поставки на текущую сессию |
//+------------------------------------------------------------------+
void SymbolSessionPriceSettlementPrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolSessionPriceSettlement(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку минимально допустимое |
//| значение цены на сессию |
//+------------------------------------------------------------------+
string SymbolSessionPriceLimitMin(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Session price limit min:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Получаем количество знаков после запятой
int dg=(int)SymbolInfoInteger(symbol,SYMBOL_DIGITS);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%-.*f",indent,"",w,header,dg,SymbolInfoDouble(symbol,SYMBOL_SESSION_PRICE_LIMIT_MIN));
/* Пример вывода:
Session price limit min: 0.00000
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал минимально допустимое |
//| значение цены на сессию |
//+------------------------------------------------------------------+
void SymbolSessionPriceLimitMinPrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolSessionPriceLimitMin(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку максимально допустимое |
//| значение цены на сессию |
//+------------------------------------------------------------------+
string SymbolSessionPriceLimitMax(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Session price limit max:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Получаем количество знаков после запятой
int dg=(int)SymbolInfoInteger(symbol,SYMBOL_DIGITS);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%-.*f",indent,"",w,header,dg,SymbolInfoDouble(symbol,SYMBOL_SESSION_PRICE_LIMIT_MAX));
/* Пример вывода:
Session price limit max: 0.00000
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал максимально допустимое |
//| значение цены на сессию |
//+------------------------------------------------------------------+
void SymbolSessionPriceLimitMaxPrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolSessionPriceLimitMax(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку размер контракта или маржи |
//| для одного лота перекрытых позиций |
//+------------------------------------------------------------------+
string SymbolMarginHedged(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Margin hedged:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%-.2f",indent,"",w,header,SymbolInfoDouble(symbol,SYMBOL_MARGIN_HEDGED));
/* Пример вывода:
Margin hedged: 100000.00
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал размер контракта или маржи |
//| для одного лота перекрытых позиций |
//+------------------------------------------------------------------+
void SymbolMarginHedgedPrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolMarginHedged(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку изменение текущей цены относительно |
//| конца предыдущего торгового дня, выраженное в процентах |
//+------------------------------------------------------------------+
string SymbolPriceChange(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Price change:";
uint w=(header_width==0 ? header.Length()+1 : header_width-1);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%- .2f %%",indent,"",w,header,SymbolInfoDouble(symbol,SYMBOL_PRICE_CHANGE));
/* Пример вывода:
Price change: -0.28 %
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал изменение текущей цены относительно |
//| конца предыдущего торгового дня, выраженное в процентах |
//+------------------------------------------------------------------+
void SymbolPriceChangePrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolPriceChange(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку волатильность цены в процентах |
//+------------------------------------------------------------------+
string SymbolPriceVolatility(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Price volatility:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%-.2f %%",indent,"",w,header,SymbolInfoDouble(symbol,SYMBOL_PRICE_VOLATILITY));
/* Пример вывода:
Price volatility: 0.00 %
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал волатильность цены в процентах |
//+------------------------------------------------------------------+
void SymbolPriceVolatilityPrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolPriceVolatility(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку теоретическую цену опциона |
//+------------------------------------------------------------------+
string SymbolPriceTheoretical(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Price theoretical:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Получаем количество знаков после запятой
int dg=(int)SymbolInfoInteger(symbol,SYMBOL_DIGITS);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%-.*f",indent,"",w,header,dg,SymbolInfoDouble(symbol,SYMBOL_PRICE_THEORETICAL));
/* Пример вывода:
Price theoretical: 0.00000
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал теоретическую цену опциона |
//+------------------------------------------------------------------+
void SymbolPriceTheoreticalPrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolPriceTheoretical(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку дельту опциона/варранта |
//+------------------------------------------------------------------+
string SymbolPriceDelta(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Price delta:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Получаем количество знаков после запятой
int dg=(int)SymbolInfoInteger(symbol,SYMBOL_DIGITS);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%-.*f",indent,"",w,header,dg,SymbolInfoDouble(symbol,SYMBOL_PRICE_DELTA));
/* Пример вывода:
Price delta: 0.00000
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал дельту опциона/варранта |
//+------------------------------------------------------------------+
void SymbolPriceDeltaPrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolPriceDelta(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку тету опциона/варранта |
//+------------------------------------------------------------------+
string SymbolPriceTheta(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Price theta:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Получаем количество знаков после запятой
int dg=(int)SymbolInfoInteger(symbol,SYMBOL_DIGITS);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%-.*f",indent,"",w,header,dg,SymbolInfoDouble(symbol,SYMBOL_PRICE_THETA));
/* Пример вывода:
Price theta: 0.00000
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал тету опциона/варранта |
//+------------------------------------------------------------------+
void SymbolPriceThetaPrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolPriceTheta(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку гамму опциона/варранта |
//+------------------------------------------------------------------+
string SymbolPriceGamma(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Price gamma:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Получаем количество знаков после запятой
int dg=(int)SymbolInfoInteger(symbol,SYMBOL_DIGITS);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%-.*f",indent,"",w,header,dg,SymbolInfoDouble(symbol,SYMBOL_PRICE_GAMMA));
/* Пример вывода:
Price gamma: 0.00000
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал гамму опциона/варранта |
//+------------------------------------------------------------------+
void SymbolPriceGammaPrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolPriceGamma(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку вегу опциона/варранта |
//+------------------------------------------------------------------+
string SymbolPriceVega(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Price vega:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Получаем количество знаков после запятой
int dg=(int)SymbolInfoInteger(symbol,SYMBOL_DIGITS);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%-.*f",indent,"",w,header,dg,SymbolInfoDouble(symbol,SYMBOL_PRICE_VEGA));
/* Пример вывода:
Price vega: 0.00000
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал вегу опциона/варранта |
//+------------------------------------------------------------------+
void SymbolPriceVegaPrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolPriceVega(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку ро опциона/варранта |
//+------------------------------------------------------------------+
string SymbolPriceRho(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Price rho:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Получаем количество знаков после запятой
int dg=(int)SymbolInfoInteger(symbol,SYMBOL_DIGITS);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%-.*f",indent,"",w,header,dg,SymbolInfoDouble(symbol,SYMBOL_PRICE_RHO));
/* Пример вывода:
Price rho: 0.00000
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал ро опциона/варранта |
//+------------------------------------------------------------------+
void SymbolPriceRhoPrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolPriceRho(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку омегу опциона/варранта |
//+------------------------------------------------------------------+
string SymbolPriceOmega(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Price omega:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Получаем количество знаков после запятой
int dg=(int)SymbolInfoInteger(symbol,SYMBOL_DIGITS);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%-.*f",indent,"",w,header,dg,SymbolInfoDouble(symbol,SYMBOL_PRICE_OMEGA));
/* Пример вывода:
Price omega: 0.00000
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал омегу опциона/варранта |
//+------------------------------------------------------------------+
void SymbolPriceOmegaPrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolPriceOmega(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает как строку чувствительность опциона/варранта |
//+------------------------------------------------------------------+
string SymbolPriceSensitivity(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Price sensitivity:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Получаем количество знаков после запятой
int dg=(int)SymbolInfoInteger(symbol,SYMBOL_DIGITS);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s%-.*f",indent,"",w,header,dg,SymbolInfoDouble(symbol,SYMBOL_PRICE_SENSITIVITY));
/* Пример вывода:
Price sensitivity: 0.00000
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал чувствительность опциона/варранта |
//+------------------------------------------------------------------+
void SymbolPriceSensitivityPrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolPriceSensitivity(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает имя базового актива для производного инструмента |
//+------------------------------------------------------------------+
string SymbolBasis(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Basis:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Получаем значение строкового параметра
string param=SymbolInfoString(symbol,SYMBOL_BASIS);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s'%-s'%-s",indent,"",w,header,param,param=="" ? " (Not specified)" : "");
/* Пример вывода:
Basis: '' (Not specified)
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал имя базового актива для производного инструмента|
//+------------------------------------------------------------------+
void SymbolBasisPrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolBasis(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает название категории или сектора финансового инструмента|
//+------------------------------------------------------------------+
string SymbolCategory(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Category:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Получаем значение строкового параметра
string param=SymbolInfoString(symbol,SYMBOL_CATEGORY);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s'%-s'%-s",indent,"",w,header,param,param=="" ? " (Not specified)" : "");
/* Пример вывода:
Category: '' (Not specified)
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал название категории или сектора |
//| финансового инструмента |
//+------------------------------------------------------------------+
void SymbolCategoryPrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolCategory(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает страну, к которой отнесен финансовый инструмент |
//+------------------------------------------------------------------+
string SymbolCountry(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Country:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Получаем значение строкового параметра
string param=SymbolInfoString(symbol,SYMBOL_COUNTRY);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s'%-s'%-s",indent,"",w,header,param,param=="" ? " (Not specified)" : "");
/* Пример вывода:
Country: '' (Not specified)
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал страну, к которой отнесен финансовый инструмент |
//+------------------------------------------------------------------+
void SymbolCountryPrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolCountry(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает сектор экономики, |
//| к которому относится финансовый инструмент |
//+------------------------------------------------------------------+
string SymbolSectorName(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Sector name:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Получаем значение строкового параметра
string param=SymbolInfoString(symbol,SYMBOL_SECTOR_NAME);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s'%-s'%-s",indent,"",w,header,param,param=="" ? " (Not specified)" : "");
/* Пример вывода:
Sector name: 'Currency'
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал сектор экономики, |
//| к которому относится финансовый инструмент |
//+------------------------------------------------------------------+
void SymbolSectorNamePrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolSectorName(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает отрасль экономики или вид промышленности, |
//| к которому относится финансовый инструмент |
//+------------------------------------------------------------------+
string SymbolIndustryName(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Industry name:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Получаем значение строкового параметра
string param=SymbolInfoString(symbol,SYMBOL_INDUSTRY_NAME);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s'%-s'%-s",indent,"",w,header,param,param=="" ? " (Not specified)" : "");
/* Пример вывода:
Industry name: 'Undefined'
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал отрасль экономики или вид промышленности, |
//| к которому относится финансовый инструмент |
//+------------------------------------------------------------------+
void SymbolIndustryNamePrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolIndustryName(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает базовую валюту инструмента |
//+------------------------------------------------------------------+
string SymbolCurrencyBase(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Currency base:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Получаем значение строкового параметра
string param=SymbolInfoString(symbol,SYMBOL_CURRENCY_BASE);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s'%-s'%-s",indent,"",w,header,param,param=="" ? " (Not specified)" : "");
/* Пример вывода:
Currency base: 'GBP'
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал базовую валюту инструмента |
//+------------------------------------------------------------------+
void SymbolCurrencyBasePrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolCurrencyBase(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает валюту прибыли |
//+------------------------------------------------------------------+
string SymbolCurrencyProfit(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Currency profit:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Получаем значение строкового параметра
string param=SymbolInfoString(symbol,SYMBOL_CURRENCY_PROFIT);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s'%-s'%-s",indent,"",w,header,param,param=="" ? " (Not specified)" : "");
/* Пример вывода:
Currency profit: 'USD'
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал валюту прибыли |
//+------------------------------------------------------------------+
void SymbolCurrencyProfitPrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolCurrencyProfit(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает валюту, в которой вычисляются залоговые средства |
//+------------------------------------------------------------------+
string SymbolCurrencyMargin(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Currency margin:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Получаем значение строкового параметра
string param=SymbolInfoString(symbol,SYMBOL_CURRENCY_MARGIN);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s'%-s'%-s",indent,"",w,header,param,param=="" ? " (Not specified)" : "");
/* Пример вывода:
Currency margin: 'GBP'
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал валюту, в которой вычисляются залоговые средства|
//+------------------------------------------------------------------+
void SymbolCurrencyMarginPrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolCurrencyMargin(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает источник текущей котировки |
//+------------------------------------------------------------------+
string SymbolBank(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Bank:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Получаем значение строкового параметра
string param=SymbolInfoString(symbol,SYMBOL_BANK);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s'%-s'%-s",indent,"",w,header,param,param=="" ? " (Not specified)" : "");
/* Пример вывода:
Bank: '' (Not specified)
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал источник текущей котировки |
//+------------------------------------------------------------------+
void SymbolBankPrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolBank(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает строковое описание символа |
//+------------------------------------------------------------------+
string SymbolDescription(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Description:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Получаем значение строкового параметра
string param=SymbolInfoString(symbol,SYMBOL_DESCRIPTION);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s'%-s'%-s",indent,"",w,header,param,param=="" ? " (Not specified)" : "");
/* Пример вывода:
Description: 'Pound Sterling vs US Dollar'
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал строковое описание символа |
//+------------------------------------------------------------------+
void SymbolDescriptionPrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolDescription(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает название биржи или торговой площадки, |
//| на которой торгуется символ |
//+------------------------------------------------------------------+
string SymbolExchange(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Exchange:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Получаем значение строкового параметра
string param=SymbolInfoString(symbol,SYMBOL_EXCHANGE);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s'%-s'%-s",indent,"",w,header,param,param=="" ? " (Not specified)" : "");
/* Пример вывода:
Exchange: '' (Not specified)
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал название биржи или торговой площадки, |
//| на которой торгуется символ |
//+------------------------------------------------------------------+
void SymbolExchangePrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolExchange(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает формулу для построения цены пользовательского символа |
//+------------------------------------------------------------------+
string SymbolFormula(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Formula:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Получаем значение строкового параметра
string param=SymbolInfoString(symbol,SYMBOL_FORMULA);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s'%-s'%-s",indent,"",w,header,param,param=="" ? " (Not specified)" : "");
/* Пример вывода:
Formula: '' (Not specified)
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал формулу для построения |
//| цены пользовательского символа |
//+------------------------------------------------------------------+
void SymbolFormulaPrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolFormula(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает имя торгового символа в системе |
//| международных идентификационных кодов ценных бумаг |
//+------------------------------------------------------------------+
string SymbolISIN(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="ISIN:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Получаем значение строкового параметра
string param=SymbolInfoString(symbol,SYMBOL_ISIN);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s'%-s'%-s",indent,"",w,header,param,param=="" ? " (Not specified)" : "");
/* Пример вывода:
ISIN: '' (Not specified)
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал имя торгового символа в системе |
//| международных идентификационных кодов ценных бумаг |
//+------------------------------------------------------------------+
void SymbolISINPrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolISIN(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает адрес интернет страницы с информацией по символу |
//+------------------------------------------------------------------+
string SymbolPage(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Page:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Получаем значение строкового параметра
string param=SymbolInfoString(symbol,SYMBOL_PAGE);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s'%-s'%-s",indent,"",w,header,param,param=="" ? " (Not specified)" : "");
/* Пример вывода:
Page: 'https://www.mql5.com/en/quotes/currencies/gbpusd'
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал адрес интернет страницы с информацией по символу|
//+------------------------------------------------------------------+
void SymbolPagePrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolPage(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Возвращает путь в дереве символов |
//+------------------------------------------------------------------+
string SymbolPath(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Определяем текст заголовка и ширину поля заголовка
//--- Если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
string header="Path:";
uint w=(header_width==0 ? header.Length()+1 : header_width);
//--- Получаем значение строкового параметра
string param=SymbolInfoString(symbol,SYMBOL_PATH);
//--- Возвращаем значение свойства с заголовком с нужной шириной и отступом
return StringFormat("%*s%-*s'%-s'%-s",indent,"",w,header,param,param=="" ? " (Not specified)" : "");
/* Пример вывода:
Path: 'Forex\GBPUSD'
*/
}
//+------------------------------------------------------------------+
//| Выводит в журнал путь в дереве символов |
//+------------------------------------------------------------------+
void SymbolPathPrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Распечатываем в журнале значение свойства с заголовком с нужной шириной и отступом
Print(SymbolPath(symbol,header_width,indent));
}
//+------------------------------------------------------------------+
//| Выводит в журнал все свойства символа |
//+------------------------------------------------------------------+
void SymbolInfoPrint(const string symbol,const uint header_width=0,const uint indent=0)
{
//--- Выводим в журнал описания целочисленных свойств в порядке их расположения в ENUM_SYMBOL_INFO_INTEGER
Print("SymbolInfoInteger properties:");
SymbolSubscriptionDelayPrint(symbol,header_width,indent);
SymbolSectorPrint(symbol,header_width,indent);
SymbolIndustryPrint(symbol,header_width,indent);
SymbolCustomPrint(symbol,header_width,indent);
SymbolBackgroundColorPrint(symbol,header_width,indent);
SymbolChartModePrint(symbol,header_width,indent);
SymbolExistsPrint(symbol,header_width,indent);
SymbolSelectedPrint(symbol,header_width,indent);
SymbolVisiblePrint(symbol,header_width,indent);
SymbolSessionDealsPrint(symbol,header_width,indent);
SymbolSessionBuyOrdersPrint(symbol,header_width,indent);
SymbolSessionSellOrdersPrint(symbol,header_width,indent);
SymbolVolumePrint(symbol,header_width,indent);
SymbolVolumeHighPrint(symbol,header_width,indent);
SymbolVolumeLowPrint(symbol,header_width,indent);
SymbolTimePrint(symbol,header_width,indent);
SymbolTimeMSCPrint(symbol,header_width,indent);
SymbolDigitsPrint(symbol,header_width,indent);
SymbolSpreadPrint(symbol,header_width,indent);
SymbolSpreadFloatPrint(symbol,header_width,indent);
SymbolTicksBookDepthPrint(symbol,header_width,indent);
SymbolTradeCalcModePrint(symbol,header_width,indent);
SymbolTradeModePrint(symbol,header_width,indent);
SymbolSymbolStartTimePrint(symbol,header_width,indent);
SymbolSymbolExpirationTimePrint(symbol,header_width,indent);
SymbolTradeStopsLevelPrint(symbol,header_width,indent);
SymbolTradeFreezeLevelPrint(symbol,header_width,indent);
SymbolTradeExeModePrint(symbol,header_width,indent);
SymbolSwapModePrint(symbol,header_width,indent);
SymbolSwapRollover3DaysPrint(symbol,header_width,indent);
SymbolMarginHedgedUseLegPrint(symbol,header_width,indent);
SymbolExpirationModePrint(symbol,header_width,indent);
SymbolFillingModePrint(symbol,header_width,indent);
SymbolOrderModePrint(symbol,header_width,indent);
SymbolOrderGTCModePrint(symbol,header_width,indent);
SymbolOptionModePrint(symbol,header_width,indent);
SymbolOptionRightPrint(symbol,header_width,indent);
//--- Выводим в журнал описания вещественных свойств в порядке их расположения в ENUM_SYMBOL_INFO_DOUBLE
Print("SymbolInfoDouble properties:");
SymbolBidPrint(symbol,header_width,indent);
SymbolBidHighPrint(symbol,header_width,indent);
SymbolBidLowPrint(symbol,header_width,indent);
SymbolAskPrint(symbol,header_width,indent);
SymbolAskHighPrint(symbol,header_width,indent);
SymbolAskLowPrint(symbol,header_width,indent);
SymbolLastPrint(symbol,header_width,indent);
SymbolLastHighPrint(symbol,header_width,indent);
SymbolLastLowPrint(symbol,header_width,indent);
SymbolVolumeRealPrint(symbol,header_width,indent);
SymbolVolumeHighRealPrint(symbol,header_width,indent);
SymbolVolumeLowRealPrint(symbol,header_width,indent);
SymbolOptionStrikePrint(symbol,header_width,indent);
SymbolPointPrint(symbol,header_width,indent);
SymbolTradeTickValuePrint(symbol,header_width,indent);
SymbolTradeTickValueProfitPrint(symbol,header_width,indent);
SymbolTradeTickValueLossPrint(symbol,header_width,indent);
SymbolTradeTickSizePrint(symbol,header_width,indent);
SymbolTradeContractSizePrint(symbol,header_width,indent);
SymbolTradeAccruedInterestPrint(symbol,header_width,indent);
SymbolTradeFaceValuePrint(symbol,header_width,indent);
SymbolTradeLiquidityRatePrint(symbol,header_width,indent);
SymbolVolumeMinPrint(symbol,header_width,indent);
SymbolVolumeMaxPrint(symbol,header_width,indent);
SymbolVolumeStepPrint(symbol,header_width,indent);
SymbolVolumeLimitPrint(symbol,header_width,indent);
SymbolSwapLongPrint(symbol,header_width,indent);
SymbolSwapShortPrint(symbol,header_width,indent);
SymbolSwapByDayPrint(symbol,SUNDAY,header_width,indent);
SymbolSwapByDayPrint(symbol,MONDAY,header_width,indent);
SymbolSwapByDayPrint(symbol,TUESDAY,header_width,indent);
SymbolSwapByDayPrint(symbol,WEDNESDAY,header_width,indent);
SymbolSwapByDayPrint(symbol,THURSDAY,header_width,indent);
SymbolSwapByDayPrint(symbol,FRIDAY,header_width,indent);
SymbolSwapByDayPrint(symbol,SATURDAY,header_width,indent);
SymbolMarginInitialPrint(symbol,header_width,indent);
SymbolMarginMaintenancePrint(symbol,header_width,indent);
SymbolSessionVolumePrint(symbol,header_width,indent);
SymbolSessionTurnoverPrint(symbol,header_width,indent);
SymbolSessionInterestPrint(symbol,header_width,indent);
SymbolSessionBuyOrdersVolumePrint(symbol,header_width,indent);
SymbolSessionSellOrdersVolumePrint(symbol,header_width,indent);
SymbolSessionOpenPrint(symbol,header_width,indent);
SymbolSessionClosePrint(symbol,header_width,indent);
SymbolSessionAWPrint(symbol,header_width,indent);
SymbolSessionPriceSettlementPrint(symbol,header_width,indent);
SymbolSessionPriceLimitMinPrint(symbol,header_width,indent);
SymbolSessionPriceLimitMaxPrint(symbol,header_width,indent);
SymbolMarginHedgedPrint(symbol,header_width,indent);
SymbolPriceChangePrint(symbol,header_width,indent);
SymbolPriceVolatilityPrint(symbol,header_width,indent);
SymbolPriceTheoreticalPrint(symbol,header_width,indent);
SymbolPriceDeltaPrint(symbol,header_width,indent);
SymbolPriceThetaPrint(symbol,header_width,indent);
SymbolPriceGammaPrint(symbol,header_width,indent);
SymbolPriceVegaPrint(symbol,header_width,indent);
SymbolPriceRhoPrint(symbol,header_width,indent);
SymbolPriceOmegaPrint(symbol,header_width,indent);
SymbolPriceSensitivityPrint(symbol,header_width,indent);
//--- Выводим в журнал описания строковых свойств в порядке их расположения в ENUM_SYMBOL_INFO_STRING
Print("SymbolInfoString properties:");
SymbolBasisPrint(symbol,header_width,indent);
SymbolCategoryPrint(symbol,header_width,indent);
SymbolCountryPrint(symbol,header_width,indent);
SymbolSectorNamePrint(symbol,header_width,indent);
SymbolIndustryNamePrint(symbol,header_width,indent);
SymbolCurrencyBasePrint(symbol,header_width,indent);
SymbolCurrencyProfitPrint(symbol,header_width,indent);
SymbolCurrencyMarginPrint(symbol,header_width,indent);
SymbolBankPrint(symbol,header_width,indent);
SymbolDescriptionPrint(symbol,header_width,indent);
SymbolExchangePrint(symbol,header_width,indent);
SymbolFormulaPrint(symbol,header_width,indent);
SymbolISINPrint(symbol,header_width,indent);
SymbolPagePrint(symbol,header_width,indent);
SymbolPathPrint(symbol,header_width,indent);
}
//+------------------------------------------------------------------+