Re: [问题] C#比JAVA适合做程式交易吗?

楼主: heuristics (阿弟牯)   2017-07-06 00:16:50
※ 引述《chema (chema)》之铭言:
: 这问题对板上程式高手们,可能觉得很菜
: 但还是希望大家指教一下。
: 我目前从事交易员,因为有些交易模型在既有MC架构做不到
: 所以学习其他语言是必须的。这几天有去补习班询问C#的课程,
: 她们建议我学JAVA,可是我问了身边做交易的人,多半用C#,
: 似乎没有听过使用JAVA在建构交易系统的
: 由于我是文科背景出身,对于各个程式语言的认识不是很多,
: 所以好奇程式交易上,使用C#的人数较多的原因是什么?
要分 API 跟算法两部份
1、API
基本上,您只能从 Broker 有提供的 API 语言中,选一个
(也可能是协定,例如 REST,那就不限定语言了)
不外乎 Java、C++、C# 跟 Python
怎么选?
有 Python 选 Python,没有就依序选 C# Java C++
但不要花太多时间去学这部份的语言,API 只是要让您的程式可以跟 Broker 做沟通
可以看的懂跟会稍微修改 Broker 提供的范例就好
2、算法
基本功,要好好学
怎么选?
Python,没有之二,这厮算法交易 (或说资料科学) 相关的资源太多了
除了基本语法外,先熟悉 NumPy (资料格式)、Pandas (资料处理) 跟 Scikit-learn (机器学习) 这三个套件
已经可以用传统的机器学习做许多尝试
再进阶,可以试试 Deep Learning (深度学习)
好的是,深度学习一些主流开发框架例如 TensorFlow,也是以 Python 做前端
所以一开始就熟悉 Python 会更容易上手
那如果,算法的语言跟 API 的语言不同,怎么串接?
简单一些,算法就写成 Console 程式,Java、C++ 或 C# 都可以呼叫 Console 程式做沟通
例如丢 10 根 k 棒的数据给 Console 程式,Console 程式输出 sell or buy or ... 给 Java、C++ 或 C#
进阶一些,可以写成 Client Server 架构,概念上就是用一些网络协定做沟通
Socket、Thrift 或 gRPC ... 都可以做到
但最佳解其实是直接呼叫,大多也都找的到解法
例如 google:calling python from c# .net
回到最后的问题,程式交易上,使用 C# 的人数较多的原因是什么?
我想是因为蛮多 Broker 提供的 API 中都有 C# 的选项,但 C# (或 Broker 选用的 API 语言) 是不是就适合发展算法?
我想不一定,如前面提到的,API 只是要让您的程式可以跟 Broker 做沟通
Broker 选用的 API 语言常常只是因为它们适合做沟通
作者: ProTrader (没有暱称)   2017-07-06 01:30:00
专业
作者: vbnwei (Mr.V)   2017-07-06 07:26:00
作者: zap7042 (Joseph)   2017-07-06 16:57:00
推推
作者: bcc2xp (没灵感)   2017-07-06 23:20:00
C#能直接呼叫python 3?
作者: avonasac0800 (Adolph)   2017-07-07 23:38:00
回楼上,你写个batch档call python再用C#去执行batch不就好了
作者: david31408 (Hope)   2017-07-08 12:43:00
呼叫越多层会不会有时间差的问题?
作者: spencer222 (ddd)   2017-07-08 18:01:00
C#有processstart可以用 直接透过cmd跑python档
作者: micbrimac (shark)   2017-07-10 18:07:00
可以用matlab call c#的api吗?
作者: JoshuaTang (唐唐)   2017-08-03 19:17:00
好文 感谢分享

Links booklink

Contact Us: admin [ a t ] ucptt.com