Предыстория
Я разработчик мобильных приложений для iOS и не имел никакого отношения к трейдингу. Ручной трейдинг не рассматриваю, так как у меня остается мало свободного времени после основной занятости. Однажды мой друг трейдер рассказал о неудачном периоде в работе, он винил себя за несоблюдение собственных стратегий в торговле и говорил что не может перебороть эмоции в период потери капитала. Так мы и решили попробовать написать собственного робота для торговли на Bybit, чтобы исключить человеческий фактор из его достаточно успешных стратегий.
Описание программы
Так как я iOS — разработчик, для быстрого написания робота были выбраны знакомый мне язык Swift и среда разработки Xcode. У биржи оказалась достаточно удобная документация, и я без труда смог создать сетевой слой для наших роботов. Так же большим плюсом при написании программы оказалось наличие библиотеки с основными индикаторами, написанной на языке C, которая уже была готова для интеграции в мой проект и работы с моим языком Swift.
В итоге мы получили программу, которая может взаимодействовать с биржей Bybit, имеет набор необходимых стандартных индикаторов, и для написания конкретного алгоритма достаточно только написать сам алгоритм. Стоит учесть, что программа не умела работать с историческими данными, не имела локального тестирования. Торговать на iPhone на этом этапе я не вижу смысла, если только не покупать отдельный девайс для торговли. Смысл писать программу под iOS был только в том, что это знакомые мне технологии, а запускать программу можно на компьютере с помощью стимулятора iPhone в качестве внешнего интереса программы (См скрин с примером отправки нескольких запросов на получение свечей).
Результаты работы программы
Было запущено несколько трендовых роботов, которые показывали достаточно хороший результат, но со временем этот результат мог сильно прыгать, и уходить в минус. Алгоритмы в процессе редактировали, и последние результаты уже не дают прибыли в 10-20 % в месяц, но главное и не уводят в минус (пока самый большой минус был около 1.5%).
Выводы
Для себя я понял, что написать роботов можно почти на любых языках, но важнее иметь правильные рабочие алгоритмы. Для правильных алгоритмов нужно много тестирования, в том числе на исторических данных. Можно было и дальше развивать свою программу, но для того, чтобы она была похожа по функционалу и количеству бирж даже на бесплатные аналоги, уйдут годы. Мною было принято решение перейти к изучению языка c# и платформы OSEngine в целях экономии своего времени.
Алготрейдинг на iPhone
Из плюсов такого подхода могу выделить только то, что девайс не так критично реагирует на отключение электричества/интернета, так как имеет аккумулятор и дополнительно обычный мобильный интернет при потере wi-fi. Эти плюсы становятся не актуальными при аренде сервера, а для нормальной работы он обязателен. Серверы на macOS для запуска моей программы так же существуют, но они дороже, и встречаются гораздо реже. Единственным вариантом алготрейдинга на iPhone я вижу использование его в качестве фронтенда, когда твои роботы запущенны на сервере, а ты в любой момент может зайти и посмотреть статистику и возможно поменять параметры индикаторов, но для этого так же нужно сначала написать API для взаимодействия iOS-приложения с той-же например OSEngine, запущенной на сервере, в которой и будет происходить основная работа.
Так то приложения для iOS работают БЕЗ эмулятора на последних буках.
Также Swift без проблем работает на Linux и Win но без поддержки UI.
p.s
А OSEngine не лучшие вариант, старая версия была написана «сумашедшим шляпником», я ее хотел когда-то использовать, открыл, посмотрел, ужаснулся, потом решил попробовать переписать, переписал на 80% загрузчик исторических дынных, потом посмотрел что есть под Python, нашёл кучу всего и понял что OSEngine мне нахрен не нужон.
Лучше Python смотри.
Для тестирования есть Backtesting если надо очень быстро тестировать то Vertorbt .
Для торговли Backtrader — если торговать на Мосбирже есть коннекторы для Квика и Transaq на Githab сделанные Игорем Чечетом.
Под крипту на Python тоже много есть, ну или коннектор можно сделать для Backtrader.
OSEngine можно сказать первое, на что наткнулся, где в одном инструменте есть пока что все необходимое для меня, не затрачивая много времени на изучение. За совет спасибо, посмотрю. Подозреваю что на предложенные тобой варианты так же найдутся люди, кто укажет на их минусы.
Пока для меня это доп занятие, считаю что нужно прийти к результату, который будет интереснее моего основного места работы, а потом уже тратить много времени на поиск идеального для себя инструмента.