Отлично...
Статья является небольшой выдержкой другой. Ничего не предпринято для эффективной работы. Никакого кеширования индикаторов и таймсерий. Отсутствуют High[i], Low[i] и т.д. Нет iCustom.
Ожидалось увидеть совсем другое. Тем более, какой смысл фастфуда в советниках, если все равно им и не пахнет в исходниках?
for(int i=PositionsTotal()-1;i>=0;i--) if(m_position.SelectByIndex(i)) // selects the position by index for further access to its properties if(m_position.Symbol()==m_symbol.Name()) { //--- long position is opened if(m_position.PositionType()==POSITION_TYPE_BUY) { //--- should it be closed? if(MacdCurrent>0 && MacdCurrent<SignalCurrent && MacdPrevious>SignalPrevious && MacdCurrent>(MACDCloseLevel*m_adjusted_point)) { //--- close position and exit if(!m_trade.PositionClose(m_position.Ticket())) Print("PositionClose error ",m_trade.ResultRetcodeDescription()); return; } //--- check for trailing stop if(TrailingStop>0) { if(m_position.PriceCurrent()-m_position.PriceOpen()>m_adjusted_point*TrailingStop) { if(m_position.StopLoss()<m_symbol.Bid()-m_adjusted_point*TrailingStop) { //--- modify position and exit if(!m_trade.PositionModify(m_position.Ticket(), m_symbol.NormalizePrice(m_position.PriceCurrent()-m_adjusted_point*TrailingStop), m_position.TakeProfit())) Print("PositionModify error ",m_trade.ResultRetcodeDescription()); return; } } } } if(m_position.PositionType()==POSITION_TYPE_SELL) { //--- should it be closed? if(MacdCurrent<0 && MacdCurrent>SignalCurrent && MacdPrevious<SignalPrevious && MathAbs(MacdCurrent)>(MACDCloseLevel*m_adjusted_point)) { //--- close position and exit if(!m_trade.PositionClose(m_position.Ticket())) Print("PositionClose error ",m_trade.ResultRetcodeDescription()); return; } //--- check for trailing stop if(TrailingStop>0) { if((m_position.PriceOpen()-m_position.PriceCurrent())>(m_adjusted_point*TrailingStop)) { if((m_position.StopLoss()>(m_symbol.Ask()+m_adjusted_point*TrailingStop)) || (m_position.StopLoss()==0.0)) { //--- modify position and exit if(!m_trade.PositionModify(m_position.Ticket(), m_symbol.NormalizePrice(m_symbol.Ask()+m_adjusted_point*TrailingStop), m_position.TakeProfit())) Print("PositionModify error ",m_trade.ResultRetcodeDescription()); return; } } } } }
- 2010.05.11
- Sergey Pavlov
- www.mql5.com
Статья является небольшой выдержкой другой. Ничего не предпринято для эффективной работы. Никакого кеширования индикаторов и таймсерий. Отсутствуют High[i], Low[i] и т.д. Нет iCustom.
Ожидалось увидеть совсем другое. Тем более, какой смысл фастфуда в советниках, если все равно им и не пахнет в исходниках?
Вот Вам пример типичного MQL4-ка - не прочитав, не посмотрев кода сразу на трибуну с флагами :) .
Вот Вам пример типичного MQL4-ка - не прочитав, не посмотрев кода сразу на трибуну с флагами :) .
Перед комментарием был прочтен не только текст статьи, но и всех приложенных исходников (включая анализ IndicatorsMQL4.mqh VS IndicatorsMQL5.mqh ).
Перед комментарием был прочтен не только текст статьи, но и всех приложенных исходников (включая анализ IndicatorsMQL4.mqh VS IndicatorsMQL5.mqh ).
Видно просмотрели (прозевали) файл MQL5\Include\SimpleCall\Series.mqh.
Про кеширования - это Ваши личные догадки (ожидания).
Это статья не ставит целью обмануть MQL4 пользователя путём "подключите мой файл и можно дальше бездумно работать в стиле MQL4", здесь показывается как перенести старый подход в обращении к индикаторам на MQL5.
Видно просмотрели (прозевали) файл MQL5\Include\SimpleCall\Series.mqh.
Прочел внимательно. Где High[i] и т.д.?
Про кеширования - это Ваши личные догадки (ожидания).
Это статья не ставит целью обмануть MQL4 пользователя путём "подключите мой файл и можно дальше бездумно работать в стиле MQL4", здесь показывается как перенести старый подход в обращении к индикаторам на MQL5.
Где iCustom? Вы бездумно почти скопи-пастили часть другой статьи, получив провал в производительности. Фактически обманывая пользователей, что это издержки MQL4-style, а не вашей реализации.
Здесь были замеры производительности, показывающие, что MQL4-style в некоторых вопросах ничем не уступает по производительности MQL5. С индикаторами можно было сделать то же самое.
Вот одна из реализаций таймсерий. Видно, что Автор постарался, сделав упор на производительности и немного отойдя (так ему удобнее) от MQL4-style (можно допилить идею при желании).
- голосов: 25
- 2017.05.25
- nicholishen
- www.mql5.com
Прочел внимательно. Где High[i] и т.д.?
Где iCustom? Вы бездумно почти скопи-пастили часть другой статьи, получив провал в производительности. Фактически обманывая пользователей, что это издержки MQL4-style, а не вашей реализации.
Здесь были замеры производительности, показывающие, что MQL4-style в некоторых вопросах ничем не уступает по производительности MQL5. С индикаторами можно было сделать то же самое.
Вот одна из реализаций таймсерий. Видно, что Автор постарался, сделав упор на производительности и немного отойдя (так ему удобнее) от MQL4-style (можно допилить идею при желании).
Для более быстрого привыкания к MQL5 оставлены только iXXXX функции серий, так как они имеет более полные параметры (symbol, timeframe, shift) которые без труда позволят заменить более узкоспециализированные High[] и т.д. Задача не в том, чтобы пользователь продолжал бездумно пользовать MQL4, а начинал потихоньку свой MQL4 код переписывать.
iCustom даже в планах не было - рассматривались только стандартные индикаторы.
Про кеширование - это точно не в статье для широкой публики.
Добавлено: кстати по отзывам пользователей будет ясно, нужны ли High[] и им подобные функции или можно обойтись сериями iXXXX
Задача не в том, чтобы пользователь продолжал бездумно пользовать MQL4, а начинал потихоньку свой MQL4 код переписывать.
MQL4-style - чистый MQL5. Ничем не хуже СБ. Не надо бороться с ветряными мельницами в своем воображении. Вы же не боретесь cо StandartLibrary-Style.
iCustom даже в планах не было - рассматривались только стандартные индикаторы.
Про кеширование - это точно не в статье для широкой публики.
В темах MT4 vs MT5, касаемо индикаторов, стандартные занимали минимум обсуждений. Почти все говорили про кастомные. Стандартные были написаны десятки лет назад и безвозвратно устарели. Работа в продвинутом MQL5 с древнейшими индикаторами выглядит странно.
Кеширование нужно было не объяснять в статье, а делать, раз уж взялись за объективность своих выводов по отношению к MQL4-style.
падение скорости тестирования при одновременном доступе более чем к одному индикатору;
Добавлено: кстати по отзывам пользователей будет ясно, нужны ли High[] и им подобные функции или можно обойтись сериями iXXXX
Сделайте опрос и увидите результат без высказываний в виде комментариев. Это же касается даже таких простых вещей, как Bid/Ask-переменные.
Статья должна называться "как нельзя писать код, пытаясь сохранить MQL4 представление".
Жесткий ужас с утечками хендлов(зачем закрывать хендл индикатора?) и потрясающим оверхедом(пытаться пересоздавать индикатор, проваливаясь внутрь менеджера индикаторов). И ведь достаточно людей скопирует это не глядя и не понимая.
Кроме того, неэффективное извлечение по 1 значению из индикатора.
Статью почел полностью, коды просмотрел достаточно.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Опубликована статья LifeHack для трейдера: готовим фастфуд из индикаторов:
Если вы переходите на MQL5 только сейчас, то эта статья вам пригодится: с одной стороны, доступ к данным индикаторов и к сериям выполнен в привычном вам MQL4-стиле, с другой — вся реализация этой простоты написана на MQL5. Все функции максимально понятны и отлично подходят для пошаговой отладки.
Теперь, по прошествии 12 лет, современным трейдерам жалобы на сложность MQL4 кажутся непонятными, но история повторяется. Так же, как и тогда, некоторые трейдеры заявляют, что MQL5 сложен для изучения и написания стратегий, не то что MQL4. Значит, общий уровень программирования торговых роботов за эти годы существенно поднялся, и всё это — благодаря тому, что разработчик не побоялся двигаться дальше и дал алготрейдерам еще более мощные инструменты языка C++. Новый MQL5 позволяет программисту максимально подробно проверять результаты всех операций (особенно это важно для обработки торговых транзакций) и аккуратно, по требованию, пользоваться оперативной памятью. В старом MQL4, до того, как его подтянули до уровня MQL5, таких возможностей было значительно меньше. Да и сам синтаксис был менее строгим.
Думается, что пройдет еще немного времени — и споры о том, сложнее язык MQL5 или нет, также станут достоянием истории. Но поскольку еще многие трейдеры помнят "MQL4, милый MQL4", то попробуем для них показать, как могут выглядеть знакомые им MQL4-функции, реализованные на MQL5.
Автор: Vladimir Karputov