MQL4 - automated forex trading   /  

Code Base

Code Base  Советники  Trade-Arbitrage Авторизуйтесь или зарегистрируйтесь, чтобы добавить новый код

Этот индикатор для
MetaTrader 4

Мобильный трейдинг!
Купите лицензию и торгуйте мобильно

Имя:
Trade-Arbitrage [ en ]
Автор: getch (27.11.2009 09:57)
Рейтинг: 10
Скачано: 3576
Скачать:
 Trade-Arbitrage.mq4 (39.9 Kb) View
 CheckMyArbitrage.mq4 (2.8 Kb) View
 Trade-Arbitrage.txt (151 bytes)

Теория:

На примере EURUSD. Представьте синтетические пары EURUSDx и EURUSDy. Они ходят рядом друг с другом. Открытие по ним разнонаправлено создаст хеджированную ситуацию.
Открытие: BUY EURUSDx и SELL EURUSDy. Через какое-то время закрытие: SELL EURUSDx и BUY EURUSDy.
Прибыль: Profit = (BIDx - ASKx) + (BIDy - ASKy) = (BIDx - ASKy) + (BIDy - ASKx)
В получившейся крайней записи значение первой скобки известно при открытии (BUY EURUSDx и SELL EURUSDy), второй - при закрытии (SELL EURUSDx и BUY EURUSDy).
Условий, при которых Profit будет положительным немало. Одно из них:
При открытии BIDx > ASKy, при закрытии BIDy > ASKx.

Практика:

Представленный советник Trade-Arbitrage эксплуатирует приведенное выше условие (можно модифицировать под любое другое):

Советник проверяет (в реальном времени) ситуации BIDx > ASKy между ВСЕМИ (тысячи вариантов) возможными синтетическими парами. И открывает между ними соответствующие позиции. Это значит, что советник всегда находится в мультивалютном хэдже.

Создается файл ArbitrageStatistic.txt с отсортированными (по частоте) вариантами арбитража.


Пример файла ArbitrageStatistic.txt

Также дописывается (Monitoring = TRUE) в файл Arbitrage.txt каждая ситуация арбитража с подробностями .


Пример файла Arbitrage.txt

Торговля ведется по вариантам пар синтетических торговых инструментов, указанным в файле Trade-Arbitrage.txt (находится в папке experts\files).


Пример файла Trade-Arbitrage.txt

Советник производит достаточные для дальнейшего анализа записи в лог по торговым действиям, их причинам и следствиям.


Иллюстрация работы советника Trade-Arbitrage (снизу) и скриптов NettoTrading (слева) и CheckMyArbitrage (справа)

Мультивалютный хэдж имеется возможность проверить зацикленным скриптом CheckMyArbitrage.

Входные данные:

  • Currencies - список валют, из которых будут генерироваться все возможные синтетические пары.
  • MinPips - минимально учитываемая (как арбитраж) разница в пунктах (старых) между BIDx и ASKy.
  • SlipPage - допустимое проскальзывание в пипсах (брокера) для Market-запросов (у различных брокеров проскальзывание реализовано по разному).
  • Lock - разрешать (TRUE) локи или нет (FALSE).
  • Lots - объем позиции для открытия/закрытия по сгенерированному символу.
  • MaxLot - максимально допустимый лот для одной позиции реального (брокер) символа.
  • MinLot - минимально допустимый лот для одной позиции реального (брокер) символа.
  • Monitoring - производить подробную запись (TRUE) всех случающихся арбитражных ситуаций в файл или нет (FALSE). Запись занимает время, которое критично для арбитража.
  • TimeToWrite - Через какое время (в минутах) будут записываться в файл (ArbitrageStatistic.txt) статистические данные об арбитраже.

Советник учитывает (мультивалютный хэдж не нарушается):

  • ошибки торговых приказов (Rejects и т.д.).
  • частичное исполнение (Partial Fills). Некоторые брокеры поддерживают такой вид исполнения.
  • нюанс, связанный с минимально разрешенным лотом брокера (MinLot).
  • при Lock = TRUE количество критичных для арбитража торговых приказов минимально. При этом локированные позиции нивелируются.
  • запрет локов (Lock = FALSE).

Возможные проблемы:

  • Отрицательные проскальзывания и комиссии "съедают" прибыль.
  • Длительные исполнения торговых приказов, во время которых цены на другие символы значительно меняются.
  • Асинхронная обработка брокером торговых приказов.
  • Малое время арбитража.


Возможные улучшения:

  • Использование Limit-ордеров.
  • Одновременная отправка по различным символам (эмуляция асинхронности) торговых приказов с нескольких терминалов на одном счету.
  • Временной учет асинхронности брокера.
  • Сбор и использование большей статистической информации для эксплуатации иных от MinPips условий арбитража. Например, BIDx - ASKy > SPREADx + SPREADy.
  • Сбор и использование статистической информации о длительности арбитража.
  • Приоритет в очереди выставления торговых Market-приказов (например, по символу с наибольшим тиковым объемом или находящимся в текущий момент в локальном ценовом экстремуме).

Особенности советника:

  • Мультивалютный, поэтому для тестере стратегий не годится. Может запускаться, как скрипт.
  • Совершенно не используется история цен. Теория арбитража использует неэффективность рынка (котирования), поэтому для работы советника не имеет значение природа котировок.
  • Советник не "сливает".
394 комментария: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 > >>   Авторизуйтесь или зарегистрируйтесь, чтобы добавить новый комментарий

Определил среднее максимальное время работы советника при условии не выставления ордеров составило 484 мс, правда был один выброс в размере 13172 мс. Среднее время составило порядка 160 мс. Измерения проводились в течении 4 часов.

13.03.2010 00:42 assol_7
Stoic писал(а):

А насчет спрэдов, Автор то же полагает что они на его стратегию не влияют? Может Вы обоснуете свою точку зрения так сказать на фактическом материале?


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

для того что бы получить результат Вам как мне кажется :) прийдется войти в рынок и выйти из него?! В нашем случае количество минимальное инструментов три. Таким образом при наступлении арбитражной ситуации Вы откроете три позиции и будете ожидать возвращения цен к их "нормальному" состоянию. Далее закроете сдеки по инструментам. Прибыль = первоначальная разница в пунктах-спрэд1-спрэд2-спред3-проскальзывание по всем инструментам. В нашем случае стратегия переворотная это как я понимаю означает что что после открытия позиций по инструментам стратегия дожидается обратной арбитражной ситуации и открывается в обратную сторону с помощью функции OrderCloseBy(), тогда наше первоначальное "уравнение" имеет вид Прибыль =первоначальная разница в пунктах*2 - спрэд1/2 - спрэд2/2 - спрэд3/2 - проскальзывание по инструментам. В лучшемслучае если Diff превышает параметр MinPips на несколько пунктов то спрэды могут быть компенсированны, в худшем если арбитражная ситуация строго укладывается в MinPips убыток будет накапливаться в открытых позициях хотя баланс будет увеличиваться.

05.03.2010 21:25 assol_7

Интересная тема, но действительно у одной компании мало вероятно получить прибыль, синхронно не получится, а там уже считай и курсы изменились, наверное есть смысл ее рассматривать как межброкерный арбитраж, но тут тоже возникает куча проблем, больше 32 терминалов не запускается на одном компе, опять же все просчитывать надо, это занимает время, вообщем это я так по диагоналии прочитал надо пощупать. Небольшой офтоп вот у людей серьезный подход www.sportarbs.com куча серверов, все под контролем. Сам занимаюсь арбитражем, но своповым, скукотища.


05.03.2010 15:00 kaisa

А насчет спрэдов, Автор то же полагает что они на его стратегию не влияют? Может Вы обоснуете свою точку зрения так сказать на фактическом материале?


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

05.03.2010 10:10 Stoic

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

04.03.2010 23:36 getch
Stoic писал(а):
assol_7 писал(а):
Stoic писал(а):
assol_7 писал(а):
Stoic писал(а):

Господа, идея и реализация советника замечательная! Но есть одно очень большое и существенное но! На практике он работать не будет в рамках МТ4, какого вы брокера бы не выбрали, пусть он даже будет с исполнением приказов Instant Execution без проскальзываний. Тут ведь проблема в чем: пока МТ4 обработает информацию, пока отдаст торговые приказы, причем поочередно, цена естественно уходит хотя бы по одному приказу (последнему, например).

Таким образом - это замечательный инструмент для теоретического изучения. Другой вопрос, если все это реализовать не с использованием MQL и МТ4 соответственно.

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

Логин - 2223967

Пароль инвестора - fyfr1pi

ДЦ - Альпари

Ну-ну! :)


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

Не хотел обидеть! По поводу минпипс это понятно, кстати он у вас неправильно выставлен в таком случае. Но ваши минлот 0.1 и лотс 0.2 - условия арбитража тем более явно не будут соблюдаться. Для хотя бы какого-то профитного исполнения арбитража в условиях проскальзывания и свопов необходимо лотс 1, минлот 0.01 и минпипс в районе 10 и более - тогда еще что-то можно выжать, но это уже не арбитраж, а ерунда какая-то! А скорость в 100 герц, это, конечно же, высокий результат, но не тот, что необходим. Выжать максимум из недостаточного не есть достаточно. А спреды никакого отношения к такому арбитражу вообще не имеют.

Нужно учесть что шаг изменения лота равен 0.01, Непонятно правда почему Вы полагаете что лот должен быть равен 1?. А насчет спрэдов, Автор то же полагает что они на его стратегию не влияют? Может Вы обоснуете свою точку зрения так сказать на фактическом материале?

04.03.2010 23:09 assol_7
Ну-ну! :)

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

Не хотел обидеть! По поводу минпипс это понятно, кстати он у вас неправильно выставлен в таком случае. Но ваши минлот 0.1 и лотс 0.2 - условия арбитража тем более явно не будут соблюдаться. Для хотя бы какого-то профитного исполнения арбитража в условиях проскальзывания и свопов необходимо лотс 1, минлот 0.01 и минпипс в районе 10 и более - тогда еще что-то можно выжать, но это уже не арбитраж, а ерунда какая-то! А скорость в 100 герц, это, конечно же, высокий результат, но не тот, что необходим. Выжать максимум из недостаточного не есть достаточно. А спреды никакого отношения к такому арбитражу вообще не имеют.


04.03.2010 21:12 Stoic
ress писал(а):
assol_7 писал(а):
Stoic писал(а):

Господа, идея и реализация советника замечательная! Но есть одно очень большое и существенное но! На практике он работать не будет в рамках МТ4, какого вы брокера бы не выбрали, пусть он даже будет с исполнением приказов Instant Execution без проскальзываний. Тут ведь проблема в чем: пока МТ4 обработает информацию, пока отдаст торговые приказы, причем поочередно, цена естественно уходит хотя бы по одному приказу (последнему, например).

Таким образом - это замечательный инструмент для теоретического изучения. Другой вопрос, если все это реализовать не с использованием MQL и МТ4 соответственно.

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

Логин - 2223967

Пароль инвестора - fyfr1pi

ДЦ - Альпари

Подскажите,какие у Вас настройки робота,работающего на замониторенном счёте?


inputs: Currencies="AUD, EUR, USD, CHF, JPY, NZD, GBP, CAD, SGD, NOK, SEK, DKK, ZAR, MXN, HKD, HUF, CZK, PLN, RUR, TRY"; MinPips=3; SlipPage=0; Lock=true; Lots=0.2; MaxLot=2; MinLot=0.1; Обратите внимание что MinPips скорее всего недостаточно, так как если посмотреть на величину "Свободно" в МТ 4, то эта величина понемногу уменьшается за счет свопов, так же нужно убрать инструменты спред по которым превышает 3.

04.03.2010 21:00 assol_7
Stoic писал(а):
assol_7 писал(а):
Stoic писал(а):

Господа, идея и реализация советника замечательная! Но есть одно очень большое и существенное но! На практике он работать не будет в рамках МТ4, какого вы брокера бы не выбрали, пусть он даже будет с исполнением приказов Instant Execution без проскальзываний. Тут ведь проблема в чем: пока МТ4 обработает информацию, пока отдаст торговые приказы, причем поочередно, цена естественно уходит хотя бы по одному приказу (последнему, например).

Таким образом - это замечательный инструмент для теоретического изучения. Другой вопрос, если все это реализовать не с использованием MQL и МТ4 соответственно.

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

Логин - 2223967

Пароль инвестора - fyfr1pi

ДЦ - Альпари

Ну-ну! :)


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

04.03.2010 20:58 assol_7
assol_7 писал(а):

Логин - 2223967

Пароль инвестора - fyfr1pi

ДЦ - Альпари

Подскажите,какие у Вас настройки робота,работающего на замониторенном счёте?


04.03.2010 19:33 ress