Избранное трейдера WooDoo
Приветствую.
Готов поделиться опытом работы с российскими коннекторами прямого доступа к московской биржи (MOEX). Я довольно долго искал коннекторы для прямого доступа на московскую биржу Fix/Fast, Plaza2, Twime на C#, в итоге пришлось все написать самому :)
Я пробовал использовать готовые решения (закрытые библиотеки), которые предлагает к примеру S#. Там очень часто появляются ошибки, которые могут не исправляться просто годами. Во-вторых, непонятно, что происходит внутри и огромные задержки по скорости отправления заявок. Исходные коды стоят довольно дорого и в конце неизвестно то же, что будет тебя ждать.
Поскольку я сам программист, пришлось написать эти коннекторы самому.
От перепутья коннекторов, технологий и пересечения, какой подходит под какие задачи вы офигеете.
И честно скажу полный хаос также твориться и в описании документации к этим подключениям у самой биржи.
С одной стороны высокий барьер входа это хорошо и позволяет реализовывать простые арбитражные схемы на российском рынке, что нельзя было бы сделать к примеру на других рынках. Но с другой стороны — это просто ад и кошмар. Все запутано, документация крайне не дружелюбна, нормальных примеров нет.
Алгоритмическая торговля — это быстро развивающаяся область, которая использует математические модели и компьютерные алгоритмы для совершения сделок на финансовых рынках. Линейная алгебра — это фундаментальная математическая концепция, которая играет решающую роль во многих алгоритмических торговых стратегиях.
Линейная алгебра — это раздел математики, который имеет дело с линейными уравнениями и их представлениями в векторных пространствах. В алгоритмической торговле линейная алгебра используется для моделирования финансовых рынков и прогнозирования будущих рыночных тенденций. Например, линейная регрессия является популярным методом, используемым для моделирования взаимосвязи между зависимой переменной и одной или несколькими независимыми переменными. Этот метод может быть использован для прогнозирования цен на акции, курсов иностранных валют или других финансовых инструментов.
Другим важным применением линейной алгебры в алгоритмической торговле является анализ главных компонент (PCA). PCA — это статистический метод, который уменьшает размерность набора данных путем нахождения основных компонентов, которые представляют собой линейные комбинации исходных переменных, объясняющих наибольшие различия в данных. В алгоритмической торговле PCA может использоваться для определения наиболее важных факторов, влияющих на цены финансовых инструментов. Уменьшая размерность данных, PCA позволяет трейдерам сосредоточиться на наиболее важных переменных и делать более точные прогнозы относительно будущих рыночных тенденций.
#property copyright "Copyright 2019, Example Inc." #property link "https://www.example.com" input int LotSize = 1; input int Period = 30; input double VolatilityThreshold = 0.1; input int ExitAfterMinutes = 60; int buyOrderId; int sellOrderId; datetime entryTime; void OnTick() { // Get the last Period candlesticks ArraySetAsSeries(candles, true); CopyRates(Symbol(), PERIOD_M1, TimeCurrent() - Period, Period, candles); // Calculate the maximum and minimum prices double maxPrice = High(candles); double minPrice = Low(candles); // Calculate the standard deviation of the closing prices double stdev = iStdDev(candles, MODE_CLOSE, 0); // Check if the volatility is above the threshold if (stdev > VolatilityThreshold) { // Check if the current ask price is higher than the maximum price if (Ask > maxPrice) { // Place a buy order if (OrderSend(Symbol(), OP_BUY, LotSize, Ask, 3, 0, 0, "My order", 16384, 0, Green)) { Print("Buy order placed"); buyOrderId = OrderTicket(); entryTime = TimeCurrent(); } else { Print("Error placing buy order : ", ErrorDescription(GetLastError())); } } // Check if the current bid price is lower than the minimum price if (Bid < minPrice) { // Place a sell order if (OrderSend(Symbol(), OP_SELL, LotSize, Bid, 3, 0, 0, "My order", 16384, 0, Red)) { Print("Sell order placed"); sellOrderId = OrderTicket(); entryTime = TimeCurrent(); } else { Print("Error placing sell order : ", ErrorDescription(GetLastError())); } } } if (buyOrderId > 0) { if (TimeCurrent() - entryTime >= ExitAfterMinutes * 60) { if (OrderClose(buyOrderId, LotSize, Bid, 3, clrNONE)) { Print("Buy order closed"); buyOrderId = 0; } else { Print("Error closing buy order : ", ErrorDescription(GetLastError())); } } } if (sellOrderId > 0) { if (TimeCurrent() - entryTime >= ExitAfterMinutes * 60) { if (OrderClose(sellOrderId, LotSize, Ask, 3, clrNONE)) { Print("Sell order closed"); sellOrderId = 0; } else { Print("Error closing sell order : ", ErrorDescription(GetLastError())); } } } }
Сегодня вышла версия OptionVictory (OptionFVV) 2.3.7 с поддержкой моделирования позиций в новых премиальных опционах на акции.
ВАЖНО: новая версия требует изменения настроек таблицы текущих торгов в Quik: нужно добавить последним столбец Код класса.
Чтобы работать с премиальными опционами, нужно добавить в начало таблицы соответствующую акцию (туда же, куда добавляем фьючи), базовые активы должны идти в таблице первыми, а потом добавить интересующие серии опционов на акции (их можно найти по хвосту _CLT).
Получится что-то такое:
Дальше открываем OptionVictory и запускаем вывод по DDE из Quik.
Собираем моделируемую опционную позицию из премиальных опционов
В прошлом гайде мы разбирались с разными способами использования крипты за рубежом. Напомню, что в этом мне помог опрос более 60 участников нашего сообщества RationalAnswer, которые поделились своим опытом экстренной релокации. В этом же материале я скомпоновал семь избранных историй переезда с использованием крипты от подписчиков (с их разрешения, конечно; и некоторые имена изменены).
где:
Srate,t – значение Ставки в день t;
SWAPt – средневзвешенное значение валютного свопа, рассчитанное Биржей на основании сделок заключенных с валютным свопом в день t;
NCCRATEt – значение Центрального курса НКЦ, установленное на день t;
Dnorm – количество календарных дней со дня расчетов по первой части валютного свопа (исключая день расчетов по первой части сделки) по день расчетов по второй части валютного свопа (включая день расчетов по второй части сделки), относящееся к невисокосному году;