Disa>>: понял. Я брал среднее геометрическое из High и Low. Сейчас посмотрю что будет на разнице. Я пока не могу решить что целесообразнее - брать код для MT4 и переделывать под Си или искать ошибки у себя ;) У меня данные это дневные бары(5ти минутки), всего их 78. Я точки стоил по значениям для 3,4...78и. - МТ4 моментально обсчитает 78 баров, даже до десятка тысяч считает быстро. А вот для каждого бара расчитывать Херста на многотысячной выборке - это уже долго, если баров тоже тыщи. Есть еще вроде вариант постоянного деления отрезка пополам. - не совсем представляю о чем вы, но если длина выборки - степень двойки, то да, работает. В любом случае предпочтительнее иметь выборку с длиной имеющей как можно больше делителей. Хм, а точки для которых разница Close[i+1]-Close[i] = 0 и среднеквадратичное отклонение 0, просто не рассматриваются при построении прямой? - (Close[i+1]-Close[i]) - это входные данные, прямая строится не по ним, а по коэффициентам, которые получаются из этих данных при R/S анализе. Еще есть мнение что подсчета коэффициента Херста нужно использовать не обычный МНК, а т.н. RANSAC( http://en.wikipedia.org/wiki/RANSAC ), т.к. при обычном МНК на коэффициент наклона прямой могут влиять точки, "выбивающиеся из общего числа", т.е. наиболее удаленные от общей массы. - Не представляю на основании какой модели, можно решить, что некоторые возвраты подлежат выбросу из выборки?
Disa>>: В общем давайте я расскажу свой алгоритм обсчета словами, а вы мне скажете пж где ошибка, а то мы так долго друг друга чуствую не поймем.
функция RS на вход принимает массив из Close[i]-Close[i-1] и число элементов массива 1. S[i-1] = Close[i]-Close[i-1] Для всех i от 0 до N 2. h[i] = log(S[i]/S[i-1]) - не стоит так делать, т.к. п.1 и п.2 в принципе одно и тоже в смысле подготовки данных для алгоритма. Действительно, вместо возвратов на вход можно подавать log(Close[i]/Close[i-1]), но подавать на вход логарифм отношения возвратов - это перебор, по-моему. Достаточно подавать что-нибудь одно - либо разницу цен, либо логарифм их отношений. 3. Hn = Сумма h[i] h_cp = ср.ариф. Hn 4. R = max(h[i] - h_cp) - min( h[i] - h_cp ) S = 1/n * (h[i] - h_cp) RS = R / S 5. Далее стою м-во точек со значением log RS(i) и log i для i от n_min до некоторого N и МНК стоют прямую
в п.3-5 для начала не вижу оператора или описания, что вся выборка делится на N кусков размером M, что для каждого этого куска считается rs = (максимум наращиваемой суммы отклонений от среднего - минимум наращиваемой суммы отклонений от среднего) / сумму квадратов отклонений от среднего, и все они, эти rs, складываются, а потом делятся на N. Теперь Log(RS) и log(N) - это одна точка для МНК, которых надо насобирать побольше, подбирая разные N и М так, чтобы N*M=длина выборки всегда. На мой взгляд, запись п.4 полностью неверна.
Ваш индикатор zHursttExponent.mq4 на вашем же тестовом файле brown72.txt выдает 0.1647. К чему бы это ? Насколько я понял, этот индикатор считает показатель Херста на каждом тике для последних 2520 баров и выдает значение на печать. Так ? А что тогда означают 4 буфера этого индикатора и зачем они нужны в отдельном окне ? И еще один вопрос.
Disa>>: Подниму ка тему) Спасибо Vita - написал win32api под c++ и все пашет как надо. Вопрос к людям которые часто применяли этот метод - есть какие-нибудь оценки погрешностей от числа входящих данных, дисперсии, корреляции и мб других стат.величин. Как я понял вообще смысла особого нет считать коэффициент для 78 величин - т.е для однодневного бара? Так же по прежнему не понимаю что делать если какие-то величины равны нулю. Ну например если на вход подаю разность цен - понятное дело что разность за 5ть минут мб меньше или равны 0, но log тогда не берется. У меня есть идея брать модуль величины в случае если она отрицательна(т.е абсолютную разницу) а в случае 0 не заносить это значение в ряд h.
这里有一个变体,其中的错误被计算在内。不幸的是,我找不到我在哪里偷了这个奇迹的C源,但它声称是由Feder E. Fractals计数。对他来说,同一文件的测试H=0.6807。看起来还不错。
还有一个选项是将该段永久地分成两半。
Hm,而Close[i+1]-Close[i]=0,标准差为0的点,在画直线时根本不考虑?
还有一种观点认为,应该使用所谓的RANSAC( http://en.wikipedia.org/wiki/RANSAC )而不是普通的ISC来计算Hurst系数,因为 "总数之外 "的点,即离总质量最远的点,可能会影响普通ISC中直线的斜率系数。
понял. Я брал среднее геометрическое из High и Low. Сейчас посмотрю что будет на разнице. Я пока не могу решить что целесообразнее - брать код для MT4 и переделывать под Си или искать ошибки у себя ;) У меня данные это дневные бары(5ти минутки), всего их 78. Я точки стоил по значениям для 3,4...78и. - МТ4 моментально обсчитает 78 баров, даже до десятка тысяч считает быстро. А вот для каждого бара расчитывать Херста на многотысячной выборке - это уже долго, если баров тоже тыщи.
Есть еще вроде вариант постоянного деления отрезка пополам. - не совсем представляю о чем вы, но если длина выборки - степень двойки, то да, работает. В любом случае предпочтительнее иметь выборку с длиной имеющей как можно больше делителей.
Хм, а точки для которых разница Close[i+1]-Close[i] = 0 и среднеквадратичное отклонение 0, просто не рассматриваются при построении прямой? - (Close[i+1]-Close[i]) - это входные данные, прямая строится не по ним, а по коэффициентам, которые получаются из этих данных при R/S анализе.
Еще есть мнение что подсчета коэффициента Херста нужно использовать не обычный МНК, а т.н. RANSAC( http://en.wikipedia.org/wiki/RANSAC ), т.к. при обычном МНК на коэффициент наклона прямой могут влиять точки, "выбивающиеся из общего числа", т.е. наиболее удаленные от общей массы. - Не представляю на основании какой модели, можно решить, что некоторые возвраты подлежат выбросу из выборки?
(Close[i+1]-Close[i]) = 0 => log(d[i]/d[i-1]) = INF - 我不明白该如何处理这个。 RS=R/S--当S=0时如何计算,假设R也=0? 然后又是log(R)=INF,我又不明白该怎么做。好的。这里有一个简单的例子--什么是系数H
,如果(Close[i+1]-Close[i])=const,对于给定区间上的所有i,什么是系数H?
我不知道在哪个模型的基础上,可以决定将一些回报从样本中舍弃?- 例如,如果股票数据流中的几个数值有错误(54.5而不是14.4) ,那么
函数RS的输入是Close[i]-Close[i-1]的数组和数组的元素 数量
。
1.S[i-1] = Close[i]-Close[i-1] 对于从0到N的所有i
2. h[i] = log(S[i]/S[i-1])
3. hn = h[i]之和 h_cp = arith.Hn
4. R = max(h[i] - h_cp) - min( h[i] - h_cp ) S = 1/n * (h[i] - h_cp) RS = R / S
5.然后我站在m-n个点上,在i从n_min到某个N的情况下,对数RS(i)和对数i的值,MNCs站在一条直线上。
В общем давайте я расскажу свой алгоритм обсчета словами, а вы мне скажете пж где ошибка, а то мы так долго друг друга чуствую не поймем.
функция RS на вход принимает массив из Close[i]-Close[i-1] и число элементов массива
1. S[i-1] = Close[i]-Close[i-1] Для всех i от 0 до N
2. h[i] = log(S[i]/S[i-1]) - не стоит так делать, т.к. п.1 и п.2 в принципе одно и тоже в смысле подготовки данных для алгоритма. Действительно, вместо возвратов на вход можно подавать log(Close[i]/Close[i-1]), но подавать на вход логарифм отношения возвратов - это перебор, по-моему. Достаточно подавать что-нибудь одно - либо разницу цен, либо логарифм их отношений.
3. Hn = Сумма h[i] h_cp = ср.ариф. Hn
4. R = max(h[i] - h_cp) - min( h[i] - h_cp ) S = 1/n * (h[i] - h_cp) RS = R / S
5. Далее стою м-во точек со значением log RS(i) и log i для i от n_min до некоторого N и МНК стоют прямую
в п.3-5 для начала не вижу оператора или описания, что вся выборка делится на N кусков размером M, что для каждого этого куска считается rs = (максимум наращиваемой суммы отклонений от среднего - минимум наращиваемой суммы отклонений от среднего) / сумму квадратов отклонений от среднего, и все они, эти rs, складываются, а потом делятся на N. Теперь Log(RS) и log(N) - это одна точка для МНК, которых надо насобирать побольше, подбирая разные N и М так, чтобы N*M=длина выборки всегда. На мой взгляд, запись п.4 полностью неверна.
按照我的理解,对78个值计算系数是没有意义的--也就是对一天的酒吧?我也仍然不明白,如果一些数值等于零,该怎么办?例如,如果我输入价格差异,很明显,5分钟内的差异可能小于或等于0,但此时没有采取对数。我有一个想法,在数值为负数的情况下取其模数(即绝对差值),在数值为0的情况下不将此数值输入系列h。
测试文件本身。H~0.72
你的指标zHursttExponent.mq4 在你的测试文件brown72.txt 上显示为0.1647。这是什么情况?
据我所知,这个指标是计算过去2520个柱子的每个刻度的Hurst值并打印出来的。是这样吗?
那么,这个指标的4个仓是什么意思,在一个单独的窗口中需要它们做什么?
还有一个问题。
for(int i=0; i<limit; i++)
{
}
//---- done
在指标的代码中,这块的含义是什么?
Ваш индикатор zHursttExponent.mq4 на вашем же тестовом файле brown72.txt выдает 0.1647. К чему бы это ?
Насколько я понял, этот индикатор считает показатель Херста на каждом тике для последних 2520 баров и выдает значение на печать. Так ?
А что тогда означают 4 буфера этого индикатора и зачем они нужны в отдельном окне ?
И еще один вопрос.
for(int i=0; i<limit; i++)
{
}
//---- done
Какой смысл имеет этот кусок в коде индикатора ?
1.不能重复你的结果=0.1647。我的是这样的(=0.7241)。
2) 是的,该指标考虑了过去2520个柱状图中每个刻度的Hurst指数,并打印出该值和绘制r/s点(白线),在此基础上绘制近似的直线(红线),其斜率是所寻求的指数--为了清晰,但对我来说--为了对算法正确性进行定性的视觉估计。当cRSGraphic = true时,所有这些都是真的,否则该指标考虑的是过去250个柱状的Hurst指数。
3. 4个缓冲区是一个明显的冗余,是调试和测试时留下的遗迹。
4.空循环--与第3项的问题相同。
Подниму ка тему) Спасибо Vita - написал win32api под c++ и все пашет как надо. Вопрос к людям которые часто применяли этот метод - есть какие-нибудь оценки погрешностей от числа входящих данных, дисперсии, корреляции и мб других стат.величин.
Как я понял вообще смысла особого нет считать коэффициент для 78 величин - т.е для однодневного бара? Так же по прежнему не понимаю что делать если какие-то величины равны нулю. Ну например если на вход подаю разность цен - понятное дело что разность за 5ть минут мб меньше или равны 0, но log тогда не берется. У меня есть идея брать модуль величины в случае если она отрицательна(т.е абсолютную разницу) а в случае 0 не заносить это значение в ряд h.
这里有一个变体,其中的错误被计算在内。不幸的是,我找不到我在哪里偷了这个奇迹的C源,但它声称是由Feder E. Fractals计数。对他来说,同一文件的测试H=0.6807。看起来还不错。
对于78种价值观来说,这是最难的。很多工作都是关于如何在半百个观测值上估计Hurst。即使不了解计算方法,你在不同的作者那里得到的结果也很不同。这没有什么好奇怪的。有多少种算法,就有多少种指标 :)。哦,还有一个问题--在考虑到误差的1000个观测值的附件版本中,我们不能对价格说什么--它目前是否一致,因为0.5正好位于误差通道之间(cRSGraphic=false时的红线)。
输入应该是价格差异或价格比率的对数。
1.不能重复你的结果=0.1647。我的是这样的(=0.7241)。
你已经附上了brown72.txt文件。然而,你的指标在文件brown72.csv上测试。由于缺乏其他指示,我只是把它重新命名,并把它放在 \experts\files 文件夹中。结果是这样的。
![](https://c.mql5.com/mql4/forum/2010/04/hurst_1_1.jpg)
![](https://c.mql5.com/mql4/forum/2010/04/hurst_2_1.jpg)
关于H1。
关于蜱虫。
你的文件包含1024个值。以下是其中的前4个。
45.47422
42.55601
46.5188
41.61502