Вот такой вот хитрый вопросец смекалистым :)

 

Ребят, выручайте... В связи с скажем так некой "ущербностью" 4той версии языка MQL (отсуствие в нем как минимум обьектов и динамических массивов) прошу вашей помощи.


Есть некое количество "паттернов", при этом у каждого паттерна есть привязки к неким "правилам". Правила это математические функции, а сама привязка паттерна к правилу осуществляется через агрументы передаваемые этому правилу.


Например


Паттерн1

Правило1(1, 3)

Правило2(3, 5)


Паттерн2

Правило1(2, 4)

Правило2(4, 6)


И так далее...


Задача в следующая: Мне нужно описать привязку правил + аргументов к каждому паттерну. Затем в цикле проверять правила для текущего паттерна с условием привязок этого паттерна. Т.е будет выглядеть следующим образом:


Цикл

Берем Паттерн1, "читаем" по порядку привязки к правилам - и проводим соотв проверку.

Берем Паттерн2, "читаем" по порядку привязки к правилам - и проводим соотв проверку.

Берем Паттерн3, "читаем" по порядку привязки к правилам - и проводим соотв проверку.


Итд... Идея пока в голове одна - через многомерные массивы каким нибудь образом попробовать... Однако чувствую что это будет такой геморой... ))) Возможно кто то из вас предложит более изящное решение? Заранее примного благодарен. П.С. Использование DLL а так же хранение паттернов/правил во внешних файлах - недопустимо. Реализовать надо именно внутри кода.

 

Динамические массивы.

Код обновил на проверку отослал. Но уже пару месяцев его всё никак не опубликуют.

Наверно МТ5, стало быть, скоро будет с динамическими массивами.

 
Основная трудность - в MQL-4 нет указателей на функцию, но и это можно обойти.
 

Привет!

Соедини с SQL и через SQL обработай, вернее будет. Но тут только DLL. :(

 

А нельзя сделать правила как функции, а потом подставлять их в условия? Например:

if(Правило1&&Правило2) выполняем действия для Паттерн1

if(Правило3&&Правило4) выполняем действия для Паттерн2

 

Честно говоря, я вообще не понял в чём сложность..

 
SK. писал(а) >>

Честно говоря, я вообще не понял в чём сложность..

вот, вот.

 

<<Ребят, выручайте... В связи с скажем так некой "ущербностью" 4той версии языка MQL (отсуствие в нем как минимум обьектов и динамических массивов) прошу вашей помощи. >>


Любая версия любого языка <программирования> "ущербна" по-любому, бо на каждый чих не наздравствуешься. "Канарейку за копейку, и чтоб пела и не ела."

 

Спасибо за ответы всем вам. Однако сейчас я уточню далее...


1. push(), pop() и остальные функции для работы с "динамическими" массивами я написал уже сам, однако спасибо за дополнительную информацию.

2. Указатель на функцию (!!!) вот это и есть основная проблема! Подскажите плз как именно можно обойти отстуствие оного в mql?

3. if(rule(args)) на данный момент это и есть основное решение, однако прикинем, 27 паттернов, по 16-18 правил для каждого паттерна. Однако теперь расмотрим ситуацию когда "вызов" проверки каждого паттерна нужно будет производить в разных местах и при этом еще и рекурсивно. А принимая во внимание то что в каждом паттерне может быть набор от 1 до 5 элементов (в зависимости от их количества как раз и обрабатываются правила), то данное решение if(rule(args)) является не самым удачным и изящным.


Теперь идем дальше. Основная сложность гребаных паттернов в их рекурсии... Паттерны делятся на 5ки и 3ки. Соотв в 5ке у нас есть 5 элементов, а в 3ке - 3. Проблема в том что в 5ке, каждый элемент может быть только из определенного набора других элементов. Нужно придумать как "описать СТРУКТУРУ паттерна".


Например


5 = 5-3-5-3-5

3 = 3-3-5

значит

1й элемент в 5ке, должен сам быть паттерном 5ки

2й элемент в 5ке, должен быть паттерном 3йки

3й элемент в 5ке должен быть паттерном 5ки

...

итд...

 
ph3onix писал(а) >>

Спасибо за ответы всем вам. Однако сейчас я уточню далее...

1. push(), pop() и остальные функции для работы с "динамическими" массивами я написал уже сам, однако спасибо за дополнительную информацию.

2. Указатель на функцию (!!!) вот это и есть основная проблема! Подскажите плз как именно можно обойти отстуствие оного в mql?

3. if(rule(args)) на данный момент это и есть основное решение, однако прикинем, 27 паттернов, по 16-18 правил для каждого паттерна. Однако теперь расмотрим ситуацию когда "вызов" проверки каждого паттерна нужно будет производить в разных местах и при этом еще и рекурсивно. А принимая во внимание то что в каждом паттерне может быть набор от 1 до 5 элементов (в зависимости от их количества как раз и обрабатываются правила), то данное решение if(rule(args)) является не самым удачным и изящным.

Теперь идем дальше. Основная сложность гребаных паттернов в их рекурсии... Паттерны делятся на 5ки и 3ки. Соотв в 5ке у нас есть 5 элементов, а в 3ке - 3. Проблема в том что в 5ке, каждый элемент может быть только из определенного набора других элементов. Нужно придумать как "описать СТРУКТУРУ паттерна".

Например

5 = 5-3-5-3-5

3 = 3-3-5

значит

1й элемент в 5ке, должен сам быть паттерном 5ки

2й элемент в 5ке, должен быть паттерном 3йки

3й элемент в 5ке должен быть паттерном 5ки

...

итд...

Грубо говоря я почти закончил волнового советника по методам Глена Нили, и единственное что мне осталось - это привести в порядок эту самую рекурсию среди паттернов и описать их.

Очень интеерсная задача, но недостаточно информации, для того, чтобы что-то посоветовать.

 
Integer >>:

Очень интеерсная задача, но недостаточно информации, для того, чтобы что-то посоветовать.

Волновая теория Эллиотта методами Глена Нили.


категория 5 - импульсы

категория 3 - коррекции


каждая конкретная фигура имеет свою структуру, например в категории коррекции есть подобные структуры


5-3-5 - зигзаг

3-3-5 - плоская

3-3-3-3-3 треугольник

3-3-3 - двойная тройка

итд


Соотв получается нужно реализовать "вложенность" паттернов из категорий, относительно СТРУКТУРЫ (5-3-5 итд) текущей анализируемой фигуры.


Если что то непонятно - задайте вопрос, я постараюсь описать более детально.

Причина обращения: