Пытаюсь сделать мультивалютный советник,но с фьючами.
Запускаем в тестере простой советник на ближнем фьюче,т.к. он более живой.
Нас интересует дальний фьюч,т.к. на нем мало сделок,и он еле шевелится.
во-первых,почему цена ласт равна 0?
во-вторых,сравниваем теперь аск и бид открытия с ценами из copyticks - у меня не получилось распечатать в терминал,потому в файл писал.
видно,что цены даже рядом не валялись.
тут цены из вчерашней онлайн записи тиков по инструменту
Финамовские котировки?
Финамовские котировки?
нет. котиры амр futures.
как повлияет источник котировок на copyticks и на тестер? для них он один и тот же. в итоге должны совпадать цены.
Уважаемая администрация, просто ОГРОМНАЯ просьба обратить внимание на заявку #1702900 в СД.
все коды,всю необходимую информацию я предоставил,проблему так же описал и задокументировал.
Однако,в СД вместо того,чтоб заняться решением проблемы почему-то пытаются то ли меня выставить дураком, то ли всячески отмазаться от решения проблемы.
Ответ СД
То есть, своему коду Вы доверяете на 100 процентов?
Да! Своему коду я доверяю на 100%,потому что он примитивный и прямой как рельса.
//+------------------------------------------------------------------+ //| ProjectName | //| Copyright 2012, CompanyName | //| http://www.companyname.net | //+------------------------------------------------------------------+ #include <Trade\PositionInfo.mqh> #include <Trade\Trade.mqh> //--- global variable CPositionInfo m_position; // trade position object CTrade m_trade; // trading object input string symb="DDM7"; input string symb1="DDU7"; input datetime открытие=D'23.03.2017 15:47:30'; input datetime закрытие=D'23.03.2017 15:57:30'; datetime date1; double i1,ask1,ask2,bid1,bid2,last1,last2; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- double price1=SymbolInfoDouble(symb,SYMBOL_BID); double price2=SymbolInfoDouble(symb1,SYMBOL_BID); EventSetTimer(1); return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { EventKillTimer(); } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- if(PositionsTotal()==0 && TimeCurrent()>=открытие && i1==0) { m_trade.Buy(1.00,symb); m_trade.Buy(1.00,symb1); i1=1; } if(PositionsTotal()==2 && TimeCurrent()>=закрытие) { CloseAll(); } } ////////////////////////////// void OnTimer() { /* if(PositionsTotal()==0 && TimeCurrent()>=открытие && i1==0) { m_trade.Buy(1.00,symb); m_trade.Buy(1.00,symb1); i1=1; } if(PositionsTotal()==2 && TimeCurrent()>=закрытие) { CloseAll(); } */ } //+------------------------------------------------------------------+ void CloseAll() { for(int i=PositionsTotal()-1;i>=0;i--) // returns the number of open positions if(m_position.SelectByIndex(i)) m_trade.PositionClose(m_position.Ticket()); } //+------------------------------------------------------------------+
Почему-то там мне задают вопросы
Вот Вы совершаете операцию по таймеру в 15:47:31. А когда поступил тик, значениями которого Вы оперируете? В 15:47:30.056 или вообще в 15:39:47? Вы ведь этого не знаете
извините,а почему я должен знать,когда поступил тик? это не Я оперирую ценами,а тестер. это ваш тестер,в котором вы синхронизируете между собой данные,т.е. вы отвечаете за правильное выполнение по правильным ценам и в правильное время. именно с этой целью я и обратился за помощью в СД.
Это какая-то практика,когда на пользователя перекладывается еще работат по отлову багов? Так я не багтестер,вся информация предоставлена!
еще раз,чтобы бы понятно.
при мультивалютном тестировании на втором тикере цены не совпадают с ценами,который затем можно получить по тикеру с помощью CopyTicks.
2017.03.28 11:55:41.846 Core 1 2017.03.23 15:47:31 exchange buy 1.00 DDU7 at 12044.5 (12043.0 / 12044.5 / 12037.0)
ближайшие тики из копитикс
2017.03.28 11:33:18.892 принт тиков лайт (DDU7,M1) [14] 2017.03.23 15:47:28 12035.0 12036.5 12037.0 1 1490284048977 4 2017.03.28 11:33:18.892 принт тиков лайт (DDU7,M1) [15] 2017.03.23 15:47:28 12034.5 12036.0 12037.0 1 1490284048996 6 2017.03.28 11:33:18.892 принт тиков лайт (DDU7,M1) [16] 2017.03.23 15:47:29 12034.5 12035.5 12037.0 1 1490284049483 4 2017.03.28 11:33:18.892 принт тиков лайт (DDU7,M1) [17] 2017.03.23 15:47:35 12035.0 12036.0 12037.0 1 1490284055119 6 2017.03.28 11:33:18.892 принт тиков лайт (DDU7,M1) [18] 2017.03.23 15:47:35 12035.0 12036.5 12037.0 1 1490284055124 4
Вы очень выборочно цитируете переписку из сервисдеска
Сегодня в 9 утра.
Проблема понятна, будем её решать. А пока Вы можете избежать эту проблему, вставив 2 строчки кода в OnInit
int OnInit() { bid1=SymbolInfoDouble(symb,SYMBOL_BID); bid2=SymbolInfoDouble(symb1,SYMBOL_BID); //--- EventSetTimer(1); return(INIT_SUCCEEDED); }
Смысл в том, чтобы заранее организовать подкачку тиков по
всем нужным инструментам, независимо от того, на каком инструменте
проводится тестирование.
Попробуйте
В 11:24 утра вместе с "То есть, своему коду Вы доверяете на 100 процентов?"
Выводите не только цены бид, аск и ласт, но и секунды и миллисекунды последнего тика
Вы ведь работаете по таймеру, а не по приходу тика
В 11:44
kaus_bonus #
а какой смысл? у вас есть принт тиков, где на время исполнения ордера есть 2 ближайших тика
Смысл в том, чтобы получить тики в таком диапазоне, чтобы в него входили те самые значения времени и миллисекунд.
Вот
Вы совершаете операцию по таймеру в 15:47:31. А когда поступил тик,
значениями которого Вы оперируете? В 15:47:30.056 или вообще в 15:39:47?
Вы ведь этого не знаете
То есть, работа по этому тикету продолжается. Сейчас ещё 12:35
PS кроме этого Вы забыли упомянуть, что работа по Вашему тикету началась днём в субботу. Я не утверждаю, что это - героизм. А просто иллюстрация того, что к Вашей заявке отнеслись очень серьёзно
Вы очень выборочно цитируете переписку из сервисдеска
Сегодня в 9 утра.
В 11:24 утра вместе с "То есть, своему коду Вы доверяете на 100 процентов?"
В 11:44
То есть, работа по этому тикету продолжается. Сейчас ещё 12:35
Слава, я только рад,что работа продолжается. Именно за этим я обратился в СД, просто по переписке в СД много неконструктивных вопросов именно ко мне,как к пользователю. У меня нет цели кого-то подставить,опорочить и т.п. Моя единственная цель - это чтобы все работало корректно. По-моему, моя нехитрая цель полностью должна совпадать с позицией компании.
Еще раз спасибо за Ваш ответ.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Пытаюсь сделать мультивалютный советник,но с фьючами.
Запускаем в тестере простой советник на ближнем фьюче,т.к. он более живой.
Нас интересует дальний фьюч,т.к. на нем мало сделок,и он еле шевелится.
во-первых,почему цена ласт равна 0?
во-вторых,сравниваем теперь аск и бид открытия с ценами из copyticks - у меня не получилось распечатать в терминал,потому в файл писал.
видно,что цены даже рядом не валялись.
тут цены из вчерашней онлайн записи тиков по инструменту