寻找支持货币和汇率(包括相关行为和操作)的.NET 的良好Money数据类型.
虽然这本书没有深入,但我还希望Money课程支持不同的舍入机制,因为全球金融机构也有所不同.
编辑1: 澄清
"Money class"是指我可以用来支持货币及其运营的.NET数据类型,包括货币支持和汇率计算.类似的东西是更高级别的抽象,可能在内部使用原始数据类型.它也可能依赖于一堆类,如:Money,ExchangeRate,Bank等.
它可能是值类型(即结构)或引用类型(即类),但无论哪种方式它都是完整的并支持上述特征.
(这也说明了原始十进制,int或其他原始类型不足以满足所有Money需求的原因)
Money数据类型的目标是:
注意:可以从外部源加载变量数据值(如汇率)并使用.这个问题并没有推断任何动态是硬编码到Money的概念.
既然市场数据提供商的寡头成功杀死了OpenQuant,那么对于实时市场数据的专有和昂贵的订阅是否有任何替代方案?
理想情况下,我希望能够监控来自纽约证券交易所,纳斯达克和美国证券交易所(约6000个符号)的蜱虫证券.
大多数供应商同时限制500个符号可观察,这对我来说是不可接受的,即使可以想象500个符号之间的轮换,即.制作5秒的窗户.每个符号的每分钟有效观察.
目前我正在通过一个名为谷歌财经的Java线程池来做这件事,但由于几个原因,这是令人不满意的,其中一个原因是谷歌没有返回交易量,但主要原因是谷歌迅速杀死试图利用的机器人这项服务;-)
任何提示非常感谢,
干杯
我认为java.math.BigDecimal
应该是The Answer™需要用十进制数执行无限精度算术.
请考虑以下代码段:
import java.math.BigDecimal;
//...
final BigDecimal one = BigDecimal.ONE;
final BigDecimal three = BigDecimal.valueOf(3);
final BigDecimal third = one.divide(three);
assert third.multiply(three).equals(one); // this should pass, right?
Run Code Online (Sandbox Code Playgroud)
我希望assert
通过,但事实上执行甚至没有到达那里:one.divide(three)
原因ArithmeticException
被抛出!
Exception in thread "main" java.lang.ArithmeticException:
Non-terminating decimal expansion; no exact representable decimal result.
at java.math.BigDecimal.divide
Run Code Online (Sandbox Code Playgroud)
事实证明,API中明确记录了此行为:
在这种情况下
divide
,准确的商可能有一个无限长的十进制扩展; 例如,1除以3.如果商具有非终止十进制扩展并且指定操作以返回精确结果,ArithmeticException
则抛出a.否则,返回除法的确切结果,与其他操作一样.
进一步浏览API,人们发现实际上有各种重载divide
执行不精确的划分,即:
final BigDecimal third = one.divide(three, 33, RoundingMode.DOWN);
System.out.println(three.multiply(third));
// prints "0.999999999999999999999999999999999"
Run Code Online (Sandbox Code Playgroud)
当然,现在显而易见的问题是"有什么意义?".BigDecimal
当我们需要 …
我最近被要求开发一个必须与Sage Line 50财务软件集成的应用程序.
我做了一些谷歌搜索,我很惊讶缺乏与Java或.Net的Sage接口的信息.Sage是否是一个黑盒子,你需要在获得任何信息之前注册Sage Developer程序?
是否有任何开源选项允许应用与Sage交谈?
任何信息赞赏.
干杯
保罗
我很好奇在财务数据的计算方面存在任何"舍入"标准.我最初的想法是仅在数据呈现给用户(表示层)时执行舍入.
如果"舍入"数据然后用于进一步计算,应该使用"圆形"数字还是"原始"数字?有人有建议吗?
请注意,我知道不同的舍入方法,即银行家舍入等.
ax.plot_date((dates, dates), (highs, lows), '-')
Run Code Online (Sandbox Code Playgroud)
我目前正在使用此命令使用Matplotlib绘制金融高点和低点.它工作得很好,但是如何在没有市场数据的情况下删除x轴上的空白区域,例如周末和假日?
我有日期,高点,低点,关闭和打开的列表.我找不到任何创建带有x轴的图表的示例,该图表显示日期但不强制执行常量比例.
我想设计一个数据库,它将记录金融交易.我想将它设计为产品,以便它可以用于任何类型的金融交易.有一些特定于金融交易数据库设计的设计原则可以帮助我使数据库在长期内更耐用,同时最小化架构级别.一些很好的例子也将是一个很大的帮助.
谢谢
用于计算简单移动平均值的最快库/算法是什么?我写了自己的,但是在33万项十进制数据集上花了太长时间.
这是我的方法的代码:
public decimal MA_Simple(int period, int ii) {
if (period != 0 && ii > period) {
//stp.Start();
decimal summ = 0;
for (int i = ii; i > ii - period; i--) {
summ = summ + Data.Close[i];
}
summ = summ / period;
//stp.Stop();
//if (ii == 1500) System.Windows.Forms.MessageBox.Show((stp.ElapsedTicks * 1000.0) / Stopwatch.Frequency + " ms");
return summ;
} else return -1;
}
Run Code Online (Sandbox Code Playgroud)
这Data.Close[]
是一个固定大小(1 000 000)的十进制数组.
我一直在关注'python进行数据分析'.在pg.345,你得到这个代码来绘制各种股票的回报.但是,绘图功能对我不起作用.我得到了FigureCanvasAgg'对象没有属性'invalidate'?
names = ['AAPL','MSFT', 'DELL', 'MS', 'BAC', 'C'] #goog and SF did not work
def get_px(stock, start, end):
return web.get_data_yahoo(stock, start, end)['Adj Close']
px = pd.DataFrame({n: get_px(n, '1/1/2009', '6/1/2012') for n in names})
#fillna method pad uses last valid observation to fill
px = px.asfreq('B').fillna(method='pad')
rets = px.pct_change()
df2 = ((1 + rets).cumprod() - 1)
df2.ix[0] = 1
df2.plot()
Run Code Online (Sandbox Code Playgroud)
更新:完全追溯
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-122-df192c0432be> in <module>()
6 df2.ix[0] = 1
7
----> 8 df2.plot()
//anaconda/lib/python2.7/site-packages/pandas/tools/plotting.pyc in …
Run Code Online (Sandbox Code Playgroud) 我对FIX-Protocol比较新.
FIX协议消息的分隔符有时会显示^和其他时间.维基百科的FIX协议说[SOH]
(< 十六进制的开头 >十六进制为0x01)是该字符.
请解释一下这个含义.
例如,FIX协议消息可以在视觉上表示为
8=FIX.4.4^9=122^35=D^34=215^49=CLIENT12^52=20100225-19:41:57.316^56=B^1=Marcel^11=13346^21=1^40=2^44=5^54=1^59=0^60=20100225-19:39:52.020^10=072^
Run Code Online (Sandbox Code Playgroud)
要么
8=FIX.4.4|9=122|35=D|34=215|49=CLIENT12|52=20100225-19:41:57.316|56=B|1=Marcel|11=13346|21=1|40=2|44=5|54=1|59=0|60=20100225-19:39:52.020|10=072|
Run Code Online (Sandbox Code Playgroud)
那么使用^ over |的确切区别是什么?
是否还使用了其他分隔符.不清楚为什么[SOH]
(0x01)适合^或|
它可能是数字之一.
financial ×10
java ×2
matplotlib ×2
python ×2
.net ×1
algorithm ×1
bigdecimal ×1
c# ×1
currency ×1
division ×1
feed ×1
fix-protocol ×1
graph ×1
pandas ×1
precision ×1
real-time ×1
rounding ×1
sage-line-50 ×1
sql-server ×1
stream ×1