Заработок на создании ботов на python

Тема онлайн торгов (будь то форекс, акции, полезные ископаемые) обычно вызывает интерес. Но вместе с тем многие люди думают: «я в этом не разбираюсь, мне спец. терминология неизвестна. Да и непонятно, как начать». Вот над этим мы и поработаем! К концу статьи у вас будет достаточно знаний и примеров, чтобы начать играть на финансовых рынках.

  • Суть биржевой игры;
  • Брокеры;
  • API для торговли/Пример робота;
  • Деплоймент онлайн;
  • Заключительные мысли.

Суть биржевой игры

Есть много теорий и объяснений. Но мы подойдем к вопросу с точки зрения софтверщика и понятия об уровнях абстракции. Очень просто (но вместе с тем правдиво) суть игры в следующем: есть график некоей (псевдо?) случайной величины (цены). Известна её история за довольно большой период. Стоит задача предсказания движения (вверх или вниз). Всё. Реально.

То, что делают трейдеры — предсказывают, пойдет цена вверх или вниз и делают на это ставки (оpen trades): покупают (buy/long) какое-то количество «продукта» (instrument) в надежде на поход вверх, или продают (sell/short) в надежде, что пойдет вниз.

Как создать бота в Telegram на Python? Бот для общения, заработка и продаж.


После какого-то времени (если цена изменилась значительно) open trades закрывают и получают в результате прибыть (угадали с движением) или убыток (не угадали).

Сделку можно закрыть руками, а можно автоматичеки (order): можно заранее задекларировать — если цена достигнет такого-то уровня, то закрыть trade.

Доступ к рынку для совершения сделок предоставляет брокер. И за это он взимают плату за каждую сделку.

Подкованные теорией, мы можем опять вернуться в область, далекую от финансов и сказать: хей! да мы же просто ищем сигнал в шуме! Сейчас по быстрому разложим в ряд Фурье, определим частоты и озолотимся!

Всё верно, так всё и есть. Игра началась.

Брокеры

Есть много брокеров, которые специализируются на частных лицах. Они отличают набором инструментов доступных для торгов, ценами на услуги, надежностью, возможность создания роботов.

Я не буду давать сравнительный анализ. Сразу дам лучшего — Oanda. Почему Oanda:

  • Репутация;
  • Возможность открыть сделку в 1 доллар и нет требований к размеру trade (некоторые брокеры обязывают делать его кратным большим величинам);
  • Низкая цена за сделки (узкий spread);
  • Огромное количество инструментов: валюты, драг металлы и нефть, индексы;
  • Возможность торговать через API;
  • Ввод вывод денег возможен через PayPal.

Для того, чтобы торговать, надо создать учетную запись на Oanda. Для начала — тренировочную (fxtrade practice). В меню «Manage API Access» нужно указать, что на вашем счету возможна торговля через API. После этого вам сгенерят секретный токен для использования в RESTful вызовах.

API для торговли

image

Я буду использовать Python 2.7 и библиотеку requests.

Для того, чтобы торговать, нам нужно:

Получать информацию о цене. Робот должен знать, что происходит

def connect_to_stream(): try: s = requests.Session() url = «https://stream-fxpractice.oanda.com/v1/prices» headers = params = req = requests.Request(‘GET’, url, headers = headers, params = params) pre = req.prepare() resp = s.send(pre, stream = True, verify = False, timeout=20) return resp except Exception as e: s.close() print «Caught exception when connecting to streamn» + str(e)

Эта функция позволит соединиться к потоку цен на EUR/USD и AUD/JPY.

Теперь мы можем их считывать:

try: #infinite loop on receiving events about price. on each tick Strategy function is called for line in response.iter_lines(1): if line: msg = json.loads(line) if msg.has_key(«instrument») or msg.has_key(«tick»): strategy(msg[‘tick’][‘instrument’], msg[‘tick’][‘time’], msg[‘tick’][‘ask’]) except Exception as e: print «something gone bad » +str(e) return

Теперь нам нужен мозг. Принятие решений

image

Как видно, в функцию стратегии передается информация о названии инструмента, цена и время.
Мы можем решать в функции strategy: а что нам делать с этой новой инфой? Проигнорировать? Или, может, открыть новую сделку?

Вот здесь пригодится, что вы — программист. Изобретайте! Есть числовой ряд — ищете закономерности, анализируйте, да всё, что угодно.

Допустим, робот подумал и сказал: точно цена пойдет вверх! Чувствую своей shiny metal ass!

Тогда нам нужна возможность заключить сделку

def order(instr, take_profit, stop_loss): try: url = «https://» + «api-fxpractice.oanda.com» + «/v1/accounts/»+»YOUR ACC»+»/orders» headers = params = urllib.urlencode(< «instrument» : instr, # инструмент, по которому открывает сделку «units» : 10, # сколько единиц покупаем «type» : ‘market’, # прям сейчас исполнить! «side» : «buy», # считаем, что цена пойдет вверх («sell» если думаем что вниз) «takeProfit» : take_profit # насколько цена должна пройти вверх, чтобы наша жадность удовлетворилась, и мы закрыли бы сделку. и считали профит «stopLoss» : stop_loss # насколько цена может опуститься, прежде чем наш страх скажет «ты чё. дальше только хуже будет. закрывай немедля. фиг с ними с потерями» >) req =requests.post(url, data=params, headers=headers) for line in req.iter_lines(1): print «order responce: «, line except Exception as e: print «Caught exception when connecting to ordersn» + str(e)

Вот, в общем-то, и всё. Мы научились получать информацию о цене и, исходя из этого, открывать сделки с фиксированными целями.

Деплоймент онлайн

Открыл для себя наличие vps по бросовым ценам. Например, ftpit.com. Взял тот, что за 2 доллара в месяц.
Этот хостиг без проблем держит на себе 3-х моих роботов, которые день и ночь пытаются одолеть толстосумов с Wall Street. Плюс к этому есть свой SMTP server и небольшой сайт.

Заключительные мысли

Торговля на финансовых рынках может стать замечательным хобби, которое не только дает возможность программировать, но и приобщиться к огромной онлайн игре, в которой каждый день много новостей, мнений, событий, страха, жадности и надежды!

Если у вас есть вопросы — отвечу с радостью и в меру сил.

UPDATE

Очень рекомендую оставаться на practice account хотя бы 1 год
не торопитесь вводить настоящие деньги
если Вы будете видеть, что у вас прям «прёт» и все получается, то просто замониторьте счет вот здесь — forexfactory.com
если будет стабильный результат даже на демо счете — инвесторы сами вас будут искать и предлагать деньги в управление

UPDATE 2


Вспомнил кто еще любил сыграть на финасовых рынках — сэр Исаак Ньютон (тот самый :))

Источник: habr.com

Торговый робот на python с нуля. Алготрейдинг

С чего начать алготрейдинг. Написание роботов с нуля для торговли. Обучение Торговому роботу на python с нуля. Алготрейдинг :

Моя первая мысль о трейдинге появилась на 4 курсе экономического факультета, когда понял, что необходимо иметь пассивный доход. Начинал со вкладов в банке и паевых инвестиционных фондов (ПИФов), затем судьба забросила меня в IT. Я очень увлекся этим, поступил в технический ВУЗ и поставил цель совместить информационные технологии и биржевую торговлю, так как это интересно, перспективно и высокооплачиваемо.

Я расскажу о том, с чего начать освоение алгоритмического трейдинга не имея опыта в торговле и программировании. Точнее это будет серия статей разбитых по этапам с подробным описанием процесса обучения и рекомендациями. Программа обучения подойдет не только новичкам, но и опытным программистам, т.к. она предполагает еще и освоение биржевой торговли. Также, она может быть интересна трейдерам, которые получат необходимые знания в программировании. Каждый этап составлен так, что он не отнимет много времени, возможно совмещение с работой или учебой.

Фондовый рынок — это высокотехнологичная отрасль, которая активно развивается, что делает работу в этой сфере очень привлекательной для IT — специалистов. Мировой валютный рынок, где ежедневный объём торгов оценивается в $5,1 трлн, становится всё менее зависимым от человека. Так, 94 руководителя крупнейших компаний США и Канады по торговым и валютным операциям заявили о намерении перейти на автоматизацию большей части своих операций с иностранной валютой в течение 2018—2020 годов. Развитие автоматизированной торговли на сегодняшний день уже стало необратимым процессом на мировом валютном, фондовом рынке и рынке дериватиWow.

Пока сложно сказать, что для успешной торговли необходимо обязательно создавать торгового робота, можно торговать и вручную, используя автоматизацию для поиска актиWow и точек входа, или контроля открытых позиций. Но доля роботов в объеме торгов США в 2005 году перевалившая за 50% говорит об их востребованности среди трейдеров.

Обработка внешних транзакций для сторонних торговых роботов

Переходим к плану обучения.

В качестве языка программирования для реализации стратегий будет использован Python. Данный язык кроссплатформенный (что для сторонников Linux и macOS является обязательным атрибутом), прост в освоении (по своему опыту изучения Java, могу сказать что Python легче), широко распространен (применяется в Big Data, веб-разработке, автоматизации тестирования, науке, системном администрировании, для прототипирования квантовых моделей в хедж-фондах и «квантовых» трейдерских подразделений в банках и др.)

Этап 1.1. Изучение основ Python для торгового робота

1. Обучение по приложению от SoloLearn.

Первым делом будет полезным установить приложение SoloLearn на смартфон. Оно будет особенно полезно тем, кто ранее не программировал. Приложение обучит самым основам языка. Неоспоримое преимущество, что им можно пользоваться в любое время и в любом месте.

2. Прохождение курса на Stepik.org «Программирование на Python»

Отлично подойдет для новичков, интерактивен, изложение ведется плавно от простого к сложному, достаточно интересные задачи, можно смотреть комментарии от пользователей, что очень полезно если не знаешь решения. Курс бесплатный.

Совет: Некоторые условия задач описаны очень непонятно, в связи с этим сразу смотрите в комментарии, там найдете разъяснение задачи.

В день рекомендую уделять этому ресурсу 1 час.

Почему трейдеры больше не могут зарабатывать без роботов

3. Решение задач в Pythontutor.ru

Для закрепления знаний полезным будет ресурс Pythontutor. Это интерактивный учебник по Python, с большим количеством примеров и хорошими задачами. Интересная особенность в том, что после решения задачи можно посмотреть варианты решений от разработчиков и других участников.

Ежедневно рекомендую решать хотя бы по одной задаче.

4. Книги: Swaroop — «A Byte of Python»(Укус питона)

«Укус питона» это бесплатная книга по Python, отличается минимальным количеством «воды» и большим количеством примеров. Содержит всего 150 страниц, при этом отлично показывает возможности языка.

Совет: При чтении книг по программированию необходимо запускать пример кода у себя в IDE для лучшего усвоения материала.

В день достаточно читать по 5-10 страниц.
В качестве IDE рекомендую бесплатный PyCharm Community.

По желанию: Видео курсы по Python на YouTube

Серия видеоуроков средней продолжительностью в 10 минут, состоящая из 21 эпизода поможет заполнить пробелы в полученных ранее знаниях.

Для знающих английский очень хорошо будет просмотеть курс Learn Python — Full Course for Beginners. В общей сложности материал состоит из четырех с половиной часов обучающего видео.

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

В интернете множество методик и материалов для изучения английского, каждый сможет подобрать подходящее для себя, но не откажусь порекомендовать книгу по грамматике Раймонда Мерфи — Essential Grammar in Use. Написана полностью на английском, но предельно простым языком и со множеством иллюстраций.

Этап 1.2. Основы биржевого дела

Также необходимо изучать основы биржевого дела и ниже я дам пару советов.

Популярные торговые роботы, боты для торговли на бирже криптовалюте

1. Изучение функционала Trader Workstation от Interactive Brokers:

Для этого вам будет необходимо открыть демо-счет .

Терминал TWS имеет отличный демо-режим, на котором доступен 1 000 000 виртуальных долларов и неограничен по времени. Его можно изучить вдоль и поперек. Но для начала необходимо научиться просто ориентироваться в интерфейсе, уметь искать, выбирать, покупать, продавать активы.

Вот несколько обучающих видеороликов:

  • Горячие Клавиши ,
  • Работа с графиками ,
  • Индикаторы ,
  • Настройка стакана ,
  • Как выставлять ордер ,
  • Как совершать сделки,
  • Работа с облигациями ,
  • Watchlists sns.set() # 18 strats = [‘returns’] # 19 for col in cols: # 20 strat = ‘strategy_%s’ % col.split(‘_’)[1] # 21 df[strat] = df[col].shift(1) * df[‘returns’] # 22 strats.append(strat) # 23 df[strats].dropna().cumsum().apply(np.exp).plot() # 24

    Получим следующую диаграмму:

    Проанализировав диаграмму, мы видим, что в течение рассматриваемого периода, сам инструмент имеет отрицательную доходность около -2%. Моментум-стратегия, основанная на 120-минутных интервалах, показывает наилучший результат, демонстрируя положительную доходность около 1.5% (без учета разницы между спросом и предложением (bid/ask spread)). По сути, данная стратегия показывает «реальную альфу»: она обеспечивает положительную доходность даже тогда, когда сам инструмент имеет отрицательную доходность.

    Автоматическая торговля

    Выбрав торговую стратегию, мы можем полностью автоматизировать торговые операции. Чтобы ускорить процесс, мы используем данные с дискретностью 5 секунд, вместо 1 минуты, как было при тестировании. Автоматизировать торговлю можно с помощью одного достаточно компактного класса:

    In [5]: class MomentumTrader(opy.Streamer): # 25 def __init__(self, momentum, *args, **kwargs): # 26 opy.Streamer.__init__(self, *args, **kwargs) # 27 self.ticks = 0 # 28 self.position = 0 # 29 self.df = pd.DataFrame() # 30 self.momentum = momentum # 31 self.units = 100000 # 32 def create_order(self, side, units): # 33 order = oanda.create_order(config[‘oanda’][‘account_id’], instrument=’EUR_USD’, units=units, side=side, ENGINE=’market’) # 34 print(‘n’, order) # 35 def on_success(self, data): # 36 self.ticks += 1 # 37 # print(self.ticks, end=’, ‘) # appends the new tick data to the DataFrame object self.df = self.df.append(pd.DataFrame(data[‘tick’], index=[data[‘tick’][‘time’]])) # 38 # transforms the time information to a DatetimeIndex object self.df.index = pd.DatetimeIndex(self.df[‘time’]) # 39 # resamples the data set to a new, homogeneous interval dfr = self.df.resample(‘5s’).last() # 40 # calculates the log returns dfr[‘returns’] = np.log(dfr[‘ask’] / dfr[‘ask’].shift(1)) # 41 # derives the positioning according to the momentum strategy dfr[‘position’] = np.sign(dfr[‘returns’].rolling( self.momentum).mean()) # 42 if dfr[‘position’].ix[-1] == 1: # 43 # go long if self.position == 0: # 44 self.create_order(‘buy’, self.units) # 45 elif self.position == -1: # 46 self.create_order(‘buy’, self.units * 2) # 47 self.position = 1 # 48 elif dfr[‘position’].ix[-1] == -1: # 49 # go short if self.position == 0: # 50 self.create_order(‘sell’, self.units) # 51 elif self.position == 1: # 52 self.create_order(‘sell’, self.units * 2) # 53 self.position = -1 # 54 if self.ticks == 250: # 55 # close out the position if self.position == 1: # 56 self.create_order(‘sell’, self.units) # 57 elif self.position == -1: # 58 self.create_order(‘buy’, self.units) # 59 self.disconnect() # 60

    Следующий фрагмент кода запускает класс MomentumTrader на выполнение. Расчет моментум-стратегии выполняется на основе интервалов по 12 наблюдений. Класс автоматически прекращает торговлю после получения 250 блоков данных. Это значение выбрано произвольно, чтобы быстро продемонстрировать работу класса MomentumTrader.

    In [6]: mt = MomentumTrader(momentum=12, environment=’practice’, access_token=config[‘oanda’][‘access_token’]) mt.rates(account_id=config[‘oanda’][‘account_id’], instruments=[‘DE30_EUR’], ignore_heartbeat=True)

    Вывод, представленный ниже, показывает отдельные торговые операции, выполняемые классом MomentumTrader, в процессе демонстрации:

    , ‘tradesClosed’: [], ‘tradeOpened’: , ‘instrument’: ‘EUR_USD’> , ‘tradesClosed’: [], ‘tradeOpened’: , ‘instrument’: ‘EUR_USD’> , ‘tradesClosed’: [], ‘tradeOpened’: , ‘instrument’: ‘EUR_USD’> , ‘tradesClosed’: [], ‘tradeOpened’: , ‘instrument’: ‘EUR_USD’> , ‘tradesClosed’: [], ‘tradeOpened’: , ‘instrument’: ‘EUR_USD’> , ‘tradesClosed’: [], ‘tradeOpened’: <>, ‘instrument’: ‘EUR_USD’>

    На рисунке ниже показано приложение Oanda fxTrade Practice, где мы видим класс MomentumTrader в действии.

    Все результаты, представленные в данной статье, получены с помощью демонстрационного аккаунта, в котором не используются настоящие деньги. Этот аккаунт является симулятором для пробной реализации алгоритмической торговли. Чтобы перейти к реальным операциям с реальными деньгами, необходимо настроить полноценный аккаунт Oanda, внести необходимые средства, и изменить параметры аккаунта в коде. Сам код изменять не нужно.

    Заключение

    В данной статье мы рассмотрели быстрый старт в алгоритмической торговле, для которого требуется менее 100 строк Python-кода. Мы обсудили все основные этапы реализации подобных проектов: получение исторических данных для тестирования, тестирование стратегии, автоматизация торговых операций на основе выбранной стратегии. Представленный код является отправной точкой, откуда можно двигаться в различных направлениях. Например, можно использовать различные стратегии, задейстWowать различные инструменты или работать с несколькими инструментами одновременно.

    О популярности алгоритмической торговли свидетельствует появление различных типов торговых платформ. Например, создатели Quantopian – онлайн-платформы для тестирования стратегий алгоритмической торговли – сообщили в конце 2016 года о привлечении более 100000 пользователей. Торговые онлайн-платформы, подобные Oanda, а также специализирующиеся на криптовалюте, такие как Gemini, позволяют очень быстро начать торговлю на реальном рынке, присоединившись к тысячам трейдеров, живущих во всех точках земного шара.

    Источник: datareview.info

Рейтинг
( Пока оценок нет )
Загрузка ...
Заработок в интернете или как начать работать дома