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