Тестирование Систем прогнозирования в реальном времени - страница 53

 
grasn писал(а) >>

to Yurixx

Предлагаю сыграть в старые, добрые наперстки, можно использовать любые стратегии и куда угодно подсматривать :о) Прогноз по EURUSD M15 на 300 отсчетов (с понедельника по среду включительно):

Вариант 1:

Энтропия процесса: 13.84

Вариант 2:

Энтропия процесса: 13.01

Вариант 3:

Энтропия процесса: 14.36

Какой наперсток поднимаешь? :о)

Я склонен к варианту №1, так как эта ситуация давно развивается и ждет только своего продолжения

 
forte928 >>:

Я склонен к варианту №1, так как эта ситуация давно развивается и ждет только своего продолжения

Т.е. сейчас цена проходит некую зону разворота? Просто любопытство, если не затруднит конечно, можно поподробнее.

 
grasn писал(а) >>

Т.е. сейчас цена проходит некую зону разворота? Просто любопытство, если не затруднит конечно, можно поподробнее.

В данный момент есть первый фактор на основании которого можно сделать вывод о боковом флете на паре евро доллар -

пара достигла уровня консолидации линия OP на уровне 1.4850..точно такие колебания наблюдались в точках 1.3437 и 1.3937 с последующим откатом, что соотвествует уровням 0.382, 0.618 и 1.00..

на втором рисунке тотже график но с расчетными уровнями роста относительно точки минимума - 1.4162 и текущий 1.4951 и если взять на основании этого графика цены уровни 1.4951 и 1.4851 то можно заметить что цена как раз находиться в точке баланса на среднем уровне колебаний этих показателей последние два дня..Далее на графике вниз индикатор насыщение уже правтически давно показывает уровень насыщености при котором должен произойти разворот..

но есть пару моментов которые не позволяют этому произойти :

1) дневной график показывает отнисительное движение роста (нижний индикатор)

2) дневной график достигнут уровень консолидации 0.382 на уровне 1.4877 по первому признаку

3) дневной график достигнут уровень консолидации COP на уровне 1.4892 по второму признаку

4) При этом идет активное противодействие направленому движениею вверх на графике Н4

5) наличие двух уровней консолидации относительно минимального уровня конца сентября OP и 0.236 (1.4931 и 1.4933) что является сильным признаком на наличие долгой коррекции

Продолжение следует..

 

grasn, можно вопросец задать? Вы не пробовали искать критические точки у временного ряда?

update: Спрашиваю, т.к. копаю в этом направлении (и что-то вроде проглядывается). Вот пример того, как у меня выглядит поиск критических точек:


Critical points

Как видно, перед тем как ряд изменяет своё поведение, характер колебаний индикатора резко меняется (происходят всплески большой амплитуды, точнее, максимумы/минимумы начинают здорово ложиться на график функции f(x)=a^x). Всплески происходят чуть раньше (обычно :)), чем поведение ряда меняется. Правда, у меня с этим пока что не всё гладко. Приходится работать на грани точности типа double (числа маленькие очень получаются) + не хватает прогнозов по направлениям.

 
grasn писал(а) >>

Допустим есть такая конструкция:

Как я понял она обеспечит динамическое увеличение массива memRow[] при срабатывании какого то условия. Т.е. наперед длину массива я не знаю. Я все правильно понял?

1. В МКЛ4 ты не можешь оперировать с массивом размер которого не задан. Если про объявлении массива ты не указал его размер, то в init() ты это должен сделать обязательно. Дальше, в процессе работы ты этот размер можешь изменить по потребности.

2. Совет lea вполне практичный, стоит к нему прислушаться. Вообще, чтобы совет был адекватным, стоит четче объяснить для чего используется массив и чем обусловлена необходимость изменять его размер. Вполне возможно, что тебе подойдет вариант просто выделить места с лихвой и иметь переменную с индексом последнего элемента. Тогда знаешь ты наперед необходимое число элементов или нет будет действительно неважно.

.

В наперстки не играю. Но по виду мне больше нравится вариант 2. Или это мне просто хочется чтобы евра росла ? :-)

Но варианты 1 и 3 тоже ничего, хотя они мало чем друг от друга отличаются.

 
Yurixx >>:

1. В МКЛ4 ты не можешь оперировать с массивом размер которого не задан. Если про объявлении массива ты не указал его размер, то в init() ты это должен сделать обязательно.

1 Совсем не обязательно.

Обьявление массива без обьявления его размера разбивает процесс подготовки массива к работе на три части:

1 обьявление как таковое -этой процедурой програмист говорит компилятору область видимости массива глобальная или локальная.

2 задание размера через ArrayResize() - после этой процедуры массив фактически готов к работе.

3 Инициализация- если она не задана то массив остаётся таким как был(и хранит значения прошлых стартов), при создании массива он автоматом инициализируется 0.

 
grasn >>:

Спасибо, попробую, правда не могу оценить, что будет оптимальнее. С другой стороны, для маленького массива я так же не буду знать его размерность и к тому же потребуется в этой реализации дважды увеличивать массив, сначала маленький, а затем большой, в котором накапливаются расчетные значения. Но уже надо экспериментировать, спасибо за совет.

По своему опыту рекомендую обьявлять и использовать массивы непосредственно там где ими нужно пользоваться такие массивы по большей части получаються локальными те динамично используют память что лучше по сравнения со статичными массивами которые хочеш того или нет винда выносит их на файл подкачки и поэтому их работа становиться во много раз медленнее чем из оперативы, тем более если массивы маленькие то нет смысла статично для них резервировать много места. Компилятор же MQL-4 скомпанован так что вы не почувствуете разници между объявлением массива с явным указанием размера и отложенным.

 
Urain писал(а) >>

По своему опыту рекомендую обьявлять и использовать массивы непосредственно там где ими нужно пользоваться такие массивы по большей части получаються локальными те динамично используют память что лучше по сравнения со статичными массивами которые хочеш того или нет винда выносит их на файл подкачки и поэтому их работа становиться во много раз медленнее чем из оперативы, тем более если массивы маленькие то нет смысла статично для них резервировать много места.

Что-то я не понял... Почему локальный массив не может быть вытеснен в файл подкачки? Вообще вытеснение туда происходит при нехватке памяти; я уверен, что вытесняться и локальные и глобальные будут абсолютно одинаково. В чем разница?

 
lea >>:

Что-то я не понял... Почему локальный массив не может быть вытеснен в файл подкачки? Вообще вытеснение туда происходит при нехватке памяти; я уверен, что вытесняться и локальные и глобальные будут абсолютно одинаково. В чем разница?

Может но этого чаще всего не случается так как локальный массив создаётся и уничтожается на каждом тике то и шансы закрепиться у него на свопе минимальные.Статичный же имеет все шансы так как создаётся при вызове проги и выдавливается вновь созданными массивами на своп. Хотя если оперативы хватает с лихвой может этого и не произойти.

 
Urain >>:

1 Совсем не обязательно.

Обьявление массива без обьявления его размера разбивает процесс подготовки массива к работе на три части:

1 обьявление как таковое -этой процедурой програмист говорит компилятору область видимости массива глобальная или локальная.

2 задание размера через ArrayResize() - после этой процедуры массив фактически готов к работе.

3 Инициализация- если она не задана то массив остаётся таким как был(и хранит значения прошлых стартов), при создании массива он автоматом инициализируется 0.

Если вы через ArrayResize() зададите размер в init() то этот массив в start() не будет иметь никакого размера, те указывать размер нужно в функции где бедет использоваться массив, это же относиться при использовании массива в пользовательских функциях. Если массив передаётся по параметру то его размер указывается не в пользовательской функции а в start() (или в init() если функция вызывается инитом) те в вызываемой функции. Исключение составляют индикаторные массивы размер которым присваивается равный Bars при присвоении имени массива статуса индикаторный те в SetIndexBuffer(),и изменяется в соответствии с имменением Bars.

Так что уважаемый ваши пояснения не только бесполезны но и вредны тк отнимают у людей время на выяснение истины.

Urain, вы вводите людей в заблуждение. Массивы MQL, в том числе и локальные, обладают свойством персистентности - их размер и содержимое сохраняется между вызовами функций и тиками. Почитайте хелп. Глобальные массивы ведут себя точно также, с тем отличием, что у них глобальная область видимости. Массив, распределенный в функции init, прекрасно прочитается в start и где-бы то ни было еще. Я бы рекомендовал открыть новую ветку, если у кого-то есть вопросы по некоторым аспектам программирования на MQL. Здесь хотелось бы видеть более предметные разговоры по теме прогнозирования. ;-)

grasn, фильтруйте информацию с форума ;-). Если опишите задачку поподробнее (можно в личку), мы (я) прикинем, как это лучше реализовать.

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