Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
总结了海量数据,如何用R来处理?_R_Summary_Forex - Fatal编程技术网

总结了海量数据,如何用R来处理?

总结了海量数据,如何用R来处理?,r,summary,forex,R,Summary,Forex,我正在研究EBS,外汇市场限额订单簿(LOB):以下是100毫秒时间片中的LOB示例: datetime|side(0=Bid,1=Ask)| distance(1:best price, 2: 2nd best, etc.)| price 2008/01/28,09:11:28.000,0,1,1.6066 2008/01/28,09:11:28.000,0,2,1.6065 2008/01/28,09:11:28.000,0,3,1.6064 2008/01/28,09:11:28.000,

我正在研究EBS,外汇市场限额订单簿(LOB):以下是100毫秒时间片中的LOB示例:

datetime|side(0=Bid,1=Ask)| distance(1:best price, 2: 2nd best, etc.)| price
2008/01/28,09:11:28.000,0,1,1.6066
2008/01/28,09:11:28.000,0,2,1.6065
2008/01/28,09:11:28.000,0,3,1.6064
2008/01/28,09:11:28.000,0,4,1.6063
2008/01/28,09:11:28.000,0,5,1.6062

2008/01/28,09:11:28.000,1,1,1.6067
2008/01/28,09:11:28.000,1,2,1.6068
2008/01/28,09:11:28.000,1,3,1.6069
2008/01/28,09:11:28.000,1,4,1.6070
2008/01/28,09:11:28.000,1,5,1.6071

2008/01/28,09:11:28.500,0,1,1.6065 (I skip the rest)
为了总结数据,它们有两条规则(为了简单起见,我对其做了一些修改):

  • 如果买卖双方的LOB没有变化,他们将不会记录该方。看看最后一行数据,毫秒是000,现在是500,这意味着在100、200、300和400毫秒内,两边的LOB都没有变化(但这些信息对于任何计算都很重要)

  • 最后一个价格(仅最后一个)将从订单簿的给定端删除。在本例中,一条记录的价格字段中没有任何内容。同样,在那个时候,整个LOB也不会有记录

    示例:2008/01/28,09:11:28.800,0,1


  • 我想计算minAsk maxBid(1.6067-1.6066)或加权平均价格(使用所有距离的大小作为权重,在我的实际数据中有大小列)。我想为我的全部数据做些什么。但正如你所看到的,数据已经汇总,这不是例行的。我已经编写了一段代码来生成整个数据(而不仅仅是摘要)。这对于小数据集很好,但是对于大数据集,我创建了一个巨大的文件。我想知道你是否有处理数据的技巧?如何在高效的同时填补空白。

    您没有给出一个很好的可重复的示例,因此这将是伪代码/未经测试的代码。仔细阅读文档并根据需要进行调整

    我建议您首先筛选数据并将其拆分为两个数据帧:

    best.bid <- subset(data, side == 0 & distance == 1)
    best.ask <- subset(data, side == 1 & distance == 1)
    
    (要实现这一点,您可能需要将日期/时间转换为线性度量,例如开市后的秒数时间。)

    那么应该很容易:

    min.spread <- min(c(best.bid$ask - best.bid$price,
                        best.ask$bid - best.ask$price))
    

    min.spread我建议您过滤并将数据分成两个data.frame:一个用于最佳出价,另一个用于最佳出价。然后,对于这两个data.frames中的每一个,使用
    findInterval
    计算相应的
    ask
    bid
    列。然后你就会知道如何达到最小值。@flodel-谢谢,这可能在这里有效,但我需要的是更复杂的计算,包括所有距离,而不仅仅是最好的出价或出价。简单的例子,如果我想计算加权价格,那么我需要所有的距离,我不能过滤它。我编辑了我的问题。对于给定的时间戳和侧面,你总是有五个价格?请定义加权平均价格。它是否在给定的时间戳内使用所有十个价格,或者大小作为权重?现在,我正在研究欧元/美元,每一方都是10。但是,以EUR/CAD为例,它并不总是相同的。这有区别吗?对于加权平均价格,我使用每个时间段所有十个价格的数量作为权重。对于加权平均价格,我将使用类似的方法,但两个初始data.frames应该是
    加权.avg.bid
    加权.avg.ask
    。然后再次使用
    findInterval
    查找两者之间对应的ask/bid。
    min.spread <- min(c(best.bid$ask - best.bid$price,
                        best.ask$bid - best.ask$price))