Форум устарел! Поддержка тут: https://t.me/osengine_official_support

Актуальные гайды здесь: https://smart-lab.ru/company/os_engine/blog/1024149.php

Несколько вопросов по написанию ботов

Продажа на закрытии, определение границ торговой сессии

  1. aleste

    Регистрация:
    31.08.17
    Сообщения:
    18
    Был на сайте:
    08.06.24

    Добрый день!

    1) Как закрывать(открывать) позицию на закрытии свечи?

    Как купить на открытии следующей свечи понятно. Надо просто вызвать BuyAtMarket в CandleFinishedEvent. И это будет работать и в тестах и в реальной бою с разницей на проскальзывание и задержки в реальности.

    Но как купить по цене закрытия последней свечи, а не открытии следующей? Например, в 17:00 я понимаю, что хочу закрыться по цене закрытия свечи в 17:05. Как это сделать в боте так, чтобы код работал и для истории и реальной торговли.

    2) Есть ли способ определить код класса инструмента при работе с историческими данными? Хочу захардкодить время торговой сессии и определять время окончания торгов. Но при использовании исторических данных упорно возвращается TestClass.

    aleste
    19.11.2019 18:52
    #1
  2. Алексей Ван Команда форума

    Регистрация:
    02.02.13
    Сообщения:
    1175
    Был на сайте:
    05.10.24
    Цитата: aleste

    Добрый день!

    1) Как закрывать(открывать) позицию на закрытии свечи?

    Как купить на открытии следующей свечи понятно. Надо просто вызвать BuyAtMarket в CandleFinishedEvent. И это будет работать и в тестах и в реальной бою с разницей на проскальзывание и задержки в реальности.

    Но как купить по цене закрытия последней свечи, а не открытии следующей? Например, в 17:00 я понимаю, что хочу закрыться по цене закрытия свечи в 17:05. Как это сделать в боте так, чтобы код работал и для истории и реальной торговли.

    2) Есть ли способ определить код класса инструмента при работе с историческими данными? Хочу захардкодить время торговой сессии и определять время окончания торгов. Но при использовании исторических данных упорно возвращается TestClass.

    1) событие CandleFinishedEvent возвращает Вам массив свечек завершённый. Последний элемент массива - последняя свеча. Вызываете у неё Close - это Ваша цена входа. Далее отправляем эту цену в метод BuyAtLimit();

     

    2) В тестере это не определить. Данных таких нет.

    Алексей Ван
    21.11.2019 10:33
    #2
  3. aleste

    Регистрация:
    31.08.17
    Сообщения:
    18
    Был на сайте:
    08.06.24

    1) Я несколько путанно выразился. Но речь идет о закрытии позиции вместе с закрытием свечи. Т.е. метод, который я буду вызывать CloseAtLimit. Но дело в том, что лимитка начнет работать со следующей свечи. И, если цена открывается гэпом, то позиция может оказаться не закрыта, если цена упадет.

    А в тестере этот вызов вообще приводит к довольном странным результатам: на баре, который открывается с гэпом вверх (т..е. лимитка на продажу по цене вчерашнего закрытия должна исполниться по цене открытия) лимитка исполняется по цене, расположенной внутри бара. Но здесь, я полагаю, неправильно задан шаг цены.

     

    p.s. на тиках сделал и нормально.

    aleste
    21.11.2019 11:32
    #3