作者heuristics (阿弟牯)
看板Trading
标题Re: [问题] C#比JAVA适合做程式交易吗?
时间Thu Jul 6 00:16:50 2017
※ 引述《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 语言常常只是因为它们适合做沟通
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 42.73.138.22
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Trading/M.1499271413.A.8E6.html
1F:推 ProTrader: 专业 07/06 01:30
2F:推 vbnwei: 推 07/06 07:26
3F:推 zap7042: 推推 07/06 16:57
4F:推 bcc2xp: C#能直接呼叫python 3? 07/06 23:20
5F:推 avonasac0800: 回楼上,你写个batch档call python再用C#去执行batc 07/07 23:38
6F:→ avonasac0800: h不就好了 07/07 23:38
7F:推 david31408: 呼叫越多层会不会有时间差的问题? 07/08 12:43
8F:推 spencer222: C#有processstart可以用 直接透过cmd跑python档 07/08 18:01
9F:推 micbrimac: 可以用matlab call c#的api吗? 07/10 18:07
10F:推 JoshuaTang: 好文 感谢分享 08/03 19:17
(ETHZ 删除 NNGG 的推文: 乱版!)
(ETHZ 删除 ES200h 的推文: 分身乱版!)