2026-03-17 14:47:52 +07:00
|
|
|
//+------------------------------------------------------------------+
|
|
|
|
|
//| 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"
|
|
|
|
|
//+------------------------------------------------------------------+
|
2026-03-17 14:50:16 +07:00
|
|
|
//| Принимает дату в мс, возвращает время в формате Date Time.Msc |
|
2026-03-17 14:47:52 +07:00
|
|
|
//+------------------------------------------------------------------+
|
2026-03-17 14:50:16 +07:00
|
|
|
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
|
|
|
|
|
*/
|
|
|
|
|
}
|
2026-03-17 14:47:52 +07:00
|
|
|
//+------------------------------------------------------------------+
|
2026-03-17 14:50:16 +07:00
|
|
|
//| Возвращает как строку признак того, |
|
|
|
|
|
//} что данные по символу идут с задержкой |
|
2026-03-17 14:47:52 +07:00
|
|
|
//+------------------------------------------------------------------+
|
2026-03-17 14:50:16 +07:00
|
|
|
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
|
|
|
|
|
*/
|
|
|
|
|
}
|
2026-03-17 14:47:52 +07:00
|
|
|
//+------------------------------------------------------------------+
|
2026-03-17 14:50:16 +07:00
|
|
|
//| Выводит в журнал признак того, |
|
|
|
|
|
//| что данные по символу идут с задержкой |
|
2026-03-17 14:47:52 +07:00
|
|
|
//+------------------------------------------------------------------+
|
2026-03-17 14:50:16 +07:00
|
|
|
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);
|
|
|
|
|
}
|
2026-03-17 14:47:52 +07:00
|
|
|
//+------------------------------------------------------------------+
|