Скачать MetaTrader 5

История спредов

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Sergey Vradiy
1131
Sergey Vradiy  
Предположим, нужно протестировать эксперт на истории. Но для строгой проверки мало иметь данные по котировкам, даже если они тиковые. Нужно также иметь данные по спредам за весь период, на котором тестируется эксперт. Даже если эти данные где-то хранятся, то как их учесть? Спред на некоторых типах счетов тоже непрерывно меняется, как и котировки. Кроме того, у каждого дилера история спредов своя и она ни с чьей не совпадает. Тогда какой вообще практический смысл в тестировании на истории? Оно всё равно покажет очень приблизительные результаты. 
Vasiliy Sokolov
29820
Vasiliy Sokolov  
Sergey Vradiy:
Предположим, нужно протестировать эксперт на истории. Но для строгой проверки мало иметь данные по котировкам, даже если они тиковые. Нужно также иметь данные по спредам за весь период, на котором тестируется эксперт. Даже если эти данные где-то хранятся, то как их учесть? Спред на некоторых типах счетов тоже непрерывно меняется, как и котировки. Кроме того, у каждого дилера история спредов своя и она ни с чьей не совпадает. Тогда какой вообще практический смысл в тестировании на истории? Оно всё равно покажет очень приблизительные результаты. 

Воссоздать историю спредов Вы сможете проанализировав тиковую историю. 

Sergey Vradiy:
Спред на некоторых типах счетов тоже непрерывно меняется, как и котировки. Кроме того, у каждого дилера история спредов своя и она ни с чьей не совпадает. Тогда какой вообще практический смысл в тестировании на истории? Оно всё равно покажет очень приблизительные результаты. 
Вы неправы. Если советник написан правильно, тестирование воспроизведет очень точно реальную торговлю. Усредненный спред дает те же результаты что и знание точнго спреда. Кстати, в МТ5 в тестере стратегий используется исторический спред, который был на момент совершения сделки.
Ihor Herasko
15915
Ihor Herasko  

В МТ5 есть история спредов. Правда, там используется средний спред за свечу. Это в режиме "Все тики". А в режиме "Все тики на основе реальных тиков" есть полная история тиков. Ведь история тиков включает не только цену Bid, но и Ask. Чем не история спредов?

В МТ4 та тиковая история, которая собирается мною, тоже имеет данные не только о цене Bid, но и Ask. Правда в тестере МТ4 плавающий спред по этим данным стандартными средствами не получить. Там, действительно, приходится довольствоваться установкой заведомо большого спреда, чтобы учитывать расширение спреда на новостях и в ночное время.

Alexey Volchanskiy
24616
Alexey Volchanskiy  
Ihor Herasko:

В МТ5 есть история спредов. Правда, там используется средний спред за свечу. Это в режиме "Все тики". А в режиме "Все тики на основе реальных тиков" есть полная история тиков. Ведь история тиков включает не только цену Bid, но и Ask. Чем не история спредов?

В МТ4 та тиковая история, которая собирается мною, тоже имеет данные не только о цене Bid, но и Ask. Правда в тестере МТ4 плавающий спред по этим данным стандартными средствами не получить. Там, действительно, приходится довольствоваться установкой заведомо большого спреда, чтобы учитывать расширение спреда на новостях и в ночное время.


А если МТ4 подсунуть реальные тиковые данные, например от Дукаса и сконвертировать в .fxt, спреды запишутся? Как-то не озадачивался пока вопросом.

Vitaly Muzichenko
7648
Vitaly Muzichenko  

Без лишней головной боли, выбросить тестер мт4, и тестить всё в мт5

Размер спреда в комментарии, и как видно, он плавает


Ihor Herasko
15915
Ihor Herasko  
Alexey Volchanskiy:

А если МТ4 подсунуть реальные тиковые данные, например от Дукаса и сконвертировать в .fxt, спреды запишутся? Как-то не озадачивался пока вопросом.


Так речь именно об этом: в FXT-файл пишутся только Bid'ы. Ask вычисляется как Bid + Spread (который устанавливается в окошке тестера). Слышал, что есть какой-то патч для МТ4 (выпускается сторонним разработчиком), который после установки дает возможность подстановки еще и Ask. Выходит что-то вроде хака терминала.

P. S. Сам никогда не видел этого патча. Знаю только по наслышке.

fxsaber
10175
fxsaber  
Ihor Herasko:

Так речь именно об этом: в FXT-файл пишутся только Bid'ы. Ask вычисляется как Bid + Spread (который устанавливается в окошке тестера). Слышал, что есть какой-то патч для МТ4 (выпускается сторонним разработчиком), который после установки дает возможность подстановки еще и Ask. Выходит что-то вроде хака терминала.

P. S. Сам никогда не видел этого патча. Знаю только по наслышке.

Здесь подробно.

MT4-Tester VS MT5-Tester
MT4-Tester VS MT5-Tester
  • 2017.05.07
  • www.mql5.com
Руки дошли реализовать давнюю идею Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий Обсуждение статьи "Готов...
Ihor Herasko
15915
Ihor Herasko  
fxsaber:

Здесь подробно.


Можно вкратце, что имеете в виду? Перечитал первый пост указанной темы. В нем производится сравнение одного и того же советника в МТ4 и МТ5. Ни слова об истории спредов (то, что обсуждается в этой теме). Возможно, на следующих 12-и страницах  что-то и есть на этот счет. Но, прошу прощения, как-то не хочется читать столько просто ради того, чтобы понять, о чем Вы хотите сказать двумя словами "Здесь подробно".

fxsaber
10175
fxsaber  
Ihor Herasko:

Можно вкратце, что имеете в виду? Перечитал первый пост указанной темы.

Не читали

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

MT4-Tester VS MT5-Tester

fxsaber, 2017.05.07 22:46

Лог MT4-тестера

2017.05.07 23:25:36.155 EURUSD,M1: 1865415 tick events (7292 bars, 1865515 bar states) processed in 0:00:02.528 (total time 0:00:03.292)


Лог MT5-тестера

2017.05.07 23:26:01.016 Core 1  EURUSD,M1: 1865415 ticks, 7192 bars generated. Test passed in 0:00:01.918 (including ticks preprocessing 0:00:00.203).

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

Ihor Herasko
15915
Ihor Herasko  
fxsaber:

Не читали


Они не могут совпадать по определению, т. к. структуры разные. В МТ4:

struct TestHistory
{
   datetime          otm;                // open time of bar
   double            open;               // OHLCV
   double            high;
   double            low;
   double            close;
   long              volume;
   int               ctm;                // current time inside the bar
   int               flag;               // flag of expert execution (0 - We modify the bar, and the expert is not run)
};

В МТ5:

struct MqlTick 
  { 
   datetime     time;          // Время последнего обновления цен 
   double       bid;           // Текущая цена Bid 
   double       ask;           // Текущая цена Ask 
   double       last;          // Текущая цена последней сделки (Last) 
   ulong        volume;        // Объем для текущей цены Last 
   long         time_msc;      // Время последнего обновления цен в миллисекундах 
   uint         flags          // Флаги тиков 
  };
 

Итого: в МТ4 все завязано на Bid, а в МТ5 - нет. Вы сравнили только цены Bid. А нужно еще и Ask сравнить.

fxsaber
10175
fxsaber  
Ihor Herasko:

Они не могут совпадать по определению, т. к. структуры разные. В МТ4:

В МТ5:

Итого: в МТ4 все завязано на Bid, а в МТ5 - нет. Вы сравнили только цены Bid. А нужно еще и Ask сравнить.

Ну зачем писать ерунду, когда все написано в первом посте?!

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

MT4-Tester VS MT5-Tester

fxsaber, 2017.05.07 22:46

Запускаем на обоих тестерах такой кроссплатформенный советник

// MQL4&5-code

#property strict

class FILE
{
private:
  const int handle;
  
  static string TickToString( const MqlTick &Tick, const string Delimeter = " " )
  {
    return(::DoubleToString(Tick.ask, _Digits) + Delimeter + ::DoubleToString(Tick.bid, _Digits));
  }
public:  
  FILE( const string FileName ) : handle(::FileOpen(FileName, FILE_WRITE | FILE_TXT | FILE_ANSI))
  {
  }
  
  ~FILE( void )
  {
    if (this.handle != INVALID_HANDLE)
      ::FileClose(handle);       
  }
  
  bool Write( const MqlTick &Tick ) const
  {
    return((this.handle != INVALID_HANDLE) && ::FileWriteString(this.handle, FILE::TickToString(Tick) + "\n"));
  }
};

const FILE File(::MQLInfoString(MQL_PROGRAM_NAME) + ".txt");

void OnTick()
{
  MqlTick Tick;
  
  if (SymbolInfoTick(_Symbol, Tick))
    File.Write(Tick);
}

Неприятно вот так разжевывать первый же пост. Пожалел, что встрял.

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