Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
а вот пример - код компилируется в обоих компиляторах.
(белая рамка перемещается мышью за ней синхронно двигается чёрный квадрат)но в MT5 так не работает расстояние нарушается (значит где то есть разница в обработке функций)
Я думаю причина в том, что MT5 в отличии от MT4, использует многопоточность. Из-за этого происходит данное рассогласование. Если упростить слегка ваш код (и кстати убыстрить), не считывая одну и ту же информацию два раза, то все заработает корректно. Причем, это даже алгоритмическая ошибка, т.к. вы считываете позицию курсора в разные моменты времени, но подразумеваете, что это одно и тоже значение. И в данном случае MT5 ведет себя даже более логично.
Было:
Стало:
ILNUR777:
1. Так запросов основных за 7 лет глобально лишь 2 было. Тики с вощможностью делать из них то о чём говорят выше. И уважить локеров с их разными позициями по сделкам. Всё. Хотелку локеров ведь реализовали со временем. Осталась одна. Больше запросов глобальных и нет.
1. Не правы. Запросов выше крыши.
2. Вы говорили о кастомных таймфреймах. То есть, не правы в исходном посыле.
3. Мое объяснение важно для понимания причин. Попытка свести "вот же только одна осталась" не принимается, так как ничем не отличается от предыдущих тем.
Конкуренты почти все поумирали, кстати. Сейчас будет тяжело оставшимся, после того, как мы в полный рост выпустим встроенные датафиды.
Сейчас основная проблема с отсутствием знаний и понимания возможностей MetaTrader 5 у трейдеров. Над этим и работаем.
1. Конкуренты почти все поумирали, кстати. Сейчас будет тяжело оставшимся, после того, как мы в полный рост выпустим встроенные датафиды.
2. Сейчас основная проблема с отсутствием знаний и понимания возможностей MetaTrader 5 у трейдеров. Над этим и работаем.
Распространить статью по расходам равно распространению терминала.
Вы думаете, что кто-то читает статьи?
Да на каждое прочтение статьи надо потратить 3-5 долларов рекламного бюджета. Когда осознаете это, то вся ваша картина мира "как надо дела делать", перевернется.
Распространить статью по расходам равно распространению терминала.
Вы думаете, что кто-то читает статьи?
Да на каждое прочтение статьи надо потратить 3-5 долларов рекламного бюджета.
Уверен, что затраты на MT4 были меньше. Считаю, что кастомные ТФ - зло для трейдинга. Потому что это один из аргументов поддержания жизни в еще большем зле - индикаторы на барах. Жуткая гадость, скажу я вам. При этом любой терминал без индикаторов считается мертвым. Вот такой парадокс.
Те, кто не видел торговых терминалов, с одинаковой легкостью освоит любой терминал. Тот же, кто уже работал на каком-то терминале, с большим трудом будет осваивать что-то другое.
MT4 так популярен, потому что это был ПЕРВЫЙ терминал большинства трейдеров. MT5 же - не первый терминал большинства трейдеров. В этом и причина.
И в этой фразе MT4/5 можно заменить на любой другой конкурирующий терминал, суть не изменится. Освоение первого инструмента не вызывает столько лени, как освоение второго. Особенно, когда СРАЗУ не очевидны преимущества второго. А MT5 внешне идентичен MT4. Те же идиотские скины GUI могли бы кардинально изменить отношение к терминалу, но их нет. Встречают по внешней одежке, а не по внутреннему функционалу.
Не правы в обоих вопросах, но спорить нет желания.
Учитывайте, что из любого набора советов/идей/объяснений 80-90% будут категорически ошибочны из-за банальности. Ну а по оставшимся тоже еще спорить надо. Но с цифрами на руках, безусловно.
По этому поводу задавал вопрос в СД (2017.05.03 18:23, #1734753). Ответа нет до сих пор.
у меня тоже были заявки о которых приходилось напоминать через другие заявки о ни наверно могут из за большого количества теряться (
Я думаю причина в том, что MT5 в отличии от MT4, использует многопоточность. Из-за этого происходит данное рассогласование. Если упростить слегка ваш код (и кстати убыстрить), не считывая одну и ту же информацию два раза, то все заработает корректно. Причем, это даже алгоритмическая ошибка, т.к. вы считываете позицию курсора в разные моменты времени, но подразумеваете, что это одно и тоже значение. И в данном случае MT5 ведет себя даже более логично.
Было:
Стало:
спасибо, как то я немного с другой стороны подумал об этом видимо)
правда всё равно поведение разное в 4 фигуры синхронно движутся.. а в 5 этого нет
1) Это не ошибка.
В MetaTrader 5 у стандартных индикаторов мы убрали встроенные костыли с лишними параметрами. Кроме того, индикаторные iXXX функции в MQL5 стали конструкторами и потеряли возможность выдавать фактические данные, так как возвращают хендл.
Сами данные индикаторов извлекаются через массовые CopyBuffer функции с указанием хендла индикатора и требуемых буферов. Упор делается именно на возможность сразу извлечь большой массив (100, 1000, 1000) результатов, а не лазать затратно за каждым значением вглубь iXXX функций, как это делается в МТ4.
2) ADX вычисляется на основе +DI, -DI, которые в свою очередь фиксированны по логике вычислений (high, low, close) и не имеют возможности выбирать от чего считать.
В поставке MetaTrader 5 есть полный исходный код ADX в MQL5\Indicators\Examples\ADX.mq5
спасибо , у меня собственно один вопрос остался,
что выбрать в 4 в кнопке "приметь к ценам" что бы и в 5 и в 4 они строились одинаково.
я тут подумал , может я просто не занимался "кроссплатформенностью" целенаправленно отсюда такое отношение.
....
я вот всерьёз задумался а может и правда продумать все различия в языках и вписать на уровне препроцессора.
....
я так понимаю это нужно вписать в двух вариантах- организация предопределённых переменных, направлений массивов в индикаторах если нужно конечно (я привык как в 4), получение данных из индикаторов, функции которых нет в 5, и использование одинаковых торговых классов из библиотеки. и тогда будет кросс платформенный код, верно или что то ещё нужно? и не использовать функции ObjectGet то есть без типа в имени так как в 5 такой нет.
Лично я, как поклонник виртуальных интерфейсов - всегда весь код стараюсь обернуть именно в класс-наследник виртуального интерфейса.
При этом кроссплатформенность реализуется достаточно просто - пользователь обращается по утвержденному общему "протоколу", а его преобразование в конкретные платформозависимые действия - скрывается в реальном классе.
Вот, скажем, мой виртуальный интерфейс переносимой позиции (хорошая иллюстрация для применения кроссплатформенности):
В нем, как видите, все функции - приравнены к нулю, пользователь - не имет доступа ни к чему, что было бы платформозависимым. Реальный класс пронаследован именно от него, но все пользователи получают указатель именно на такой вот виртуальный интерфейс, и к его конкретной реализации - доступа не имеют.
Если надо - с помощью Select() выбирается текущая позиция, и затем - можно перебрать количество ее компонент, и запросить отдельную компоненту. Причем, эта самая отдельная компонента - также выдается с помощью виртуального интерфейса (в том же файле - и интерфейс исторической позиции, также виртуальный):
Конкретная реализация - скрыта в реальном классе CTradePosition, поддерживающий общий виртуальный интерфейс предка, который содержит непосредственно платформозависимые классы CMT4PositionInfo или CMT5PositionInfo (это существенно различные классы), разделенные через дефайны на МТ4 и МТ5:
Но, к логике работы эксперта - эта конкретная реализация отношения не имеет, и в результате из эксперта к ней нет никакого доступа.
Лично я считаю, что в любом месте программы должен быть доступ исключительно лишь к тем структурам, которые необходимы и достаточны. Все остальное - должно быть недоступно. Это очень существенно помогает избегать ошибок.