Closed nick-ez closed 2 years ago
Непонятно, почему Вы сравниваете значение получаемого параметра с единицей? Если сессия открыта, то возвращается значение = "открыта".
При этом, в своих роботах я для надежности выполняю сразу три проверки:
Если все три проверки пройдены - работаем и можем выставлять заявки. Иначе не торгуем.
Спасибо за развернутый ответ. Подскажите еще пожалуйста третий пункт делаете проверкой по времени?
Сделаем проще (я не очень жадный).
public static bool IsExchangeTradingEnable(Instrument instrument)
{
bool sessionTrading = true;
bool clearing = false;
try
{
if (mainQuik != null)
{
if (mainQuik.Trading.GetParamEx(instrument.ClassCode, instrument.SecurityCode, ParamNames.STATUS).Result.ParamImage != "торгуется" || mainQuik.Trading.GetParamEx(instrument.ClassCode, instrument.SecurityCode, ParamNames.TRADINGSTATUS).Result.ParamImage != "открыта")
sessionTrading = false;
}
if (DateTime.Now >= StringTime_to_DateTime(startDayClearing) && DateTime.Now < StringTime_to_DateTime(endDayClearing) && instrument.ClassCode == "SPBFUT") clearing = true;
return ((DateTime.Now > StringTime_to_DateTime(startDaySession) && DateTime.Now < StringTime_to_DateTime(endDaySession)) || (DateTime.Now > StringTime_to_DateTime(startNightSession) && DateTime.Now < StringTime_to_DateTime(endNightSession))) && !clearing && sessionTrading;
}
catch (NullReferenceException e)
{
Console.WriteLine("Ошибка в методе IsExchangeTradingEnable: " + e.Message);
return false;
}
}
Супер! Спасибо огромное!
Если проблема решена - закройте тему, пожалуйста.
Добрый день!
Зависает при клирингах на бирже, тк демо сервер, хрен поймешь когда там клиринг или перерыв. Перед выставлением заявки делаю проверку на статус биржи
Все хорошо работает пока не начинается клиринг или закрытие торгов