Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Какая у MQ задумана методика не знаю, скорее нет методики, просто дают средства программирования, а потом смотрят и диву даются, как этим пользуются.
Придерживаюсь таких принципов: вычисления делать в индикаторе, если постоянно нужны какие-то промежуточные значение, то выделять для них буферы и тянуть за собой, при переходе к вычислению очередного бара. Должен соблюдаться приницип обсчета только одного бара и использования значений других буферов только с тем же индексом, что у обсчитываемого бара, или с фиксированным отступом (главное не бегать в циклах по истории на каждом баре, а в буфере подтягивать за собой значение, как в индикаторе МА сделано - на каждом баре берется значение с предыдущего бара, старое отнимается, новое прибавляется...). В советнике - через iCustom() копировать значение только с одного буфера. Если формирующийся бар не используется, то еще делать проверку времени бара, чтобы копировать значение только один раз на бар (но обязательно делать копирование на каждом баре, даже если значение не нужно). Еще можно тики пропускать, если цена не сильно изменилась - выходим из OnTick() - это для пятизнака.
Да это все понятно про то как экономить вычесления. Но все же что быстрее? - иметь iCustom с копированием одного буфера, или делать такие расчеты в советнике копируя все через CopyRates? Что быстрее копировать 2000 баров или все, надеясь что компилятор поймет и комировать ничего не будет а просто даст буфера?
Да вот еще что - очень нужная вещь нужна - некий диспетчер задач. Ну например на графике есть некий индикатор с параметром (1) и в советнике вызывается такой же с такими же параметрами, и в другом индикаторе, вообщем было бы очень полезно, для того чтобы правильнее использовать ресурсы иметь такой некий диспечер ресурсов, чтобы там показывалось какие индикаторы и советрики загруженны сколько памяти они жрут, сколько времени занимают их вычесления. Кстати тайминги можно брать их интеловой библиотеки или сделать самим из счетчика встроенного в ядра, но у АМД по моему они работают несколько отлично от интела. Но тогда можно сиспользовать "счетчики производительности" от висты, а на XP можно их эмулировать.
Четыре массива по 2000 баров на каждом тике... Вычисления, требующие исторических данных, надо в индикаторе делать.
:) Сделал, в советнике копируется только один бар из двух буферов iCustom , то есть код советника такой -
Результат стал еще хуже. Пока еще ни один раз прогон не закончен. :(
В индикаторе вместо четырех копирований по 2000 копируется только раз, и бары берутся из параметров.
:) Сделал, в советнике копируется только один бар из двух буферов iCustom , то есть код советника такой -
Результат стал еще хуже. Пока еще ни один раз прогон не закончен. :(
Попробуйте сделать как написано в справке к CopyBuffer():
Если необходимо копировать заранее известное количество данных, то лучше это делать в статически выделенный буфер, чтобы избежать излишнего перевыделения памяти.
Попробуйте сделать как написано в справке к CopyBuffer():
Сделал - время изминилось с 600 секунд до 500. :(
Приведите полный исходный код, пожалуйста. Если не публично, то через сервисдеск.
Это поможет нам воспроизвести ситуацию и разобраться.
В прошлый раз Ваш код генерировал миллионы сделок и мы смогли серьезно улучшить работу тестера в экстремальных условиях.
ОК, мне что называется не жалко - тем более что это все из области тестирования и понимания возможностей MT5
Вот код советника, Вы его уже видели, этот немного изменен :) Для быстрого сворачивания. Но суть совершенно та же.
Вот индикатор - :) Красавчег правда - рисует цифры и уровни -
1. Результат стал еще хуже. Пока еще ни один раз прогон не закончен. :(
2. Да это все понятно про то как экономить вычесления. Но все же что быстрее? - иметь iCustom с копированием одного буфера, или делать такие расчеты в советнике копируя все через CopyRates? Что быстрее копировать 2000 баров или все, надеясь что компилятор поймет и комировать ничего не будет а просто даст буфера?
1. Значит так индикатор написан.
2. Все понятно, только не делаем, а когда делаем - не работает.
Если делать те же самые вычисления в советнике и индикаторе. Будет ли ускорение от копирования оного бара или 2000... сделайте вывод. Индикатор обеспечивает динамическими буферами автоматически масштабируемыми при появлении нового бара, в индикаторе выполняется контроль поступления новых данных. Именно индикатор предназначен для каких-то вычислений с использованием истории цены, и если это делать правильно, все работает очень быстро.
Опримизируются параметры ZigZag и два уровня - уровень "открытия" который определяется как процент от передидущего ZigZag и уровень "стопа" ( когда уже поздно :) ) также как прцент от размера ZigZag.
Копируем 2000 баров, на все эти 2000 баров считаем зигзаг? И так на каждом тике?
Копируем 2000 баров, на все эти 2000 баров считаем зигзаг? И так на каждом тике?
1. Значит так индикатор написан.
2. Все понятно, только не делаем, а когда делаем - не работает.
Если делать те же самые вычисления в советнике и индикаторе. Будет ли ускорение от копирования оного бара или 2000... сделайте вывод. Индикатор обеспечивает динамическими буферами автоматически масштабируемыми при появлении нового бара, в индикаторе выполняется контроль поступления новых данных. Именно индикатор предназначен для каких-то вычислений с использованием истории цены, и если это делать правильно, все работает очень быстро.
Мне всегда нравились самоуверенные люди :) Как так написан? :)
Вы уверенны что Вы подходите мне на роль учителя? Это я про то, что "Все понятно, только не делаем, а когда делаем - не работает. "