pmus
pmus личный блог
02 февраля 2017, 00:35

Простейший скрипт - покупка актива в указанное время

Простейший скрипт - покупка актива в указанное время

Продолжаю рассказывать о простейших скриптах. Если вы читали предыдущий пост, то без проблем разберетесь и в этом коде.

На прошлой неделе мне задали такой вопрос:

Т.е. простой смертный берет питон пишет код. Типа там если сегодня среда 10-00, то купить 1 акцию. Прикрепляет блок, данные идут, условие срабатывает, покупка, лог… и т.п.


Спрашивали — отвечаю.

# -*- coding: utf-8 -*-#

plugin_name = '1200'
global api

class Trader():
    def __init__(self):
        self.buy_time = 120000

В TSLab кубик «Время» отдает числовое значение вида ЧЧММСС, то есть 12 часов дня будет равняться 120000.

Будучи под этим нехорошим влиянием, я поступил так же. Исправлюсь.
Чтобы узнать текущее время, наш скрипт спросит у API функцию numeric_time()  — чуть ниже.

        self.mkt = api.stock
        self.run = True
        self.stock = self.mkt.get_current_contract('Si')  # -> SiH7

Функция API get_current_contract(буквы) возвращает код ближнего контракта, например до 15 марта 2017 года это будет SiH7. Если конечно, часы на компьютере не сбиты.

        self.qty = 0                                          # Защита от дурака - купит ведь!

    def wait_for_time(self):
        while self.run:
            api.sleep(1)
            ap = self.mkt.get_forts_position(self.stock)

Функция API get_forts_position(бумага) возвращает позицию по указанному инструменту. get_forts_position('SiH7') покажет, сколько у нас SiH7 (при шорте это будет отрицательное значение).

            if ap:
                api.pprint('Already in position')            # Уже в позиции
                self.run = False
            else:
                if api.numeric_time() > self.buy_time:
                    _res = self.mkt.buy_market(self.stock, self.qty)

Функция API buy_market(бумага, количество) купит по рынку указанную бумагу в указанном количестве. Осторожно, так можно и «ногу себе отстрелить».

                    self.run = False
                    if _res:
                        api.pprint('All ok, I stop now')
trader = Trader()

def init():
    api.pprint('Loaded')

def trade():
    trader.wait_for_time()
    api.pprint('Started', 'red')

Остальной код идентичен предыдущему примеру.
Возможно, я длинно описываю, но на самом деле получается коротенько:
Простейший скрипт - покупка актива в указанное время


Для забывчивых: демка здесь, предыдущий пост здесь, начало истории здесь.

А теперь хотелось бы задать вопрос вам: интересно ли вам развитие этой платформы? У меня сейчас совсем немного свободного времени, чтобы тратить его на искусство ради искусства. Была мысль отдать проект в opensource, но мне кажется не очень справедливым просто дарить свою работу. С другой стороны, если это никому неинтересно, то я отложу его до появления свободного времени.

15 Комментариев
  • Scorpio
    02 февраля 2017, 02:16
    Идея — бомба! Автор продолжай, спасибо за проект.
  • Пропан-Бутан
    02 февраля 2017, 02:46
    Люди и руками плохо торгуют. Алготрейдеров здесь такой же процент, как и геев в обществе, он очень мал. Но несколько единиц найти можно.
      • Пропан-Бутан
        02 февраля 2017, 03:21
        pmus, тогда исходя из чего вы пишете год, если не понимаете, как это сделать руками, где купить или продать, закрыть сделку (исключая торговлю в спреде и арбитраж, требующие скорость исполнения)? Не совсем понятно.
          • Пропан-Бутан
            02 февраля 2017, 03:34
            pmus, я не об этом. Я хотел понять мышление алготрейдеров, тех, кто не скальпирует, а осуществляет сделки внутри дня или ведет среднесрочную торговлю, где скорость ненужна и все можно сделать руками. Это и легче и надежнее. Такие тоже существуют. Конечно, ручной скальпинг выматывает нервы и затягивает, как рулетка.
  • Scorpio
    02 февраля 2017, 02:52
    Где взять информацию по API?
    Пока пользоваться той, что в постах и в скриптах plugins?
      • Scorpio
        02 февраля 2017, 03:14
        pmus, Что делать, если мне понадобятся регулярные выражения?
          • Scorpio
            02 февраля 2017, 03:26
            pmus, Отлично!
  • Сергей Гаврилов
    02 февраля 2017, 03:42
    господи, если бы с указанной прибылью, то можно было бы почитать…
  • Маркиз Лафайет
    02 февраля 2017, 11:30
    Случилось чудо! На смартлабе пост по теме ресурса!

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн