Pull to refresh

Comments 30

Лучше бы вы начали с чтения багтрекера openapi. Столько фатальных проблем, висящих месяцами. Ещё и разработка полностью заглохла - последний релиз в начале 2020 года. И фьючерсами торговать нельзя (обещают в api v2, но когда оно будет неизвестно).

Думаю, у вас всё застрянет на побаловался и бросил.

У брокера Алор есть REST/WEBSOCKET API, с фьючерсами. Правда, судя по телеграм каналу, такое же глючное и падающее.

Серьезный подход - это купить у ММВБ шлюз fix или plaza II. Небесплатно, но вы деньги свои туда понесёте.

Я читал :). Особенно "порадовали" про API 2.0 и фьючерсы.

Но тут вот в чем дело, я не рассматриваю торгового робота, как грааль, который поможет заработать стопицот миллионов, смысл данной задачи лишь в том, чтобы удовлетворить запрос читателей на просьбу сделать пример торгового робота. Для меня лично API - это источник данных о котировках и портфеле для анализа.

Что касается проблем, висящих месяцами, как человек, разрабатывающий ПО для банков, могу сказать, что аналогичная ситуация характерна для любого, подчеркну, для абсолютно любого банка. И оперативно решаются лишь суперкритические задачи, которые не позволяют обслужить клиента, сдать корректную отчетность или закрыть операционный день. Очевидно, что проблемы пользователей API не относятся к таскам высокого приоритета. Я видел, задачи, которые висели годами, пока система не изменялась до такой степени, что баг не то что смоделировать невозможно, невозможно было понять о чем речь идет, так и закрывали.

Что касается других API, могу сказать, что буду проектировать систему таким образом, чтобы разработанные интерфейсы позволяли подменить API на альтернативные, если потребуется. Ну а до plaza не дорос я еще... Идея в проекте :).

Уверен, что подобные статьи побуждают интерес сотрудников TINKOFF к доработке продукта, ведь скорее всего, этот материал просмотрят несколько десятков тысяч человек, что не останется незамеченным в банке, как и наши с Вами комментарии.

И напоследок, могу сказать, что разработчики TINKOFF – крутые, не смотря на то, что я пишу ПО для других банков, не могу не отметить того факта, что многие бизнес-процессы организованы очень классно! Что называется, снимаю шляпу перед коллегами по цеху. Будем надеяться, что и API доработают.

Ещё могу добавить, что сгенерить клиента сваггером, чем брать java SDK.

У java SDK 2 года назад были лютейшие глюки вида: шлем ордер, прилетает ошибка 500, а ордер в реале отработан. И наоборот, шлем ордер, прилетает ОК, а ордер не отработан. Учитывая заброшенность всего этого хозяйства, баги могут быть не починенными.

"разработчики TINKOFF – крутые"

Хуже брокера не встречал для интрадея, даже если трейдить через оф приложение и веб терминал.

А как Вам скорость ввода и вывода средств? Открытия или закрытия счетов? Работа службы поддержки, и т.п.? Стоит признать, что нет в Мире совершенства. Может я не настолько активно торгую, что не налетал на баги... Единственный баг, который я заметил - это отрисовка последней свечи на графике, я об этом писал в отзыве о клиенте, но получил стандартную отписку в виде бла, бла, бла, опишите проблему, заведите заявку на саппорте...

В общем, радует одно - в конкуренции рождаются новые продукты и улучшаются существующие. Кстати, а какого брокера Вы порекомендуете? У меня основная претензия к ТИНЬКОФФ - это конские комиссии, в том числе за ведение счета...

Поддержка пока ниже плинтуса. Срок - год. Статус - премиум.

Именно так. Вот скоро уже почти как 2 года исполнится багу:
https://github.com/TinkoffCreditSystems/invest-openapi/issues/118
С этим багом автоматическая торговая чуть более, чем бесполезна.

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

два вопроса к аудитории:

  • тема статьи соответствует содержимому?

  • как вставить картинку "рука-лицо"?

если серьёзно, то ув. автор! разработка торгового робота это: разработка торговой стратегии, проверка торговой стратегии на исторических данных и организации торговли в реалтайм

а Ваша статья, судя по поставленным задачам, это лишь получение исторических данных по торговому инструменту и визуализация их.

упомянутый Метатрейдер (всуе) - делает это из "коробки", плюс...даже огромный плюс - он умеет тестировать торговые стратегии и в "два клика" подключает любую .dll написанную на С++ или С#

ну и конечное есть еще Python и большое комьюнити алготрейдинга, где можно загрузить исторические данные по торговому инструменту и создать торгового робота

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

заранее спасибо

Не все сразу, думаю, что в 3-й или 4-й части будет торговый алгоритм. С перерывом на отпуск и праздники, это ориентировочно февраль-март 2022 года, к счастью, есть ещё работа помимо хабоа, а написание статей требует времени, при этом никак не влияет на кошелек.

Что касается MetaTrader, я пробовал с ним работать. Не понравилось, C-подобный прикладной язык лично мне не подошел, хотя, если кому-то нравится, то в чем проблема?

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

На счёт Python, равно как и других языков, тут и вовсе спорить не о чем. Вы ведь слышали о микросервисной архитектуре, понимаете в чем суть? Не важно на чем писать, главное, чтобы была возможность интеграции.

Ну и раз уж Вы проявляете интерес к данной теме, давайте совместно разработаем и протестируем торговый алгоритм? Как насчёт этого?

Ну и раз уж Вы проявляете интерес к данной теме, давайте совместно разработаем и протестируем торговый алгоритм? Как насчёт этого?

протестировать алгоритм могу, МТ5/МТ4 знаю на 99% +1% багов терминалов, с Python не хватает времени закончить изучение, но все решаемо

разрабатывать торговый алгоритм ... я пас - протестировано 100500 идей за 5 или 6 лет, единственное понимание, чтобы всегда торговать в профит - нужно знать будущее, а вот с этим как то пока не получается

3 месяца не срок, понаблюдаю за циклом статей, может и я не прав, а у Вас все по полочкам - нужно только подождать :)

Забавно! Я тоже прихожу к такому выводу ))). Именно по этой причине я не ставлю себе амбиций задачи в разработке Грааля по заработку. А вот хорошего советника вполне можно написать, тем более у меня есть в друзьях опытный инвестор, который в ЛЧИ занимает неплохие позиции. Попробую его привлечь.

Ну ведь не допотопными QUIK и MetaQuote с их конструкциями из костылей на LUA и MQL пользоваться в 21 веке?


Не совсем понятно чем не угодил MQL. Понятно что урезанный язык. Вот только работает корректно, без этих диких сюрпризов что вы описали выше. Более того все эти ваши пляски с бубном в MQL решаеются одной строчкой:

Print(SymbolInfoDouble("EURUSD",SYMBOL_BID));


Следующую статью я планирую посвятить теме получения исторических данных и online котировок,


Не мучайтесь, вашу следующую статьи можно сократить до:

Print(iClose("EURUSD",PERIOD_D1,7));


Прямо из коробки! Вот прям сел, написал, запустил. Все. Вот они которовки!
Не нравится чистый MQL — теперь можно на Phyton.

А что вы будете делать когда надо будет тестировать стратегию? Свой тестер писать?
А график наложить — свое GUI?

Я не спорю, что при профессиональной торговле это определенно может потребоваться. Только уже есть готовые решения, к чему свой велосипед? Вы только на тестирование кода потратите не один год: правильный расчет свопов, расчет кроскурсов, дивиденды, тиковые истории, кэши истории… да там столько всего.

Ну ок, возможно у вас много времени и энергии. Но при указанных вами багах я бы даже не подходил к такому АПИ. Правильно вам выше сказали — курите FIX уважаемых брокеров.

И я не топлю за MQL. Про Квик вообще не скажу. Претензия заключается в том, что вы охаяли нормальное и рабочее в целом решенее, предлагая в замен позаниматься сексом с вообще каким-то трэшем:

Имеются инструменты, в которых шаг изменения цены попросту не задан.


Не надо так. Люди смотрят.

Справедливое замечание!

Мне не понравился MQL. Прикладной язык обладает известными ограничениями в интеграции с внешними системами. В остальном, с вашими доводами сложно спорить.

Касаемо тестеров стратегий, я планирую использовать библиотеку TA4J. Судя по описанию, необходимые инструменты в ней имеются, но на практике я с ней ещё не знаком. Посмотрим, попробуем.

Для GUI, на JAVA полно библиотек для визуализации, например, JFREECHART о котором я писал.

Не думаю, что я кого-то обидел, высказыв свое мнение про MQL. Попробовав писать на нем, я пришел к заключению, что не стоит ждать его развития. Возможно, я заблуждаюсь... Посмотрим.

Мне не понравился MQL. Прикладной язык обладает известными ограничениями в интеграции с внешними системами. В остальном, с вашими доводами сложно спорить.

Вы точно видели MQL ?

не видел МТ3, но по утверждениям разработчиков даже в нем было реализован вызов внешних динамических библиотек .dll

в МТ5 давно уже реализована интеграция с C# (правда только с .NET Framework) - все упрощено до "два клика", не нужно описывать даже сигнатуры функций подключаемой библиотеки на .NET Framework - все подключение пишется в одной команде:

#import "имя_файла.dll"

.... пока остановлюсь, обещал же пару месяцев понаблюдать

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


Это не так:

//-------------------------------------------------
#import  "Wininet.dll"
int InternetOpenW(string, int, string, string, int);
int InternetConnectW(int, string, int, string, string, int, int, int);
bool InternetReadFile(int, uchar &buffer[], int, int& one_int[]);
int InternetCloseHandle(int);
int HttpOpenRequestW(int, string, string, string, string, char& AcceptTypes[], int, int);
bool HttpSendRequestW(int, string, int, string, int);
int InternetSetOptionW(int hInternet, int dwOption, int& lpBuffer[], int dwBufferLength);
#import
//-------------------------------------------------
#import "kernel32.dll"
int GetLastError(void);
#import
//-------------------------------------------------
#import "foo.dll"
int bar(void);
#import


… и весь мир у ваших ног

Здорово! Если честно, я не погружался, настолько глубоко в MQL, возможно, мои выводы насчёт ограниченности несколько поспешны. Очевидно, в вопросах MQL у Вас больше опыта.

Напомните, мне, как можно установить робота, разработанного на MQL на арендованный сервер, например Digital Ocean, и т.п.?

Напомните, мне, как можно установить робота, разработанного на MQL на арендованный сервер, например Digital Ocean, и т.п.?

Metatrader работает только под Windows, можно запустить под Wine - разработчики утверждают, что добились стабильной работы. А так все на "уровне домохозяйки" - установили терминал, положили робота в папку Expert - открыли чарт торгуемого инструмента и перетянули мышкой робота на чарт из навигатора терминала.

Metatrader юзерфрендли софт, а негатив о нем по другую сторону терминала - не стационарность временных рядов, помноженная на большое количество жуликов - ДЦ

Спасибо, именно к этому я и вел.

Напомните, мне, как можно установить робота, разработанного на MQL на арендованный сервер, например Digital Ocean, и т.п.?


Создается впечатление, что вы не просто не интересовались MQL, а даже не заходили на их сайт, начав пилить свой велосипед. Но, не беспокойтесь — я сам такой же.

Есть как минимум два варианта:
— Арендовать любой VPS на Windows
— Использовать встроенный VPS в MetaTrader: MetaTrader 5 Virtual Hosting: Run your trading robots and signal subscriptions 24/7 (Forex VPS)

В последнем варианте вообще минимум телодвижений.
Фразы ниже в комментариях типа: «Не стал учить MQL...» вообще честно говоря звучат странно. Чего там учить — весь MQL это набор из сотни — другой специальных функций с Cpp подобным синтаксисом. Если вы владеете Java — вы простого робота напишите за один вечер.

Но я не об этом. Вы вот сейчас горите идеей своей стратегии которая принесет вам миллионы. Как и многие, многие и очень многие до вас) И пошли по длинному пути.
Я вам ОЧЕНЬ рекомендую сделать черновик на любом доступном софте потратив как можно меньше времени, прогнать свою стратегию в тестере и убедиться, что она не работает ни черта и забыть об этом.
Ну или двигаться дальше.
Начинать ковырять АПИ без рабочей и проверенной страегии — время в пустоту.

Да знаю я про VPS. Привязка к платформе, отсутствие возможности интеграции с внешними системами, да что я по 10 раз повторяю одно и то же?

Речь ведь про Tinkoff invest API и Java, а не Meta Trader и MQL.

Если вы:
Да знаю я про VPS

То для чего вы спрашиваете:
Напомните, мне, как можно установить робота, разработанного на MQL на арендованный сервер


отсутствие возможности интеграции с внешними системами

Вы ни разу так и не сказали в чем собственно вы испытываете ограничение. Пока, судя по комментариям, все ваши ограничения из-за узкого кругозора.

Как написать интерфейс к данной системе? А подключить телеграмм-бота, а загрузить данные в СУБД? Или запустить вне windows? А может Вы нашли способ работать с нескольким десятком инструментов в своей стратегии? Вы не видите этих ограничений?

И даже если Вы найдете как обойти часть этих ограничений, это не отменит того факта, что MQL - прикладной язык, который служит для определенных целей, и сравнивать его с Java не имеет никакого смысла.

Python все умеет "из коробки"

повторюсь еще раз - это все умеет MetaTrader 5 "из коробки" , MetaTrader 4 все умеет то же самое, кроме штатных встроенных в язык функций для работы с SQLite и тестирования стратегий на нескольких торговых инструментах - именно тестирования. Это все без подключения сторонних библиотек, все средствами языка MQL = С++ начала 2000-х годов.

.... хотя так то да... без операционной системы Windows (Wine ?) - MetaTrader не имееют смысла

ЗЫ: а без установленной Java Platform слабо запустить взаимодействие с Tinkoff Invest API ?

ЗЫЗЫ: увлекаться начал, нужно останавливаться, у каждого есть свой путь с удачно разбросанными граблями. Не обращайте внимания!

Вы не видите этих ограничений?

Да нет их.
Вы, уважаемый, либо упорно не желаете пользоваться Гуглом, либо это потенциальное желание оставаться слепым:
отсутствие возможности интеграции с внешними системами, да что я по 10 раз повторяю одно и то же?

Вот и я удивляюсь. Перестаньте повторять и забейте каждый из ваших вопросов выше в соседнюю вкладку браузера, не сюда. Здесь за вас искать не будут. Вы удивитесь.
MQL — прикладной язык, который служит для определенных целей

Так ктож с этим спорит! До вас пытаются донести, что конкретно в вашем случае это НЕ недостаток, а специально оптимизированный инструмент под конкретно вашу задачу.

То что вы пытаетесь сделать в вашей статье лишено смысла. Что делает и статью в целом безполезной.
Вы не улавливаете главного посыла:

Но я не об этом. Вы вот сейчас горите идеей своей стратегии которая принесет вам миллионы. Как и многие, многие и очень многие до вас) И пошли по длинному пути.
Я вам ОЧЕНЬ рекомендую сделать черновик на любом доступном софте потратив как можно меньше времени, прогнать свою стратегию в тестере и убедиться, что она не работает ни черта и забыть об этом.


Хотя ешьте кактусы…

Поддержу автора в желании написать софт на языке, запрос по названию которого (java) выдаст огромный список вакансий на любом сайте поиска специалистов/работы. (Запрос программист java).

Сам как программист 1с в тоже не стал учить ни MQL ни LUA. балуюсь этой же темой на 1С+Python

Я пробовал писать на MQL, сначал был в полном восторге, затем пришел к выводу, что существующие ограничения мне не очень нравятся. Так и пришел к Тинькофф API. Хотя, судя по комментариям, очень многие успешно пользуются MQL и, возможно, я был несправедливо резок в своем высказывании относительно MQL.

Никого не слушайте и продолжайте идти своим путем. Понятно, что конкуренты будут писать плохо, приводить свои доводы, понятные только им. Просто сделайте свою систему. На этом рынке нет никаких правил и лидеров рынка.

Вообще не понимаю о чем тут спор идет ?! Автор предложил обучающий пример на базе Java? зачем тут вообще ссылаться на готовые профессиональные проекты типа MetaTrader ?!

Так бывает, когда комьюнити MT больше, чем java в данной конкретной области.

Only those users with full accounts are able to leave comments. Log in, please.