您的位置首页百科快答

程序化怎么编写?

程序化怎么编写?

的有关信息介绍如下:

程序化怎么编写?

刚刚接触程序化的我,遇到的第一个问题就是:我可能会编程,也知道一些简单的策略思路,但是面对程序化交易仍然一脸懵逼。

身边也有小伙伴很懂交易,做主观交易很长时间,但是不懂编程。遇到程序化策略平台仍然不知道该如何入手。

究其原因,都是缺乏程序化交易的实践。今天就来简单聊一下,一个程序化交易策略是怎样炼成的。也是为了帮助想要接触程序化交易的小伙伴开启程序化交易之旅。BTW,在此小编会避开去聊具体平台的用法,只是描述一下大致思路和流程。因为策略开发的流程思路都大差不差,而平台和编程语言特点却各有各的不同。学会一种,其他就都有办法快速突破。

一、准备工作

该选什么编程语言,这要看自己的选择,怎么顺手怎么来,我自己在学Python,不为什么,简单暴力。之前小编的文章中也提到过关于编程语言的选择,这里不再赘述。

这里具体说一下思路。当准备开始写一段策略代码时,首先要想到的问题就是:你要写的这个策略,需要用到什么数据?

比如交易品种代码、前一天的收盘价、当前价格、移动平均线,布林线等等。很多程序化交易平台上计算类似移动品均线,布林线等数据都有现成的函数可以调用。刚开始可以先阅读一下开发手册或者相关的说明文档,函数名都大差不差,比如MA、EMA等等。而有些指标就需要自己用表达式自己计算出来。

二、编写程序

一般一个策略程序会分为三个部分:定义init()、主程序main()、运行结果return(). (这里三个函数只用作代替结构,具体每个平台都有所不同,但结构相似)

init()部分,一般是程序中用于处理策略前置条件,配置参数的方法,或者一些预定义以及import的部分。其中包含准备工作中要设定策略的标的物;定义策略后验的开始结束时间;策略的驱动周期;初始资金;仓位;滑点等。

main()主程序是程序的核心,就是要用程序语言编写实现你的交易思想,策略的核心逻辑,开平仓规则的部分了。这里对一个有策略的程序员不是难事。而对一个不懂程序语言的交易者来说是最难的部分。难点也是重点,如何通过计算机语言的表述逻辑,去描述你的想法。举个例子,曾经遇到一个小伙伴问我,这些个什么通道、突破、锤子线...说出来一堆一堆的,但是要怎么写成代码啊?这是新手会遇到的第一个问题。其实懂点程序和数理知识就一下就能知道,这些逻辑如何用表达式描述:大于或小于就是突破,某最小值<><某最大值;锤子线稍微复杂,要考虑和之前的价格比较,然后判断max(开盘价,收盘价)= 最高价="" and=""><>

return()部分,会在程序运行完成时调用,输出结果数据一般会由系统默认自动完成。一些平台或者语言,对于这个结构的编写部分会直接省略。

刚刚接触程序化交易的小伙伴可以先从自己知道的最简单的策略写起。而且基础和经典的策略在一般的程序化交易平台上都有实例可以研究学习。阅读和抄写源码是学习编程的一个捷径!

三、历史回测

程序写完后,这一步是必不可少而且是重中之重。利用历史数据回测能够发现程序在执行交易逻辑时出现的逻辑问题以及策略考虑不周全的地方。还有需要注意避免在策略中用到未来函数(比如在一天收盘前用到最高价的状况),这是很多新手小伙伴经常会犯的错误。我接触的大多数程序化平台都自带历史回测功能并且提供回测报告。着可以考察策略的可行性。也可以通过报告很直观的看到资金量、收益率,最大回撤、夏普比率等交易数据,测算预期。在策略没有实盘运行之前出现了任何问题都是最好的事情。

四、实盘交易

写出来的策略不经过实盘的考验其实没有什么意义。可以先用小资金小仓位让程序在实盘运行一段时间。如果出现问题,就需要及时调整程序或者调整参数,判断程序的适用性,这也是程序化交易必不可少的环节。

程序化和量化交易中,一般都会是多品种多策略配置去分散风险。而一些高频、日内的程序化交易策略一旦适用性不佳,就可能直接被迭代或者直接抛弃,更新速度也非常快。