Índice Hearst - página 20

 
Lo tengo. Tomaba la media geométrica de los máximos y mínimos. Ahora veré cuál será la diferencia. Todavía no puedo decidir qué es más razonable: tomar el código de MT4 y modificarlo para C o buscar errores en mi propio código ;) Mis datos son barras diarias (5 min.), en total 78. He fijado los puntos por valores para 3,4...78.
También existe la opción de dividir permanentemente el segmento por la mitad.
Hm, ¿y los puntos para los que la diferencia Cerrar[i+1]-Cerrar[i] = 0 y la desviación estándar 0, simplemente no se consideran al construir una línea recta?
También existe la opinión de que se debería utilizar el llamado RANSAC( http://en.wikipedia.org/wiki/RANSAC ) en lugar del habitual ISC para calcular el coeficiente de Hurst porque los puntos "fuera del número total", es decir, los más alejados de la masa total, pueden influir en el coeficiente de pendiente de la recta con el habitual ISC.
 
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 ), т.к. при обычном МНК на коэффициент наклона прямой могут влиять точки, "выбивающиеся из общего числа", т.е. наиболее удаленные от общей массы. - Не представляю на основании какой модели, можно решить, что некоторые возвраты подлежат выбросу из выборки?
 

(Close[i+1]-Close[i]) = 0 => log(d[i]/d[i-1]) = INF - No entiendo qué hacer con esto. RS = R/S - ¿y cómo calcular cuando S = 0, suponiendo que R = 0 también? entonces de nuevo log(R) = INF y de nuevo no entiendo qué hacer. Bien. He aquí un ejemplo sencillo: ¿cuál es el coeficiente H
y si (Close[i+1]-Close[i]) = const para todo i en un intervalo dado?
No tengo ni idea de en base a qué modelo se puede decidir que algunos rendimientos sean descartados de la muestra? -Si, por ejemplo, hubiera un error en varios valores del flujo de datos de las existencias (54,5 en lugar de 14,4)
 
En general, déjeme decirle mi algoritmo en palabras, y usted me dice dónde está el error, de lo contrario no nos entenderemos.

la función RS toma como entrada un array de Close[i]-Close[i-1] y el número de elementos del array

1. S[i-1] = Cierre[i]-Cierre[i-1] Para todo i de 0 a N

2. h[i] = log(S[i]/S[i-1])

3. hn = Suma de 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
. Entonces, me sitúo en m-n puntos con valor de log RS(i) y log i para i desde n_min hasta algún N y los MNCs se sitúan en una línea recta
 
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 полностью неверна.
 
Gracias a Vita - escribí win32api para c++ y todo funciona correctamente. Pregunta a las personas que suelen utilizar este método: ¿hay alguna estimación de los errores a partir del número de datos de entrada, la varianza, la correlación y tal vez otros valores estadísticos.
Según tengo entendido, no tiene sentido calcular el coeficiente para 78 valores, es decir, para la barra de un día. Tampoco entiendo qué hacer si algunos valores son iguales a cero. Por ejemplo, si introduzco la diferencia de precios, está claro que la diferencia en 5 minutos puede ser menor o igual a 0, pero entonces no se toma el registro. Tengo la idea de tomar el módulo del valor en caso de que sea negativo (es decir, la diferencia absoluta) y en caso de 0 no introducir este valor en la serie h.
 
Vita писал(а) >>

El propio archivo de prueba. H~0.72


Su indicador zHursttExponent.mq4 muestra 0.1647 en su archivo de prueba brown72.txt. ¿De qué se trata?
Por lo que entendí, este indicador calcula el valor Hurst para cada tick de las últimas 2520 barras y lo imprime. ¿Es así?
¿Qué significan entonces las 4 franjas de este indicador y para qué se necesitan en una ventana separada?
Y una pregunta más.

//---- main loop
for(int i=0; i<limit; i++)
{
}

//---- done

¿Cuál es el significado de esta pieza en el código del indicador?
 
Yurixx >>:


Ваш индикатор zHursttExponent.mq4 на вашем же тестовом файле brown72.txt выдает 0.1647. К чему бы это ?
Насколько я понял, этот индикатор считает показатель Херста на каждом тике для последних 2520 баров и выдает значение на печать. Так ?
А что тогда означают 4 буфера этого индикатора и зачем они нужны в отдельном окне ?
И еще один вопрос.

//---- main loop
for(int i=0; i<limit; i++)
{
}

//---- done

Какой смысл имеет этот кусок в коде индикатора ?

1. No se puede repetir su resultado = 0,1647. El mío es así (=0,7241):



2) Sí, este indicador considera el índice de Hurst en cada tick de las últimas 2520 barras e imprime el valor y dibuja los puntos r/s (línea blanca), sobre los que se dibuja la línea recta de aproximación (línea roja), cuya pendiente es el índice buscado - por claridad, pero para mí - para una estimación visual cualitativa de la corrección del algoritmo. Todo esto es cierto cuando cRSGraphic = true, de lo contrario el indicador considera el índice Hurst de las últimas 250 barras.

3. 4 buffers es una aparente redundancia, una reliquia de la época de la depuración y las pruebas.
4. Bucle vacío - el mismo problema que en el punto 3.

 
Disa >>:
Подниму ка тему) Спасибо Vita - написал win32api под c++ и все пашет как надо. Вопрос к людям которые часто применяли этот метод - есть какие-нибудь оценки погрешностей от числа входящих данных, дисперсии, корреляции и мб других стат.величин.
Как я понял вообще смысла особого нет считать коэффициент для 78 величин - т.е для однодневного бара? Так же по прежнему не понимаю что делать если какие-то величины равны нулю. Ну например если на вход подаю разность цен - понятное дело что разность за 5ть минут мб меньше или равны 0, но log тогда не берется. У меня есть идея брать модуль величины в случае если она отрицательна(т.е абсолютную разницу) а в случае 0 не заносить это значение в ряд h.

Aquí hay una variante en la que se cuenta el error. Desgraciadamente, no encuentro donde robé la fuente C de esta maravilla, pero dice contar por Feder E. Fractales. Para él Prueba H=0,6807 para el mismo archivo. Parece que no está mal.

Para 78 valores es lo más difícil. Se dedica mucho trabajo a cómo estimar Hurst en medio centenar de observaciones. Incluso sin entender los cálculos, se obtienen resultados muy diferentes de un autor a otro. No hay nada sorprendente en ello. Tantos algoritmos como indicadores :). Ah, y otro problema - en la versión adjunta sobre 1000 observaciones con el error tomado en cuenta no podemos decir nada sobre el precio - es consistente o no en este momento, porque 0,5 se encuentra justo entre el canal de error (líneas rojas en cRSGraphic=false).

La entrada debe ser la diferencia de precios o el logaritmo de la relación de precios.

Archivos adjuntos:
 
Vita писал(а) >>

1. No se puede repetir su resultado = 0,1647. El mío es así (=0,7241):

Ha adjuntado el archivo brown72.txt. Sin embargo, su indicador hace pruebas en el archivo brown72.csv. A falta de otras instrucciones me limité a renombrarlo y ponerlo en la carpeta \experts\files. Aquí está el resultado:
En H1:


Sobre las garrapatas:


Su archivo contiene 1024 valores. Aquí están los 4 primeros:
45.47422
42.55601
46.5188
41.61502