От теории к практике - страница 104

 
Максим Дмитриев:

зачем вообще тики считывать через экспоненциальные промежутки времени? это же какой-то... бред. ))

Хм... А вот подумай, Максим! Построй гистограмму временных промежутков между тиками, поизучай ее, прочитай что такое "простейший поток", узнай, насколько полученная тобой гистограмма отличается от экспоненциальной и почему и т.д. и т.п.
 
Alexander_K2:

ПСЧ в MQL могут генерироваться равномерно от 0 до 1?

Если - да, то берешь натуральный логарифм от него на каждом цикле выполнения программы, умножаешь на -1. Это стандартный генератор экспоненциальных СЧ. Вот выдало у тебя 0.12, значит ты считываешь тик через 120 мс, следующее значение - 1.011, значит через 1011 мс, и т.д. и т.п.

Я прибавляю 1 и беру целую часть, чтобы работать в масштабе секунд, а не миллисекунд.

PS Целая часть, конечно, а не модуль - исправил.


То есть из всего диапазона от 0 до 1 ты работаешь только на участке стремящемся к нулю, если быть точным то первая треть,

две трети вырождаются в ту самую прибавленную единицу (ну если ты берёшь только целую часть, а 2/3 шкалы, больших 0,33333 по формуле будут меньше одного).

в итого имеем ряд  таймингов 1111111111111111111111111111111111111121111111111111111141111111111111111111111111113111111111111111111111111111111116 как то так?

ЗЫ Всё верно?

 

Раз дискретность не ниже 1 сек, то запускаешь таймер с 1 секундой.

далее уже в самой функции вызова ставишь условие обрабатывать данный тайминг как тик или игнорировать.

что бы это сделать в секции обработки запонимаешь тайминг в статик переменную, либо в зарание объявленную глобальную переменную (не путай с глобальной переменной терминала, это о другом). Ну вот когда попадаешь в условие то берёшь разницу между текущеим временем и временем записи прошлого тика, это разницу сравниваешь со значением расчитанным на прошлом проходе для нового тайминга (по формуле что ты объяснил), если время вышло или равно, заходим в секцию нового тика, делаем расчёт нового тайминга, записываем новое время и получаем данные тика, отправляем их в историю.

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

 
Alexander_K2:

ПСЧ в MQL могут генерироваться равномерно от 0 до 1?

Если - да, то берешь натуральный логарифм от него на каждом цикле выполнения программы, умножаешь на -1. Это стандартный генератор экспоненциальных СЧ. Вот выдало у тебя 0.12, значит ты считываешь тик через 120 мс, следующее значение - 1.011, значит через 1011 мс, и т.д. и т.п.

Я прибавляю 1 и беру целую часть, чтобы работать в масштабе секунд, а не миллисекунд.

PS Целая часть, конечно, а не модуль - исправил.

PPS Если нового тика на текущем шаге нет - то ничего не считываешь!!!!!!!!!!!!!!!!


чтобы получить числа от 0,00 до 1,00, это нам нужно гпсч эмкюэля разделить на 32768, и потом округлить до второго знака.

 
Nikolay Demko:

То есть из всего диапазона от 0 до 1 ты работаешь только на участке стремящемся к нулю, если быть точным то первая треть,

две трети вырождаются в ту самую прибавленную единицу (ну если ты берёшь только целую часть, а 2/3 шкалы, больших 0,33333 по формуле будут меньше одного).

в итого имеем ряд  таймингов 1111111111111111111111111111111111111121111111111111111141111111111111111111111111113111111111111111111111111111111116 как то так?

ЗЫ Всё верно?

Не, немного не так. У меня же данные по DDE идут с дискретностью 1 сек., так что никаких вырождений нетути :)))))))))
 
Nikolay Demko:

Раз дискретность не ниже 1 сек, то запускаешь таймер с 1 секундой.

далее уже в самой функции вызова ставишь условие обрабатывать данный тайминг как тик или игнорировать.

что бы это сделать в секции обработки запонимаешь тайминг в статик переменную, либо в зарание объявленную глобальную переменную (не путай с глобальной переменной терминала, это о другом). Ну вот когда попадаешь в условие то берёшь разницу между текущеим временем и временем записи прошлого тика, это разницу сравниваешь со значением расчитанным на прошлом проходе для нового тайминга (по формуле что ты объяснил), если время вышло или равно, заходим в секцию нового тика, делаем расчёт нового тайминга, записываем новое время и получаем данные тика, отправляем их в историю.

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

Сложновато не правда ли? А в Виссиме ОЧЕНЬ легко. :)))))))))))))))))
 

Alexander_K2:

1. И сразу же ошиблись. У нас приращения зависимы друг от друга и еще как! Вот не знаю почему - но, я в первый же день своего анализа понял, что есть зависимость между двумя последовательными котировками, получаем вектор из текущей и предыдущей цены. 2 степени свободы. В приращениях нет и не может быть ничего другого как t2-распределения Стьюдента! Но, черт возьми, оно какое-то "нечистое". По сути на приращениях мы имеет функцию плотности вероятности = произведению t2-распределения и некоего экспоненциального распределения с достаточно большим лямбда. Что означает эта экспоненциальная составляющая - пока не могу понять. Работаю.

2. Распределения Коши нет и никогда не было.

3. 4. 5. У нас именно немарковский процесс. И от этого надо отталкиваться. И уравнение Фоккера-Планка, конечно, полностью не описывают поведение функции плотности вероятности. Должно в нем присутствовать интегральное слагаемое. В итоге получаем интегро-дифференциальное уравнение.

1) Нет, не ошибся. Я не утверждаю, что приращения цен независимы - это скорее всего неверно. Я лишь утверждаю, что если вы хотите по эмпирическому распределению, построенному по выборке, судить об их точном распределении, то вы должны сделать некоторые предположения. В матстате это обычно - независимость и одинаковое распределение. Из этого предположения, вследствие теоремы Леви-Хинчина, мы и получаем, что распределение должно быть из бесконечно делимых, а распределение Стьюдента относится к ним только когда совпадает с Коши. При наличии зависимости и/или неодинаковой распределенности эмпирическое распределение недостаточно точно характеризует распределение доходностей. Следствием этого является, в частности, то что распределение построенное на истории котировок оказывается мало полезным в будущем. То есть, коротко говоря, вы отрицаете марковость, но продолжаете неявно ею пользоваться.

2) Коши, конечно же, есть и иногда, наряду с другими бесконечно-делимыми распределениями, используется для моделирования цен (хотя, для форекса оно вряд ли подходит)

3) Немарковские процессы чрезвычайно широкий класс. Необходимо как-то его сузить - вы для этого рассматриваете некий класс процессов обобщающий диффузию. Необходимо как-то показать, что ваше обобщенное уравнение имеет решение - здесь могут быть проблемы, поскольку вряд ли можно будет использовать аппарат СДУ. Но я даже не понял того, какое у вас время - дискретное или непрерывное. Уравнение Фоккера-Планка определяется для непрерывного, а процесс скользящего среднего - для дискретного.

 
Alexander_K2:
Сложновато не правда ли? А в Виссиме ОЧЕНЬ легко. :)))))))))))))))))

112124113121222123221621222122611311321321223213111112211321232133121233121231322112131215113212223211231312211231161111114222211121221311321134224323

по твоей формуле у меня получился вот такой ряд таймингов


 
Aleksey Nikolayev:

1) Нет, не ошибся. Я не утверждаю, что приращения цен независимы - это скорее всего неверно. Я лишь утверждаю, что если вы хотите по эмпирическому распределению, построенному по выборке, судить об их точном распределении, то вы должны сделать некоторые предположения. В матстате это обычно - независимость и одинаковое распределение. Из этого предположения, вследствие теоремы Леви-Хинчина, мы и получаем, что распределение должно быть из бесконечно делимых, а распределение Стьюдента относится к ним только когда совпадает с Коши. При наличии зависимости и/или неодинаковой распределенности эмпирическое распределение недостаточно точно характеризует распределение доходностей. Следствием этого является, в частности, то что распределение построенное на истории котировок оказывается мало полезным в будущем. То есть, коротко говоря, вы отрицаете марковость, но продолжаете неявно ею пользоваться.

2) Коши, конечно же, есть и иногда, наряду с другими бесконечно-делимыми распределениями, используется для моделирования цен (хотя, для форекса оно вряд ли подходит)

3) Немарковские процессы чрезвычайно широкий класс. Необходимо как-то его сузить - вы для этого рассматриваете некий класс процессов обобщающий диффузию. Необходимо как-то показать, что ваше обобщенное уравнение имеет решение - здесь могут быть проблемы, поскольку вряд ли можно будет использовать аппарат СДУ. Но я даже не понял того, какое у вас время - дискретное или непрерывное. Уравнение Фоккера-Планка определяется для непрерывного, а процесс скользящего среднего - для дискретного.


!!!!!!!!!!!!!

1. А я утверждаю, что полезно. Если взять приращения по одной и той же валютной паре при огромной выборке (не менее 1.000.000 приращений), для разных периодов времени, то Вы увидите, что параметры распределения приращений не меняются от слова "совсем".

2. Распределение Коши как вид есть, но на Форексе его нет.

3. !!!!!!!!!!!!!! Да, Вы правы - вот это тема однозначно для докторской диссертации. Смотрите, само уравнение, безусловно для непрерывного времени, но, численно то мы его решаем конечно-разностными методами с дискретным временем. Нет?

PS Речь ведется о приращениях между тиковыми котировками, а не между ценами OPEN или CLOSE или т.п.

 
Nikolay Demko:

112124113121222123221621222122611311321321223213111112211321232133121233121231322112131215113212223211231312211231161111114222211121221311321134224323

по твоей формуле у меня получился вот такой ряд таймингов


Очень похоже.