首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >相互依赖的期货组合

相互依赖的期货组合
EN

Stack Overflow用户
提问于 2015-05-22 01:13:49
回答 2查看 730关注 0票数 1

我使用Scala向API (确切地说,是Play Framework的WS )发出HTTP请求,该API用一个JSON响应来响应,类似于;

代码语言:javascript
运行
AI代码解释
复制
{
  data: [
    {text: "Hello there", id: 1},
    {text: "Hello there again", id: 2}
  ],
  next_url: 'http://request-this-for-more.com/api?page=2' //optional
}

因此,返回的JSON中的next_url字段可能存在,也可能不存在。

我的方法需要做的是从调用第一个URL开始,检查响应是否有next_url,然后对其执行GET。最后,我应该将来自响应的所有data字段组合成所有数据字段的一个未来。当响应中没有next_url时,我将终止它。

现在,用阻塞的方式做这件事比较容易,但我不想这样做。解决这样的问题最好的办法是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-05-22 01:33:09

在scalaz中可能有这样的方法,但是如果您不知道一个特定的解决方案,通常可以使用递归和flatMap来构造一个解决方案。类似于:

代码语言:javascript
运行
AI代码解释
复制
//Assume we have an async fetch method that returns Result and Option of next Url
def fetch(url: Url): Future[(Result, Option[Url])] = ...

//Then we can define fetchAll with recursion:
def fetchAll(url: Url): Future[Vector[Result]] =
  fetch(url) flatMap {
    case (result, None) => Future.successful(Vector(result))
    case (result, Some(nextUrl)) =>
      fetchAll(nextUrl) map {results => result +: results}
  }

(请注意,这对每个调用都使用了一个堆栈框架-如果您想要执行数千次获取,那么我们需要更仔细地编写它,以便它是尾递归的)

票数 2
EN

Stack Overflow用户

发布于 2015-05-22 01:33:39

这种情况下,Future.flatMap方法确实存在。

假设你有这样的东西:

代码语言:javascript
运行
AI代码解释
复制
case class Data(...)
def getContent(url:String):Future[String]
def parseJson(source:String):Try[JsValue]
def getData(value: JsValue):Seq[Data]

JsValue类型有受播放json图书馆启发的方法

代码语言:javascript
运行
AI代码解释
复制
def \ (fieldName: String): JsValue
def as[T](implicit ...):T //probably throwing exception

你可以写最后的结果

代码语言:javascript
运行
AI代码解释
复制
def innerContent(url:String):Future[Seq[Data]] = for {
  first <- getContent(url)
  json <- Future.fromTry(parseJson(first))
  nextUrlAttempt = Try((json \ "next_url").as[String])
  dataAttempt = Try(getData(json \ "data"))
  data <- Future.fromTry(dataAttempt)
  result <- nextUrlAttempt match {
    case Success(nextUrl) => innerContent(nextUrl)
    case Failure(_) => Future.successful(Seq())
} yield data ++ result

还可以查看针对像您这样的复杂异步流的库:

  1. 玩迭代游戏
  2. 黄曲霉
  3. 黄曲石流
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30392773

复制
相关文章
AQR:构建更稳健的商品期货组合
量化投资与机器学习微信公众号,是业内垂直于量化投资、对冲基金、Fintech、人工智能、大数据等领域的主流自媒体。公众号拥有来自公募、私募、券商、期货、银行、保险、高校等行业30W+关注者,连续2年被腾讯云+社区评选为“年度最佳作者”。 作者:Yao Hua Ooi、Thomas Maloney、Alfie Brixton 编译:1+1=6 前言 大宗商品的收益非常分散化,常常用在股债投资组合中构建更稳健的组合。但许多大宗商品指数在全球金融危机期间大幅下跌,在随后的十年通缩期间几乎没有复苏。然而,大多数投
量化投资与机器学习微信公众号
2022/05/13
5470
AQR:构建更稳健的商品期货组合
AkShare-期货数据-期货库存
之前的期货库存数据接口不稳定,特此更新一个新接口,同时提高了老接口的访问的稳定性。详情请查看文档
数据科学实战
2020/05/07
1.2K0
AkShare-期货数据-外盘期货历史数据
提供外盘期货历史数据和合约详情数据,丰富外盘期货的数据接口,便利研究内外盘的联动性。
数据科学实战
2020/03/31
1.9K0
异步架构,避免相互依赖的系统耦合
使用缓存架构可以减少不必要的计算,快速响应用户请求,但是缓存只能改善系统的读操作性能,也就是在读取数据的时候,可以不从数据源中读取,而是通过缓存读取,以加速数据的读取速度。
小马哥学JAVA
2023/02/27
6930
异步架构,避免相互依赖的系统耦合
AKShare-期货数据-外盘商品期货品种代码表
目标地址: https://finance.sina.com.cn/money/future/hf.html
数据科学实战
2021/12/07
6060
AKShare-期货数据-外盘商品期货品种代码表
如何避免相互依赖的系统间耦合
两个应用熊中需要远程传递数据,常规的做法是直接进行远程调用,使用 Http,或者 其他 RMI 方式进行调用,但是这种方式将系统耦合起来,一旦被调用的系统产生了故障或者升级,都可能会引起调用者导致不得不跟随升级。
王小明_HIT
2020/09/03
1.2K0
如何避免相互依赖的系统间耦合
AkShare-期货数据-期货交易日历
修复 futures_rule 数据接口,增加通过日期查找历史数据的功能,可以通过该接口获取近期期货交易日历数据。
数据科学实战
2020/07/23
9770
商品期货的估值与驱动
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
钱塘小甲子
2019/10/30
1.6K0
商品期货的估值与驱动
AkShare-期货数据-仓单日报-上海期货交易所
作者寄语 本接口提供上海期货交易所的仓单日报数据 更新接口 "futures_shfe_warehouse_receipt" # 上海期货交易所的仓单日报数据 仓单日报 仓单日报-上海期货交易所 接
数据科学实战
2020/07/23
6540
AkShare-期货数据-交割统计
以下所有数据都可以通过安装基于 Python 的开源金融数据工具 AkShare 来获取:
数据科学实战
2021/02/05
8540
AkShare-期货数据-交割统计
长期活跃于期货市场的Aberration
Aberration可以被翻译为“失常、离开正路、越轨”等含义,是一套古老而简单的趋势类突破系统,在众多交易者看来它已经失去盈利空间,但实际上它可以用最简单的方式反馈市场波动,且经过改进之后依然可以作为极好的入门模型。如图3-6所示。
数据科学实战
2020/05/07
2.9K0
长期活跃于期货市场的Aberration
AkShare-期货数据-CFMMC指数
期货市场中 「南华指数」 一般被用来做比较基准,除此以外特提供 「中国期货市场监控中心」 的指数,可以作为除南华指数以外的另一个选择。具体提供指数的目录可以参见 「CFMMC指数一览表」
数据科学实战
2020/04/14
6150
3.1 金融市场和期货
一个本来是对冲的交易可能实际成了投机行为,这是操作风险。 所以使用衍生品时,需要设定好风险的限额。
rocket
2018/09/14
6.6K1
3.1 金融市场和期货
期货商业模式再造
颠覆传统商业模式 如果说计算机远程自助交易系统的兴起大大弱化了“红马甲”的敲单功能,大数据时代的到来则开始颠覆期货业传统的商业模式。 如南华期货总经理罗旭峰所言,“现在的金融是靠IT技术支持的,再靠以往人工报单的方式是不可能赚到钱的。以前我们一天报几千笔单子,那是非常了不起了,交易员都已经手上出汗了。现在动不动一天是10多万笔、20多万笔的单子,与刀耕火种的时代已经不可同日而语。”作为可以产生海量数据的行业,大数据正在改变着银行、证券、保险(放心保)、基金等金融机构的运作方式。一方面,通过综合分析客户行为
大数据文摘
2018/05/21
8590
maven模块名相互依赖如何解决?
水一篇文章,这里记录下maven中的一个模块名被另一个模块引用,但是却不知道如何修改的问题。首先看图:
废江_小江
2022/09/29
1.3K0
maven模块名相互依赖如何解决?
个人能不能开发ctp期货交易_什么是程序化交易期货
接触CTP也才半年多,一边学习一边摸索,看到各大CTP的QQ群里,也都是在问一些很菜的问题,就简单总结和介绍下,今天主要是基础知识,即CTP程序的基础和开源的Demo版本:
全栈程序员站长
2022/11/09
9500
AkShare-期货数据-COMEX库存数据
期货数据-COMEX库存数据,纽约商业交易所地处纽约曼哈顿金融中心,与纽约证券交易所相邻。它的交易主要涉及能源和稀有金属两大类产品,但能源产品交易大大超过其他产品的交易。交易所的交易方式主要是期货和期权交易,到目前为止,期货交易量远远超过期权交易量。纽约商业交易所于2008年被CME集团收购。
数据科学实战
2020/10/09
8720
期货交割仓库的管理运作与发展
今年3月,“青山镍事件”引起全国乃至全球经济界、金融界的广泛关注。尽管这一事件还没有最终定论,但是已经反映出相关商品的期货交易、金融运作等等,对一个企业乃至一个国家相关产业的安全都有着巨大影响力,需要非常专业的运作和操盘。在期货交易体系中,交割仓储是重要组成部分,其运作与发展一时间也受到高度关注。经过多年发展和实践,目前我国交割仓库运作已形成较为规范的制度,其具体运作方式和服务内容也在不断进步与发展,在技术应用方面持续创新,呈现出数字化升级、国际化发展的新趋势。
用户9868602
2022/09/02
7740
期货交割仓库的管理运作与发展
AkShare-期货数据-仓单日报
目标地址: http://www.czce.com.cn/cn/jysj/cdrb/H770310index_1.htm
数据科学实战
2020/07/23
4610
AKShare-期货数据-日频数据
目标地址: https://finance.sina.com.cn/futures/quotes/V2105.shtml
数据科学实战
2021/04/16
1.1K0

相似问题

scala,play,期货:组合多个期货的结果

13

组合功能,回报期货

13

期货与期权组合

21

如何实现期货组合

18

如何组合多个期货的Single<T>

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档