期货程序化案例

篇一:程序化交易案例

我比较熟悉计算机,但我不是程序员出身。两年前,我首先接触到文华财经交易系统,用了一段时间,感觉它只是为不懂一点程序的人开发的,傻瓜化的,但无法实现比较复杂的实时运算交易委托,半年后放弃了,后采用交易开拓者,不错很好,很快上手,遗憾的是可能是系统本身设计原因,连设计程序中最基本的功能:对同一个变量不能反复赋值,如a:=0;a:=1;a:=a+1;这是不可以的(现在是否可以,我不知道),使得我很难实现我的交易思路,并且是按交易所的收费的一定比例(25%)收费,对于我做日内交易成本特高,勉强用了几个月。直到有一天我到期货公司一个计算机管理员告诉我,金字塔比较容易实现我的思想,更适合懂一点编程知识的人使用,确实如此,因为后来我只用了一周的时间就将程序移植到了金字塔平台,就可以用图表交易了,当然还是花了很长时间才搞定后台交易,因为金字塔的对函数的说明文件太少太简单,对后台交易提供的代码案例太少,很多后台函数和语句的用法只用自己去反复试验才能知道是怎么回事。实事求是的说,金字塔系统应该是我所知道的目前最适合那些有些编程知识背景,想做程式化交易的最合适的平台,但是好像最近也仿照交易开拓者按交易所费用的比例收费了,我认为这可能是一着臭棋,因为做后台程式化交易的用户基本上是做日内短线或高频交易,交易成本会高的离谱。

按照我的期货启蒙老师交我的,其实大家都在用的最简单的进出场思路,采用原始的资金管理方法:做股指日内波段交易,一天自动开平仓次数一般不会超过3次个来回,从不过夜,满仓进满仓出,当日亏损超过总资金5%,自动平仓退出系统,用平仓反手做止损,不设止盈直到收市平仓。胜率45%左右,用大赚抹平众多小亏,最近一年无亏损月份,最大一月盈利18%,最小一月盈利5.1%。我晒这个账单的目的是想告诉众多的小散,不要老是想赚大钱,为什么很多人用测试的程式能赚钱,而且业绩不差,但实战确亏损,这也是我经历过的,主要的原因是没有能充分相信你的系统,老是因为恐惧和贪婪,管不住自己的手去干预,其实如果你放心让系统自己去做,一段时间后你再看你的业绩,其实比你的半自动交易效果要好很多,因为你远离了贪婪和恐惧。说了这么多,只是让大家相信无人值守的程式化交易是能赚钱的。

我的无人值守工作站目前的现状,已平稳运行差不多一年:

一、交易平台:金字塔专业版2.8版,win7-64位系统,实现后台交易。

二、电源和网络保证:计算机放在家中,安装了一台可供一台电脑连续工作(关闭显示器)4小时的UPS(1000多元),网络除了4M的ADSL宽带外,开通了联通的无线网卡(限流量型,每月20多元),保证电源和网络通畅,一年来电源停断过2次,网络因为双接入不知道是否断过,只是有时发生金字塔行情信息掉线,个别时候交易账户断线。

三、在后台交易程序中设置了以下情况发送邮件报警:1、交易账户断线超过时限 2、每次开仓平仓时的数量和价格 3,收市前5分钟的持仓和盈亏情况(验证系统正常,避免隔夜单产生)。开通了网易的随身邮,所有邮件达到短信通知到手机,基本上收到邮件时间延迟10秒,短信通知时间延迟20秒,包月每月10元费用。

四、在计算机BOIS中设置每天8点50分自动起计算机,设置:将BOIS中Resume By RTC Alarm 菜单设置成 [Enabled]后,在Time(hh)Alarm设置小时,在Time(mm)Alarm设置分钟,每个

人的计算机可能设置不同,但现在的计算机都有计算机电源定时开机功能。

五、网上下载一个360度定时关机专家,设置成开机自动启动,在这个软件的任务栏中设置:

1、开机自动启动一个应用程序的时间,我设置的每周星期1~5上午8点55分自动启动我的工作站的EXE的可执行文件(代码附后),2、再设置每周星期1~5下午15点30分自动关机。

六、通过期货公司,免费索取账号,安装开通了手机期货软件-澎博公司的“掌上财富“,在收到异常邮件报警后(如账号断线,收市前未平仓,只有开仓无平仓信息等),通过手机软件及时平仓(实际一年中未发生)。

七、无人值守工作站程序,采用可以模拟键盘和鼠标操作的AutoIt软件编译成 .EXE文件,挂在定时关机专家中,定时启动。

八、事先对金字塔系统走一次设置流程后退出,系统会自动保存设置(第一次必须做):

1、 在“欢迎使用金字塔“的第一个登录界面,将自己的金字塔专业版用户名和密码填好,勾选”记住用户密码“和”强制为主账号登录“,点击登录按钮。

2、 将“登录综合交易平台(CTP)“第二个界面的:营业部、用户账号、交易密码填好,并勾选”记住账号“、”记住密码“,点击登录。

3、 登录账号连接好后,会自动关闭登录界面。然后点击“金字塔决策交易系统“主界面的菜单“交易“菜单栏,打开”后台程式化交易“,设置好预警的程序名称、监控品种等信息,并勾选”启动时自动启动预警” 选项,后关闭这个界面。

4、 点击主界面的文件,选择“退出”,至此系统自动记住了你的设置。(题话外:这一点金字塔比交易开拓者简单好用,只是一直不明白,金字塔在”登录综合交易平台(CTP)“这个界面中,勾选”启动时连接“这个选项,没有任何作用,要是能开机全自动进入账户到等待交易时间的到来(可选),那么一键启动全自动进入到可交易状态,对后台交易的用户会更加简单。)

九、 以下源码抛砖引玉,只是我是这样做到无人值守的。

源码((转载自:www.xiaocaOfaNWen.com 小草 范 文 网:期货程序化案例)1),为以上不需要经常改账户信息,不需要操作清除全局变量等的用法,完全可以使用这种傻瓜式的启动:

#Include <Date.au3>

Dim $path

$path="D:\\Weisoft Stock\\";金字塔系统安装路径。

While 1

If WinExists("金字塔决策交易系统")=0 And ProcessExists("WinStock.exe") Then

ProcessClose("WinStock.exe ")

Sleep(3000)

EndIf

If WinExists("金字塔决策交易系统")=0 And (@HOUR>=9 And @HOUR<=13 And @MIN<=20) Then ;交易时间开启系统

Run($path&"WinStock.exe ",$path);启动金字塔系统

WinWaitActive("欢迎使用金字塔","",20) ;激活用户名或账号

ControlFocus("欢迎使用金字塔","","Button1")

ControlClick("欢迎使用金字塔","","Button1") ;点击‘登录’按钮

Sleep(5000)

If WinExists("异常恢复") Then ;如果出现异常关机,再次开机时恢复。

WinActivate("异常恢复")

sleep(2000)

ControlFocus("异常恢复","","Button2")

ControlClick("异常恢复","","Button2")

EndIf

WinWaitActive("登录综合交易平台(CTP)","",30) ;激活‘登录综合交易平台(CTP)'界面

ControlFocus("登录综合交易平台(CTP)","","Button5")

ControlClick("登录综合交易平台(CTP)","","Button5");点击’登录‘按钮

Sleep(2000)

WinWaitActive("金字塔决策交易系统","",20);激活'金字塔决策交易系统'主窗口

EndIf

If WinExists("金字塔决策交易系统")=1 And @HOUR>=15 And @MIN>20 Then ;非交易时间关闭金字塔系统

WinActive("金字塔决策交易系统")

Send("!fx");退出金字塔系统

Sleep(1000)

WinWaitActive("金字塔","",10)

ControlFocus("金字塔","","Button1")

ControlClick("金字塔","","Button1") ;确认退出

Sleep(5000)

EndIf

Wend

篇二:实际期货交易中如何运用程序化

如何把程序化交易运用到实际的期货交易中

最近期市火爆,波动幅度也加大,越来越多的客户注意到我们的程序化交易系统。在本次上涨中的信号非常准确,能够回避掉中途的杂波与振荡。很多人认为,购买了一个好的交易系统,就可以高枕无忧,稳定赚钱了。

其实不然。我们所展示的,包括现在很多机构在出售的,仅仅是交易指标。交易指标只是简单的买卖箭头,而交易系统,则是个很全面的交易参数结合体。 在国外,70%以上的期货交易都是通过程序化交易完成的。在国内,程序化交易起步的比较晚,从最早有行情支持程序化交易的编制,到现在不过是五六年的时间。可以说,国内的程序化交易都是只处于初始阶段。那么作为一个普通投资者,怎么样来把程序化交易运用到自己的实际的期货交易中呢?

我觉得依次解决七个问题。

现在绝大多数的程序化交易,主要都是在解决第四个问题“怎么编程”,有的书还涉及“怎么产生思想”,但是一般对其他几个问题的分析都是比较欠缺的

一、怎么知道程序化交易是否有效

程序化交易系统本质上是对交易思想的数量化和具体化。程序化交易系统是否有效首先取决于:

1. 期货市场是否存在有获利的方法,是否存在有稳定获利的方法?如果这个问题你持否定态度,你将无法实施程序化交易

2. 你是否能掌握能让你盈利的程序化系统?如果你不能,你也无法实施程序化交易

3. 程序化交易模型的测试方法是进行数理统计,你是否能获得并统计大量的,有效的数据?如果你不能,你无法清楚你所用的系统能否获利

4. 用过去的方法解决未来的问题,从哲学上是否说的通,程序化交易一旦产生对你不利的后果,你是否已经有打算或措施?

二、怎么获得程序化交易指标

程序化交易系统实际上包括程序化交易指标和实施指标的各个环节。单纯一个指标,离“系统”还很遥远。但是我们没有指标,就没有办法实施配套的环节。怎么获得指标呢?

指标是交易思想和程序语言的结合体。想获得程序化指标,可以尝试:

1. 直接购买。运用别人的思想,别人的编程。(如果你选择这个方式,理论上你可以越过3,4个步骤)

2. 找专业编程人员定制。用自己的思想,请别人编程

3. 全部自学。自己形成交易思想,自己学习编程

三、怎么产生交易思想

这不是一件简单的事情,读书,向别人学习是必要的;在市场中实践更是必要的。长期学习和实践最终产生的对市场的领悟,才可能达成一个交易思想,如果要体现 在程序化交易上,是“盘感”就不行了,必须是能够具体描述,具体实施,可以量化的交易思想。这些可以量化的交易思想可以是趋势交易、震荡交易、套利交易、 日内短线交易、超短线交易、形态分析交易和波段交易等等

四、怎么编程

相对交易思想来说,编程还是个相对简单的东西。毕竟,编程是可以通过努力学习能够掌握的,而交易思想,并不是通过学习就可以简单达到的。当然编程也不简单,尤其现在国内的编程软件的功能都相对简单,无法满足一些比较复杂的函数描述。

五、怎么使用

怎么样使用程序化交易,比编写交易指标更难。指标可以在图上发出一个向上或者向下的箭头,但是,你可能要考虑:

1. 用在什么市场?

2. 用在什么品种?

3. 用在什么合约?

4. 什么时候作为使用起点?

5. 用在什么周期?

6. 使用什么参数?

7. 用什么软件?

8. 人工下单还是电脑下单?

9. 用什么仓位?

10. 用什么价格(开盘、最新价、收盘价)?

11. 在信号发出前下单还是信号发出后下单?

12. 遇到流动性不好的市场怎么办?

六、怎么执行

程序化交易的一大优点就是在提高人的执行力,系统给出确定的信号,提醒人在适当的时候进行适当的操作,但是,问题在于,你遇到以下情况,该怎么办?

1. 做不进去怎么办?(如涨跌停)

2. 下错单怎么办?

3. 持续多次亏损怎么办?

4. 持续长时间亏损怎么办?

5. 有了很大盈利开始缩水的时候想不想在系统发出信号前了结?

6. 漏过的信号要不要马上跟进?

7. 是否想过滤一些错误的信号?

8. 信号发出后又消失,消失后又出现,该怎么处理?

七、怎么评估

操作一段时间之后,对于系统的评估是非常重要的,因为实战中对系统的检验比用数学简单的对过去发生的走势进行检测来说,可行度要高很多。评估的周期、方法会作为对程序化交易系统完善的起到关键作用。

篇三:证券期货程序化实例详解

大家都认为投机是一种了解未来,是一场预测未来的游戏。他们都错了。投机是一种发展致胜策略,把获胜的金额或机率拉到自己身边来,而所谓的预测,只是一种想证明我们高人一等的不成熟行为,没有人可以预测未来,过去没有,未来也不会有。 〖Larry Williams 〗 一,投资失败的主要原因:

1.在商品现货市场,如果买卖双方达成交易,一般是"胜——胜"型的双赢结果,而在期货市场,期货合约的交易则是"胜——负"型结果,因此,在任何情况下必定有一部分投资者将处于亏损的被动局面中.如果投资者想在期市中成为长期,稳定的赢家,就必须确立符合市场条件的投资原则.

2。市场交易的方式非常多,用五花八门来形容一点也不为过,各种交易方式都有获利的可能,这也是期货的魅力所在.这种魅力吸引了大量投资者来参与期货交易,人人都认为自己可以成功,然而,也正是因为交易方式的多样性,导致投资者难以找到适合自己的交易方式,因为市场在不同的阶段都有与其相适应的交易方式在获利,这使投资者产生一种错觉:市场上到处都是机会天天都有人在赚钱,可自己为什么却总也抓不住呢 投资者很容易迷失在这种错觉之中,这种错觉的根源在于投资者因错过任何机会都很后悔,都会自责,因为他自认为这个机会他是有能力把握的,市场的包容性,往往是导致投资者无从确定自己交易方式的根源,而实际操作中,越贴近市场越容易受到各种各样其他因素的影响,如市场气氛,主力的出入,消息的震荡,行情运行的拉锯,都可能使一个交易者无法承受心理压力而做出错误的判断,这就是亏损的根源.

3。参与期市的交易者往往依靠自己对市场的直觉去交易,由于他对市场的理解和实践经验有限,他们的这种直觉往往是一种错觉.比如说,在上涨趋势中,一个新手看见某商品连续大涨就会迫不急待地想去做空,被套了还要加仓,这于他们在日常生活中低买高卖的理念有关,还有些交易者看见以前K线中出现了某种看涨形态,后来商品价格也的确上涨了,便以为出现这种形态都会看涨.其实,他的这种看法是对以前的认知体系所产生的一种依赖性.但历史不会简单重复,"这一次"不等同于"上一次",以往的经验不能完全成为判断现在的依据,尤其是对于初入期市的新手而言,最大的不幸是他的直觉往往导致了他的错误.例如,在今年的铜的大牛市中,我一刚入市的朋友看对了方向却没赚到钱,为什么呢 原来他一直持有铜的多单,但铜价一上涨,他总认价格涨得太快太猛要调整了,于是先平了仓想等价格跌下来再买,哪知这次铜价一涨就没回头,三月底从50000一直涨到了80000点,气得这位投资者捶胸顿足,后悔不迭.

二。认清市场价格变动的规律是期市制胜的基础

1,价格趋势演化过程的有限增长规律

价格是人们对于客观存在的各种商品价值的主观反映,因此,商品价格变动趋势会因人们的主观映像及其资源和环境的制约,从而呈现出增长的有限性。具体表现为,某一方向的价格趋势在其产生期和衰退期增长速度较低,中间成长期增长速度较高。增长的总体过程呈现为S形曲线。价格趋势演化过程的有限性规律,使得未来商品价格变动趋势是可以预测的。即,一旦我们发现某一方向的价格趋势正处在产生期的慢速增长过程中,则可得知下一步将要进入高速成长阶段。

1

2, 价格趋势演化过程的复杂性变动规律

价格趋势的演化过程,就其形式来说就是一个“从混沌到有序,从有序到混沌”的递推过程。 混沌:现指价格走势呈现出一种貌似随机的变动

有序:现指价格走势呈现出一种方向性极强的价格变动

在价格趋势刚刚开始的时候,由于其内部增长力量还很弱,且外界环境还不能完全支持其向待演变的方向推进,所以必须经过多次震荡尝试后才会积聚到足够大的能量,形成未来的趋势。并且,在趋势成长推进的过程中,还会有许许多多的反动势力要大量消耗其增长的动能,需要不断从各方吸收新的支持。而当增长过程积累到一定的程度,各种条件已不能维持其进一步增长的需求时,价格趋势的整个增长过程也就不得不逐渐停滞下来。因此,价格变动的轨迹是非常复杂的,也就有了世界上没有两张相同的图表一说。 从期货价格波动具有高度的随机性及其内在联系的规律性,可以引伸出下列的结论:在存在操作成本的前提下,具有正期望值的操作系统的发现是可能的;但该类系统的发现是非常困难的。如果价格波动是百分之百随机的,则具有正期望值的操作系统不可能存在。价格波动在某种程度上的非随机特件的存在,是投资交易系统存在的基础。投资家(包括投机家、交易师)的主要仟务就是: ? 识别该特性的存在条件及其特征。

? 据此制订出相应的交易系统。

? 实施拟订出的交易系统。

3, 价格趋势演化过程的分形规律

大的价格趋势的发展过程是由一系列小的发展阶段组合而成的。每个发展阶段句均服从

S形曲线的有限增长规律,而整个价格趋势的发展过程也服从S形曲线的有限增长规律。这种部分结构与整体结构的自相似性就叫做分形。这就是说在做市场分析的时候必须从大的时间级别判断市场趋势,从小时间级别的走势中捕捉交易机会。

三,程序化交易,简单客观的交易策略

期货价格波动具有高度的随机性,要找出隐匿在它们背后的动力学机制目前还很困难,

如果仅从价格运动轨迹的现象出发,则可找到一条绕开这种困难的途径.

程序化交易则是一 2

种从现象到现象的期市操作方法,它通过现象看本质,以大量现象为依据,探讨事物发展的规律.这种方法不要求知道市场体系各元素间的因果关系,只要根据价格走势所产生的具有规律性的图例对市场进行辩识来建立模型便可.因此简便实用.

程序化交易,顾名思义即是将市场常用之技术指标,利用电脑软件将其写入系统中,

籍由程式计算出买卖点,操作人只要依据其讯号进行买进或卖出的动作,而不以自身的看法(Trend view)进行操作。程式交易的优点在于利用电脑化的讯号,以杜绝投资人可能因为盘势所产生的情绪化追涨杀跌的操作。程序化交易方法是对目标进行分析模式的定义,建立100%客观的定义标准,从而完全排斥主观的界定方法。

在这种客观型技术分析方式中.由于投资人处于投资决策过程的辅助性地位,因此,投资人心理状态的变化,对操作信号的生成效果和生成质量的影响被大大减小,具有明显的在投资过程中加强心理控制的优势,使得交易过程简单。

(待续)

四,程序化交易的获利原理

1,系统化操作是提高获利水平的有效方式

从某种意义上来讲,期货市场是一处特殊的金融市场,也是多空双方的市场主力进行智力拼杀的战场.交易者能否在期货市场上盈利,最终获得战斗胜利取决于他们对市场的认识及成功的交易策略.

长久以来,交易者们为了能够取得成功,不断地研究和开发期货市场地技术分析工具,直到目前已有近30000多种技术指标和分析理论流行于市场投资者之间。但是,由于期货市场的参与者群体庞大,市场信息纷繁多变,交易者情绪经常处于波动中,使得价格变化的形式非常复杂多样,而技术指标的设计者,理论方法的缔造者的学识是有限的。因此,想凭借任何单一的技术指标,分析方法来准确预测价格走势是根本办不到的。现在有效的方法就是将各类技术工具组织起来,形成一套系统的分析与交易决策体系,采用“多数决定”的立场,当大多数指标都显示出一致性的信号时,我们再去相信趋势正在形成或结束。这样就可以减少分析的失误,提高交易结果的获利性。 3

2,程式化交易进一步规范了交易体系

任何一个高明的技师都不可能仅用一两件工具就能完成所有零部件的加工或设备的组装维修工作,但只要选择好适当的工具,严格按工艺流程去操作,一个普通的技工也能够很好地完成一系列复杂地工作。而程式化交易正是系统化交易理念最高级的体现形式,设计者将市场上常用之技术指标或逻辑化数值,利用电脑软体写入系统中,藉由程式决定买卖点,交易者只要依其讯号进行买进或卖出的动作,而不以自身的看法(views)进行操作,可排除投资人因为盘势所产生的情绪化反应,做出不理性的追高杀低动作,另外,亦可透过一致化的交易规则,免除不必要的操作。无论何种交易系统,只要程式建构的逻辑合理,且交易系统经过严格回溯测试(back-testing)后,绩效报告的因素分析结果为可行,可获利而值得去执行,则根据交易系统的买卖讯号做交易,皆能得到稳定和可观的报酬。

4

模型名称:财富快车:白糖

五,与市场中传统的技术分析相比,程式化交易的益处何在?

1,传统的技术分析复杂多样,程式化交易清晰简捷

技术分析包括各种技术分析理论、技术分析指标、图表形态;不但要对前人的成果熟练掌握,倒背如流,而且还要达到创立自己的技术分析理论和技术分析指标的程度。初学者往往到处寻找各种新颖的花里胡哨的技术分析理论和技术分析指标,热衷于追求各种新潮流新思想。对于所学,初学者往往只知其然,不只其所以然。想要得到一知半解,不但要求交易者具有一定的智商和天赋,还要求交易者具有刻苦钻研的精神。在具体分析过程中,初学者往往不具备鉴别真理和谬误的能力,往往分析了半天还是不能对行情作出评价。如图:

而程式化交易是交易者长期在市场中摔打摸索总结出的,是对市场规律性一面的理解和总体形成的交易行为体系,它充分利用计算机和通讯技术,集成资讯、行情、报价、交易的客观数据,由电脑自动计算并在盘中实时发出买卖信号。不需要预测,只要执行信号即可,操作简单客观,收益稳定,能帮助我们把握市场,运筹帷幄。

5