Ерунда какая то с этим херстом. Добиться 0.5 не получилось (хотя давал на вход rnd()). Единицы тоже не получилось добиться, хотя подавал x(i)=i (ряд все время растет)
Urain>>: Долго преобразовывал чтоб ускорить расчёт, в результате получил вот такую упрощённую формулу для показателя Херста : логически вроде бы всё верно, хотя без логарифмов.
Это не упрощенная формула для показателя Херста. Вы заблуждаетесь. Способов расчета показателя Херста много и все они трудоемки. Вы какую упрощали? И ваша формула по ходу может быть меньше нуля, что совсем не кстати.
我只是在指标中的一个地方犯了一个错误。
加权系数并没有给出什么,只是千分之一的差别。
嗯,事实上,它的反弹,是的。
你试过第二个功能吗?
如果能看到图片就好了...不是指标的问题,而是结果线本身的问题。
你试过第二个功能吗?
我想看一些照片...不是指标的问题,而是结果线的问题。
我还没有试过第二个。
我不知道你想看什么照片。
我给你指示器,也许它能显示图片 :)
Ерунда какая то с этим херстом. Добиться 0.5 не получилось (хотя давал на вход rnd()). Единицы тоже не получилось добиться, хотя подавал x(i)=i (ряд все время растет)
Файл прилагаю, версия маткада 14
如果你不从1到10取N,而是至少取到3000,那么一切都会有效。
你的第二个版本的计算也是正确的--再次,输入更多的数据...
如果你不从1到10取N,而是至少取到3000,那么一切都会有效。
你的第二个版本的计算也是正确的--再次,输入更多的数据...
下一步是什么?钉子,与商数没有关系,还是我错过了什么?
下午好)我已经部分阅读了所有的页面,但不幸的是,我并不了解所有的算法。一个类似的问题已经在这里飞过了。据我所知,MQL4和C语言的语法大致相同,但结构不同,而且有更多的 "库 "有不同的统计功能。
我已经用C语言写了这个算法,所以这里有一点代码。
double Herst( double *S, int n)
{
double *h1 = (double *) malloc(sizeof(double ) * n),
*h2 = (double *) malloc(sizeof(double ) * n),
*h = (double *) malloc(sizeof(double ) * n),
*Hn = (double *) malloc(sizeof(double ) * n),
h_ = 0, Rn = 0, Sn = 0, RSn = 0。
h[0]=0,h[1]=0,Hn[0]=0,Hn[1]=0。
if( h == NULL || Hn == NULL || h1 == NULL || h2 == NULL )
{
printf("not enough memory!!\n")。
返回-1。
}
for( int i = 1; i < n; i++ ) h[i-1] = log( S[i] / S[i-1] ) 。
for(int i = 1; i < n; i++ ) Hn[i] = Hn[i-1] + h[i-1] 。
if( (n - 1) != 0) h_ = Hn[n - 1] / ( n - 1 ) 。
h2[0] = (h[0] - h_) * (h[0] - h_)
h1[0] = (h[0] - h_)。
for( int i = 1; i < n - 1; i++ )
{
h1[i] = h1[i-1] + (h[i] - h_)。
h2[i] = h2[i-1] + (h[i] - h_) * (h[i] - h_)。
}
qsort( (double *)h1, n-1, sizeof(T), Comp ) 。
Rn = h1[n - 2] - h1[0]。
if( (n - 1) != 0 ) Sn = h2[n-2] / ( n - 1 ) 。
if( (n - 1) == 0 ) Sn = h2[n-2];
RSn = Rn / Sn。
自由(h)。
free(hn)。
free(h1);
free(h2)。
返回RSn。
}
然后把阵列塞进阵列。
for( int i = n_min; i < n; i++ )
{
x1[i - n_min] = log( double( i * 0.5) )
y1[i - n_min] = log( Herst( S1, i ) 。
}
并使用ANC画出一条直线。
问题 - 我偶尔会遇到一个高于1的值,但非常少。我不明白这个错误是什么。我在简单的线条上检查了ANC ( y=ax+b, for a={0,0.5,1,2,3} and b = {-1,0,1,2} )
如果前3-5个样本值的标准差为0呢?所以RS等于无限大,只是不考虑这些点?
哦,最主要的是--我站在点的顺序上是对的吗(一开始是n_min,然后是相同的n_min+下一个值,等等),还是我应该把n的段分成一些相等的部分,然后为每个部分计数?
我试图自己弄清楚,但两周后我放弃了。该算法基于以下书籍--彼得斯的 "金融市场分形分析 "和希尔耶夫的 "金融数学基础"。
День добрый) Прочитал частично все страницы, но к сожалению не все алгоритмы понял.
请原谅我没有回答这个问题,但它可能会派上用场。
不过,有了一个测试案例。
严格按照彼得斯《金融市场的分形分析》。
Пардон, что не по вопросу ответ, но возможно пригодится.
С тестовым примером зато.
测试文件本身。H~0.72
,最后得到了这个简化的赫斯特指数公式:
这在逻辑上似乎是正确的,
,尽管没有对数。
Долго преобразовывал чтоб ускорить расчёт,
в результате получил вот такую упрощённую формулу для показателя Херста :
логически вроде бы всё верно,
хотя без логарифмов.
这并不是赫斯特指数的简化公式。你错了。
计算赫斯特数字的方法有很多,而且都是劳动密集型的。你简化了哪一项?
而你的公式可能小于零,这一点都没有帮助。
Это не упрощенная формула для показателя Херста. Вы заблуждаетесь.
Способов расчета показателя Херста много и все они трудоемки. Вы какую упрощали?
И ваша формула по ходу может быть меньше нуля, что совсем не кстати.
这不是关于绝对的数字,而是关于这个想法。
该公式显示了回归率(角度)与标准差的比率,我认为这符合赫斯特的精神。