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

 

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

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

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

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

double GetSpread(const string symbol, const int bars)
{
  double spread = 0;

  int values[];
  int count = CopySpread(symbol, PERIOD_CURRENT, 0, bars, values);

  for (int i = 0; i < count; i++)
  {
    spread += values[i];
  }

  return spread / bars * SymbolInfoDouble(symbol, SYMBOL_POINT);
}

if (GetSpread(Symbol(), 50) > GetSpread(Symbol(), 1))
{
  GoLong();
  GoShort();
}

 
...:

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

Используйте в алгоритме торговых сигналов не только Bid, но и Ask. При этом Bid и Ask должны быть использованы "на равных".

 
fxsaberИспользуйте в алгоритме торговых сигналов не только Bid, но и Ask. При этом Bid и Ask должны быть использованы "на равных".

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

А можно ли как-то избавиться от хардкода в 50 баров при запросе на эталонный / средний спред? 

Бонусный вопрос.

Если я получаю спред, допустим, на дневном баре через CopySpread(...PERIOD_D1...), то какой спред мне вернется? 

  1. спред во время открытия бара
  2. спред бара на последнем тике
  3. минимальный спред бара
  4. максимальный спред бара

double GetSpread(const string symbol, const int bars)
{
  if (bars <= 1)
  {
    return SymbolInfoDouble(symbol, SYMBOL_ASK) - SymbolInfoDouble(symbol, SYMBOL_BID);
  }

  double spread = 0;

  int values[];
  int count = CopySpread(symbol, PERIOD_CURRENT, 0, bars, values);

  for (int i = 0; i < count; i++)
  {
    spread += values[i];
  }

  return spread / bars * SymbolInfoDouble(symbol, SYMBOL_POINT);
}
 
...:

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

А можно ли как-то избавиться от хардкода в 50 баров при запросе на эталонный / средний спред? 

Вы не поняли. В торговой логике не должно быть совсем спреда.

Бонусный вопрос.

Если я получаю спред, допустим, на дневном баре через CopySpread(...PERIOD_D1...), то какой спред мне вернется? 

  1. спред во время открытия бара
  2. спред бара на последнем тике
  3. минимальный спред бара
  4. максимальный спред бара

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

 
fxsaber:

Используйте в алгоритме торговых сигналов не только Bid, но и Ask. При этом Bid и Ask должны быть использованы "на равных".

Шикарная идея.
 
fxsaber:

Вы не поняли. В торговой логике не должно быть совсем спреда.

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

 

вот действительно, ладно, спред большой, и что ?

не открываться ? через 5 секунд он может стать маленьким, вот и все...

не открылись, а потом будете жалеть.

 
...:

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

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

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

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

Посмотрите статистику значений спредов за сутки https://www.mql5.com/ru/forum/204318/page3#comment_5313142, (да и всю тему), увидите их расширение в ночные часы, а вовсе не в связи с числом баров какого-либо таймфрейма. А как правильно - это Вам станет понятно самому, ведь только Вы знаете, как торгуете. И на каких счетах (есть ли среди них счета с фиксированным спредом).
Почему каждую ночь в 00:00 брокеры расширяют спреды?
Почему каждую ночь в 00:00 брокеры расширяют спреды?
  • 2017.06.16
  • www.mql5.com
Происходит вот такое: https://www.oanda.com/lang/ru/forex-trading/markets/recent?instrument=EUR/USD Эти зубчики - это время 00:00...
 
...:

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

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

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

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

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

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

Это можно реализовать в коде и решение будет универсальным, не зависеть от инструмента.
 
В КБ выложил советник, в торговой логике которого не может быть фильтра по спреду.
 
fxsaber:
В КБ выложил советник, в торговой логике которого не может быть фильтра по спреду.

Это вы шутите? Если спред 100п., а прибыль только 10п., то явно входить не стоит...

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