Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 780

 
Algus:

Да, группой звуковых сигналов, иначе получается много звуковых файлов (см.#7763). А частота, то густо, то пусто. Основной анализ идет при открытии баров. Дублирующих, конечно же, нет.

И в общем то не мелодии а сообщения. Мелодии не информативны, птички были в начале, когда сигналы можно было на пальцах перечесть.):

Ну тогда точно пишите в буфер индикатора шифр сигнала так же из 6 цифр, где будет закодирована информация о паре ТФ и типе сигнала - тогда точно не запутаетесь - сняли значение из буферов в массив, и начали дешифровку по порядку, а можно ещё и упорядочить массив, что бы по порядку шли сигналы по одному символу, тогда и длительность сигнала сократиться - первый раз пара а потом ТФ-Сигнал, ну и всё это в цикле. Вроде не так сложно. Единственно что нужно, так это проверку новой свечи делать для каждой пары, а то может быть рассинхронизация и пропуск сигнала. В общем блоками, собрали с одного инструмента сигнал, обработали, проиграли, собрали с другого - так будет лучше. Или же ещё массив сделать булевый, где вы пометите, что сигнал уже был получен с инструмента, и обновлять его после каждого проигрывания информации с ТФ, да так будет лучше. Тогда Вам не нужно будет ждать, пока все индикаторы сделают расчет в связи с появлением нового бара.

 
anatoliy.r:
Вот я ....... Так просто оказывается, получилось! Спасибо!!!)

На здоровье :)

 
Algus:

Непонятно. Мультииндикатор (ми) только переключает окна, так в терминале и так с этим нет проблем. Если считает, то по загрузке процессора 1ми=14 не ми. К тому же свалить всю графику с 14 ТФ одно окно ... это как? Плюс на каждом чате свой индикатор, который тоже считает и рисует? Загрузка 1 ми+14не ми=28 не ми. Не проще ли правильно организовать звук?

14 графиков я, конечно же сразу не смотрю, но сразу слышу.):

Для чего держать открытыми 14 графиков с 14 индикаторами? (и еще придумывать как их связать)

Достаточно одного индикатора в одном окне, который будет всё рисовать/мониторить, и по щелчку переключаться на нужный тф/символ. (вы ведь переключаетесь между окнами?)

 
Taras Slobodyanik:

Для чего держать открытыми 14 графиков с 14 индикаторами? (и еще придумывать как их связать)

Достаточно одного индикатора в одном окне, который будет всё рисовать/мониторить, и по щелчку переключаться на нужный тф/символ. (вы ведь переключаетесь между окнами?)

Теоретически возможно. Но чего то я, видимо, недопонимаю.):

Всё рисовать в одном окне он не может, мониторить - да. Переключаться по щелчку на другой ТФ/символ - это программно? Наверное, MQL позволяет, не пробовал за ненадобностью. А,что дальше ? Открывается новый график, загружается туда этот МИ индикатор и рисует там узоры. Я так  себе это представляю,может ошибаюсь? Если нет, чем это лучше и быстрее  14 открытых окон. Так это всё уже реализовано в терминале и нет никакой разницы по какой панельке щёлкать. Только нужно еще попыхтеть над МИ, он у меня в моно варианте 360кг весит. Фактически вы предлагаете перенести работу терминала в индикатор. Думаю, проще, эффективней и быстрей разобраться waveOut API или подучить ещё один из языков программирования.

 

ну, как я понял, задача стоит не в том что быстрее - 14 индикаторов или 1 мультииндикатор, а в том чтобы 14 индикаторов взаимодействовали между собой

мне, было бы проще объединить всё в один индикатор

 
Taras Slobodyanik:

ну, как я понял, задача стоит не в том что быстрее - 14 индикаторов или 1 мультииндикатор, а в том чтобы 14 индикаторов взаимодействовали между собой

мне, было бы проще объединить всё в один индикатор

Спасибо за интерес):
 

Такой вопрос. Я поставил историю тиков, теперь при тестировании даже на 32 скорости на М15 скорость примерно 1 бар в секунду, что очень медленно. Как то еще можно увеличить скорость прогона?

Без визуализации также очень долго идет

 
Aleksey Vyazmikin:

Ну тогда точно пишите в буфер индикатора шифр сигнала так же из 6 цифр, где будет закодирована информация о паре ТФ и типе сигнала - тогда точно не запутаетесь - сняли значение из буферов в массив, и начали дешифровку по порядку, а можно ещё и упорядочить массив, что бы по порядку шли сигналы по одному символу, тогда и длительность сигнала сократиться - первый раз пара а потом ТФ-Сигнал, ну и всё это в цикле. Вроде не так сложно. Единственно что нужно, так это проверку новой свечи делать для каждой пары, а то может быть рассинхронизация и пропуск сигнала. В общем блоками, собрали с одного инструмента сигнал, обработали, проиграли, собрали с другого - так будет лучше. Или же ещё массив сделать булевый, где вы пометите, что сигнал уже был получен с инструмента, и обновлять его после каждого проигрывания информации с ТФ, да так будет лучше. Тогда Вам не нужно будет ждать, пока все индикаторы сделают расчет в связи с появлением нового бара.

Если можно,уточните.):

В  буфер какого индикатора писать - во все 14, одного из 14 или буфер индикатора менеджера звуков? И зачем в буфер индикатора а потом в массив если можно сразу в массив?

Про новую свечу тоже не уловил. Это вы предполагали какую то синхронизацию?

Каким методом и где вам видится сбор сигналов с инструмента? Внутри рабочих индикаторов, или менеджером?

Кстати, есть сигналы  и произвольные по времени.

В общем, каюсь, в алгоритме не разобрался.):

 

Здравствуйте. Пишу функцию - не могу передать массив в качестве параметра вместе с какими-либо ещё параметрами. Примеры:

void f(int &a[]){} //не вызывает проблем у компилятора 
void f(int x=0,
       int &a[]){} //выдаёт ошибку: 'a' - missing default value for parameter
//ок, выставляю default value:
void f(int x=0,
       int &a[]=0){} //ошибка: '=' - illegal operation use

Дальше фантазия иссякает.
Функция так-то должна копаться в массиве - и для этого, я полагаю, ей этот массив надо передать. Или это не так?
Заранее спасибо.

 
Mikhail Sobolev:

Здравствуйте. Пишу функцию - не могу передать массив в качестве параметра вместе с какими-либо ещё параметрами. Примеры:

Дальше фантазия иссякает.
Функция так-то должна копаться в массиве - и для этого, я полагаю, ей этот массив надо передать. Или это не так?
Заранее спасибо.


void f(int &a[],int x=0){}
Причина обращения: