一定要建立一套自己的规范 常用代码库:比如下单,平仓,资金。。。 常用框架库:比如趋势、多单加仓,一单,逆势。。。 编程规范:比如颜色,输出,错误处理,编程风格。。。 可以确保在最快的时间里,构建自己的策略,而不是把大量的时间浪费在程序之中。 在下建立了这样的库,才有点体会,这些东西是一个老手与一个新手之间技术壁垒。 这些年,我手下有不少程序员过,但是我痛苦的事情很多,有一个就是很难写出高质量,容易检验的程序,这一关过不去,别提什么策略与团队了。 各种体会,酸甜苦辣。。。。。。
你提的这些是必要的CODING规范啊。模块化+规范化(编程风格甚至STL模板)+基础库,可以在无谓的重复工作上减少人力开销一并减少花在调试上的精力。如果没有项目经理事先做好规范,每个程序员都有自己的编程风格,很容易搞成跟你玩黑盒游戏。
xp运行在ram上面没有试过, 我试过在windows 8上面虚拟xp, 然后把虚拟机的文件全部放在ram上面, 用amibroker回测时快一点点, 但是意义不大,大多数数据其实已经在内存里面。 实战就更不用,我的最小扫描时间是4分钟。 Not a fan for HFT ...
模块化是必须的,自己开发软件应该参考下现有软件的架构,比如openquant等。我的系统分数据(接收、保存、读取+独立的K线数据生成模块)、回测、实盘、监控等模块。架构搭好以后,搞策略就简单多了。以均线策略为例,show一下自己的策略编写部分,请各位提个意见: public class MAStrategy : Strategy { DateTime exitingTime;//尾盘平仓时间 FutureDataSeries dataSeries; MA ma5; MA ma20; public MAStrategy(params string[] paras) : base("MAStrategy") { string instrument = paras[0]; //注册合约 RegDataServer(instrument); //注册策略所用资金量 int limitHand = 1; if (paras.Length > 1) limitHand = int.Parse(paras[1]); RegCatital(limitHand); //指标所用到的数据序列 dataSeries = new FutureDataSeries(instrument, DataPeriodType.Minute, 1); RegFutureDataSeries(dataSeries); ma5 = new MA(dataSeries, 5); ma20 = new MA(dataSeries, 20); } /// <summary> /// 初始化函数 /// </summary> public override void Init() { //设置平仓时间 exitingTime = gTradeDate.AddHours(14).AddMinutes(58); //设置移动止损金额,30元 SetTraillingStopAmount(30); //设置止损跳数,5跳 SetStopLoss(5); } protected override void OnTickData(FutureTickDataBag tick) { if (dataSeries.IsNewKLine) { if (ma5.Last > ma20.Last)//金叉 { CloseShortForce(); OpenLong(); } else//死叉 { CloseLongForce(); OpenShort(); } } //尾盘平仓 if (tick.UpdateTime > exitingTime) { CloseAllForce(); } } }
到目前为止,我学到的这方面的最重要经验可能是: 策略和代码最好是分开的 等到策略够健壮,够聪明,够多,够突破常规的时候, 那些“框架”,“库”,“类”,“模块”根本装不下这些东西。 如果更换策略的时候需要改动一行程序,需要重新编译一次, 那就还在那个框框里面。 自动化交易需要一个引擎:
机房里面的服务器一般不能断电, 死机这种事极少,即使是XP这种桌面系统,只要配置得好,没有乱七八糟的软件,也不怎么会死机,除非硬件故障, 但是操作系统,应用程序出错,内存出错还是有可能遇到的, 好的系统应该可以从关键点恢复。
机器速度不够,买Nvidia tesla工作站玩并行计算。 程序运行效率低,用C++。 操作系统不稳定,换Linux。 嫌硬盘慢,请用SSD硬盘。 您又觉的硬盘太小,上RAID磁盘阵列。 网速慢,申请光纤专线接入。 怕断电, 配个UPS电源不就得了。 内存错误的话,你买服务器用的那种ECC(错误检查和纠正)内存呀。 还有什么问题,海洋上留言,小弟帮你出主意