Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Теперь понятна сия "избирательность" ;)))
т.к. обновлялся 203 билд а чуть ранее 202
где и была полная подгрузка...
в Explorer шрифт надо уменьшить на средний.
Спасибо, Olek. Помогло.. :) А MetaQuotes спасибо, за то, что учли мои пожелания по поводу OrderStopLoss( ) и OrderTakeProfit( ) .. ;)
Я так понял, что Вы скачали наши данные кнопкой Download в диалоге Ахива котировок.
Вы используете модель по ценам открытия. Символ - EURUSD.
Уточните, на каком таймфреме Вы тестируетесь и какие ограничивающие даты используете (если используете)
Котировки скачал через Даунлоад в диалоге Архива котировок.
Оптимизация по Ценам Открытия (я только так тестирую).
Символ ЕвроБакс.
ТАймфрейм 4-часовка.
На всем периоде истории.
Оптимизация идет очень медленно : 24 прохода за 18 часов.
Честно говоря,меня это не может устраивать.
Один тест идет относительно быстро : от 20 секунд до 5 минут.
Но вот сделать пару тысяч переборов у МТ4 пока что не получается.
Что посоветуете ?
Очень тяжёлый советник. За 2 часа всего 22 прогона.
Очень тяжёлый советник. За 2 часа всего 22 прогона.
Могу прислать вам исходник.
Советник, на мой взгляд, - совсем не тяжелый. На самом деле это еще и не советник пока - это универсальный шаблон советника.
Слава - могу вам выслать исходник - там всего два правила : вход при пересечении линий индикатора, выход - при пересечении линий индикатора.
Почему так медленно идут тесты - для меня остается загадкой.
Но, думаю, всем нам нужно узнать причину.
Если у вас остались сомнения в моем коде - напишите здесь, чтобы я выслал вам исходник с описанием.
Могу прислать вам исходник.
Советник, на мой взгляд, - совсем не тяжелый. На самом деле это еще и не советник пока - это универсальный шаблон советника.
Слава - могу вам выслать исходник - там всего два правила : вход при пересечении линий индикатора, выход - при пересечении линий индикатора.
Почему так медленно идут тесты - для меня остается загадкой.
Но, думаю, всем нам нужно узнать причину.
Если у вас остались сомнения в моем коде - напишите здесь, чтобы я выслал вам исходник с описанием.
У тебя вроде индикаторы нестандартные, может дело в них а не в советнике?
Каждый модуль(функция) отвечает за одно действие.
Мне приходится передвать в функции ссылки на массив.
В массиве я держу параметры ордера.
Например, у меня есть такая функция :
bool СчитатьПараметрыОрдера(int НомерСоветника, string& OrdParam[]) { OrdParam[0] = DoubleToStr(OrderMagicNumber(),0); OrdParam[1] = OrderComment(); OrdParam[2] = "END"; OrdParam[11]= OrderSymbol(); //Symbol OrdParam[12]= DoubleToStr(OrderType(),0); //cmd OrdParam[13]= DoubleToStr(OrderLots(),1); //volume OrdParam[14]= DoubleToStr(Open[StrToTime(OrdParam[1])],Digits); //price OrdParam[15]= DoubleToStr(0,0); //slippage OrdParam[16]= DoubleToStr(OrderStopLoss(),Digits); //stop-loss OrdParam[17]= DoubleToStr(OrderTakeProfit(),Digits); //take-profit OrdParam[18]= OrdParam[1]; //comment OrdParam[19]= OrdParam[0]; //magic-number OrdParam[20]= DoubleToStr(0,0); //expiration OrdParam[21]= DoubleToStr(Blue,0); //color //OrdParam[22]= DoubleToStr(iBarShift(Symbol(),0,StrToTime(OrdParam[1])),0); //бар, на котором вошли OrdParam[23]= DoubleToStr(OrderOpenPrice(),Digits); //реальная цена открытия OrdParam[24]= DoubleToStr(OrderTicket(),Digits); //номер тикета ордера return(TRUE); }При отправке ордера мне приходится делать преобразования :
int MOrderSend(string OrdParam[]) { string symbol = OrdParam[11]; int cmd = StrToInteger(OrdParam[12]); double volume = NormalizeDouble(StrToDouble(OrdParam[13]),Digits); double price = NormalizeDouble(StrToDouble(OrdParam[14]),Digits); int slippage = StrToInteger(OrdParam[15]); double stoploss = NormalizeDouble(StrToDouble(OrdParam[16]),Digits); double takeprofit = NormalizeDouble(StrToDouble(OrdParam[17]),Digits); string comment = OrdParam[18]; int magic = StrToInteger(OrdParam[19]); datetime expiration = StrToInteger(OrdParam[20]); color arrow_color = StrToInteger(OrdParam[21]); if (ПроверитьОрдер(cmd,price,stoploss,takeprofit)==FALSE) return(-1); LastTradeTime = TimeCurrent(); return ( OrderSend( symbol, cmd, volume, price, slippage, stoploss, takeprofit, comment, magic, expiration, arrow_color ) ); }При каждом баре я выбираю ордера, заношу их данные в массив и проверяю условия.
Что-то работает медленно - но вот что - непонятно.
Хотя структурно у меня все в порядке, структуру я долго и тщательно отрабатывал.
Скорее всего есть что-то, чего я не знаю про МТ4 - какая-нибудь особенность.
Давайте доведем это исследование до логического конца и устраним причины.
Самым простым было бы, если бы я где-то ошибся. Но вот если МТ4 не тянет - это хуже.
Да и писался он на базе стандартного индикатора.
В индикаторе при получении нового бара - рассчитывается только последний бар.
Не зная постановки задачи не берусь судить, насколько оправдана реализация через строковые массивы, но думаю что постоянные преобразования данных в строки и обратно операция весьма затратная. Да и нормализация может оказаться заметной добавкой (а может и нет, проверять надо). Для реалтайма это может заметно не сказываться, а вот в советнике для тестера я сделал бы всё возможное, чтобы отказаться от этих операций или свести их к минимуму. Интересно, чем вызвано желание загнать все параметры ордера в один массив?