Как вы отсеиваете гигантский спред? - страница 3

 
...:

Вопрос в теме. 

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

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

Пока сравниваю текущий спред со средним за последние, допустим 50 баров, но может есть более правильное решение? 

А зачем Вы это делаете - не понятно совсем?! Это деньги брокера и считать их смысла нет совсем ни какого. Это с каждой открытой Вами сделки до ее закрытия, спред - разница между ценой  Ask и Bid принадлежит брокеру у которого  открыт Ваш счет. Побороть его можно с самим брокером, к примеру пообещать что-нибудь в замен на уменьшение расстояния между ценой открытия и закрытия ордера. То есть, от туда Вам брокер свое не отдаст. И это надо понимать. Бесит он Вас или не бесит - брокера этот момент совсем не волнует. Но иногда некоторые брокеры устраивают типа акций и уменьшают спред на тех, или иных валютных парах. Есть такая присказка, что считать чужие деньги ни к чему к хорошему не приводят.  Еще есть брокеры, которые берут комиссию и это хорошо, своего рода гарантия что Вас не кинут. Потом проскальзывание тоже участвует в решении за брокером - открывать Ваш ордер, или нет и по какой цене?! Так что если Вы программируете, то Вам надо запомнить эти моменты и все. Удачи. 

 
Vladimir:

Другими словам, вместо Bid+Spread используется Ask, тождественно равный этой сумме в рамках одного тика. Так яснее, компактнее и быстрее. Но замена переменных не меняет сути дела, применяемые Bid и Ask отличаются друг от друга ровно на текущий спред, всегда.

Aliaksandr Hryshyn:

Всёравно учитывается, пускай даже и на равных. Спред влияет на размер канала, канал определяет условия входа. Вывод: спред влияет на условия входа, пускай даже и неявный, но всё-таки учёт.

Вы оба ошибаетесь. Спред на открытии никакого отношения не имеет к спреду на закрытии. Даже завуалировано спред нигде не используется.

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

 
fxsaber:

Вы оба ошибаетесь. Спред на открытии никакого отношения не имеет к спреду на закрытии. Даже завуалировано спред нигде не используется.

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

В коде, о котором идет речь, нет ни спреда на открытии, ни спреда на закрытии. Используются Bid и Ask из одного тика Tick, разность между ними в точности текущий спред.

      if (Tick.bid > this.MinMax)
        this.MinMax = Tick.bid;
      else if (Res = (this.MinMax - Tick.ask >= this.MinPips))
      {
        this.MinMax = Tick.ask;

Показали бы, fxsaber, получающийся зигзаг. Интересно.

 
Vladimir:

В коде, о котором идет речь, нет ни спреда на открытии, ни спреда на закрытии. Используются Bid и Ask из одного тика Tick, разность между ними в точности текущий спред.

Только эта разность нигде не используется. Как бы сильно не расширялся спред (опускался Bid или поднимался Ask), на торговые сигналы это никакого влияния не оказывает.

Логика такая: если опустился Ask до нужного уровня - BUY, поднялся Bid до вычисленного уровня - SELL.

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

 
fxsaber:

Только эта разность нигде не используется. Как бы сильно не расширялся спред (опускался Bid или поднимался Ask), на торговые сигналы это никакого влияния не оказывает.

Логика такая: если опустился Ask до нужного уровня - BUY, поднялся Bid до вычисленного уровня - SELL.

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

Так покрутите в тестере свой советник с разными спредами, поставьте очень большой и маленький. Как ни крути, это всё равно влияет на результаты.

 
Aliaksandr Hryshyn:

Так покрутите в тестере свой советник с разными спредами, поставьте очень большой и маленький. Как ни крути, это всё равно влияет на результаты.

Не нужно путать следствие с причиной.

 
Просто для примера. На данных с демо-сервера MQ. Депо $10К.

1. Без фильтрации спреда результат : -$1127
2. С фильтрацией : +$2589 

Вся разница в одной строке #42 :) 
void OnTick()
{
  //if (GetSpread(xSymbol, 50) > GetSpread(xSymbol, 1))
  {
     GoLong();
     GoShort();
  }
}
Файлы:
 
Aliaksandr Hryshyn:

Сравнивайте спред с вероятной прибылью в пунктах. Можно определить отношение спреда к тейкпрофиту, или отношение спреда к вероятной прибыли(в пунктах), которая была уже подсчитана на ранних сделках....

Например, выберем число 0.05, что будет означать, что спред не должен быть больше 5% от тейкпрофита. Таким образом отфильтровывать точки входа. Ещё желательно оставлять возможность входа некоторое количество времени(например 1/3 времени бара для больших периодов) в течении которого спред может уменьшиться и цена не сильно ухудшится.

Это можно реализовать в коде и решение будет универсальным, не зависеть от инструмента.

Идея про соотношение спред / профит нравится. А про бары не совсем понял. Выложил пример советника в конце темы, там нет проверки на бары, только расстояние пройденное ценой.

 

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

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

 
Dmitiry Ananiev:

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

Низ канала мы поднимаем на какое то количество пунктов равному среднему спреду ...

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