Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
билд 803. Счет реальный 10267.
Я так понимаю, раз столько вопросов, то 'mnj только у меня наблюдается?
Еще недели 3-4 назад тестер был чуть более корректен по спреду. но вот по поведению...
Проблема была в следующем: практически любая свеча формировалась ну скажем за 20 тиков. а потом 50-100 тиков либо у экстримума цена билась по 10 пунктов вверх/вниз либо в районе закрытия. И это биение легко находилось тестером, который оптмизировал скальпера.
Вообщем для скальперских/пипсовочных стратегий тестер совсем не подходит.
Я понимаю всю тормознутость тикового тестера... Но для биржи на мой взгляд без него не обойтись
А как это сделать ?
Открыть график. Открыть Окно данных. Пролистать график к нужному моменту времени. Водить мышкой по графику и смотреть в Окне данных значения спреда.
Я уже посмотрел. На большом количестве баров - нулевой спред. То есть, данные неполные. При нулевом значении спреда используется последнее ненулевое значение.
Поясню с картинками, что происходит в тестере.
Тестер загружает исторические данные как минимум за предыдущий год перед началом тестирования и анализирует спред. Если тестирование начинается с 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 минуты
Далее нулевых значений стало гораздо меньше, чем в начале года. Тем не менее серии нулей остались.
Этим объясняются серии одинаковых спредов
Ситуация неприятная, поэтому мы будем её решать. Спреды в тестере будут адекватными.
Со спредами разберемся, будем их правильно выставлять даже если брокер не импортировал детальных спредов в свою историю.
Это позволит нормально тестироваться.
Поясню с картинками, что происходит в тестере.
Тестер загружает исторические данные как минимум за предыдущий год перед началом тестирования и анализирует спред. Если тестирование начинается с 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 минуты
Далее нулевых значений стало гораздо меньше, чем в начале года. Тем не менее серии нулей остались.
Этим объясняются серии одинаковых спредов
Ситуация неприятная, поэтому мы будем её решать. Спреды в тестере будут адекватными.
тетстировать фьчерс с начала года нет смысла, потому как все торговали мартовский.
Разумней было бы как то высчитывать средний спред с правильным округлением на мой взгляд.
Также прошу уменьшить объемы для тестера. Большая часть тиков приходит когда цена не двигается вообще в реальности. В тестере цена бьет по экстермуму много-много раз, что отображается на неадекватных тестах. Да и время оптимизации уменьшится...
1. а) Насчет склеенных фьючерсов...особо не разбирался, но по-моему тестер с ними не работает(ни одной сделки, пробовал тестировать стандартные советники, которые есть в терминале).
б) В мт5 от бкс уже появились склееные фьчерсы основных голубых фишек, не отставайте.
в) Было бы здорово в тестере иметь возможность задавать спред вручную, оптимизировать стратегии было бы значительно проще.
2. а) Насчет ленты...не помешало бы иметь ее в виде таблицы сделок как в квике(как подключаемый и отключаемый инструмент разумеется), а также возможность задавать в таблице фильтры как в квике(например я хочу видеть только крупные сделки объемом от 100 лоти как они прошли, по биду или по аску)...повторяю - не помешало бы, но не так обязательно.
б) А вот добавить в получаемую структуру MqlTick (в виде SymbolInfoTick(_Symbol,latest_price)) еще параметр о том, как прошла сделка по биду или по аску - считаю необходимым, ну или в виде отдельного запроса по рыночной информации, эту информацию передает биржа и она требуется для многих роботов, в том числе и для моих. Вычислять была ли сделка покупкой или продажей не реально...т.к. есть внебиржевые сделки с крупными объемами, которые не двигают рынок напрямую и много других нюансов... Добавление этотого параметра в структуру, думаю, не составит для разработчиков труда, а пользы принесет массу.
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