Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 1331
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Помогите исправить индикатор, он не отображается в терминале MT5, при компиляции выдает ошибки.
Помогите исправить индикатор, он не отображается в терминале MT5, при компиляции выдает ошибки.
самое простое - в OnCalculate в самом начале всем массивам задать ArraySetAsSeries(Open,true) ; ArraySetAsSeries(Close,true) ; и так далее.
это традиционный сюрприз на ровном месте: в 5-ке направления индексации по умолчанию иное чем в 4-ке..
индикатор буферов не использует, просто строит граф.объекты - после запуска нажмите Ctrl+B и смотрите куда он их там поместил
Перекопал документацию и форум ...
Как сделать глобальными переменные типа указатель на объект [в примере var], если они создаются в OnInit() строкой:
CObj* var=new CObj(p1,p2,p3);
причем количество объектов и параметры конструкторов заранее неизвестны и вычисляются в OnInit() ?
Перекопал документацию и форум ...
Как сделать глобальными переменные типа указатель на объект, если они создаются в OnInit():
причем количество объектов и параметры конструкторов заранее неизвестны и вычисляются в OnInit() ?
Ничё не понял, но передавайте массив указателей CArrayObj на созданные в OnInit() объекты
Ничё не понял, но передавайте массив указателей CArrayObj на созданные в OnInit() объекты
Артем, спасибо за ответ.
Прошу прощения за непонятный вопрос)
В эксперте могут использоваться три глобальные переменные типа указатели на объект : var1, var2, var3.
До исполнения OnInit() неизвестно, все ли эти переменные будут нужны (это связано с таймфреймами), неизвестны также параметры для конструкторов, которые будут инициализировать объекты.
Как создать такие переменные в OnInit(), чтобы они при этом были глобальными?
Артем, спасибо за ответ.
Прошу прощение за непонятный вопрос)
В эксперте могут использоваться три глобальные переменные типа указатели на объект : var1, var2, var3.
До исполнения OnInit() неизвестно, все ли эти переменные будут нужны (это связано с таймфремами), неизвестны также параметры для конструкторов, которые будут инициализировать объекты.
Как создать такие переменные в OnInit(), чтобы они при этом были глобальными?
Я не знаю что у вас там за волшебный конструктор, в котором одни неизвестные :)
Объекты не нужно заранее объявлять как экземпляры.
Нужно объявить один массив CArrayObj. Сами ваши объекты должны быть наследниками CObject.
Создаёте ваш объект по new и добавляете указатель на него в список.
Создаёте следующий и добавляете в список, и т.д.
Уже этот список - указатель на него (а список объявлен глобально), передаёте в ваши конструкторы.
Но вот как вы собрались делать конструкторы с неизвестными заранее аргументами - тут я немного не понял. Попробуйте это пояснить
Но вот как вы собрались делать конструкторы с неизвестными заранее аргументами - тут я немного не понял. Попробуйте это пояснить
Создание объектов типа CIsNewBar для каждого используемого таймфрейма по каждому символу.
З.Ы. С классом CArrayObj была проблемка: при обращении к элементам типа CArrayObj* ArrayObj.At(0) недоступны члены класса объекта, который At(0), хотя эти члены класса точно публичные, т.е. конструкция типа ArrayObj.At(0).method(parameter) не работает.Символы задаются одной строкой с разделителями в input-параметре, поэтому нельзя заранее создать все объекты перед OnInit().
Т.е. первый неизвестный параметр конструктора - символ.
Второй неизвестный параметр конструктора - таймфрейм, т.к. для каждого символа будет свой набор таймфреймов, аналогично передаётся строкой с разделителями в input-параметре.
И еще боюсь использовать эти библиотеки, вдруг что-то изменят в них при обновлении терминала и мой эксперт вдруг перестанет работать...
Создание объектов типа CIsNewBar для каждого используемого таймфрейма по каждому символу.
З.Ы. С классом CArrayObj была проблемка: при обращении к элементам типа CArrayObj* ArrayObj.At(0) недоступны члены класса объекта, который At(0), хотя эти члены класса точно публичные, т.е. конструкция типа ArrayObj.At(0).method(parameter) не работает.Символы задаются одной строкой с разделителями в input-параметре, поэтому нельзя заранее создать все объекты перед OnInit().
Т.е. первый неизвестный параметр конструктора - символ.
Второй неизвестный параметр конструктора - таймфрейм, т.к. для каждого символа будет свой набор таймфреймов, аналогично передаётся строкой с разделителями в input-параметре.
И еще боюсь использовать эти библиотеки, вдруг что-то изменят в них при обновлении терминала и мой эксперт вдруг перестанет работать...
Всё как-то не так...
Напишите простыми словами что хотите сделать. Без всяких упоминаний своих попыток закодить это всё.
Всё как-то не так...
Напишите простыми словами что хотите сделать. Без всяких упоминаний своих попыток закодить это всё.
Мультивалютный эксперт.
Список символов задается через input-параметр, строка с разделителем "AUDUSD,EURUSD,GBPUSD...", количество символов заранее не определено.
Для каждого символа есть два таймфрейма, на которых работает его "собственная" торговая система.
Соответственно два input-параметра, строки с разделителем : короткий таймфрейм для соответствующего символа "M1,M30,M5..."
длинный таймфрейм для соответствующего символа "Н1,D1,H4..."
Т.е. для AUDUSD таймфреймы М1 и Н1, для EURUSD М30 и D1, и т.д.
В OnTick() по каждому символу нужно отслеживать появление нового бара на обоих (коротком и длинном) таймфреймах для принятия торговых решений.
Старался написать как можно проще)
Мультивалютный эксперт.
Список символов задается через input-параметр, строка с разделителем "AUDUSD,EURUSD,GBPUSD...", количество символов заранее не определено.
Для каждого символа есть два таймфрейма, на которых работает его "собственная" торговая система.
Соответственно два input-параметра, строки с разделителем : короткий таймфрейм для соответствующего символа "M1,M30,M5..."
длинный таймфрейм для соответствующего символа "Н1,D1,H4..."
Т.е. для AUDUSD таймфреймы М1 и Н1, для EURUSD М30 и D1, и т.д.
В OnTick() по каждому символу нужно отслеживать появление нового бара на обоих (коротком и длинном) таймфреймах для принятия торговых решений.
Старался написать как можно проще)
Класс нового бара уже есть?
И как именно выглядят входные параметры?