Aрбитраж

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

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

Вот типичный пример тестирования такой стратегии:




О таких параметрах торговой системы, как говориться, можно только мечтать. Если конечно не обратить внимание на средства. А эти самые средства в своем минимуме находятся в состоянии margin call. Правда если, дилер влепит маржинколл, то в данном случае, все равно, деньгами оставшимися на депозите, советник вытянет баланс на тот самый уровень, который показан на графике (проверено, т.е. на демосчету один раз удалось попасть в margin coll и при первом же развороте тренда был успешный выход вывод баланса в плюс). Т.е. эта стратегия позволяет продержаться до победного конца, в отличие, от таких злокачественных ТС, как например, метод Мартингейла. Если средств на счету не хватает, то все равно можно брать в долг и вкладывать в стратегию. Рано или поздно она вернет все долги с лихвой. (При Мартингейле прибыль растет линейно, а убытки по экспоненте, поэтому даже короткая серия убытков не позволяет отыграться. В данной ТС и прибыль и убытки близки к линейным, а посему стратегия позволяет выдерживать довольно продолжительные "черные" вторники, терпеливо пережидая плохие времена, до праздников на своей улице).

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

Обратные курсы не обязательно должны быть к валюте депозита. Можно к любой валюте, лишь бы у всех символов первая валюта была одинакова. Например:
  • Обратные к баксу: USDJPY, USDCHF, USDCAD, USDSGD и т.д.
  • Обратные к евро: EURUSD, EURGBP, EURCHF, EURJPY и т.д.
  • Обратные к фунту: GBPUSD, GBPYPY, GBPCHF, GBPNZD и т.д.
Еще одно важное замечание: у всех пар группы должны быть одинаковые размеры контрактов по спецификации. Чаще всего ДЦ устанавливают 100000 единиц на лот. Если размеры конрактов у какой либо пары отличаются от других пар группы, то такую валютную пару нельзя включать в эту самую группу.

Как настраивать. Каждый советник имеет всего три неоптимизируемых (оптимизировать тут нечего) параметра:

1. experts - количество советников в группе по валюте обратного курса. Например, если у Вас стоят три советника на чартах USDJPY, USDCHF и USDCAD, то этот параметр должен быть равен 3. Но магический номер для всех трех советников должен быть одинаковым. При тестировании отдельных советников этот параметр устанавливается в 1. Мультивалютный режим в тестере не предусмотрен, поэтому тестировать советников из группы можно поодиночке.
2. magicnumber - магический номер. Предназначен для того, чтобы различать группы советников по валюте обратного курса. Следует учитывать, что в истории счета, на момент установки группы советников, не должно быть закрытых сделок у которых магический номер будет совпадать с номером новой группы. Советник просматривает историю счета и для открытых и для закрытых позиций и по ним делает все расчеты.
3. beginPrice - начальная цена Bid для конкретного инструмента. Имеется в виду текущая цена в момент установки советника. Если проводится тестирование советника на исторических данных, то следует взять цену начала истории.

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

Ну и в прикрепленном файле скомпилированный код советника для независимого тестирования и применения. Качество тестирования не имеет никакого значения, т.к. советник:
  1. отдает приказы только по сформировавшимся барам
  2. не торгует по сигналам технических индикаторов, а использует только текущие цены
Но если кому неймется, то пожалуйста, можете загнать в тестер историю минуток, начиная с каменного века.
Файлы:
 
Христосе Воскресе! С праздником, господа трейдеры и всех, кто под трейдеров косит!

Господин Решетов нам праздничный подарок преподнес.

Завел демку. Интересно, за какое время сольет депо на 10000?

Понавешал советников как собак на чарты

магик номер 1 - USDCAD USDJPY USDCHF USDSGD USDZAR USDDKK USDNOK USDSEK
магик номер 2 - EURUSD EURAUD EURCAD EURCHF EURGBP EURJPY EURNZD
магик номер 3 - GBPUSD GBPAUD GBPCAD GBPCHF GBPJPY GBPNZD
магик номер 4 - AUDUSD AUDCAD AUDCHF AUDJPY AUDNZD
магик номер 5 - NZDUSD NZDCAD NZDCHF NZDJPY
магик номер 6 - CADCHF CADJPY

цены взял по закрытию пятницы. Сегодня воскресенье.

правильно я подобрал группы и магики?
 
usdjpy:
Христосе Воскресе! С праздником, господа трейдеры и всех, кто под трейдеров косит!

Господин Решетов нам праздничный подарок преподнес.

Завел демку. Интересно, за какое время сольет депо на 10000?

Понавешал советников как собак на чарты

магик номер 1 - USDCAD USDJPY USDCHF USDSGD USDZAR USDDKK USDNOK USDSEK
магик номер 2 - EURUSD EURAUD EURCAD EURCHF EURGBP EURJPY EURNZD
магик номер 3 - GBPUSD GBPAUD GBPCAD GBPCHF GBPJPY GBPNZD
магик номер 4 - AUDUSD AUDCAD AUDCHF AUDJPY AUDNZD
магик номер 5 - NZDUSD NZDCAD NZDCHF NZDJPY
магик номер 6 - CADCHF CADJPY

цены взял по закрытию пятницы. Сегодня воскресенье.

правильно я подобрал группы и магики?

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

для всех USD* magicnumber = 1 experts = 8
для всех EUR* magicnumber = 2 experts = 7
для всех GBP* magicnumber = 3 experts = 6
для всех AUD* magicnumber = 4 experts = 5
для всех NZD* magicnumber = 5 experts = 4
для всех CAD* magicnumber = 6 experts = 2
 
Reshetov:
Что такое необходимый арбитраж, пояснять не буду. В данном случае предлагается аналогичная стратегия, только в реальном арбитраже сделки совершаются в том случае, когда появляется выгодная разница цен между реальным товаром и биржевыми контрактами. А в данном случае разница берется только по контрактам биржевым.
С 1999 по сегодня.

 
Христос Воскресе!
Господин Решетов, поясните пожалуйста, для чего нужен параметр  "beginPrice".  Цену Bid можно определить програмно. А вручную это делать не удобно.
 
В основе идеи два ключевых понятия - реальная товар и биржевой контракт.
Если цена на биржевой контракт - это и есть цена на валюту в какой-то момент времени, то
как определяется цена на реальный товар, то есть на валюту, по которой ведем арбитраж?
А если эта реальная цена изменится в какой-то момент времени?
Если за под понятием реальная цена ничего обоснованного нет и она есть настраиваемый неизменяемый параметр, то вроде тот же мартингейл получается, только множитель равен единице.
При торговле корзиной коррелированных валют еще понятно, есть вероятность, что прибыль корзины в какой-то момент времени окажется в плюсе.
Встает вопрос подборки такой корзины.
 
Doctorcoot:
Христос Воскресе!
Господин Решетов, поясните пожалуйста, для чего нужен параметр "beginPrice". Цену Bid можно определить програмно. А вручную это делать не удобно.
Потому что программа при запуске события start() ведет полный пересчет бухгалтерии из истории, т.е. по всем уже закрытым и открытым позам со своими магическими номерами. Ясен пень, что она пляшет от начальной цены, которая была до первой сделки по паре. Можно было бы конечно же хранить всю бухгалтерскую информацию в файлах или в глобальных переменных. Но какой смысл заморачиваться, если итак уже ведется история счета и она советникам доступна? Осталось только запомнить начальную цену, а поскольку и эту информацию можно хранить во входной переменной, то мы этой возможностью и пользуемся.

Было бы весьма забавно посмотреть на процесс, когда бедолага будет вручную вбивать цену Bid во входные параметры всех советников по мере изменения этой самой цены. Любопытно, сколько же надо выпить на Пасху, чтобы до такого додуматься?
 
Воистину воскресе! Ясен пень (с), что с такими просадками на реале долго не живут.
 
   Конечно на реал такую машину поставить я бы не рискнул, но в целом идея не плохая. Вот бы взглянуть на его внутренние органы. Как на счет предоставить код на всеобщее обозрение? (Если не жалко)
 

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

Файлы:
surfing.mq4  4 kb
 
Reshetov:
для всех EUR* magicnumber = 2 experts = 7
Пока только +22.39 евриков закрыл по группе EUR*

Server: SIG-Demo.com
Login : 1000132033
Investor Password: grmn2un
Причина обращения: