限价具有小数值。市场价格没有。
如何在F#中对此进行建模?
module TradingDomain
let NoPrice = None
type PriceActionType =
| Limit of decimal
| Market of NoPrice
答案 0 :(得分:5)
你不能给Market
任何参数:
type PriceActionType =
| Limit of decimal
| Market
答案 1 :(得分:0)
有几种方法可以解决这个问题,但是如果你进行域建模,那么了解所有组件是个好主意,在这种情况下,1)交易者如何看待订单,2如何FIX(如果使用的是什么)对订单的看法,以及3)您交易的市场如何看待订单。顺便说一下,你可能觉得这个book很有用。此外,F#Deep Dives中的Chapter 7。
那说Tarmil的回答对你有用,而且我有两条评论。有时候,明确表示类型并使用.NET类型会更好。 float
和decimal
是F#别名,它们可能引用转换为float的函数。还有可能使用Some和None来表达价格。所以这里也是一个包含orderide的版本:
type Price =
| Limit of Decimal
| Market
type OrderSide =
| Buy of Price
| Sell of Price
| ShortSell of Price
您可以像这样使用它:Buy (Limit 10.0M)
或Sell Market
。
您也可以像这样定义价格:
type Price2 =
| Limit of Decimal option
| None
无论哪个版本都可以帮助您以后进行验证。