Опыты с МетаТрейдер 5 в "Открытие" - страница 16

MetaQuotes
Админ
26954
Renat Fatkhullin  
Еще вопрос, какой это билд? 803?
Dmitiry Ananiev
8369
Dmitiry Ananiev  

билд 803. Счет реальный 10267.

Я так понимаю, раз столько вопросов, то 'mnj только у меня наблюдается?  

Еще недели 3-4 назад тестер был чуть более корректен по спреду. но вот по поведению...

Проблема была в следующем: практически любая свеча формировалась ну скажем за 20 тиков. а потом 50-100 тиков либо у экстримума цена билась по 10 пунктов вверх/вниз либо в районе закрытия. И это биение легко находилось тестером, который оптмизировал  скальпера. 

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

Я понимаю всю тормознутость тикового тестера... Но для биржи на мой взгляд без него не обойтись 

Slava
Модератор
12412
Slava  
dimeon:
А как это сделать ? 

Открыть график. Открыть Окно данных. Пролистать график к нужному моменту времени. Водить мышкой по графику и смотреть в Окне данных значения спреда.

Я уже посмотрел. На большом количестве баров - нулевой спред. То есть, данные неполные. При нулевом значении спреда используется последнее ненулевое значение.

Документация по MQL5: Доступ к таймсериям и индикаторам / Bars
Документация по MQL5: Доступ к таймсериям и индикаторам / Bars
  • www.mql5.com
Доступ к таймсериям и индикаторам / Bars - Документация по MQL5
Dmitiry Ananiev
8369
Dmitiry Ananiev  
ну в тестере ситуация другая. На визуализаторе видно, что в первой половине дня спред зашкаливает, после обеда 20-50 пунктов в среднем и в вечернюю сессию опять зашкаливает 
Slava
Модератор
12412
Slava  

Поясню с картинками, что происходит в тестере.

Тестер загружает исторические данные как минимум за предыдущий год перед началом тестирования и анализирует спред. Если тестирование начинается с 2013.01.01 то последний ненулевой спред в 2012 году зафиксирован 2012.12.10 в 10:09, и был он 2990 пунктов


Следующий ненулевой спред зафиксирован 2013.03.15 в 18:49 в размере 1190


Между этими моментами спред равен 0. То есть, с первого января 2013 года до вечера 15 марта использовался последний известный спред 2990 (то, что я назвал "последнее ненулевое значение"). Пока это последнее ненулевое значение не стало равно 1190.

После этого опять нулевые значения спреда,поэтому использовалось значение 1190. Вплоть до 2013.03.18 18:46


ещё через 3 минуты


Далее нулевых значений стало гораздо меньше, чем в начале года. Тем не менее серии нулей остались.

Этим объясняются серии одинаковых спредов

Ситуация неприятная, поэтому мы будем её решать. Спреды в тестере будут адекватными.

MetaQuotes
Админ
26954
Renat Fatkhullin  

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

Это позволит нормально тестироваться.

Dmitiry Ananiev
8369
Dmitiry Ananiev  
stringo:

Поясню с картинками, что происходит в тестере.

Тестер загружает исторические данные как минимум за предыдущий год перед началом тестирования и анализирует спред. Если тестирование начинается с 2013.01.01 то последний ненулевой спред в 2012 году зафиксирован 2012.12.10 в 10:09, и был он 2990 пунктов


Следующий ненулевой спред зафиксирован 2013.03.15 в 18:49 в размере 1190


Между этими моментами спред равен 0. То есть, с первого января 2013 года до вечера 15 марта использовался последний известный спред 2990 (то, что я назвал "последнее ненулевое значение"). Пока это последнее ненулевое значение не стало равно 1190.

После этого опять нулевые значения спреда,поэтому использовалось значение 1190. Вплоть до 2013.03.18 18:46


ещё через 3 минуты


Далее нулевых значений стало гораздо меньше, чем в начале года. Тем не менее серии нулей остались.

Этим объясняются серии одинаковых спредов

Ситуация неприятная, поэтому мы будем её решать. Спреды в тестере будут адекватными.

тетстировать фьчерс с начала года нет смысла, потому как все торговали мартовский. 

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

Также прошу уменьшить объемы для тестера. Большая часть тиков приходит когда цена не двигается вообще в реальности. В тестере цена бьет по экстермуму много-много раз, что отображается на неадекватных тестах. Да и время оптимизации уменьшится... 

FinEngineer
40
FinEngineer  

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

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

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

FinEngineer
40
FinEngineer  

2. а) Насчет ленты...не помешало бы иметь ее в виде таблицы сделок как в квике(как подключаемый и отключаемый инструмент разумеется), а также возможность задавать в таблице фильтры как в квике(например я хочу видеть только крупные сделки объемом от 100 лоти как они прошли, по биду или по аску)...повторяю - не помешало бы, но не так обязательно.

    б) А вот добавить в получаемую структуру MqlTick  (в виде SymbolInfoTick(_Symbol,latest_price)) еще параметр о том,  как прошла сделка по биду или по аску - считаю необходимым, ну или в виде отдельного запроса по рыночной информации,  эту информацию передает биржа и она требуется для многих роботов, в том числе и для моих. Вычислять была ли сделка покупкой или продажей не реально...т.к. есть внебиржевые сделки с крупными объемами, которые не двигают рынок напрямую и много других нюансов... Добавление этотого параметра в структуру,  думаю, не составит для разработчиков труда, а пользы принесет массу.

Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура для получения текущих цен
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура для получения текущих цен
  • www.mql5.com
Стандартные константы, перечисления и структуры / Структуры данных / Структура для получения текущих цен - Документация по MQL5
FinEngineer
40
FinEngineer  

3. При попытке выставления отложенных ордеров советником выходит ошибка "Неверная дата истечения ордера в запросе". Для примера сделал советник который только выставляет отложки и больше ничего не делает...в мт5 на форексе он отложки выставляет нормально, а на ФОРТСе выходит ошибка. Дата экспирации ордера адекватная  - проверял выводом на экран. У меня одного такая проблема? В чем причина? Код советника ниже 

 


#property copyright "Copyright 2013, MetaQuotes Software Corp."

#property link      "http://www.mql5.com"

#property version   "1.00"

input int tp=150;

input int Deviation=5;

MqlTradeRequest mrequest; 

MqlTradeResult mresult;   

int OnInit()

  {

   return(0);

  }

void OnDeinit(const int reason)

  {

  }


void OnTick()

  {

   Open_Pending_Order(1,SymbolInfoDouble(_Symbol,SYMBOL_BID)+NormalizeDouble(tp*_Point,_Digits), 1, 111);

   Sleep(500);

  return;

  }

//+------------------------------------------------------------------+

void Open_Pending_Order(int type, double prise, double lot, long magic)

  {

   ZeroMemory(mrequest);

   mrequest.action = TRADE_ACTION_PENDING;                               

   mrequest.magic = magic;                                              

   mrequest.symbol = _Symbol;                                            

   mrequest.type_filling = ORDER_FILLING_RETURN;                            

   mrequest.deviation=NormalizeDouble(Deviation*_Point,_Digits);                                                

   mrequest.type_time=ORDER_TIME_SPECIFIED;

   mrequest.expiration=TimeCurrent()+6000;                                    

   mrequest.volume = lot; 

   mrequest.sl = 0;  

   mrequest.tp = 0; 

   mrequest.price = prise;

   Print(" время экспирации ",mrequest.expiration," тип экспирации  ",mrequest.type_time," цена ",mrequest.price);

    if(type==1)

      {                                    

       mrequest.type = ORDER_TYPE_BUY_STOP;                              

       OrderSend(mrequest,mresult);

       // анализируем код возврата торгового сервера

       if(mresult.retcode==10009 || mresult.retcode==10008) Print("Ордер Buy по символу ",_Symbol, " с маджиком ",magic," успешно помещен, тикет ордера #:",mresult.order," !!");  

       else Print("Запрос на установку ордера Buy по символу ",_Symbol, " с маджиком ",magic," не выполнен - ответ сервера:" , mresult.retcode," код ошибки " ,GetLastError());

      }

    if(type==2)

      {                                    

       mrequest.type = ORDER_TYPE_SELL_LIMIT;     

       OrderSend(mrequest,mresult);

       // анализируем код возврата торгового сервера

       if(mresult.retcode==10009 || mresult.retcode==10008) Print("Ордер Sell по символу ",_Symbol, " с маджиком ",magic," успешно помещен, тикет ордера #:",mresult.order,"!!");

       else Print("Запрос на установку ордера Sell  по символу ",_Symbol, " с маджиком ",magic," не выполнен - код ошибки:" , mresult.retcode,"  " ,GetLastError());                         

      }

   return; 

  }

 

Пишет(время экспинации пробовал менять) :

2013.04.24 17:40:05 udalit (SBRF-6.13,M1) Запрос на установку ордера Buy по символу SBRF-6.13 с маджиком 111 не выполнен - ответ сервера:10022 код ошибки 4756

2013.04.24 17:40:05 udalit (SBRF-6.13,M1) время экспирации 2013.04.25 17:00:00 тип экспирации 2 цена 10016.0