Начнем писать трейдинг бота, который будет работать на криптобирже Binance. Бот должен уметь:
торговать самостоятельно, принося какой-то доход
должен быть удобен для создания и обкатывания различных стратегий торговли
тестировать стратегию на исторических данных
Пожалуй, начнем с архитектуры
У нас есть биржа Binance, у которой есть шикарное api. Поэтому архитектура могла бы выглядеть так:
Вызвать пару методов “купи дешевле” и “продай дороже”. Но задача для нас написать такого бота, при котором условный программист-трейдер сможет создавать и тестировать на прибыльность новые стратегии. Поэтому, необходимо отделить логику торговли от всего прочего. А также модулю логики должно быть все равно к какой бирже его подключили: к реальному API или к псевдо-API (для тестирования). С учетом всего этого получилась примерно вот такая архитектура:
Базу выбрал PostgreSQL. Тут нет никакого тайного умысла. Вы можете использовать любую.
В связи с тем, что каждый модуль стоит внимания, это все не поместится в одну статью. Поэтому я начинаю мини-сериал: "Пишем качественного трейд бота на JS". Поэтому подписывайтесь, устраивайтесь поудобней - начинаем
Сервис для логов
Простой класс, который принимает на вход префикс для логирования и имеет два метода log
и error
. Эти методы печатают лог с текущим временем и перфиксом:
class LoggerService {
constructor(prefix) {
this.logPrefix = prefix
}
log(...props) {
console.log(new Date().toISOString().substr(0, 19), this.logPrefix, ...props)
}
error(...props) {
console.error(new Date().toISOString().substr(0, 19), this.logPrefix, ...props)
}
}
Теперь подключим биржу
yarn add node-binance-api
Добавим класс BaseApiService. Сделаем в нем инициализацию Binance SDK, а также применим сервис LoggerService. Учитывая мой опыт с Binance могу сразу сказать, что в зависимости от торговой пары мы должны слать цену и обьем с разным количеством знаков после запятой. Все эти настройки для каждой пары можно взять, сделав запрос futuresExchangeInfo()
. И написать методы для получения количества знаков после запятой для цены getAssetPricePrecision
и объема getAssetQuantityPrecision
.
class BaseApiService {
constructor({ client, secret }) {
const { log, error } = new Logger('BaseApiService')
this.log = log
this.error = error
this.api = new NodeBinanceApi().options({
APIKEY: client,
APISECRET: secret,
hedgeMode: true,
})
this.exchangeInfo = {}
}
async init() {
try {
this.exchangeInfo = await this.api.futuresExchangeInfo()
} catch (e) {
this.error('init error', e)
}
}
getAssetQuantityPrecision(symbol) {
const { symbols = [] } = this.exchangeInfo
const s = symbols.find(s => s.symbol === symbol) || { quantityPrecision: 3 }
return s.quantityPrecision
}
getAssetPricePrecision(symbol) {
const { symbols = [] } = this.exchangeInfo
const s = symbols.find(s => s.symbol === symbol) || { pricePrecision: 2 }
return s.pricePrecision
}
}
Дальше добавляем метод создания ордера, с учетом правильного количества знаков после запятой для цены и обьема:
async futuresOrder(side, symbol, qty, price, params={}) {
try {
qty = Number(qty).toFixed(this.getAssetQuantityPrecision(symbol))
price = Number(price).toFixed(this.getAssetPricePrecision(symbol))
if (!params.type) {
params.type = ORDER.TYPE.MARKET
}
const res = await this.api.futuresOrder(side, symbol, qty, price || false, params)
this.log('futuresOrder', res)
return res
} catch (e) {
console.log('futuresOrder error', e)
}
}
Теперь бот умеет создавать ордера. Научим его слушать события из биржы для того, чтоб он мог отлавливать изменения статуса ордеров. Для этого создадим класс TradeService.
class TradeService {
constructor({client, secret}) {
const { log, error } = new LoggerService('TradeService')
this.log = log
this.error = error
this.api = new NodeBinanceApi().options({
APIKEY: client,
APISECRET: secret,
hedgeMode: true,
})
this.events = new EventEmitter()
}
marginCallCallback = (data) => this.log('marginCallCallback', data)
accountUpdateCallback = (data) => this.log('accountUpdateCallback', data)
orderUpdateCallback = (data) => this.emit(data)
subscribedCallback = (data) => this.log('subscribedCallback', data)
accountConfigUpdateCallback = (data) => this.log('accountConfigUpdateCallback', data)
startListening() {
this.api.websockets.userFutureData(
this.marginCallCallback,
this.accountUpdateCallback,
this.orderUpdateCallback,
this.subscribedCallback,
this.accountConfigUpdateCallback,
)
}
subscribe(cb) {
this.events.on('trade', cb)
}
emit = (data) => {
this.events.emit('trade', data)
}
}
При помощи метода из SDK this.api.websockets.userFutureData
подписываемся на события из биржы. Самой главный колбек для нас this.orderUpdateCallback
. Он вызывается каждый раз когда меняется статус у ордера. Ловим это событие и прокидываем через EventEmitter
тому, кто на это событие подписался, используя метод subscribe
.
Перейдем к базе данных
Для чего она нужна? В базе будем хранить все ордера, а также всю историю торговли бота. Пользователей с их ключами к бирже и балансами. В последствии сможем считать сколько бот принес прибыли/убытка. Тут останавливаться долго не буду. Подключаю sequlize.
yarn add sequelize-cli -D
yarn add sequelize
npx sequelize-cli init
Добавим docker-compose.yml файл для локальной базы:
version: '3.1'
services:
db:
image: 'postgres:12'
restart: unless-stopped
volumes:
- ./volumes/postgresql/data:/var/lib/postgresql/data
environment:
POSTGRES_USER: root
POSTGRES_PASSWORD: example
POSTGRES_DB: bot
ports:
- 5432:5432
networks:
- postgres
networks:
postgres:
driver: bridge
А также добавляю миграции и модели. User
, Order
Продолжение следует.
В следующей статье будем писать ядро, которое соединит все эти части и заставит бота торговать.
silent_jeronimo
Интересно, почему мне кажется, что главная цель таких туториалов — заманить людей на биржу :)
nullc0de
В корень зрите. Или еще хуже, продать своего не рабочего робота, собрать учеников, которым можно пудрить мозги и собрать с них денег. Есть этому даже профессиональный термин -«около рыночники». Еще есть пословица: — «Учить идут те кто не смог стать успешным, достичь чего-то в жизни и самореализоваться...». Сейчас очень много мошенников развелось. Честно говоря с этой крипто лихорадкой уже устал от этих успешных трейдеров, везде они, везде их реклама, а самое главное они сыпятся на банальных и простых вопросах. Народу только мозги пудрят. Ни JS ни python не подходят для торговли на нормальной бирже. python популярен по той лишь причине, что он вместе R являются самыми популярными языками для анализа данных, сейчас правда еще julia набирает темпы. Для реальных торгов они плохо подходят. Большая часть роботов пишут на C# из-за удобства быстрой разработки, доступных библиотек чартов, гридов, легкой интеграции с C++, чтобы писать коннекторы. Большинство коммерческих проектов имеют биндинги только на C#. Другое в продакшене практически не видел. Крипту принципиально не торгую, там более высокие риски, и самый большой риск это кидок биржи. В прошлом уже были случаи кидков мелких и средних крипто бирж. А на крупных биржах типа poloniex зарегистрироваться очень сложно, даже если им отослать документы в хорошем качестве, большая вероятность, что они отклонят регистрацию.
vectorplus
Трейдинг бота, работающего через АPI, можно на чём угодно написать. А серьёзные ребята сидят через стенку от биржи и воюют за наносекунды, там не язык решает, а оборудование.
powerman
Как раз когда речь о наносекундах разница между некоторыми языками становится весьма заметна и местами критична.
Mox
Когда речь идет о HTTP API для биржи, которая хз где и только ping=50ms, то речь не идет о супербыстрой реакции и какие-то другие стратегии нужны
powerman
Если Вы обратите внимание, то я отвечал на кейс когда наш сервер "через стенку от биржи". В ситуации когда сетевая задержка до биржи уже минимизирована и у остальных участников она такая же или хуже — наносекунды на обработке данных и принятии решения вполне могут определять исход.
gorgona45
Не язык и не оборудование решает по большому счету, а банька с правильными людьми и(или) гольф-клуб с ними же. Супротив инсайда все эти гонки за наносекунды — просто лажа и умножение вселенской суеты АКА энтропии.
vectorplus
Я не про РФ, а про NYSE, например. Там никакие баньки не решают. Инсайд имеет значение для разовых покупок, а когда триллион транзакций в секунду, какая там банька.
nochkin
В случае с NYSE не важно если сидеть через стенку или через две серверные комнаты — у всех будет одинаковый «пинг».
vectorplus
Да нет же.
google:«High-frequency trading»
nochkin
При чём тут это? Я просто сказал как на NYSE это построено в их датацентрах.
Внутри датацентра одинаковые задержки вне зависимости за стенкой или через две комнаты.
anonymous
они гарантируют вам только одинковую длину кабеля. ну и плюс к какому свичу вас подключат и кто на этот свиче будет вашим соседом и как он вам будет «мешать» своим трафиком. а потом уже задержки уже будут зависеть от того что вы там у себя «через стенку» поставите и на чем напишете.
nochkin
Верно. Я об этом и написал, что дело в своём оборудовании, а не в расстоянии до стенки или через две стенки.
anonymous
расстояние тоже имеет значение для «честности» подключения. при всех равных условиях — выигрывает тот, у кого короче. поэтому для обеспечения «честности» биржи короче делают всем. а все остальное — уже не забота биржи.
nochkin
Конечно. Фишка в том, что NYSE делает как раз всем одинаково.
anonymous
не только NYSE — все биржи мира так делают
nochkin
Конкретно речь была про NYSE.
anonymous
про NYSE речь шла не «конкретно», а «например»
nochkin
Именно по этой причине я про NYSE и ответил. За других просто не ручаюсь, но предполагаю, что там нечто похожее.
Не удивлюсь если эта «фича» идёт от федеральных требований, но тут я не в курсе.
DigitalBerd
Эти серьёзные ребята называются «высокочастотный алготрейдинг» — для простых смертных это недоступно, и вот почему:
Комиссия биржи 0,01% за покупку/продажу. Комиссия брокера — минимальная, какую видел — 0,05% за покупку/продажу. Итого чтобы купить и потом продать акции — нужно заплатить комиссию минимум 0,12% от стоимости акций. Если акция стоит условно 100 рублей, нужно будет за покупку/продажу отвалить 12 копеек. Соотвественно, все колебания акций менее 12 копеек в этом случае мы можем торговать только в минус из-за комиссий.
Высокочастотный трейдинг — условно более 1 покупки/продажи в секунду. Чтобы заниматься высокочастотным трейдингом — нужно торговать как минимум без комиссии брокера, а лучше и без комиссии биржи — т.к. все мелкие ежесекундные колебания акций, на которых высокочастотный трейдниг и работает — они на уровне 1-5 копеек в секунду — при комиссии брокера в 10 копеек с условной сотни рублей за акцию.
Соответственно, заниматься высокочастотным трейдингом эффективно можно только будучи самому брокером.
Чтобы зарегистрировать брокера — нужно:
Соответственно, все эти варианты торговли на бирже для частников вроде нас закрыты — остаётся только алготрейдинг с комиссией в 12 копеек на 100 рублей акций на 1 полный цикл покупки/продажи акций.
anonymous
> Эти серьёзные ребята называются «высокочастотный алготрейдинг»
нет. не так они называются
glestwid
Что, неужто ботом на них хотя бы половину ставки рефинансирования ЦБ на бирже не поднять?
okosynskyi Автор
есть торговые стратегии. в которых позиция сохраняется неделями. и для этой торговли не нужны «наносекунды»
vmkazakoff
Настоящее обучение должно быть безвозмездным!
Вот люди, которые знаю как зарабатывать миллионы на криптовалюте, но вместо этого обучающие этому за 150$ - настоящие герои! (С)
Ну и картинка в тему
Gor1950
Экстрасенсы и провидцы это разные объекты
(Хотя сама Битва — супер шарлатанское шоу)
okosynskyi Автор
никого не заманиваю на биржу и не агитирую торговать. реф ссылку не вставил.
resk0
Бот это хорошо. Но реально суть биржи в том, что если ты выиграл, то кто-то проиграл. Ожидать что ты будешь постоянно в числе первых — маловероятно. В среднем все 50-50 с переменным успехом.
Представьте себе ситуацию что у всех одинаковый бот. Или например что в биржевой торговле принимают участие только 2 бота.
addewyd
Если учесть комиссию, вообще в минус.
GospodinKolhoznik
По возможности старайтесь быть брокером, тогда будете получать комиссию, а не платить её.
nullc0de
Тут вы попадаете в классическую ошибку мышления. Изучайте теорию игр, что есть игры с нулевой и не нулевой суммой. Все проще, конечно зависит от типа рынка, где-то больше спекулятивных сделок. Но первым типом игроков были инвесторы, они покупали дешево в надежде заработать. Но так как деньги инвесторов большие они набирают позицию месяцами, и даже годами. Они используют экономические отчеты компаний и фундаментальный анализ для принятия решений. Если посмотреть исторические графики, то почти все инструменты всегда росли на большом промежутке времени. Отсюда инвесторы почти всегда зарабатывали. Они не могут быстро избавиться от своей большой позиции и набрать ее, иначе они шатнут рынок и повысят волатильность, что может сыграть против них. Так вот медленность инвесторов начали эксплуатировать трейдеры, и появился второй тип игроков, они более быстрые и оперируют меньшими деньгами. Они используют не эффективность инвесторов в скорости, и быстрее открывают и закрывают позиции и зарабатывают на локальных изменениях цены. Зарабатывают оба, как инвесторы так и трейдеры. Просто трейдеры съедают часть прибыли инвестора, но это не говорит, что они проиграли. Они просто заработали меньше. Что для вас условно 50% прибыли, это для инвестора может быть 0.01% недополученной прибыли. Основная причина потери денег на рынке это жадность, не знание банальных вещей, отсутствие дисциплины. Все гонятся за прибылью, отсюда разгоняют дисперсию стратегии. Чем больше прибыль тем чаще выше риск и дисперсия, тем больше может быть локальное отклонение от математического ожидания. Для оценки этого есть коэффициент шарпа и сортино. Вот для обучения таким вещам писал симулятор, который показывает как дисперсия влияет на результат, и как от средней линии(математического ожидания) могут отклоняться разные игроки. h0tc0d3.github.io/evtools/#/en/ev.html
В на рынках помогает зарабатывать только теория вероятностей и математическое ожидание, плюс с помощью определенных приемов можно уменьшить риск. Из них же вытекает система риск менеджмента, она же решает успех. Есть комплексные стратегии и методы хеджирования рисков.
Даже при наличии идеальной и прибыльной стратегии, при отсутствии дисциплины и яиц, человек с большой вероятностью зальется. Так же дисциплина без знаний могут сделать лудоманом… Поэтому всем говорю, что трейдинг не для всех! И самый первый мой совет всем держаться подальше от рынков ценных бумаг! Не мало людей заканчивают плохо, теряют квартиры, теряют здоровье, зарабатывают инсульты и инфаркты. У нас в городе один мужик взял миллион в кредит, в надежде заработать и как обычно бывает у таких самоуверенных, быстро залился. Не выдержала душа таланта, схватился за нож, открыл комфорки с газом, хорошо соседские пацаны залезли к нему через балкон, когда услышали плачь одной из дочек, хорошо его остановили, а то чуть не порешал всю свою семью и соседей вместе…
Нет, не так. Опять ошибка мышления из-за не знания формулы математического ожидания.
Если взять отношение прибыли к риску 3:1 то для выхода в 0 нам достаточно только 25% положительных сделок, с учетом комиссии брокера около 30%. Поиграйтесь h0tc0d3.github.io/evtools/#/en/ev.html Вас интересует Expected Value, Amount of winnings, Amount of lose, Probability of winnings? (?), Probability of loss? (1 — ?).
GospodinKolhoznik
Все что вы написали никак не отменяет того факта, что на бирже если кто то зарабатывает, значит кто то столько же теряет.
А так то конечно можно сказать, что на бирже все зарабатывают, а кто не заработал, а потерял - тот сам виноват.
Sonnenwendekind
Цены на активы движутся за счёт внешних факторов прибыли, дивидендов, спроса и предложения на товары и тд, а не из-за трейдов
GospodinKolhoznik
Цены движутся вверх и вниз по тысячам разных причин. Начиная от атмосферных осадков в южной Америке, влияющих на урожайность какао, и заканчивая победой футбольной команды, играющей в форме бренда спортивной одежды. Но если кто то на бирже заработал 1 доллар, то кто то другой этот доллар потерял (плюс комиссия брокера).
Sonnenwendekind
Кто теряет, если я покупаю акции или облигации и получаю доход в виде дивидендов или купонов?
Кто теряет, если компания сама выкупает акции по более высокой цене за счёт своей прибыли?
Кто теряет, если люди начинают больше ездить, повышая спрос на бензин и цену на нефть?
> Вчера s&p обновил исторический максимум
Вас удивляет, что акции, которые по определению должны приносить прибыль, приносят прибыль? Покупая однушку под сдачу или открывая магазин, разве не разумно ожидать, что суммарный финансовый результат превысит цену покупки и вложения, и будет с каждым годом выше, чем годом ранее?
GospodinKolhoznik
Простите пожалуйста, и не сочтите мои слова за грубость, но право же вы задаёте вопросы, ответы на которые очевидны:
Как кто теряет? Компания, которая выплачивает вам эти самые дивиденды или купоны и теряет эти деньги. Либо вы теряете, если компания объявляет себя банкротом.
Теряют те, кто купил акции компании дороже той цены, по которой продали ей. Также сама компания, купившая свои акции потеряет в том случае, если ее акции в будущем станут дешевле, чем в момент покупки.
Все, кроме нефтяных компаний, так как все покупают бензин по более дорогой цене.
vectorplus
Сори, хотел плюсануть, промахнулся. Кинул плюс в карму.
Sonnenwendekind
Компания не является одушевлённым лицом, её предназначение - приносить прибыль акционерам.
А кто теряет от продажи, если акции компании «обновили исторический максимум», как это обычно и бывает?
Но если люди способны покупать более дорогой бензин, то это значит, что они стали больше зарабатывать и продуктивность их труда выросла. Они для себя считают поездки ценнее бензина.
Ваша ошибка в том, что вы рассматриваете биржу как замкнутую систему, но доходность активов в долгосрочной перспективе обеспечена ростом эффективности и производительности труда, то есть всей экономики. Отсюда и рост капитализации рынка, которая бы не росла, если бы биржа была замкнутой
dakuan
Те, кто держал короткую позицию, например.
andreyverbin
Я купил акции Apple, на следующий день вышел позитивный квартальный отчёт и цена подскочила на 10%. Кто тут потерял деньги?
Я купил на рынке огурцы. На следующий день цена на огурцы выросла. Продавец огурцов потерял деньги?
Я продал подорожавшие акции Apple и получил прибыль. На следующий день они выросли в цене ещё. Я потерял деньги?
Я съел мои огурцы, а они вскоре подорожали. Я опять потерял?
Держа в голове эти примеры полезно подумать вот о чем. Почему фраза «биржа это игра с нулевой суммой» так популярна, откуда она взялась и что все это говорит о качестве знаний распространителей этой фразы и о мире, в котором мы живем.
GospodinKolhoznik
Потому, что биржа не производит никакой продукт. Поэтому все попытки доказать, что игра на бирже не с нулевой суммой, это глупости, такие же как попытки построить вечный двигатель.
Максимум, можно запутать голову финансово неграмотному человеку, приводя всякие мудреные примеры, но это все профанация.
Классический подход таких ошибочных рассуждений: есть фермер, но у него нет земли, он идёт на биржу, выпускает бонды, трейдер покупает бонды, фермер на эти деньги арендует поле, у него вырастает урожай, он его продает, и расплачивается с брендами. Вин-вин? А хрен там! Это иллюзия. Не вырос урожай, вот и все, вот уже и не вин-вин.
Фермер заработал деньги не за счёт биржи. Он своим трудом произвел продукт, и заработал именно производством. Его заработок от ситуации на бирже вообще не зависит. Но второй участник трейдер, он ничего не произвел, и то, что он заработал, это вопрос случайности.
Перестала ли биржа быть изолированной системой, от того, что фермер вырастил урожай? Не перестала - на бирже ничего не выросло. Чтобы трейдер получил свои деньги, фермер должен их на биржу обратно принести. Захочет или нет, сможет или нет - вопрос открытый, и то, что заработает трейдер, это награда ему за то, что он рисковал своими деньгами, и если рассматривать не один из возможных вариантов развития событий, а все возможные варианты, то окажется, что трейдер играл с около нулевым мат. ожиданием. Либо про фермера известно, что он никогда не кидает и тогда и премия выплат у него будет крошечная, либо же от него вполне можно ожидать, что он кинет, и тогда премия будет побольше.
Sonnenwendekind
«Если я чего-то не понимаю - то это глупости»
zim32
Обычная пирмаида. Чтобы акции подорожали их должен кто-то купить по большей цене. Проиграет тот кто не сможет их продать дороже чем купил. С огурцами пример не корректный, огурец несет в себе ценность в виде калорий иначе его бы никто не покупал. А акции эпл не имеют своей ценности, только спекуляция
DmitryLTL
Акции обеспечены активами компании.
Построил например аппл новый завод, если будет ликвидироваться, завод продадут, разделят между акционерами.
Или на счетах той же аппл больше $200 миллиардов, вы как акционер тоже являетесь владельцем части этих денег.
Лет двадцать назад вся капитализация аппл была раз в пять ниже чем $200 миллиардов.
Как это объяснить пирамидой?
Есть zero sum game, например торги валютами forex и т.п., но акции могут быть positive sum game.
Конечно никто не гарантирует плюсы, но это не значит что они не возможны.
dakuan
А если ситуация обратная: вы купили акции Apple, а на следующий день они потеряли в цене 50%. Кто тут потерял деньги?
dakuan
Потерял деньги тот, кто вам ее продал, т.к. он, вполне вероятно, ставил на то, что акция упадет в цене. И теперь, чтобы закрыть позицию, ему придется выкупить акцию по более высокой цене, т.е. с убытком для себя.
Format-X22
Но это только если контракт, дериватив какой-нибудь, а так - недополученная прибыль, но не прямая потеря.
Кстати, в этих обсуждениях всех почему-то пропускаются моменты от чего вообще могла вырости цена, эластичность спроса и вот это вот всё. Не цельные рассуждения получаются.
dakuan
Да нет, почему же, обычная короткая продажа — берете у брокера кредит в форме акций, продаете их, а когда они подешевеют, выкупаете их обратно по более низкой цене и возвращаете брокеру. Разница и составляет вашу прибыль (за вычетом комиссии брокера, комиссии биржи и процентов по кредиту).
Format-X22
Но ведь можно и не использовать заемные средства - тогда это будет исключительно купля-продажа, я именно про это.
dakuan
Можно. Но тогда вы не сможете зарабатывать на падении рынка.
andreyverbin
Если следовать вашей логике, то после продажи огурцов, если цена на них выросла, то деньги теряет продавец огурцов.
С акциями будут так - Facebook напечатал акций и выдал их в виде бонусов своим сотрудникам. Они пошли и продали их на бирже.
PS: FANG и прочие именно печатают акции каждый год для выплаты бонусов, в том числе своим программистам. О чем пишут в своих отчётах в SEC. Фактически зарплаты over $1 млн. так и получаются и платят их на 70-90% инвесторы, а не сама компания.
dakuan
Разумеется. Если продавец взял огурцы в кредит и вернуть его должен огурцами, то он потеряет деньги, если цена на них вдруг вырастет. Именно так и работает короткая продажа.
Ну если бы рынок состоял из одних только инвесторов с длинными позициями, то так оно и было бы. Но на деле-то это не так.
andreyverbin
Деривативы это игра с нулевой суммой (почти) и там источник вашего дохода это проигрыш вашего контрагента. Но акции это совсем другая история — источником дохода является прибыль компании и ожидания будущей прибыли. Там уже нет никакой нулевой суммы, об этом и пример с огурцами.
Как ни крути рынок и биржа это открытые системы связанные с экономикой, поэтому для возникновения прибыли или убытка не обязательно кто-то другой должен терять или приобретать.
dakuan
При чем тут деривативы? Шортить можно и акции. Что, собственно, многие и делают.
Это давно уже не так. Инвесторы точно так же зарабатывают на росте котировок акций, а дивидендная доходность — это штука довольно эфемерная в наше время. Например, та же Apple не выплачивала дивиденды с 1996 по 2012 год. Facebook и Google не выплачивали их вообще ни разу.
andreyverbin
Когда вы шортите акции ваш доход не является убытком брокера. Он дал вам акции в долг и под процент, вы их позже вернули и уплатили проценты, все довольны. А вот когда вы фьючерсный контракт заключили с маркет мейкером, тогда да, ваш доход это его убыток.
Речь не про дивиденды совсем, а как раз про прост котировок. Чтобы выросла цена акции компании достаточно выпустить хороший отчет. Никто при этом не теряет деньги, а вы все же зарабатываете. В этом и есть открытость системы. Ваши акции подорожали потому что компания заработала много денег.
DigitalBerd
Ну так и хрен с ним — что кто-то потерял деньги.
Жизнь и так несправедлива — нужно о себе думать в первую очередь. а не о том, что кто-то там потерял на акциях.
vectorplus
Кроме акций есть коммодитиз, там вроде логичнее ценовая динамика. Не знаю, насколько просто их покупать.
nullc0de
Вы перепутали реальных инвесторов с техничкой… вот и гоняют они вас своими тряпками, что к ним ломитесь за стенку…
Все типы игроков зарабатывают и являются нормальным развитием рынков. Рынок это обычный базар, есть как поставщики — крупные игроки, так и торгаши — спекулянты, которые зарабатывают, так же покупатели. Шорт это нормальное развитие рынка. Условно вы торгуете яблоками на рынке, к вам приходит клиент и говорит куплю тону по этой цене, вы прикидываете в голове, что хорошая цена и потенциальная прибыль, у вас всего 50кг, но вы знаете где взять еще дешевле. Вы берете деньги и продаете в шорт не имея товара, но с оговоркой, что позже у вас будут яблоки. Вы идете с деньгами покупаете оптом яблоки и отдаете клиенту, и получаете с этого свою маржу. Насчет наносекунд бред, у вас шедулер ядра не может так быстро обрабатывать сетевую карту, в лучшем случае будет пару мс на интеловской сетевой и при включенном 1000HZ или NO_HZ шедулере. Вторая причине почему нет там даже миллисекунд, это потому что просто нет ликвидности, все быстрые стратегии ограничены в прибыли, поэтому крупные игроки не используют маленькие тайм фреймы, просто не будет нужного количества сделок, это только подходит частным мелким инвесторам. У крупных игроков другой порядок денег и прибыль. 10% с 10 миллиардов это 1 миллиард, и это всегда больше чем 35% с 1 миллиона. Ставят за стенкой по причине стоп ордеров, если позиций много открытых, то чтобы в дни волатильности можно было закрыть сделки по стопу и не бояться дисконектов. К примеру у брокеров на серверах висит большое количество стоп ордеров клиентов их может в один момент сработать очень много. Некоторый софт вообще не позволяет хранить стоп ордера на сервере, и они только в софте клиента. На бирже чаще всего нет таких ордеров, все стоп ордера преобразуются в обычные ордера на сервере брокера или в софте клиента, когда условие стопа выполнится. Сказки про высокочастотный трейдинг остаются сказками, если вы читали хоть одну приличную книгу по высокочастотному трейдингу, то почти все пишут, что не торгуют высокочастотные стратегии, и в книгах больше написано про обычный трейдинг, а HFT дается больше как теоретическая основа. Высокочастотные технологии используют сами биржи для обработки ордеров, но не для торговли. Заработать на рынке могут все, просто стратегии у всех разные, и не надо мешать стратегии и мешать таймфреймы. Надо выбирать, то что вам подходит больше. У всех стратегий свои плюсы и минусы.
Так разве не так? Виноваты сами люди. Когда договор заключается с брокером, то там всегда написано, что всю ответственность несете сами. Никто не виноват, что там кто-то не понимает простых вещей, не имеет дисциплины и раздувает дисперсию. Инвесторы зарабатывают в первую очередь с дивидентов! Термин теряет не правилен в принципе и противоречит основам рынка. Вот вы пошли к примеру на рынок купить огурцов, а вам продали огурцы дороже, кто виноват? Приведу пример осознанного теряния денег, оно же хеджирование, к примеру авиа компания покупает фьючерс на бензин на июль следующего года, условно по цене 72 доллара, понимая, что цена может вырасти до 100 долларов. Если цена вырастит, то если они купят бензин по 100 они потеряют много денег, они могут сгладить рост цены бензина, и более плавным сделать рост цены на билеты, ограничить потери т.к. они купили по 72 доллара, и им за эту цену в следующем году должны привезти. Если цена упадет, то они осознано потеряют, но для них будет плюсом, они могут докупить бензин по более низкой цене, и чуть больше заработать, а где-то снизить цену на билеты, когда в бюджет на год условно были заложены 72 доллара. Второй плюс им не надо строить хранилище нефтепродуктов, им должны привезти по этой цене в назначенный срок. Опять же это выигрыш для них и экономия. Ограничение потенциальных потерь тоже одна из стратегий от которой выигрывают компании! Вы изначально мыслите с позиции жертвы, рынок не для таких людей, они будут на нем терять и находить кучу подтверждений потерь. Это также как виктимная личность ru.wikipedia.org/wiki/%D0%92%D0%B8%D0%BA%D1%82%D0%B8%D0%BC%D0%BD%D0%BE%D1%81%D1%82%D1%8C. Такие люди не способны на здравый анализ, и нервы их будут наоборот заставлять отклоняться от стратегии и расшатывать стратегию, увеличивать дисперсию. Поэтому выше не зря написал про яйца, и что трейдинг не для всех! Излишне самоуверенных, не уверенных, глупых людей рынок выносит ногами вперед… На рынке нет места эмоциям, многим тяжело даются потери, хотя они являются естественным процессом. Лично знаю несколько людей, кто не плохо зарабатывал и уходил с рынка, лишь по причине того, что сдавали у людей нервы.
mrbald
Про scheduler и сетевуху — не совсем точно.
Нормально настроенный сервер с сетевухой Solarflare и выключенным interrupt coalescence = десятки микросекунд.
то же + ef_vi + изолированные CPU + spinning = сотни наносекунд (+ задержка до стойки самой биржи).
nullc0de
Можно конечно сотни наносекунд добиться, если писать отдельно OS без классического шедулера, но будет тогда загрузка процессора 100%, плюс сейчас уже паралелят сетевухи на высокоскоростных FPGA, там думаю даже десятки наносекунд задержки можно добиться. Но вот как показывает опыт +1 промежуточный узел, это в хорошем случае примерно +2-3мс задержки. У меня сетевуха 3мкс минимум может использовать для обработки буфера, но растет количество прерываний от нее на 24 ядрах, пришлось поднимать до 12мкс(`ethtool -C blblbla rx-usecs 12 tx-usecs 12`). Правда сейчас шедулер затюнил с 3 мкс стало нормально, а то сетевая на себе все перетягивала. Это правда не влияет на скорость передачи, пинг и на задержки сильно, так как видимо буфера хватает и не отбрасывает пакеты, если будет много пакетов имхо начнут расти задержки. Плюс сейчас сетевые могут минимизировать нагрузку на процессор, LSO, GSO.
У меня в принципе такие задержки до следующего оборудования:
mrbald
Пингом мерить задержки не очень корректно, приоритет ICMP траффика ниже, чем UDP — может вообще по-другому маршруту пойти.
У меня UDP 200us от источника в том же здании через 2 аппаратных маршрутизатора. Это с 60us interrupt coalescing interval и огромными ringbuf-s везде. Пока не заморочился ef_vi сделать.
По поводу передоза от прерываний сетевухи — у вашей скорее всего 24 очреди настроено (смотреть ethtool -k), по одной на каждое ядро. Если 24 это уже с отключенным hyperthreading, то скорее всего у вас 2 сокета (и 2 NUMA zones), а сетевуха всегда присасывается к одному и поэтому 12 очередей из 24 пишут в чужую NUMA. Можно уменьшить количество очередей до 12 (ethtool -K), перезагрузиться, и посмотреть улучшится или нет. По идее должно, так как обработка softirq ускорится.
С ef_vi (и остальными зверями из user space networking) системные вызовы не нужны, прерывания не нужны, просто изолируешь 1 или несколько CPU cores для обработки трафика, отключаешь энергосбережение и пашешь в цикле.
HZ, насколько я помню, только отвечает за перебалансировку нагрузки между ядрами, но не scheduling на одном ядре.
nullc0de
Там опечатался немного. Пинг в мс, а сетевая тригерит прерывания в мкс, прерывания копятся в очереди до запуска шедулера. Наносекунд там в принципе нет. Судя по пингу там задержка около 100мкс.
NO_HZ он же 1000HZ(в новых ядрах его заменили на NO_HZ) в новых ядрах, это вместо фиксированного шедулера к примеру 300HZ используется по максимуму возможности процессора, отсюда более высокая загрузка и энергопотребление. 1000HZ = 1мс, но так как у нас NO_HZ мы получаем лучше чем 1мс, что в принципе так и есть — 0.1мс.
У меня все решилось с 3мкс просто тюнингом шедулера и уменьшением в настройках минимальной гранулярности, латенси шедулера. Тем самым шедулер просто чаще запускается.
Балансировка это другое. У меня изначально все прерывания были сбалансированы по ядрам.
MaxLK
Если Вы такой умный - почему Вы пишите сейчас тут, а не загораете на своем острове? Смешно читать тут о том как надо торговать на бирже.
nullc0de
Да куда мне до успешных трейдеров с 400% годовых и которые загорают на своем острове…
vectorplus
Акции должны расти в цене. То, о чём вы говорите, это спекуляция, она не одобряется, и к инвестициям не имеет отношения. Дейтрейдеров и шортеров в приличных местах гоняют сцаными тапками. Боилер румы так вообще давно запретили.
fzn7
Если Вася отдаст Пете рубль, потом Петя отдаст Феде рубль, потом Федя отдаст Васе рубль, то в целом ничего не изменится. Но есть, как говорится, нюанс
okosynskyi Автор
да вы правы. но дело в том что у каждого своя стратегия и разные временные интервалы. и на бирже не 2 бота… поэтому и есть шанс из этого хаоса достать выгоду
alexkdpu
Биткоин ограниченный по количеству, фиат печатают триллионами. Потому все торгующие битком могут быть в плюсе, если конечно плюс мерять фиатом.
hierarchical
Плюс научить бота читать новости...
KbRadar
А главное — правильно их интерпретировать же.
mflash123
Я в начале пути — думал что пассивный доход с биржи — реален
Спустя пару лет и слитые депы, заявляю ответственно: Нет такой стратегии, которая стабильно приносит пассив.
Чего я только не перепробовал — и простые MA пересечения, всякие индикаторы. И сложный подсчет 5ти волн Эллиотта — все это не больше, чем помощник для трейдера, который торгует сам. Но это точно не пассивный доход.
Поэтому ваш заголовок, как минимум, вводит в заблуждение.
P.S. Если бы такая стратегия была и Вы решились бы из доброты ее опубликовать, она бы перестала быть доходной.
rsashka
На самом деле стратегия есть. Она называется, торговать должен тот, для кого это работа. Если вы профессиональны брокер, то торгуйте на здоровье. Но если вы не профессионал, то
вашнаш удел — фонды (на собственном опыте).Sonnenwendekind
Просто замечу, что за пару лет индекс S&P 500 вырос на 47%, NASDAQ 100 - на 87%. То есть за цену московской однушки вполне можно позволить себе пассивный доход
DonAgosto
это за последние пару лет. совсем не факт, что оно и дальше так будет. для сравнения:
Ten-year annualized average returns ending June 30, 2019:
S&P 500:14.70%
20-year annualized average returns ending June 30, 2019:
S&P 500: 5.90%
www.wealthsimple.com/en-us/learn/average-stock-market-return
Sonnenwendekind
С 1957го у S&P было 8% годовых - что, опять-же, гораздо лучше «безрисковой» московской однушки под сдачу
GospodinKolhoznik
Вчера s&p обновил исторический максимум. Покупать что бы то ни было на максимуме цены с 1957 года, это отличный план!
Dee3
В 1965 он тоже обновил исторический максимум. И в 1980 и в 91 и в 97 и дальше можно продолжить.
mflash123
Это не трейд. Это инвестиция.
А в заголовке написано "… трейд..."
Almatyn
Доход реален, если сидеть в лонге в бумагах реальных компаний или в крайнем случае в разных ETF. И не пытаться играть. Как только начал спекуляции — пиши пропало.
Young-Programmer
А если прикрутить сюда нейросеть с LSTM? Они вроде неплохой результат дают.
DonAgosto
/не в ту ветку
Mox
Честно говоря, вряд ли особая ценность — подкллючиться к API и выставлять ордера — такие задачи любой разработчик, умеющий перекладывать JSON, делает по 6 шекелей за тонну на любом известном ему языке.
Интересен как раз ход мышлений для построения торговой стратегии, учет комиссий — вот где бездна :). Жду, конечно, cледующей статьи, но кажется там больше чем на одну статью.
starpearl
Очень своевременная и полезная статья. С нетерпением жду продолжения, как на коленке написать самообучающуюся сверточную нейросеть и использовать её в торговом роботе.
codecity
yarn add…
numitus2
Во первых торговые роботы это нифига не пассивный доход. Во вторых из десятков соответствующих статей на Хабре я помню только одну которая рассказывала хотябы примитивную стратегию, а остальная говорила лишь про при вызовы
smartello
Да потому что если бот торгует хоть в какой плюс — ни писать про него, ни продавать его никто в здравом уме не будет
Format-X22
Ну вообще, справедливости ради, можно что-то рассказать что приносило прибыль когда-то, не редко бывает что волшебная стратегия - лишь временная корелляция, но их можно ведь находить и успевать использовать до того как рынок поменяется. Впрочем, прямо точную стратегию, которая ещё приносит сейчас прибыль, никто не расскажет, это так.
Akito7
Взять например миллиард долларов и на них написать мегаторгового бота, котрый может учитывать динамику всех существующих торговых инструментов, фазы луны, марса, меркурия, высоту телеграфных столбов и состояние рынка и торговых инструментов с 600 года до нашей эры. Этот бот будет действительно приносить прибыль т.к. в нем заложен "идеальный" алгоритим для предсказания стоимости того или иного инструмента. Все остальные боты будут убыточны!!! Некоторые из остальных ботов на определенном интервале времени будут прибыльны, но если их всех проссумировать - то они будут убыточны т.к. есть единственный идеальный алгоритм для зарабатывания денег. Если бот, который вы пишите, будет приносить прибыль, раздайте его всем жителям планеты и ура - все люди счастливы, никто не работает, у всех пассивный доход. Бред, правда? Существует ли мегабот, котрый действительно приносит прибыль... Думаю да, но только его алгоритм охраняется похлеще хранилищ банков.
Mox
При тоговле криптой достаточно реакции на твиты Илона Маска :)
Akito7
А вот инсайдерская инфрмация действительно приносит прибыль. Только, чтобы на ней заработать, нужно чтобы о предстоящем событии знало как можно меньше людей. К тому же некоторые формы инсайдорских действий наказуемы (например об этом рассказано в фильме "Волк с Уолтстрит").
nullc0de
В сериале миллиарды все наоборот, все в наглую пользуются инсайдерской информацией, и никого не сажают если сами глупо не попались за руку или это не была подстава.
anonymous
это ж кино
usernotfound_yet
с таким упоением читал комменты…
ситуация наглядная и очень показательная (что очевидно): лучше всех в трейдинге и ценовых колебаниях разбираются те, кто ни разу не торговал на биржах)
По аналогии с другими подобными «советчиками» (они же лайф-коучеры): сам не смог, но тебя научу.
Пытаться кого-то переубеждать не буду, оно вам явно не нужно, вы для себя же давно уже все решили (а некоторым еще и первый канал помог). Вот только остальные как-то умудряются там зарабатывать (включая меня), чудеса да и только. И боты способны приносить прибыль, если их «запереть» в определенном ценовом коридоре, а не бездумно скупать все падающее и продавать все растущее… Дело прямых рук, и никакого мошеничества. Но это явно не ваше…
n0tal0ne
Торговля на бирже, именно торговля, если бы не было комиссии, всегда была бы игрой с нулевой суммой. С комиссией-это игра с небольшой отрицательной суммой. Представьте что есть 10 человек в игре, и у них на всех 1000 рублей. Что бы они не делали, ни откуда не появится дополнительно ни рубля, если у них больше их нет.и это никак не зависит от внешних факторов типа цен на акции,Другой или погоды на Марсе . С другой стороны, за прибыль по акциям платят дивиденды, но это уже про инвестирование, а не торговлю. Кстати дивиденды, как и любая прибыль может быть заработана только в случае, если где то в цепочке будет создано что то, что кто то купит(продукт или услуга) из того, что никто не купит(что то бесплатное)