Работа завершена
Время выполнения 28 дней
Отзыв от заказчика
If I could give Andriy 20 starts out of 5, I would do it. Very thoughtful work, done in time, high quality, modular code, functionality works as epxected by the spec or better. Highly recommend!
Техническое задание
1) Подключается к Финам по логину-паролю-серверу-порту, зашитым в код
2) Использует Transaq Connector DLL (https://www.finam.ru/howtotrade/soft/tconnector/), можно начать с приложенного там демо-примера на C#
3) Единократно подписывается на актуальные обратные вызовы (callback-и) для получения **всех** данных всех котировок, сделок, тиков и глубины рынка (полный набор полей согласно "4.9 Котировки по инструменту(ам)", "4.10 Сделки по инструменту(ам)", "4.11 Глубина рынка по инструменту(ам)" и "4.17 Тиковые данные" в терминах TXmlConnector.pdf), по определённому набору инструментов (см. далее п.4), и накапливает их полное содержимое по мере получения данных от Финам внутрь callback-ов в конкурентную очередь; также сохраняет полную информацию обо всех этих инструментах (согласно "4.7 Информация по инструменту" по TXmlConnector.pdf) из набора в момент начала очередного цикла наполнения пустой очереди (см. далее)
4) Набор инструментов (по "4.6 Список инструментов" и "4.7 Информация по инструменту" в терминах TXmlConnector.pdf) определяется в начале каждого нового цикла наполнения пустой очереди как полный список инструментов одного из типов (BOND, FUT, OPT, GKO, FOB), полученный через "4.6 Список инструментов", значение типа по умолчанию зашито в коде как "GKO". Так предлагается сделать потому, что список инструментов по указанному типу вообще говоря может меняться с течением времени
5) В начале каждой новой календарной минуты асинхронно записывает всё текущее содержимое очереди в пять файлов с именами вида "2024.07.06-14.55.00.178-{тип}.csv" (формат "ГГГГ.ММ.ДД-чч.мм.сс.млс-{тип}.csv") в виде CSV, соответствующему содержимому оригинальных XML, полученных в callback-ах (подробнее о трансформации XML в CSV см. п.6). {тип} — это, соответственно, одно из пяти значений: "instruments" (для данных инструментов), "quotes" (для котировок), "depth" (для глубины рынка), "trades" (для сделок) и "ticks" (для тиков). Дата и время (с миллисекундами) в имени файла соответствует моменту ровно перед тем, как текущее содержимое очереди отправлено на запись. В момент, когда очередь отправляется на запись по (еже)минутному таймеру, в соответствующий асинхронный обработчик передаётся копия этой очереди, тогда как оригинальная очередь тут же атомарно и синхронно очищается, после чего асинхронный обработчик сохранения очереди оказывается запущен, и мы попадаем в состояние начала очредного цикла наполнения пустой очереди: очищенная исходная очередь вновь продолжит асинхронно накапливать получаемые в callback-ах данные
6) Раскладка XML-лей на CSV — по здравому смыслу в плоские таблицы, например, для сделок (см. "4.10 Сделки по инструменту(ам)"): каждая сделка будет представлять собой строку таблицы CSV вида datetime, secid, seccode, tradeno, time, board, price, quantity, quantity, openinterest, period; здесь datetime добавляется нами как тот момент времени в виде строки "ГГГГ.ММ.ДД-чч.мм.сс.млс", когда мы только что получили вход в наш callback, а все остальные поля имеются "как есть" в получаемом XML. Соответственно, мы всегда сможем идентифицировать "блоки" изменившейся структуры данных (например, стакана), как группу с одним и тем же значением поля datetime "ГГГГ.ММ.ДД-чч.мм.сс.млс" — момента входа в соответствующий callback.
7) программа работает бесконечным циклом
8) максимально должна использоваться асинхронная обработка и корректная обработка конкуррентности (вероятно, необходимо зайдействовать ConcurrentQueue): таким образом, например, конвертация очередного полученного XML в табличные данные и дамп наполненной очереди(ей) в файлы не будут блокировать слушателей callback-ов и не будут блокировать друг друга. Не могу сказать, лучше ли иметь одну очередь для всех пяти типов потоков данных (заявки, данные инструметнов, котировки, тики и глубина рынка), или же пять разных, это на ваше усмотрение. Главное, чтобы всё асинхронно и конкурентно развязывалось и не создавалось deadlocks. Важно, чтобы коллбеки не блокировались, поскольку в них мы сохраняем наиболее возможно точный момент возникновения новых данных (время входа в callback), это важное поле
Разработанная программа передаётся заказчику полностью в виде исходного кода без каких-либо дополнительных собственных сторонних библиотек с закрытым кодом.
Откликнулись
1
Оценка
Проекты
620
38%
Арбитраж
39
23%
/
64%
Просрочено
93
15%
Свободен
2
Оценка
Проекты
5
0%
Арбитраж
0
Просрочено
1
20%
Свободен
3
Оценка
Проекты
35
54%
Арбитраж
8
63%
/
38%
Просрочено
1
3%
Свободен
4
Оценка
Проекты
400
38%
Арбитраж
82
41%
/
20%
Просрочено
69
17%
Загружен
Похожие заказы
Нужна внести изменения в Алерта Индикатора.
30 - 50 USD
У меня не сложная задача! Мне нужна исправить ошибку в индикаторе, чтобы после появления стрелки индикатора в терминале мт4 приходило уведомление Алерта в направления стрелки до начала открытие новой свечи за 10 секунд. Ошибку этого индикатора надо исправить таким образом, чтобы приходила уведомления не на открытие третьей свечи, а-на открытие второй свечи за 10 секунд до открытия
Всем привет. Нужен бот по сеточной торговле на бинанс. Шаги должны быть в процентах. Нужен множитель и макс просадка. Также нужен удобный интерфейс. Лонги должны быть выше открытия дня и шорты ниже
C# software coder for long term work in project
1500 - 2500 USD
we seach software coder for long term work in project salary start from 1500$ per month Need develop web trading terminal for forex and crypto trading. FIX Protocol, c#, crypto API learning
Модуль для расчета performance fee на основе high-water-mark и автоматическое снятие комиссий через MT4/MT5 Manager API
2000 - 3000 USD
Требуется сделать модуль для расчета процента от заработанной прибыли и снятие суммы со счета трейдера через MT4/MT5 Manager API. Ищем разработчика с большим опытом работы на C# и опытом работы с торговыми платформами MT4/MT5
Доработать стандартный индикатор динамического Volume/Delta/Trades Profile для платформы ATAS
150 - 1000 USD
Доработать стандартный индикатор динамического Volume/Delta/Trades Profile для платформы ATAS. POC - максимальный обьем прошедший за опреленный период времени. MPOC - максимальный обьем который чуть меньше POC(Пример скрин"POC MPOC" Необходимо чтобы индикатор мог автоматически выделять эти обьемы для Volume/Delta/ Profile Так как обьем по Delta имеет определенную специфику, и из-за того что bid/ask может меняться в
Торговый робот (стратегия) разработан для терминала Quantower. Бот скачивает историю трейдов API ключа через терминал. Язык C# Сейчас бот работает с Binance Spot и Huobi Global. Необходимо 1) отдебажить робота под новую версию терминала 2) добавить (прописать) новые коннекторы (VendorName) для работы с новыми биржами Байбит Гейт Битфайнекс Койнбейз Кракен Окх Кукойн Тоесть необходимо найти в коде
Торговый робот (стратегия) разработан для терминала Quantower. Бот скачивает историю трейдов API ключа через терминал. Язык C# Сейчас бот работает с Binance Spot и Huobi Global. Необходимо 1) отдебажить робота под новую версию терминала 2) добавить (прописать) новые коннекторы (VendorName) для работы с новыми биржами Байбит Гейт Битфайнекс Койнбейз Кракен Окх Кукойн Тоесть необходимо найти в коде
Информация о проекте
Бюджет
150 - 200 USD
VAT (25%):
37.5
- 50
USD
Итого:
187.5
- 250
USD
Исполнителю
135
- 180
USD