Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
...
появится способ обмена данными между советниками запущенными на разных чартах
Я это уже реализовал и это работает. Любой, кто понимает что такое множественное наследование должен мочь это сделать. Иначе, грош цена его знаниям.))
Любая штатная функция, которая позволит отправить в глобальные переменные терминала массив байт (хотя лучше массив int, чтобы вопросов меньше было как преобразовывать) и соответственно обратная функция которая позволит этот массив прочитать в другом эксперте
Просто глобальных переменных терминала не достаточно для обмена данными - есть большое поле имени переменной и маленькое для данных, в виде одного double , нужно наоборот ;)
ЗЫ: в сети много примеров по разбору графов решений, в основном за счет интерфейсов добиваются гибкой структуры кода, интерфейсы везде есть, в MQL нет ((
Тут я полностью согласен. Глобальные переменные терминала убоги. Только сохранять не массивы, а как в WCF, экземпляры классов. Я в свое время был просто потрясен этой возможностью. Вместо того, чтобы пасить поток байтов по сети, я мог без лишних телодвижений послать экземпляр класса, а всю чернушку за меня делал .NET, причем быстро, если слать в бинаре.
Хмм, пока давил клаву, возникла идея сделать такую либу...
---
Вот насчет графов решений и интерфейсов просто не сталкивался, мир программирования необъятен ))
Я это уже реализовал и это работает. Любой, кто понимает что такое множественное наследование должен мочь это сделать. Иначе, грош цена его знаниям.))
А без дешевых понтов и по делу?
Я это уже реализовал и это работает.
и?
в КБ есть готовые решения уже давно, Вы тоже добавили свое решение? или так...мимо проходили?
и?
в КБ есть готовые решения уже давно, Вы тоже добавили свое решение? или так...мимо проходили?
судя по упоминанию множественного наследования, пустыха...
а как в WCF, экземпляры классов
нельзя сложное решение, массовости не будет, массив прочитать и записать любой сможет, если что сложнее, просто не будет востребовано, как выше писал в КБ прилично решений по обмену данными, но имхо, GlobalArrayWrite(string name, int out[]) и GlobalArrayRead(string name , int &in[]) - и все, больше не нужно для пользователя
А без понтов и по делу?
Ресурсы. Объявляете юнион с массивами нескольких типов в обоих программах-советниках (или индикаторах, или советнике и индикаторе), которые хотите разместить на разных чартах. В каждой программе записываете адрес противоположной стороны в string-переменной (папка, подпапка, имя программы). Используете две функции для общения - первая функция - чтение сообщения, вторая - запись сообщения. Функции вызываются в обоих программах на частоте таймера.
Функционал каждого из программ должен записывать все данные которые нужно передать в string-переменную. Потом, в конце функции таймера будет вызвана функция передачи сообщения, которая сохранит собранную строку в ресурсе. Другая программа на другом чарте, на следующем периоде таймера вызовет функцию чтения ресурса находящегося по адресу другой программы и распакует сообщение. Далее, она может точно также составить свое сообщение первой программе и также передать, просто записав нужные данные в свой ресурс.
Что-то тут задумался, я на форе около 13 лет, начал с МТ4 в 2006 году. Вляпался в эту тему только потому, что тогдашняя подруга попросила помочь разобраться с терминалом, а я радостно обнаружил некий Си-подобный язык, MQL4 и залип. Смешно вспоминать, работал на включенном английском языке в терминале и был уверен, что это западная разработка. Когда узнал, что это от ребят из Казани, испытал когнитивный диссонанс ))
Итак, прошло 13 лет, я могу обозначить несколько этапов в развитии терминалов МТ*.
1. Начало разработки МТ5, вроде 2009 год. Я тогда пасся на форуме альпы, до сих пор помню, как Ренат совершал туда набеги со своей пропагандой, а я возражал, что схема неттинга коммерчески на форе мертва.
2. Очень важный для меня этап, начало 2013, выпуск нового МТ4 билд > 600. Блин, я был в восторге, появились структуры, даже классы, новые нормальные дефайны, как в С++. Наконец-то убрали баги, перестал падать редактор при копи-пасте и прочие баги тоже пофиксили. Ведь до этого я все стратегии писал на C# через мост на С++, а тут начал все больше переносить код на MQL4, так как появилась возможность не шаманить. а нормально работать.
3. Вот тут год не могу вспомнить, наверное 2016? Поправьте плз. Наконец-то выпустили хедж-версию МТ5, лично для меня появился стимул переползать на МТ5.
4. Тоже не помню год, около 2018? Единый компилятор и возможность писать один мультиплатформенный проект в МТ5. С тех пор так и пишу для себя. Когда предлагаю эту возможность Заказчикам, сразу соглашаются 90%, абсолютно все про это даже не знают. Для мультиплатформенников рекомендую либу MT4Orders от fxsaber, найдете поиском в кодобазе.
5. Тут сборная солянка, так как МТ5 постоянно развивается, это очень радует.
Я примерно обрисовал развитие платформы за 13 лет, а что будет еще через 10, пофантазируем? Глядишь, какие-то фантазии отразятся в будущих разработках ))
Это ещё что... Меня однажды сразу 10 подруг умоляли разобраться с терминалом, хором, на коленях... А я им ответил - как вам не стыдно, я же несвободный человек, у меня уже под опекой 50 подруг, куда ж я вас то всех дену, у меня только трёшка в питере, да и времени у меня совсем не хватает - день и ночь мочу чеченов...
А МТ есть и будет есть.
и?
в КБ есть готовые решения уже давно, Вы тоже добавили свое решение? или так...мимо проходили?
нельзя сложное решение, массовости не будет, массив прочитать и записать любой сможет, если что сложнее, просто не будет востребовано, как выше писал в КБ прилично решений по обмену данными, но имхо, GlobalArrayWrite(string name, int out[]) и GlobalArrayRead(string name , int &in[]) - и все, больше не нужно для пользователя
Слушай, да даже в операциях с файлами давно уже есть
uint FileWriteStruct(
int file_handle, // handle файла
const void& struct_object, // ссылка на объект
int size=-1 // размер для записи в байтах
);
Гораздо удобнее читать-писать структуры или объекты классов, чем парсить поток простых типов. Может, я с возрастом стал ленив? Да, я предпочитаю делать больше, стуча по клаве меньше ))