Знаю что нельзя но очень хочется - страница 3

 
И к чему это нас приведет ?
 
jartmailru:
Мдя... Это вопрос про то, как сделать вот такой расклад?

ага. только одна тонкость в этом всем - когда меняеш параметры Файл1 то параметры Файл2 тоже приходится менять вручную.

а хотелось чтобы так: один индикатор "изменил", а второй это сам "учуял" и построился по тем же самым параметрам.

 
MQL4++ дал возможность привязывать буферы одного индикатора к разным окнам (chart_window и separate_window)?
 
hrenfx:
MQL4++ дал возможность привязывать буферы одного индикатора к разным окнам (chart_window и separate_window)?
  нет вроде, по крайней мере я такого не наблюдал
 
FAQ:
  нет вроде, по крайней мере я такого не наблюдал

В принципе, не сложно запихать все в один инклудник, запустить сразу несколько индикаторов. Где первый будет мастером - менять глобальные переменные. А остальные - подхватывать их через таймер. Тогда никакого отставания в тик не будет.

Костыль, конечно, но работать будет без проблем. Может быть полезен, когда индикатор выводит много линий в своих масштабах - мультииндикатор. И надо изменив входной параметр, наблюдать, как будут меняться все линии. Особенно, в интерактивном режиме

Огорчает только дублирование расчетов для каждой линии.

 

Пробовал всякие условные выражения с #property (задавал на уровне хедера класса, экземпляр которого на глобальном уровне (инициализируется до OnInit) и т.д.), чтобы входной параметр индикатора задавал окно его отрисовки - не вышло. Хорошо, что хоть это работает:

Print(indicator_buffers);
Очень пригодилось.
 

Оказалось, что с помощью только MQL4++ (без DLL) можно очень многое творить на графиках MT4. Например, добавлять подокна в чарт:

 

Можно запускать любые индикаторы в режиме separate или chart. Или, например, сделать чарт, на котором нет вообще ценовых данных. Короче, лишь только фантазия. Вот чего не получилось, так это запустить на одном чарте несколько советников. 

 

Не обдумывал, влияет ли на безопасность: без проблем (только MQ4++)  запускаются индикаторы, находящиеся вне песочницы...

Это обстоятельство легко позволяет отправлять в маркет советники, использующие DLL.

P.S. Если кто захочет проверить, могу сварганить EX4, который пройдет маркет, но будет использовать DLL (WINAPI-функция по выбору).

 
hrenfx:

Не обдумывал, влияет ли на безопасность: без проблем (только MQ4++)  запускаются индикаторы, находящиеся вне песочницы...

Это обстоятельство легко позволяет отправлять в маркет советники, использующие DLL.

P.S. Если кто захочет проверить, могу сварганить EX4, который пройдет маркет, но будет использовать DLL (WINAPI-функция по выбору).

Лично занимался перекрытием всех лазеек использования DLL в маркете, хотелось бы узнать о выдуманном способе (хотя сомневаюсь что он работоспособен).
 
mql5:
Лично занимался перекрытием всех лазеек использования DLL в маркете, хотелось бы узнать о выдуманном способе (хотя сомневаюсь что он работоспособен).
  1. В маркет отправляется скрипт
  2. Скрипт пишет в MQL4\Files\ EX4-файл советника, который в исходнике скрипта размещается в виде массива.
  3. Скрипт записывает текущее окружение в template-файл, находящийся в MQL4\Files\
  4. Открывает файл-template и дописывает (не генерирует заново, чтобы в дальнейшем пользователь ничего не заподозрил визуально) в него запуск упомянутого выше EX4-советника из MQL4\Files
    <expert>
    name=..\Files\Test_Expert
    ....
    </expert>
    </chart>
    
  5. Запускает выполнение измененного template.

Теперь по советнику, прописанному в скрипте в виде EX4-файла:

  1. В OnInit удаляет свой исполняемый код из MQL4/Files - чтобы следов не оставлять.
  2. По тем же причинам удаляет созданный скриптом template-файл.
  3. Делает пакости через DLL, как только пользователь разрешит их использование - ведь маркет "безопасный".

Уязвимость устраняется просто: запретить в template вызов EX4-файлов за пределами папок Indicators, Experts.

 
hrenfx:
  1. В маркет отправляется скрипт
  2. Скрипт пишет в MQL4\Files\ EX4-файл советника, который в исходнике скрипта размещается в виде массива.
  3. Скрипт записывает текущее окружение в template-файл, находящийся в MQL4\Files\
  4. Открывает файл-template и дописывает (не генерирует заново, чтобы в дальнейшем пользователь ничего не заподозрил визуально) в него запуск упомянутого выше EX4-советника из MQL4\Files
  5. Запускает выполнение измененного template.

Теперь по советнику, прописанному в скрипте в виде EX4-файла:

  1. В OnInit удаляет свой исполняемый код из MQL4/Files - чтобы следов не оставлять.
  2. По тем же причинам удаляет созданный скриптом template-файл.
  3. Делает пакости через DLL, как только пользователь разрешит их использование - ведь маркет "безопасный".

Уязвимость устраняется просто: запретить в template вызов EX4-файлов за пределами папок Indicators, Experts.

Спасибо за подробное описание

1) Создание и копирование файлов *.ex4 и *.ex5 будет под запретом.
2) Проверку на выход за песочницу при загрузке MQL программ сделаем
3) При загрузке шаблона графика, прописанная в нём программа MQL флаг DLL наследует из MQL программы которая применяет шаблон к графику.
Причина обращения: