Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Очень оригинальные решения есть в советнике trade-arbitrage. Ссылку не могу дать, пишу с телефона.
Код очень большой, но разобрался. Не понял, что там оригинального. Не хвастаюсь, но сходу (во многом благодаря ООП) написал расчет не троек/четверок, как в советнике, а вообще любых ФК. Логика-то простая.
Вообще, погуглил, с тройками и четверками работают многие советники. А вот как найти оптимальный ФК - пусто.
Показатель степени это доля капитала вложенная в символ (в EURUSD в 2 раза больше чем в остальные).
Другой вопрос что вы сложили две замкнутых топологии: треугольник EURCHF / (USDCHF * EURUSD) и четырехугольник GBPCAD * EURGBP / (USDCAD * EURUSD) которые пересекаются по одному ребру. В результате у проход капитала по этому ребру в 2 раза больше чем по другим ребрам. Смысла в этом немного - это не циклический семиугольник. Ничего нового по нему вы не отловите. Результат такой же как если бы вы трекали совместно 3-угольник и 4-угольник.
Heroix:
Показатель степени это доля капитала вложенная в символ (в EURUSD в 2 раза больше чем в остальные).
Другой вопрос что вы сложили две замкнутых топологии: треугольник EURCHF / (USDCHF * EURUSD) и четырехугольник GBPCAD * EURGBP / (USDCAD * EURUSD) которые пересекаются по одному ребру. В результате у проход капитала по этому ребру в 2 раза больше чем по другим ребрам. Смысла в этом немного - это не циклический семиугольник. Ничего нового по нему вы не отловите. Результат такой же как если бы вы трекали совместно 3-угольник и 4-угольник.
1) А вы попробуйте торгануть такой большой N угольник. С добавлением каждого нового символа, частота пересчета (тик по такому синтетику) в среднем увеличивается мультипликативно. Банально можно не успеть даже с пересчетом. Я не говорю уже за исполнение, напрмер повышение вероятности реджекта по какому либо символу. Количество же топологий и вовсе растет похоже факториально.
2) Каждое новое ребро отжирает комиссию.
3) Сам алгоритм поиска оптимального (самого профитного? какого? по относительному/абсолютной профиту) может быть неподъемным для большого числа N (см. например схожую проблему - задача о коммивояжере)
4) Поток спам приказов на брокера тоже не беспредельный
Конечно смысл в этом есть. Тоже ставил себе задачу - найти самую "пердатую" комбинацию. Замечания выше внесли свои коррективы. Пока остановился на банальном переборе того что успеваю. Возможно вернусь к этой задаче.
И вы туда же. До практики еще созреем, нам бы теорию понять. Комиссию учтем в цене. Короче, не в этом суть рассматриваемой проблемы.
Теорию графов навешивать на эту вшивую задачу - из пушки по воробьям.
Перебор троек и четверок не написал только ленивый. С "пердатой" бы определиться - алгоритм, чтобы не дольше часа считал (для начала). Если будет четкое, пусть и медленное, решение, то можно уже другие свои быстрые алгоритмы сравнивать с эталоном на предмет расхождений.
Туплю даже с тормозным алгоритмом.
Идею не зарубаю. Она класная. Просто часто у простых по постановке задач - очень непростые решения. Опять тот же коммивояжер
Это оптимальный маршрут коммивояжёра через 15 крупнейших городов Германии. Указанный маршрут является самым коротким из всех возможных 43 589 145 600.
Я говорю за то, что что может случиться так, что вы долго лбом будете биться с задачей схожего типа (NP-полной). А выхлоп будет мизерный (слова о комиссии как раз об этом), если вообще будет, так как по-любому столкнетесь с участившимися проблемами исполнением.
Не хотите тройки и четверки, возьмите повыше - от 3ек до 8ок (основные пары) - более 16 тыс комбинаций - Попробуйте отловить большой N угольник и проторговать. А потом ещё раз, и ещё и ещё раз. Уверен приоритеты сместятся - с поиска самого оптимального на исполнение.
Обязательно вернусь к этой задаче, как расчеты поставлю по другой теме.
А пока прокомментируйте, пожалуйста, алгоритм нахождения наилучшего New_EURGBP (название взято из контекста это ветки) .
Но только так, чтобы "парадоксов" не складывалось. Надо получить, как вы выразились, синтетический наилучщий по ценам New_EURGBP для каждого момента времени.
Я пошел в лоб и нахождение всех таких искуственных символов занимает время меньшее погрешности GetTickCount. Но по глупости не предвидел возможность "парадоксов":
Не флетовая конструкция, но одномоментный случай:
New_EURGBP_ask = AUDUSD_ask[0.906580] * EURAUD_ask[1.425190] * USDCAD_ask[1.104540] * (1 / EURCAD_bid[1.427220]) * EURGBP_ask[0.795590] = 0.79553399[+5.60 pips], ChainLength = 5 symbols.
Выделенная часть флетовая и меньше единицы. За счет этого домножая все выражение на эту конструкцию можно добиться сколь угодно малого New_EURGBP_ask:
New_EURGBP_ask = (AUDUSD_ask[0.906580] * EURAUD_ask[1.425190] * USDCAD_ask[1.104540] * (1 / EURCAD_bid[1.427220])) ^ N * EURGBP_ask[0.795590] - стремится к нулю при увеличении N.
Не понимаю, где самообман при открытии BUY позиции по New_EURGBP_ask?
3) Сам алгоритм поиска оптимального (самого профитного? какого? по относительному/абсолютной профиту) может быть неподъемным для большого числа N (см. например схожую проблему - задача о коммивояжере)
1) Вершины графа - все используемые валюты.
2) Веса ребер графа - логарифмы соответствующих курсов (в них же можно учесть транзакционные издержки).
3) Решение можно получить при помощи алгоритма Беллмана-Форда.
4) Если пути с отрицательной стоимостью не существует - арбитражной ситуации нет.
Быстро и без перебора.
Объяснение "парадоксу" дал, а вот как изменить алгоритм, чтобы такое не рождалось, - пока не вкурил.
Ограничить сумму модулей/квадратов степеней курсов. А чтобы "парадоксов" не возникало - проверять единицы измерения.
1) Вершины графа - все используемые валюты.
2) Веса ребер графа - логарифмы соответствующих курсов (в них же можно учесть транзакционные издержки).
3) Решение можно получить при помощи алгоритма Беллмана-Форда.
4) Если пути с отрицательной стоимостью не существует - арбитражной ситуации нет.
СУПЕР! Я запихивал в вершины пары, а не валюты. По какой-то причине мозг не ломался, чтобы валюты в узлах держать. Выходит, что надо найти замкнутый круг с наибольшим значением. Ну или если подставлять в ребра отрицательные логарифмы - то с наименьшим. Понятно, что граф будет ориентированным и веса разнонаправленных ориентированных ребер, соединяющих две вершины будут отличаться. Не в курсе еще, подходит ли алгоритм Беллмана-Форда к таким графам.Но идея с валютами в узлах ключевая, спасибо огромное!
Ограничить сумму модулей/квадратов степеней курсов. А чтобы "парадоксов" не возникало - проверять единицы измерения.
Поясните про ограничение. С единицами измерения точно никаких заморочек не возникает, так что "парадоксы" тут не при чем.
ЗЫ Разобрался в алгоритме - подходит для ориентированного графа и можно находить, как кратчайшие, так и наибольшие пути. Буду пробовать.
Поставленные в ветке обе задачи (оптимальная ФК и избавление от "парадоксов") являются разными формулировками задачи нахождения отрицательного цикла в графе.
Оптимальный ФК - это задача арбитража, имеющая в общем виде такое решение. Там должен быть цикл. И поэтому решается оптимально через алгоритм Форда-Беллмана.
Избавление от "парадоксов" - это немного иная формулировка задачи нахождения отрицательного цикла в графе, где нужно найти кратчайший путь между двумя вершинами. Решается через алгоритм Флойда-Уоршелла.
Всем спасибо, задачи решены.