Советники: Arbitrage Synthetic

 

Arbitrage Synthetic:

Пример советника, сравнивающего EURGBP с синтетическим эквивалентом и торгующего в сторону отставания котировок по оригинальной логике (одноногий арбитраж). Отставание рассчитывается для каждой из валютных пар EURGBP, EURUSD, GBPUSD. Открывается только одна позиция по отстающему инструменту, без хэджа по остальным. Но позиции могут быть открыты по всем 3-м инструментам, если есть сигналы по каждому из них.

input int spread=35;     // Spread deviations in points (between synthetic and base pair)
input long delay=200;    // Delays in milliseconds (between synthetic and base pair)
input int checkout=200;  // Check signal every (ms)
input string ettings="MONEY MANAGEMENT SETTINGS";
input string SymbolSuffix="";
input int MaximumSpread = 30;
input int StopLoss=250;
input double MaximumRisk=0.01;

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

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

Тестирование необходимо производить на реальных тиках. Пример настроек на скриншоте.

Автор: Maxim Dmitrievsky

 

Заметил, что популярна практика использования графических объектов в советниках.

С чем это связано? Сам никогда не использовал.

 
fxsaber:

Заметил, что популярна практика использования графических объектов в советниках.

С чем это связано? Сам никогда не использовал.


не знаю, я наверное визуал и люблю все визуализировать

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

и немного переделал перед публикацией т.к. появилась возможность получать время тиков до миллисекунд в тестере (до этого возвращал до секунд)

 
Maxim Dmitrievsky:

не знаю, я наверное визуал и люблю все визуализировать

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

и немного переделал перед публикацией т.к. появилась возможность получать время тиков до миллисекунд в тестере (до этого возвращал до секунд)

MT4?

 
fxsaber:

MT4?


нет, мт5, старый в смысле чуть больше года, когда многие брокеры только начинали вводить мт5 и котирование у них не было идеальным, можно было колбасить

мт5 тестер еще полгода назад не возвращал время тиков до миллисекунд, насколько помню (или чуть больше)

 
DiffMax, DiffMin, EurDiffMax, EurDiffMin, GbpDiffMax, GbpDiffMin;

Странно, что компилятор пропускает без предупреждения отсутствие инициализации. Фактически, это совпадение, что они инициализируются нулем. А так ошибка, конечно.

 

Вы же знаете, как посчитать среднее между A и B! Почему тогда так?!

MedianEURUSD=NormalizeDouble(tickEUR.ask-(tickEUR.ask-tickEUR.bid)/2,_Digits);
 
fxsaber:

Странно, что компилятор пропускает без предупреждения отсутствие инициализации. Фактически, это совпадение, что они инициализируются нулем. А так ошибка, конечно.


да, верно. потому и не заметил что все работает, видимо

 
Это явно лишнее
         if(m_Position.PositionType()==POSITION_TYPE_SELL && m_Position.Profit()+m_Position.Commission()>0) m_Trade.PositionClose(symbol);
 
fxsaber:

Вы же знаете, как посчитать среднее между A и B! Почему тогда так?!


не помню уже о чем я думал в тот момент, по сути без разницы

 
fxsaber:
Это явно лишнее

почему? профит+комисс, не понятно почему без скобок :)

Причина обращения: