测试实时预测系统 - 页 19

 
grasn >> :

稍后,我将能够对预测实施的概率作出估计。问题--你说的是什么相关性?

我的意思是允许你以某种积分来评估预测系统的质量的东西。这样你就可以采取两个系统,用分数评估每一个系统,比较分数并说 "这个系统比那个系统好XX"。

总的来说,思考如何能更准确地做出这样的估计是很有意思的......

相关系数是我首先想到的东西。像这样。

我们回到历史上的几年。

我们在历史上每运行一个小时,系统就会建立一个预测,并计算其与历史的相关性

然后,平均相关度就是系统的得分。

你是根据什么技术来估计预测实现的概率的?


 

我一直想尝试一个好奇的参数--每个时间段的数学期望值,但一直没有足够的时间。计算方法很简单,它是价格水平与相应的出现频率的乘积之和。该概率取自系统的初始概率状态。


我根本没有测试过这个参数,所以我不能说什么。但只是为了运动的兴趣:15分钟,欧元兑美元,从现在开始一天的预测

国家的矢量(有点不合时宜)。


对时间部分的期望(1个样本-15分钟)。




可能的水平(或不是很可能)。



 

Lord_Shadows

Переименовали ветку. Теперь уже не игра, а тестирование, и кончились прогнозы.

预测还没有开始,从这个意义上说,我们只是在热身 :o))) 加入 :o)


shtoba

我指的是允许你用一些分数来评估预测系统的质量的东西。一般来说,思考如何进行这样的估计是很有意思的。

长期以来,人们为冠军赛发明了这样的评级--事实上,它是所获得的积分数。我可以补充说--没有应用任何MM--只有模型的作用。最主要的是,这些积分是用来做什么的?这有什么意义呢?

如果我们去看几年的历史,我们每小时运行一次系统,它建立预测并计算它与历史的关联性。然后,相关性的平均值就是一种系统得分。

市场从不重复,如果你按3个时期计算预测的相关性,你会发现有很多 "类似 "的情况。但是系数不会说什么。

你又用什么方法来估计预测实施的概率?

在两个方面。

(1) 在每次倒计时时进行预测,并对其实现情况进行估计。然后计算频率,如果结果是,则进行更复杂的分析,将频率与当前情况与预测联系起来,独立于模型之外

(2) 第二种方法,更加理论化,位于模型本身。

 

快乐的声音日!!!!祝我们的胜利日快乐!!!。:о)))

只是稍稍错过了1.3331的水平,其他的都很好。现在欧元兑美元的情况很奇怪。下面是信息熵 "地图 "的计算。

如果我们把最大熵的原则放在心上,我们应该预期回调到大约1.3445的水平,但另一方面,动态模型显示有基本的可能性上升到1.3756(我提醒,我认为这个价格水平是一个统计水平,价格将围绕它 "集中")。因此,最合理的是不要在周一开始交易,而是等待大约10-20次读数,每次15分钟 :o)


同事们,你们怎么看?谁有周一的计划/目标?


问题:

(1)我已经开始学习MQL,并为MathCAD做了一个非常酷的:o) "取数据 "脚本。

extern int diapason = 7000;


int start()
{
double process[];

GetHistoryProcess(process, diapason);
CreateFlowData(process);

return(0);
}


void GetHistoryProcess(double signal[], int window)
{
int n;
int i;

double y[];

ArrayResize(y, window);
ArrayInitialize(y, 0.0);

ArrayResize(signal, window);
ArrayInitialize(signal, 0.0);

i=0;

for(n=0; n<=window-1; n++)
{
y[i]=(High[window-n-1]+Low[window-n-1])/2.0;
i=i+1;
}

ArrayCopy(signal, y, 0, 0, WHOLE_ARRAY);

return(0);
}


void CreateFlowData(double process[])
{
int i;
int N;
int Handle;

string FILE="data.csv";

N=ArraySize(process);
Handle=FileOpen(FILE, FILE_CSV|FILE_WRITE,";");

if(Handle<0)
{
if(GetLastError()==4103)
{
Alert("Нет файла с именем ",FILE);
}
else
{
Alert("Ошибка при открытии файла ",FILE);
}

return;
}

for(i=0; i<=N-1; i++)
{
FileWrite(Handle, process[i]);
}

FileClose(Handle);

return(0);
}


起初我不明白为什么预测完全没有实现,后来我想明白了--我忘记了 "翻转 "数据 :o)。我输入extern 是想在初始化时有一个接口,我可以在那里输入想要的历史范围(它也会改变)而不需要编译。所以没有接口,它对脚本不起作用?以一些专家为例,它在那里工作。


(2) 我不知道如何将预测的时间序列 "写到未来"(例如)。在计算的时候,在处理和分析数据的时候,时间移动了,比如说,几个数?粗略的说,我想从某个历史日期(或零)开始向未来加载100个样本,也就是说,有些数据必须在当前条形图之前首先被加载到历史中,有些则更远。它不起作用。

 
grasn >> :

起初我不明白为什么预测完全没有实现,但后来我想明白了--我忘了 "翻转 "数据 :o)。输入了extern,以为在初始化过程中会有一个接口,我可以在那里输入所需的历史范围(它也会改变),而不用编译。所以没有接口,它对脚本不起作用?以一些专家为例,它在那里工作。

它对脚本不起作用,只对指标和专家顾问起作用。如果你想管理外部变量,请将你的导出作为一个指标


(2) 我想不明白,(例如)我应该如何 "把预测的时间序列写到未来"。在计算的时候,在处理和分析数据的时候,时间移动了,比如说,几个数?粗略的说,我想从某个历史日期(或零)开始向未来加载100个样本,也就是说,有些数据必须在当前条形图之前首先被加载到历史中,有些则更远。这似乎并不奏效。

在MT中没有未来。所有系列都放在数组中,反之亦然。索引0对应的是当前(或最近的)时间,索引1对应的是向后的时间,等等。那么对于未来,我们需要索引-1,-2,等等,但在mql中没有这样的负数索引。

但也有其他的猫腻。请看指标的SetIndexShift函数(设置指标线相对于图表开头的移动)。这只是一种视觉上的转变。指数和以前一样,仍然是这样。


还有SetIndexDrawBegin(设置从数据开始的条形序号,指示线的绘制必须从这个序号开始),它可以用来在左边切割指定条形的绘制。

 

为了使一切在时间上同步--不要用指数来标记你的系列值,而是用时间来标记,并通过Time[bar]与MT图表同步。

但有一个问题--图形上的时间轴可能是不均匀的。如果在图表上的初始系列中没有条形图(与服务器没有连接或由于其他原因有一个洞)--那么条形图仍将以连续方式绘制,时间将跳过这些间隙。这对 "过去 "来说是很自然的。

 
grasn >> :

...输入了extern,以为在初始化时,会有一个界面,我可以在那里输入所需的历史范围(它也会改变),而不需要编译。所以没有接口,它对脚本不起作用?以一些专家为例,它的作用有:....

在脚本中插入#property show_inputs,你的extern就会在脚本运行时出现。

 

Shtoba,granit77

同事们,感谢你们的帮助。:о)我对这些指标不太满意 :o)。我不知道如何使用它们。对于交易来说,根据市场模型的概念,它们是当地的地位水平--价格 "集中 "在它们附近。 在图片上,它们是红色的(更准确地说,我还没有计算它们,我正在准备一个星盘:o))。

理论上,它们可以在MT中显示为线条(例如 "趋势",类型似乎是OBJ_TREND)。但一个非常简单的问题出现了,如何重新计算时间计数(0, 1, 2, ....(每个15分钟))到 "未来 "时间。到目前为止,我已经找到了以下方法:我们把秒数TimeCurrent( ),加上预测的秒数,这个数字应该以某种方式转换为时间。我怎么做呢?

PS:但我们在这个熵中仍有一些东西。价格还没有达到水平,但已经开始移动,如果我们结束交易,我们仍然会在加:o)

 

 
grasn >> :
...只有一个非常简单的问题,如何重新计算时间计数(0, 1, 2, ....(每个15分钟))到 "未来 "时间...
FutureTime=Time[0]+N*Period()*60;
где N - номер бара в будущее от нулевого.