Продолжаю рассказывать о простейших скриптах. Если вы читали предыдущий пост, то без проблем разберетесь и в этом коде.
На прошлой неделе мне задали такой вопрос:
Т.е. простой смертный берет питон пишет код. Типа там если сегодня среда 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, но мне кажется не очень справедливым просто дарить свою работу. С другой стороны, если это никому неинтересно, то я отложу его до появления свободного времени.
Пока пользоваться той, что в постах и в скриптах plugins?
Scorpio, не было времени документировать, т.к. не думал, что людям это нужно.
Навскидку, что быстро нашел из записей (у нас 3 часа ночи все-таки):