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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
...
726
...  

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

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

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

Пока сравниваю текущий спред со средним за последние, допустим 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();
}

fxsaber
14883
fxsaber  
...:

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

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

...
726
...  
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);
}
fxsaber
14883
fxsaber  
...:

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

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

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

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

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

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

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

Maxim Romanov
7020
Maxim Romanov  
fxsaber:

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

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

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

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

Denis Sartakov
1806
Denis Sartakov  

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

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

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

Vladimir
1116
Vladimir  
...:

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

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

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

Пока сравниваю текущий спред со средним за последние, допустим 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...
Aliaksandr Hryshyn
2495
Aliaksandr Hryshyn  
...:

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

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

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

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

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

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

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

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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий