- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我是初级/中级 Python 程序员,但我没有编写应用程序,只是编写脚本。我目前没有大量使用面向对象设计,所以我希望这个项目能帮助我培养 OOD 技能。问题是,我不知道从设计的角度从哪里开始(我知道如何创建对象和所有这些东西)。值得一提的是,我也是自学的,没有接受过正规的 CS 教育。
我想尝试编写一个程序来跟踪投资组合中的股票/期权头寸。
我对什么是好的候选对象(投资组合、股票、期权等)和方法(买入、卖出、更新数据等)有一个大概的了解。
多头头寸为买入开仓和卖出平仓,而空头头寸为卖出开仓和买入平仓。
portfolio.PlaceOrder(type="BUY", symbol="ABC", date="01/02/2009", price=50.00, qty=100)
portfolio.PlaceOrder(type="SELL", symbol="ABC", date="12/31/2009", price=100.00, qty=25)
portfolio.PlaceOrder(type="SELLSHORT", symbol="XYZ", date="1/2/2009", price=30.00, qty=50)
portfolio.PlaceOrder(type="BUY", symbol="XYZ", date="2/1/2009", price=10.00, qty=50)
那么,一旦这个方法被调用,我该如何存储信息呢?起初我以为我会有一个具有 Symbol、OpenDate、OpenPrice 等属性的 Position 对象,但是考虑更新头寸以计算销售额变得棘手,因为买卖发生在不同的时间和数量。
一个可能的解决方案是为每一股股票创建一个对象,这样每股股票就会有不同的日期和价格。这会不会开销太大?投资组合可能有数千或数百万个小共享对象。如果你想找出一个头寸的总市场值(value),你需要这样的东西:
sum([trade.last_price for trade in portfolio.positions if trade.symbol == "ABC"])
如果你有一个位置对象,计算会很简单:
position.last * position.qty
在此先感谢您的帮助。查看其他帖子,很明显 SO 是为了“帮助”而不是“为您编写程序”。我觉得我只需要一些方向,指向正确的道路。
反射(reflection)后的附加信息目的该程序将跟踪所有头寸,包括未平仓头寸和平仓头寸;能够查看详细的损益。
当我考虑详细的 P&L 时,我希望看到... - 所有开放日期(和关闭日期) - 举办时间 - 开盘价(收盘日期) - 自开盘以来的盈亏 - 每日损益
@Senderle
I think perhaps you're taking the "object" metaphor too literally, and so are trying to make a share, which seems very object-like in some ways, into an object in the programming sense of the word. If so, that's a mistake, which is what I take to be juxtapose's point.
这是我的错误。考虑“对象”share
对象似乎是自然而然的选择。直到可能有数百万人时,这个想法才显得疯狂。这个周末我会有一些空闲的编码时间,我会尝试创建一个有数量的对象。
最佳答案
在设计这样的系统时,您应该牢记两个基本规则:
基于这些规则,我的建议是维护一个事务日志文件。每笔交易都代表某种状态的变化,以及所有相关的事实:何时、什么、买/卖、多少、多少等。每笔交易都由一条记录表示(命名元组在这里很有用)在平面文件中。一年(甚至 5 年或 10 年)的交易应该很容易地放入内存驻留列表中。然后,您可以创建函数来从该列表中选择、排序和汇总您需要的任何信息,并且驻留在内存中,速度会惊人地快,比 SQL 数据库快得多。
当交易日志变得太大或太慢时,您可以计算截至特定日期(如年末)的所有头寸状态,将其用于下一时期的初始状态,并存档您的旧日志文件到光盘。
您可能需要一些关于您持有的 Assets 的辅助信息,例如任何特定日期的值(value)/价格,因此您可以绘制任何或所有 Assets 的值(value)与时间(此类信息有在线资源,yahoo finance一个。)包含有关您的每项 Assets 的静态信息的主数据库也很有用。
我知道这听起来不太“面向对象”,但是 OO 设计可能有助于将系统的详细工作隐藏在 TransLog
对象中,并提供将数据保存/恢复到的方法/从光盘(保存/打开方法),输入/更改/删除交易;以及将数据处理成有意义的信息显示的其他方法。
首先用命令行界面编写API。如果您对此感到满意,则可以根据需要继续创建 GUI 前端。
祝你好运,玩得开心!
关于python - Python 中投资/股票和期权投资组合的面向对象设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5399873/
关闭。这个问题需要更多focused .它目前不接受答案。 想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post . 4年前关闭。 Improve this questi
.NET 框架:4.5.1 我在 Blend for visual studio 2015 中遇到一个奇怪的错误,我找不到它的来源。 如果我在 VS 中打开我的 WPF 解决方案,它会加载并运行良好。
我经常遇到这样的问题,与 Hierarchical RESTful URL design 非常相似 假设该服务仅提供用户上传文档。 POST, GET /accounts PUT, DELETE /a
在 Rails 应用程序中,我使用 devise 来管理我的用户,而我用来销毁 session 的链接不再有效。它正在工作,现在我添加了事件管理员,但没有。 我的链接是 :delete, :clas
我已经坚持了超过 24 小时,试图按照此处发布的其他解决方案进行操作,但我无法使其正常工作。我是 Rails 新手,需要帮助! 我想让我的/users/edit 页面正常工作,以便我可以简单地更改用户
Devise 在以下情况下不会使用户超时: 用户登录,关闭选项卡,然后在超时 + X 分钟内重新访问该 URL。用户仍处于登录状态。 如果选项卡已打开并且稍后刷新/单击,则超时可以正常工作。这意味着
我想使用这样的 slider 我希望该 slider 根据提供给它的值进行相应调整。到目前为止,我只能应用具有渐变效果的背景,但无法获得这种效果。请通过提供样式代码来帮助我。
您应该为每种方法创建一个请求/响应对象,还是应该为每个服务创建一个? 如果我在所有方法中使用它,我的服务请求对象中将只有 5 个不同的东西,因为我对几乎所有方法使用相同的输入。 响应对象将只有一个字典
我正在尝试在 REST 中对实体的附件进行建模。假设一个缺陷实体可以附加多个附件。每个附件都有描述和一些其他属性(上次修改时间、文件大小...)。附件本身是任何格式的文件(jpeg、doc ...)
我有以下表格: Blogs { BlogName } BlogPosts { BlogName, PostTitle } 博客文章同时建模一个实体和一个关系,根据 6nf(根据第三个宣言)这是无效的。
如果 A 类与 B、C 和 D 类中的每一个都有唯一的交互,那么交互的代码应该在 A 中还是在 B、C 和 D 中? 我正在编写一个小游戏,其中许多对象可以与其他对象进行独特的交互。例如,EMP点击
关于如何记住我与 Omniauth 一起工作似乎有些困惑。 根据这个wiki ,您需要在 OmniauthCallbacksController 中包含以下内容: remember_me(user)
设计问题: 使用 非线程安全 组件(集合,API,...)在/带有 多线程成分 ... 例子 : 组件 1 :多线程套接字服务器谁向消息处理程序发送消息... 组件 2 :非线程安全 消息处理程序 谁
我们目前正在设计一个 RESTful 应用程序。我们决定使用 XML 作为我们的基本表示。 我有以下关于在 XML 中设计/建模应用程序数据的问题。 在 XML 中进行数据建模的方法有哪些?从头开始然
我正在设计一个新的 XSD 来从业务合作伙伴那里获取积分信息。对于每笔交易,合作伙伴必须提供至少一种积分类型的积分值。我有以下几点:
设计支持多个版本的 API 的最佳方法是什么。我如何确保即使我的数据架构发生更改(微小更改),我的 api 的使用者也不会受到影响?任何引用架构、指南都非常有用。 最佳答案 Mark Nottingh
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 4 年前。 Improv
我想用 php 创建一个网站,其工作方式与 https://www.bitcoins.lc/ 相同。确实,就每个页面上具有相同布局但内容会随着您更改链接/页面而改变而言,我如何在 php 中使用lay
我有一个关于编写 Swing UI 的问题。如果我想制作一个带有某些选项的软件,例如在第一个框架上,我有三个按钮(新建、选项、退出)。 现在,如果用户单击新按钮,我想将框架中的整个内容更改为其他内容。
我正在尝试找出并学习将应用程序拥有的一堆Docker容器移至Kubernetes的模式和最佳实践。诸如Pod设计,服务,部署之类的东西。例如,我可以创建一个其中包含单个Web和应用程序容器的Pod,但
我是一名优秀的程序员,十分优秀!