Неправильное время свечи, получаемой от SmartCom

  1. Кот Матроскин

    Регистрация:
    02.01.17
    Сообщения:
    43
    Был на сайте:
    19.10.18

    Смартком получает свечит в классе SmartComServer:

    void SmartServer_AddBar(int row, int nrows, string symbol, StBarInterval interval, DateTime datetime, double open, double high, double low, double close, double volume, double openInt)
    {
    Candle candle = new Candle();
    ......................................................................... Лишний код спрячем

    candle.TimeStart = datetime;

    ......................................................................... Лишний код спрячем

    }

    Однако, время, которое мы получаем от Смартком - конец свечи, а не начало. Специально сравнивал АйТиИнвест и Финам

    Поэтому вместо

    candle.TimeStart = datetime;

    поставил такой костыль:

    if (interval == StBarInterval.StBarInterval_1Min) candle.TimeStart = datetime.AddMinutes(-1.0);
    else if (interval == StBarInterval.StBarInterval_5Min) candle.TimeStart = datetime.AddMinutes(-5.0);
    else if (interval == StBarInterval.StBarInterval_10Min) candle.TimeStart = datetime.AddMinutes(-10.0);
    else if (interval == StBarInterval.StBarInterval_15Min) candle.TimeStart = datetime.AddMinutes(-15.0);
    else if (interval == StBarInterval.StBarInterval_30Min) candle.TimeStart = datetime.AddMinutes(-30.0);
    else if (interval == StBarInterval.StBarInterval_60Min) candle.TimeStart = datetime.AddMinutes(-60.0);
    else candle.TimeStart = datetime;



    И вопрос: а почему Os.Engine не дает со Смарткома скачать 2-х и 4-х часовые свечи?

    Кот Матроскин
    09.05.2017 18:50
    #1
  2. Алексей Ван Команда форума

    Регистрация:
    02.02.13
    Сообщения:
    368
    Был на сайте:
    18.10.18


    И вопрос: а почему Os.Engine не дает со Смарткома скачать 2-х и 4-х часовые свечи?

    Добавил Ваши правки в проект.

    В OsEngine нет таких ТФ... Не знаю уже почему даже. А нужно?

    Алексей Ван
    10.05.2017 16:25
    #2
  3. Кот Матроскин

    Регистрация:
    02.01.17
    Сообщения:
    43
    Был на сайте:
    19.10.18
    Цитата: Алексей Ван
    В OsEngine нет таких ТФ... Не знаю уже почему даже. А нужно?

    Честно говоря, не очень). Просто заметил это пока разбирался со временем свечи, стало интересно

    Кот Матроскин
    10.05.2017 21:11
    #3
  4. Кот Матроскин

    Регистрация:
    02.01.17
    Сообщения:
    43
    Был на сайте:
    19.10.18

    Добрый день! Чтобы не плодить новых тем пишу здесь. В СмарткомСервер есть такие строки.

    if (action == StOrder_Action.StOrder_Action_Buy)
    {

    trade.Side = Side.Buy;

    }
    if (action == StOrder_Action.StOrder_Action_Sell ||
    action == StOrder_Action.StOrder_Action_Short)
    {
    trade.Side = Side.Sell;
    }

    Вопрос.

    А вы про StOrder_Action.StOrder_Action_Cover специально не добавили?

    Кот Матроскин
    03.05.2018 22:29
    #4
  5. Алексей Ван Команда форума

    Регистрация:
    02.02.13
    Сообщения:
    368
    Был на сайте:
    18.10.18
    Цитата: Кот Матроскин

    Добрый день! Чтобы не плодить новых тем пишу здесь. В СмарткомСервер есть такие строки.

    if (action == StOrder_Action.StOrder_Action_Buy)
    {

    trade.Side = Side.Buy;

    }
    if (action == StOrder_Action.StOrder_Action_Sell ||
    action == StOrder_Action.StOrder_Action_Short)
    {
    trade.Side = Side.Sell;
    }

    Вопрос.

    А вы про StOrder_Action.StOrder_Action_Cover специально не добавили?

    я уже не помню. Вы бы учились пушить на ГитХаб код) меньше времени бы тратили на переписку.

    Записал себе. Сделаю к след релизу.

    Алексей Ван
    04.05.2018 23:23
    #5
  6. Кот Матроскин

    Регистрация:
    02.01.17
    Сообщения:
    43
    Был на сайте:
    19.10.18
    Цитата: Алексей Ван
    Вы бы учились пушить на ГитХаб код) меньше времени бы тратили на переписку.

    Рад бы) да учиться дольше....

    Кот Матроскин
    06.05.2018 17:12
    #6
  7. Кот Матроскин

    Регистрация:
    02.01.17
    Сообщения:
    43
    Был на сайте:
    19.10.18

    Посмотрел, оказалось, что в СмарткомСервер несколько мест, где нужно проверить StOrder_Action

    Например, еще в SmartServer_UpdateOrder:

    if (action == StOrder_Action.StOrder_Action_Buy)
    {
    order.Side = Side.Buy;
    }
    else
    {
    order.Side = Side.Sell;
    }

    Хотя, судя по тому, что ордера определяются как Open или Close по полю NumberUser, эти ошибки ни на что не влияют...

    Кот Матроскин
    07.05.2018 22:36
    #7