Я уже, казалось бы, прошёл это и написал подобную функцию под себя. НО иногда заглядываю в библиотеки других программистов и смотрю как они пишут подобные вещи. Вот функция получения рыночной цены:
double fGet_TradePrice (int fi_Price, // Цена: 0 - Bid; 1 - Ask
bool fb_RealTrade, // реальная торговля или оптимизация\тестирование
string fs_Symbol = "") // валютная пара
{
double ld_Price = 0.0;
//----
if (fs_Symbol == "")
{
fs_Symbol = Symbol();
}
//RefreshRates();
switch (fi_Price)
{
case 0:
if (fb_RealTrade)
{
while (ld_Price == 0.0)
{
if (fs_Symbol == Symbol())
{
ld_Price = Bid;
}
else
{
ld_Price = MarketInfo (fs_Symbol, MODE_BID);
}
if (!IsExpertEnabled() || IsStopped())
{
break;
}
Sleep (50);
RefreshRates();
}
}
else
{
if (fs_Symbol == Symbol())
{
return (Bid);
}
else
{
return (MarketInfo (fs_Symbol, MODE_BID));
}
}
break;
case 1:
if (fb_RealTrade)
{
while (ld_Price == 0.0)
{
if (fs_Symbol == Symbol())
{
ld_Price = Ask;
}
else
{
ld_Price = MarketInfo (fs_Symbol, MODE_ASK);
}
if (!IsExpertEnabled() || IsStopped())
{
break;
}
Sleep (50);
RefreshRates();
}
}
else
{
if (fs_Symbol == Symbol())
{
return (Ask);
}
else
{
return (MarketInfo (fs_Symbol, MODE_ASK));
}
}
break;
}
//----
return (ld_Price);
}
А канкретно, возьмём хотяб этот кусок кода, в случае case 0:
while (ld_Price == 0.0)
{
if (fs_Symbol == Symbol())
{
ld_Price = Bid;
}
else
{
ld_Price = MarketInfo (fs_Symbol, MODE_BID);
}
if (!IsExpertEnabled() || IsStopped())
{
break;
}
Sleep (50);
RefreshRates();
}
Изначально всё идёт логично, исходя из символа инструмента получает цену. В конце цикла появляется:
if (!IsExpertEnabled() || IsStopped())
{
break;
}
Sleep (50);
RefreshRates();
По-моему это вообще не логично.
1. Во-первых, в функции получающей рыночной цены проверять включен ли эксперт и работает ли он по-моему не целесообразно.
2. Во-вторых, проверять после того как получили цену на if (!IsExpertEnabled() || IsStopped()) не логично, т.к. цена уже будет, и значится функция уже своё дело сделала.
Хотел просто узнал мнение других участников обсуждения, не более того.
Просто и программист вроде как довольно-таки адекватный писал библиотеки, но чем больше я смотрю на них, тем больше понимаю, что видимо лучше своих ничего не бывает. Все находятся моменты, которые противоречат моей точке зрения напрочь.