Арбитражная торговля (Алгоритм Беллмана — Форда) / Хабр

Арбитражная торговля (Алгоритм Беллмана — Форда)

Торговля на бирже обычно ассоциируется с рисками. Это совершенно верно для большинства торговых стратегий. Успешность торговли в этих случаях определяется исключительно способностью верно оценивать риски и управлять ими. Но не все торговые стратегии таковы. Существуют безрисковые стратегии, к которым относится, в частности, арбитраж. В этой статье будет рассказано, что такое арбитраж, и как реализовать его с использованием такого классического алгоритма на графе, как алгоритм Беллмана — Форда.

Что такое арбитраж

Арбитраж — это несколько логически связанных сделок, направленных на извлечение прибыли из разницы в ценах на одинаковые или связанные активы в одно и то же время на разных рынках (пространственный арбитраж), либо на одном и том же рынке в разные моменты времени (временной арбитраж).

В качестве простого примера рассмотрим пространственный арбитраж. В Нью-Йорке и Лондоне можно заключить сделки по покупке долларов за евро и евро за доллары. В Нью-Йорке это можно делать по курсу 4 доллара за 3 евро, а в Лондоне — по курсу 5 долларов за 3 евро. Такая разница курсов открывает возможность для пространственного арбитража.

Имея 4 доллара, в Нью-Йорке на них можно купить 3 евро. После этого в Лондоне купить за эти 3 евро 5 долларов. Как можно заметить, такая несложная последовательность сделок приносит 1 доллар прибыли на каждые вложенные 4 доллара. Соответственно, если изначально имеется 4 миллиона долларов, то и прибыль будет уже в миллион.

Когда обменные курсы (спред не рассматриваем) для одной и той же валютной пары отличаются, то последовательность сделок, необходимых для реализации арбитражной стратегии, очень простая. В случае, если курс для одной валютной пары фиксирован, но торгуются несколько валютных пар параллельно, арбитраж также возможен, но последовательность сделок уже будет нетривиальной. К примеру, можно купить 4 евро за 5 долларов, 3 фунта за 4 евро, а потом 6 долларов за 3 фунта. Прибыль от такой последовательности сделок составит 1 доллар на каждые 5 вложенных долларов.

На бирже могут торговаться сотни валютных пар, а обменные курсы постоянно меняются. Понять, какая последовательность сделок принесёт прибыль, без алгоритмического решения в этом случае уже невозможно.

Переход к алгоритмической задаче

Представим потенциальные сделки обмена валюты в алгоритмическом виде, а именно в виде графа. Вершины в этом графе представляют валюты, а ребра являются возможными сделками. Длина же ребра соответствует обменному курсу, по которому данную сделку можно заключить.

Далее встает вопрос, как в таком графе найти последовательность сделок, которая принесет прибыль. Очевидно, что так как в начале последовательности и в её конце должна быть одна и та же валюта, то последовательность должна соответствовать циклу в заданном графе. Далее необходимо определиться с тем, как вычисляется обменный курс между двумя валютами, если они обмениваются не напрямую, а через некую третью валюту (или произвольное количество промежуточных операций). Тут всё тоже достаточно просто. Такой обменный курс будет вычисляться как произведение обменных курсов промежуточных сделок. Прибыльной последовательность сделок становится, если это произведение принимает значение меньше единицы. Другими словами, если единицу валюты можно купить меньше, чем за единицу этой же самой валюты.

Классические алгоритмы на графах плохо подходят для работы с произведением длин ребер. Такие алгоритмы, в основном, заточены на нахождение пути, который определяется как сумма этих длин. Однако для обхода этого ограничения существует математический способ перейти от произведения к сумме. Таким способом является логарифмирование. Если под логарифмом оказывается произведение, то такой логарифм может быть преобразован в сумму логарифмов. В правой же части этого уравнения желаемым является число меньшее единицы, а значит, логарифм этого числа должен быть меньше нуля.

Такой простой математический трюк позволяет перейти от поиска цикла, произведение длин ребер которого меньше единицы, к поиску цикла, сумма длин ребер которого меньше нуля. Такая задача уже выглядит более решаемой классическими графовыми алгоритмами, а точнее алгоритмом Беллмана — Форда.

Алгоритм Беллмана — Форда

Алгоритм Беллмана — Форда обычно используется для нахождения расстояния от заданной вершины до всех остальных вершин некоторого графа, однако его модификация позволяет найти и циклы отрицательной длины.

Базовой операцией этого алгоритма является релаксация ребер. Суть данной операции следующая. Допустим, что имеется ребро , а еще известны вычисленные ранее предварительные значения расстояний до вершин и . Для выполнения релаксации ребра требуется вычислить, какое получилось бы расстояние до вершины , если бы путь проходил через вершину и ребро . Это расстояние вычисляется как сумма расстояния до вершины и длины ребра . Далее, если это расстояние оказывается меньше текущего предварительного расстояния до , то это самое расстоние до переписывается и принимает новое, только что вычисленное, значение.

Остальной алгоритм тоже несложен. Необходимо раз ( — это количество вершин графа) обойти список ребер, при каждом обходе применяя операцию релаксации. Сложность алгоритма при этом получается (где — количество вершин, а — количество ребер). Для графа без отрицательных циклов дальнейшие релаксации ребер не приведут к изменению расстояний до вершин. В то же время, для графа, содержащего отрицательный цикл, релаксации будут уменьшать расстояние до вершин и после обходов. Это свойство может быть использовано использовано для нахождения искомого цикла.

Тем, кому привычнее разбираться с кодом, должна помочь следующая небольшая реализация описанного выше алгоритма на Kotlin’е.

Разберем пример с небольшим графом, в состав которого входит цикл отрицательной длины. Для работы алгоритма необходимо для каждой вершины поддерживать текущее известное расстояние до неё, а так же ссылку на её предыдущую вершину. Ссылка на предыдущая вершина в данном случае определяется успешной релаксацией ребра. Если операция релаксации прошла успешно, и дистанция до вершины была обновлена, то ссылка на предыдущую вершина этой вершины также обновляется и принимает значение вершины-источника заданного ребра.

Итак, для начала необходимо инициализировать вершины, установив дистанцию до всех вершин кроме начальной равной бесконечности. Для начальной вершины устанавливается дистанция равная нулю.

Далее следует первый обход всех ребер и выполняются их релаксации. Практически все релаксации не дают никакого результата, кроме релаксации ребра . Релаксация данного ребра позволяет обновить расстояние до .

Далее следует второй обход всех рёбер графа и соответствующие релаксации. На этот раз результат дают релаксации ребер , а также . Обновляются расстояния до вершин и . Тут следует заметить, что результат зависит от того, в каком порядке происходит обход ребер.

При третьем обходе ребер удается успешно релаксировать уже три ребра, а именно ребра , , . При этом, при релаксации ребер и обновляются уже записанные ранее расстояния до и , а так же соответствующие ссылки на предыдущие вершины.

При четвертом обходе успешно заканчиваются операции релаксации ребер и . При этом опять обновляются уже записанные значения расстояний до вершин и , как и соответствующие ссылки на предыдущие вершины.

Пятый обход является последним. При этом обходе релаксируются ребра , , . Тут можно заметить, что наличие цикла отрицательной длины уже вносит определенные корректировки в значения расстояний до вершин.

После этого обхода, если бы граф не содержал цикла отрицательной длины, алгоритм был бы закончен, так как релаксация любого ребра уже не внесла бы никаких изменений. Однако для данного графа из-за наличия цикла отрицательной длины, все еще можно найти ребро, релаксация которого обновит значения расстояния до одной из вершин.

Ребро, релаксация которого обновляет расстояние до вершины, найдено. Это подтверждает наличие цикла отрицательной длины. Теперь необходимо найти сам этот цикл. Важно, что вершина, расстояние до которой сейчас обновилось, может быть как внутри цикла, так и вне него. В примере это вершина и она вне цикла. Далее необходимо обратиться к ссылкам на предыдущие вершины, которые аккуратно обновлялись на всех шагах алгоритма. Чтобы гарантированно попасть в цикл, необходимо отступить назад на вершин, пользуясь этими ссылками.

В данном примере переходы будут следующие: . Таким образом находится вершина , которая гарантированно лежит в цикле отрицательной длины.

Далее дело техники. Чтобы вернуть искомый цикл, нужно опять итерироваться по ссылкам на предыдущие вершины, пока опять не встретится вершина . Это будет значить, что цикл замкнулся. Остается только изменить порядок на обратный, так как при итерациях по ссылкам на предыдущие вершины порядок был инвертирован.

В приведенном алгоритме предполагается наличие некоторой изначальной вершины, от которой рассчитываются расстояния. Наличие такой вершины не является обязательным для работы алгоритма, а введена она в большей степени для соответствия изначальному алгоритму Беллмана — Форда. Если же предметом интереса является цикл отрицательной длины, то можно считать, что все вершины заданного графа являются начальными. Другими словами, что дистанция до всех вершин изначально равна нулю.

Заключение

Использование алгоритма Беллмана — Форда в задаче арбитражной торговли является отличным примером того, как классические алгоритмы позволяют решать реальные проблемы бизнеса, в частности, в финансовой сфере. Асимптотическая сложность алгоритма, равная для полносвязного графа, может оказаться достаточно большой. Об этом действительно нужно помнить. Однако во многих случаях, таких как обмен валюты, эта сложность не создает никаких проблем в связи с относительно малым количеством узлов в графе.

Как устроен арбитражный трейдинг?

Еще

В интернете множество способов спекулятивного трейдинга, который может заключаться на скальпинге, высокочастотном алгоритме или арбитраже. Именно с последней методикой мало кто знаком и недавно мне задали вопрос по этой теме на последнем вебинаре. Ответом на вопрос «как устроен арбитражный трейдинг» я бы хотел поделиться в этой статье.

Спекулятивный трейдинг с каждым годом завлекает все больше и больше новых игроков, ведь в краткосрочной перспективе спекуляции способны продемонстрировать больше потенциал доходности, нежели инвестиционные сделки. Все хотят легких или быстрых денег и забывают о простой логике: каждый вид спекулятивного трейдинга заключается в правильном распределении рисков и грамотном управлении капиталом. Однако такая комбинация получается далеко не у каждого трейдера. Именно из-за таких хаотичных решений и слепой веры формируется статистика, при которой практически 90% игроков рынка теряют свои средства.

Если же выбирать спекуляции как источник заработка с финансового рынка, то я настоятельно рекомендую использовать вспомогательные алгоритмы, системы, сигналы, консультации и так далее. Благо мы живём с вами в эпоху информационных технологий, в которой можно автоматизировать каждый процесс и трейдинг в том числе. Если рассматривать алгоритмические стратегии для спекулятивного трейдинга, то самым сложным и полностью неизведанным является именно арбитражный трейдинг.

Арбитраж — это вид спекулятивного трейдинга, который основан на парном анализе одного и того же финансового актива, но на разных брокерских или биржевых площадках. Проще говоря, арбитраж позволяет анализировать один и тот же актив на наличие курсовых расхождений или задержек, с целью открытия краткосрочной сделки. Сама логика работы уже давно не нова, однако на валютном рынке начала использоваться совсем недавно.

Чтобы более подробно понять логику работы, предлагаю рассмотреть конкретный пример:

Стоимость валютной пары EURUSD в одного брокера составляет 1.1230, а во второго 1.1220. То есть существует курсовое расхождение в моменте размера 10 пунктов, при том факте, что нормативное значение равняется 5 пунктам. Торговый робот или вспомогательный алгоритм видит это расхождение и совершает две сделки: на покупку по цене 1.1220 (на торговом счету в первого брокера) и продажу по цене 1.1230 (на торговом счету второго брокера). Когда же цена достигнет нормативного расхождения (5 пунктов), то робот одновременно закроет две сделки. Пускай цена составила 1.1267 и 1.1262 соответственно. Таким образом, трейдер получит убыток на первом счету размером 37 пунктов, а также прибыль размера 42 пункта на счету второго брокера. Общий финансовый результат равняется 5 пунктов чистой прибыли.

Идентично это может работать и на рынке криптовалют.

Как устроен арбитражный трейдинг?

Такой вид спекулятивного трейдинга имеет ряд преимуществ:

  • Минимальный риск при большом потенциале доходности: за счёт того, что алгоритм будет совершать торговые позиции с минимальным временем удержания, трейдер получит возможность совершать множество позиций с прибылью в несколько пунктов. Но если учесть количество сделок за день (около 20-30), то получается отличный процент доходности в месячном разрезе.
  • Автоматический трейдинг: позволяет не тратить время на анализ актива и сформировать пассивный источник доходности.
  • Возможность выбора ключевых параметров для торговли: настройка необходимого функционала и метода работы торгового робота позволят более гибко управлять параметром риск/доходность.

Как устроен арбитражный трейдинг?

На рынке форекс существует множество спекулятивных краткосрочных алгоритмов. Однако далеко не каждая подобная торговая система способна демонстрировать стабильный положительный результат. Множество «кухонных» брокеров попросту запрещают данный вид торговли и прописывают это в своих договорах. Поэтому будьте бдительны!

Я хочу отметить тот факт, что считаю спекуляции основой движения рынка и что на них делаются огромные деньги. Но те трейдеры, которые только знакомятся с рынком, не способны правильно проанализировать ситуацию и войти в рынок. И если вы только знакомитесь с рынком и не понимаете базовых принципов его движения, то с вероятностью 90% у вас будет убыток (на что опять-таки указывает статистика).

Надеюсь этот сложный процесс и алгоритм мне удалось пояснить просто и понятно. Но если у вас возник все же вопрос – пишите мне в комментарии!

Секреты Арбитража на Форекс – та самая стратегия

Здравствуйте, друзья!

Наверняка многие из вас слышали истории об арбитраже на Форекс, как трейдеры зарабатывают сотни и тысячи процентов без риска, после чего брокер не дает им вывести прибыль. Так что же это за за зверь такой и можно ли на самом деле этим зарабатывать?

Сегодня мы разберемся с тем, что такое классический арбитраж на Форекс, изучим его разновидности и выясним, на каких инструментах данный подход все еще прибылен. В конце вас ожидает готовый автоматизированный инструмент для поиска и проторговки арбитражных ситуаций, так что вы сможете самостоятельно проверить описанную теорию на практике.

Виды арбитража

Классический арбитраж – это эксплуатация неэффективностей котирования. Такой арбитраж вполне оправданно называют пространственным, ведь его существование является следствием ненулевого расстояния между источниками котировок.

Данная формулировка одинаково актуальна как для бабушек на рынке, так и для фондовой биржи и высокочастотного трейдинга. Какими бы быстрыми не были каналы связи, мы все еще не способны передавать информацию быстрее скорости света. Это означает, что между двумя отдаленными площадками ненулевая задержка будет существовать всегда, сменятся будут лишь инструменты для проторговки такого арбитража.

Двуногий арбитраж. Обычно под этим подразумевается арбитраж между двумя биржами. Разница в ценах между двумя площадками позволяет купить дешевле и продать дороже один и тот же инструмент.

Классический пример – покупка и продажа EURUSD у двух разных дилеров. На самом деле мы покупаем или продаем спред EURUSD.

В теории эквити такой позиции будет равняться нулю. Но реальный рынок всегда находится в движении, а учитывая накладные расходы (спред + комиссия) и разные источники котировок, эквити такой позиции будет колебаться на некотором расстоянии ниже нуля (уровень безубытка). То есть, если вы сейчас попытаетесь купить и продать EURUSD, скорее всего вы увидите на счету моментальный минус в размере двойного спреда.

Арбитражем же называется ситуация, когда эквити переходит в прибыльную зону. То есть можно сказать, мы заработали без риска, одновременно купив и продав один и тот же инструмент.

Образование подобного арбитража объясняется истинной децентрализованностью биржи. Когда нет единого места для агрегации котировок, всегда может образоваться ситуация, где покупатель предлагает большую цену, чем хочет продавец.

Важно отметить, что при проторговке подобного арбитража для нас неважно направление движения курсов. Купив первый и продав другой инструмент, мы зарабатываем на изменении их спреда (разницы). То есть, на самом деле, инструмент может подорожать на обеих биржах, но вы все равно останетесь в плюсе, если уменьшилась разница цен.

Выходить из позиций можно либо при достижении определенной прибыли, либо разворачивать позиции при появлении обратного условия. То есть, когда образуется обратный арбитраж – покупатели и продавцы поменяются местами.

Пространственный арбитраж получил большое распространение на заре формирования Форекс. Основная причина больших расхождений котировок в слабой централизации самого рынка, появления большого количества мелких маркетмейкеров и отсутствии качественной агрегации.

Чаще всего образование такого арбитража было обусловлено значительным отставанием котировок у одного из дилеров. Некоторые трейдеры и сейчас пытаются торговать по данной стратегии у новообразовавшихся контор, система котирования которых все еще может содержать ошибки, но очевидно золотой век подобной стратегии уже прошел.

Сейчас, когда большая часть процессов стандартизирована, а поставщики ликвидности объединяются в единый поток котировок через крупных агрегаторов, найти и проторговать подобное расхождение обычному трейдеру практически нереально.

Одноногий арбитраж. На самом деле, одновременное открытие позиций на разных биржах не является обязательным условием. Если у вас есть возможность определить “ведущий” рынок, то для проторговки арбитража достаточно открыть сделку только на одной площадке.

Например, мы определили, что котировки брокера А отстают от брокера Б на несколько секунд. При этом цена у брокера Б на данный момент выше на 10 пунктов. В таком случае, мы входим на покупку через брокера А, имея ясное представление о том, куда пойдет цена. С технической стороны это гораздо легче, но сами арбитражные ситуации появляются значительно реже. Еще один минус – отсутствие нейтральности к рынку, что накладывает дополнительные риски и выходит за рамки классического арбитража.

Синтетический арбитраж . Допустим, вы захотели проторговать спред пары EURUSD. Таким образом, можно купить “реальный” EURUSD, захеджировав его синтетиком, продав EURGBP и GBPUSD. Если убрать названия инструментов, вы вряд ли когда-либо отличите синтетический EURUSD от его реального собрата. Однако, имеющихся отличий в котировках может быть достаточно для образования арбитража, проторговка которого уже дело техники.

Такой арбитраж еще называют треугольным. В данном примере у нас в наличии имеется 100 000 евро. На эти средства мы покупаем фунты, затем на фунты покупаем доллары, а затем за доллары снова покупаем евро. При условии небольшого расхождения в курсах у нас есть шанс получить гарантированную прибыль.

Учтите, что на ликвидных инструментах прибыль от подобных арбитражных операций не покрывает накладных расходов в виде спреда и комиссий. В правильно функционирующей системе классический арбитраж проторговать крайне сложно, так как почти вся безрисковая прибыль нивелируется самим рынком еще до вас. Обычному трейдеру без прямого подключения к бирже, большого капитала и специфических знаний здесь ловить нечего.

Долгосрочный арбитраж . Тем не менее, если вас устраивает небольшая доходность, существует вполне рабочий способ проторговки арбитража на большом промежутке времени. Речь, конечно же, идет о расхождении цены фьючерса и базового инструмента в его основе. В целом, стратегия аналогична двуногому арбитражу – при увеличении спреда между двумя инструментами покупаем их спред и ждем экспирации.

Для классического арбитража критически важно качество исполнения, а также наличие низких комиссий и спредов. Все это нужно учитывать перед входом в рынок как потенциальные риски.

В случае долгосрочного арбитража качество исполнения не так важно, при условии использования лимитных заявок. Но нужно учитывать, что арбитражная ситуация может образоваться в течении одного рыночного тика. Поэтому без автоматизации тут не обойтись. Доходность подобной торговли вряд ли кого-либо впечатлит, хотя есть неплохие шансы зарабатывать выше банковского процента.

Основные преимущества

Чтобы определить наличие арбитража, не нужно изучать историю котировок. Текущего потока котировок вполне достаточно, чтобы увидеть неэффективность и успеть ее проторговать. Так как теория арбитража использует неэффективность рынка, для нас также не важна природа котировок.

В целом, для проторговки классического арбитража не требуется ни знаний технического, ни фундаментального анализа. Хотя во время нестабильного рынка (например, выхода новостей) арбитражных ситуаций заведомо больше.

С точки зрения трейдера – это практически идеальная торговая система:

  • Вам не нужно переживать за состояние открытых позиций, новости и ценовые гэпы;
  • После успешного входа прибыль практически гарантирована;
  • Не требуется проводить сложный анализ исторических котировок;
  • Риск неудачи минимален и чаще всего является следствием технического сбоя или плохого исполнения.

Основные проблемы

Главная проблема в том, что на высоколикдвином рынке (например, FOREX) подобные неэффективности уже либо проторгованы кем-то другим, либо практически полностью ликвидированы наличием высокоскоростного канала связи.

С другой стороны, низколиквидные инструменты накладывают собственные ограничения. Сюда можно отнести частичное или попросту долгое исполнение, проскальзывания и, в целом, все связанное с процессом исполнения ордеров. В особенности, это становится проблемой, когда время существования арбитражной ситуации ограничено очень коротким промежутком времени.

В итоге, получается, что наиболее доступный обычному трейдеру арбитраж не может обеспечить высокой доходности, а самые вкусные неэффективности рынка съедают крупные игроки.

Рассвет криптовалют

На рынке криптовалют нет однозначного лидера и основные объемы разделяются между десятками разных бирж. При этом, если основной оборот Биткоина приходится на одну биржу, пиковый оборот по Эфириуму, к примеру, может приходиться совсем на другую биржу. В целом, можно сказать, что рынок криптовалют сейчас обладает гораздо большей децентрализацией, нежели Форекс.

На картинке зеленой зоной показан действующий арбитраж между криптовалютными биржами на примере BTCUSD. Это означает, что на рынке криптовалют существует реальный арбитраж между площадками – вы можете купить валюту в одном месте дешевле и продать в другом месте дороже. На ликвидных инструментах Форекс подобная ситуация большая редкость, а причина тому – стремление к централизации.

Естественно, на самом деле, все немного сложнее, и проторговка такого арбитража требует учета транзакционных расходов. Но еще более интересен арбитраж между криптовалютами и традиционными валютными инструментами. У некоторых брокеров криптовалюты уже торгуются наравне с традиционными инструментами FX. Это позволяет находить арбитражные ситуации, не выходя за пределы одной площадки.

В целом, криптовалюты пригодны для разного рода стратегий, изживших себя на популярных валютных парах. Арбитраж же был и остается самой привлекательной стратегией с точки зрения соотношения риска к прибыли. Суточный торговый оборот криптовалют оценивается миллиардами. Это большой активно развивающийся рынок, и если искать арбитраж в рамках рынка форекс, то только там.

Установка робота

Робот-скрипт Trade-Arbitrage полностью берет на себя задачу по поиску арбитражных ситуаций в пределах одного брокера (площадки). Сперва робот берет все валюты, указанные в параметре Currencies, и пытается собрать из них реальные валютные пары.

Робот написан не совсем стандартным образом и работает как зацикленный скрипт , то есть остается на графике и не удаляется самостоятельно. Обычно скрипты удаляются с графика после выполнения какой-либо функции. В данном случае, удалить скрипт с графика можно только вручную через контекстное меню.

Поэтому файл робота “Trade-Arbitrage.mq4” нужно переместить не в MQL4 Experts, а в MQL4 Scripts . Для этого в терминале перейдите в Файл – Открыть каталог данных.

Далее выберите MQL4, Scripts и переместите сюда файлы робота. После этого перезапустите терминал.

Для запуска просто перетащите скрипт на график.

Также не забудьте разрешить автоматическую торговлю.

Описание робота

Например, в качестве валют для арбитража вы указали: EUR, GBP и USD. Из этого набора можно собрать 3 реальные пары: EURUSD, GBPUSD и EURGBP. Формула арбитража при этом может выглядеть следующим образом: EURUSD && EURGBP * GBPUSD. То есть сравнивается “реальный” и “искусственный” (синтетический) EURUSD.

Работа с роботом требует соблюдения некоторых нюансов. Во-первых, учитывая специфику тестера MT4, протестировать его в тестере нет возможности. Также перед началом работы необходимо собрать реальную статистику по арбитражу. При этом собирать статистику нужно именно на том счету, на котором вы собираетесь торговать, так как котировки разных брокеров и даже разных типов счетов могут значительно отличаться.

Сбор данных. Торговать абсолютно все арбитражные ситуации, коих может быть сотни и тысячи – крайне неэффективное мероприятие. Во-первых, большое количество сделок будет сложно держать под контролем. Во-вторых, по одному и тому же инструменту будет открываться по несколько сделок, что приведет к ухудшению исполнения и дополнительным проскальзываниям. В нашем случае это равноценно убыткам.

Именно поэтому, первоначальная задача для нас – собрать статистику. Затем, проанализировав собранные данные, мы сможем выделить наиболее привлекательные арбитражные ситуации и торговать только их.

Для начала нужно решить, у какого брокера вы будете торговать. Конечно, можно оптимизировать процесс и собирать статистику сразу у нескольких брокеров. Главное, использовать для этой задачи только реальный счет, иначе собранная на демо-счету статистика может не соответствовать действительности.

Итак перед запуском робота обратите внимание на параметр Currencies , где необходимо указать список валют (не пар) для торговли. Также правильное значение нужно указать в поле MinPips , то есть минимальный размер расхождения для классификации арбитража. В теории любое положительное значение (от 0.1 = 1 пипс) можно считать прибылью. Однако, арбитраж часто появляется на ценовых пиках, а его время жизни может составлять всего 1 тик. Поэтому с учетом возможных проскальзываний рекомендуется ставить значение не меньше 3.0 пунктов. Естественно, не забудьте включить мониторинг – Monitoring = true.

Все найденные арбитражные ситуации записываются в текстовый файл “Arbitrage”, находящийся в каталоге MQL4 – Files. Здесь записывается время появления арбитража, его формула, точные цены bid и ask и непосредственно величина их расхождения – сам арбитраж (отмечено красным).

Анализ собранных данных . В зависимости от величины MinPips (чем больше, тем дольше) на качественный сбор статистики может понадобиться достаточно много времени. В целом, месяца должно быть достаточно, но вы можете ограничиться и более коротким периодом.

Вместе с файлом “Arbitrage” робот заполняет файл “Arbitrage-Statistic”, содержащий в себе все найденные арбитражные формулы (арбитражные сетапы), отсортированные по частоте появления.

Самый простой способ отбора сетапов – взять верхние значения из списка. Но лучшим решением будет проанализировать каждый уникальный сетап вручную. Важно, чтобы найденные арбитражные ситуации не были следствием выхода новостей, либо любых других нерыночных пиков, так как на реальном рынке вся прибыль подобных сделок будет съедаться проскальзываниями.

Начало торговли . Проанализировав и отобрав лучше сетапы, создаем в каталоге MQL4 – Files новый текстовый файл – “Trade-Arbitrage” и записываем туда лучше формулы (каждую с новой строки). Именно по этим формулам будет производиться торговля. Чтобы робот подхватил вновь созданный файл, просто перезапустите его.

Точный объем позиций для создания хеджа рассчитывается автоматически на основе указанных во входных параметрах значений. Также при добавлении эксперта на реальный счет не забудьте отключить мониторинг ( Monitoring = false).

Открыв позиции, робот будет постоянно находиться в мультивалютном хедже. Условие открытия позиции – расхождение двух синтетиков на более чем MinPips пунктов. При удовлетворении обратного условия позиции переворачиваются, фиксируя накопленную прибыль.

Описание настроек

  • Currencies – перечень валют для генерации пар синтетиков. Чем больше валют, тем больше потенциальных возможностей арбитража, но старайтесь не указывать здесь не торгуемые инструменты;
  • MinPips – мин. разница (4-х знак) между ценами bid и ask для проторговки арбитража;
  • SlipPage – ограничения скольжения цены при открытии ордера;
  • Lock – запрет на создание лока;
  • Lots – объем позиции для сгенерированного синтетика;
  • MaxLot – максимальный объем позиции по реальному инструменту;
  • MinLot – минимальный объем по реальному инструменту;
  • Monitoring – включает или отключает запись лог-файлов найденного арбитража. Учтите, что при реальной торговле данную функцию лучше отключить, так как чтение и запись на диск большого количества файлов может внести дополнительную задержку;
  • TimeToWrite – частота записи в файл (в минутах).

Заключение

Тема классического арбитража имеет глубокие исторические корни и даже в текущих реалиях сохраняет актуальность. На данный момент, наибольшее количество подобных неэффективностей проявляется на рынке криптовалют. Если вы собираетесь заниматься темой арбитража, в первую очередь, обратите внимание на рынок Форекс и крипто-биржи. Арбитраж между новыми и старыми денежными знаками при должной мере вовлеченности может стать неплохой рыночно-нейтральной стратегией.

Скачать советник Trade-Arbitrage

С уважением, Алексей Вергунов
TradeLikeaPro.ru

Источник https://habr.com/ru/post/487742/

Источник https://smart-lab.ru/blog/549667.php

Источник https://tlap.com/klassicheskiy-arbitrazh/

Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: