![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Указатель на объект.
Без обид, но с подобными макросами Вам еще рано, нахлебаетесь. Для начала поймите, зачем я вот так сделал:
И что с ним делать с этим указателем на объект который внутри класса куда его передавать.
А что касается макросов так с ними намного проще работать.
И что с ним делать с этим указателем на объект который внутри класса куда его передавать.
А что касается макросов так с ними намного проще работать.
По нему обращаешься к объекту созданному где угодно. В моем примере в конструктор передается указатель на объект, созданный на глобальном уровне, но данный класс может быть сам вложен в другой (в котором и создается объект).
Вот Вам пример применения Вашего макроса:
Смотри во что он развернется, скобки добавляю для наглядности:
В результате, Вы получили абсолютно валидный для компилятора код, но поведение программы категорично отличается от задуманного. А теперь не факт, что ошибку заметишь, код-то работает, а потом будешь тупо смотреть в терминал и гадать: а почему робот зашел всем депозитом и слил счет?)))))
Я макросы очень хорошо умею, но именно поэтому и очень сильно не люблю (разработчики, еще раз прошу constexpr, а заодно и SFINAE). Так, что мой тебе совет - не надо их использовать для уменьшения букв в коде. Это, на самом деле, даже в урезанной mql-версии, мощный инструмент, но требует к себе очень дисциплинированного подхода.
Разработчики добавьте возможность использовать неограниченное количество аргументов внутри макросов и функций. Надоела эта статическая ерунда. Что такое 8 аргументов для макроса а если надо 108 что тогда, сделайте хотя бы 10. А также сделайте возможность перегружать макросы чтобы не нужно было плодить новые имена с макросами. Также было бы классно если бы организовали
макрос #if
но поведение программы категорично отличается от задуманного. А теперь не факт, что ошибку заметишь, код-то работает, а потом будешь тупо смотреть в терминал и гадать: а почему робот зашел всем депозитом и слил счет?)))))
Я макросы очень хорошо умею, но именно поэтому и очень сильно не люблю (разработчики, еще раз прошу constexpr, а заодно и SFINAE). Так, что мой тебе совет - не надо их использовать для уменьшения букв в коде. Это, на самом деле, даже в урезанной mql-версии, мощный инструмент, но требует к себе очень дисциплинированного подхода.
Я ничего не буду гадать я делаю свою работу надёжно.
Что вы делаете с указателем m_data? Вы обращаетесь к элементу m_data? И что это вам даёт? Я так понимаю что это происходит здесь
Только непонятно(очень сложно) что вы этим добиваетесь?
Что бы было если бы эта строка
Была бы записана в public
Класы для меня тёмный лес. За 2 года так и не понял как с ними обращаться.
есть необходимость писать статистику результатов тестирования в таблицу БД,
БД создана заранее, интересующие проходы пишу включением sinput переменной в настройках ЕА
БД:
пишу в эту таблицу таким кодом:
перечисление ENUM_STATISTICS имеет очередность как в справке, скрипт для проверки:
все работает, НО текст кода довольно обьемный, высока вероятность опечатки, как бы получить этот запрос к БД более надежным способом - основная проблема как в StringFormat попасть
есть необходимость писать статистику результатов тестирования в таблицу БД,
БД создана заранее, интересующие проходы пишу включением sinput переменной в настройках ЕА
БД:
пишу в эту таблицу таким кодом:
перечисление ENUM_STATISTICS имеет очередность как в справке, скрипт для проверки:
все работает, НО текст кода довольно обьемный, высока вероятность опечатки, как бы получить этот запрос к БД более надежным способом - основная проблема как в StringFormat попасть
За дефайнить!!! (хотя тут обычная перегруза пойдет)
И зачем нужен этот стринг формат?
Он ни разу не быстрее чем обычное добавление.... (я делал текстовики на десятки гигов =).... даже обычное добавление быстрее получается, такие дела...
Если прям принципиально делать через эту штатную функцию то тоже не понятна проблема ))
И зачем нужен этот стринг формат?
Он ни разу не быстрее чем обычное добавление.... (я делал текстовики на десятки гигов =).... даже обычное добавление быстрее получается, такие дела...
не знаю
прочитал справку и статью, создал запрос к БД по примерам
вроде все работает, но подозреваю, что если буду частично использовать этот код, то могу сделать опечатки
в общем стремно выглядит эта конструкция, вот и спрашиваю, как бы сделать компактнее и не накосячить )))
есть необходимость писать статистику результатов тестирования в таблицу БД,
БД создана заранее, интересующие проходы пишу включением sinput переменной в настройках ЕА
БД:
пишу в эту таблицу таким кодом:
перечисление ENUM_STATISTICS имеет очередность как в справке, скрипт для проверки:
все работает, НО текст кода довольно обьемный, высока вероятность опечатки, как бы получить этот запрос к БД более надежным способом - основная проблема как в StringFormat попасть
помниться что во первых что в SQLite типы полей опциональны и можно не упарываться над указаниями и приведением типов. Он-же не спроста "Lite"
длинный запрос можно разбить на 3-4-5 :-)
BEGIN TRANSACTION
INSERT INTO myTable VALUES (...); --- тут можно получить PrimaryKey
UPDATE myTable .... ; --- обновить по Primary
UPDATE myTable ... ; --- ещё...
COMMIT ; --- это если все запросы удачны.. иначе ROLLBACK
это по старой памяти, то есть надо уточнять в справке
не знаю
прочитал справку и статью, создал запрос к БД по примерам
вроде все работает, но подозреваю, что если буду частично использовать этот код, то могу сделать опечатки
в общем стремно выглядит эта конструкция, вот и спрашиваю, как бы сделать компактнее и не накосячить )))
Конкретно твоя задача, примерно так должна решаться:
Конкретно твоя задача, примерно так должна решаться:
блин!
точно! массивы!
СПАСИБО!!!!!