国外五大股票交易系统,及其源码

更新时间:2024-06-30 19:56:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

交易系统

交易系统

定义

交易系统是指在交易市场中能实现稳定赢利的一套规则。它包括科学的资金管理,有效的分析技术,良好的风险控制。它的最终目的是实现交易员的稳定赢利。它可分为主观交易系统、客观交易系统和两者相结合的交易系统。一个交易系统就是一个交易员的心血结晶,它体现了交易员的交易哲学。因此它不具有普适性,即一个交易系统只有在它的创造者手中才能发挥出最大效果。所以对交易员来讲,只有打造出自己的交易系统才能走上稳定盈利的道路。

简介

在股票、期货业内,交易系统的叫法很混乱,也很杂,不仅一般股民、期民;市民不详,包括一些业内人士虽常把交易系统挂在嘴边、甚至述之笔端,而实际上也不知所云,特别是一些软件制作与经销商,更出于推销的目的,故意夸大产品性能,模糊交易系统与一般行情播报软件或者行情的辅助分析软件的本质差异,更加剧了这种混乱的情况,很不利于交易系统的研究、交流与开发.操作。 什么是交易系统?从简单的概念上讲,交易系统是系统交易思维的物化。系统交易思维是一种理念,它体现为在行情判断分析中对价格运动的总体性的观察和时间上的连续性观察,表现为在决策特征中对交易对象、交易资本和交易投资者的这三大要素的全面体现。关于系统交易思维涉及的内容很多,这里不可能予以更多篇幅作为重点来讨论。但有一点必须指出,交易系统既然是系统交易思维的物化,就绝非是当前市面上哪些单纯的行情播报软件或者行情的辅助分析软件可比的。

来源

交易系统(Trading System)这个词在二十世纪七十年代末期始流行于华尔街(未做严格考证)。大约在二十世纪九十年代中后期跟着一批海归这个词进入国内投资界。目前国内关于交易系统的专著尚不多,其中波涛的《系统交易方法》公认为经典之作,其他还有一些,如王大毅的《赢家思路》、金石的《永久生存》、朴铁军的《波段赢金》。另外雪峰的《股市技术分析实战技法》其实也谈得很多而且很实在。国外引进的书有范·撒凯的《通向金融王国的自由之路》,这本书

主要从趋势跟踪系统的角度来谈,不是很全面。遗憾的是amazon上排名靠前的几本国外交易系统经典著作都没有被翻译进来,如《Design, Testing, and Optimization of Trading Systems》这样的好书。

分类

在统计套利及高频交易之外,交易系统一般可归为五大类型: 一、趋势跟随交易系统(Trending Systems)

趋势跟随交易系统是在高频交易曝光前最流行也是最热门的交易系统类型。最早的趋势跟随交易策略成形于20世纪早期,主要利用移动平均线进行买入、持有、卖出。之后,由于有了计算机生成的开仓以及平仓信号,当今的趋势跟随系统更为完善和成熟。但是,无论怎样现代化,趋势跟随系统都会在某些市场情况下失效。

趋势跟随系统盈利的假设是股票或者期货市场正在形成一个较强的上升或者下降趋势。通常意义下,我们认为较强的上升或者下降趋势是指价格沿着大于35度角的上升或者下降通道运行,并且回撤较小。比如在上升趋势中,调整幅度较小并且获利平仓盘不明显。

从历史数据来看,市场在30%—35%的时间内时处于趋势行情中。在趋势行情中,通常有某些因素导致投资者更为贪婪(在上升趋势中)或者更为恐惧(在下降趋势中)。投资者的这些极端情感和行为往往导致市场价格快速变化。趋势跟随系统就是利用这样的优势,往往能够在较短的时间内获得丰厚的利润。 为了抓住市场的大趋势,交易研究者开发出了相应的趋势跟随系统。这些趋势跟随系统是很受交易者欢迎的,因为每一个交易者都希望简单、快速地赚到钱。那么趋势交易的劣势是什么呢?作为一个趋势交易者,你需要在趋势性强的市场或者是带有一定速度的投机市场中进行交易,振荡行情或者是无趋势的市场将会是这些交易者的噩梦。

趋势系统主要有摆动系统、当日交易系统、动能系统或者其他较快节奏的交易系统。止损往往伴随着各种趋势交易系统,因为趋势交易系统的理念就是不断亏小钱以捕捉几次赢大钱的机会。因此,作为趋势交易投资者,你必须具有承受这些风险的能力,并且有足够多的资金去抵消这些交易损耗。 如上所述,趋势交易系统的最大制约因素就是它只能应用于市场出现趋势时,尽管目前来看市场大概只有30%的时间处于趋势状态。如果交易者尝试将趋势系统应用于快速振荡行情中,那么他们一定会连续亏损直至退出。假设交易者不能认识到市场是否适合趋势交易,那么他们将会损失大量的金钱和时间。 二、反趋势交易系统(Countertrending Systems)

反趋势交易系统是与市场的主流趋势、长期趋势相反交易的系统。通常认为,最佳判定主流趋势的方法是利用周K线而不是利用日K线。反趋势顾名思义就是相反方向的策略。反趋势系统存在的历史已经超过几十年,但并未在中小投资者中流行开来,它被冷落是由于投资者的本性所导致的。

反趋势交易是在较短的时间周期或者中级时间周期做与主流趋势相反的交易。本质上,是在市场进入超卖或者超买状况下持有相反的头寸。

作为一个反趋势交易者,通常需要在市场中有长期丰富的经验。一般来说,振荡交易者、日内交易者、短线交易者是反趋势交易的主体。反趋势交易成功的关键在于反趋势指标、特殊的K线图以及相当充足的交易经验。反趋势交易者通常在趋势转换前做出预判。

与趋势交易系统或者突破交易系统相比,由于反趋势交易系统是逆向交易,因此通常伴随更大的交易风险。所以,作为反趋势交易者,必须具备更好的止损素质或者止损策略。这是因为主流趋势往往是势不可挡的,而反趋势的交易机会瞬间即逝并且带有更为严重的投机倾向,很有可能存在连续做错方向的情况。统计表明,反趋势交易系统在20%的情况下是奏效的。 三、突破交易系统(Breakout Systems) 20世纪50年代,突破交易系统首次出现在市场中,市场情况与此时的情况一样。1929年股灾刚过,并且股市由于第二次世界大战的原因表现极为疲软。区别于美国1990年投机氛围浓厚的股市,1950年到1960年的股市更倾向于股票本身的价值投资。突破系统在当时的市场条件下几乎是最优策略。

突破交易系统适用于市场在建立调整平台之后在没有任何先兆的情况下价格突然向上(或者向下,但是向上突破的交易系统使用更为广泛)运行的情况。 在投机氛围并不浓厚的情况下,市场基于本身的内在价值往往会构筑一个平台或者说箱体。之后,交易者尤其是大户根据基本面的突变会抢入很多筹码,这就使得价格突变上升并且加速上扬。

突破交易系统与趋势交易系统相比的优势在于,突破交易系统可以应用于无趋势或者剧烈振荡的市场中。作为突破交易系统的应用者,理解跳空缺口并且知道它的影响显得尤为关键。跳空缺口往往是突破交易系统巨额利润的开始。 那么突破交易系统的缺陷是什么呢?该系统区别于趋势跟随系统,它在具有强烈趋势的市场中表现并不尽人意。因为在强烈的趋势市场中,并不存在很明显的箱体形态。

根据无趋势市场或者箱体市场的特性,一般我们把止损点设置在箱体的上方(如果向上突破的话)。与趋势跟随系统相比而言,这样的设置有较好的支撑位。趋势跟随系统很可能存在连续错误的情况,而突破系统较少存在这样的情况。根据统计,突破交易系统在40%—50%的时间中都是有效的。 四、价格区间交易系统(Trading Range Systems)

价格区间交易系统是20世纪后半叶发展起来的交易系统,当时市场在一个大的区间内上下波动。该交易系统在1970到1980年间是美国股票市场最为流行的系统之一。

适用于价格区间系统的市场通常发生在经济停滞的时间段中。从历史情况来看,一般市场出现崩盘后会进入到一个价格区间中,此时市场处于经济转型期。 价格区间市场有别于无趋势市场,处于该状态的市场振荡幅度较大并且有明显的最低和最高值。因此既不适用趋势跟随更不适用于突破系统,通常认为最小波动区间至有10%才能称为价格区间市场。

价格区间系统是利用在价格区间内波段循环的特点:持有头寸直到最高价被触发,然后卖空头寸等待股票价格下跌。价格区间系统交易者在价格上升时买入,在价格下跌时卖出。在市场处于价格区间状态下,这是一种完美的盈利模型,并且能为有经验的投资者带来丰厚的利润。 价格区间系统的局限性在于:首先市场通常不处于一个价格波动区间内,除非正处于一个特殊的经济时期;其次价格波动区间不会总是精确的,可能本次的高点

比上一次高,也可能比上一次低。价格区间交易者总是默认为价格的走势会重复之前波段的走势,因此这种类型的交易者需要大量的市场经验。统计表明,价格区间系统在20%—25%的时间内是有效的。 五、对冲系统(Hedging Systems)

对冲系统的成熟和流行是由于20世纪末机构交易者的加入。机构交易者由于有巨额的资金量,单边投机存在较大风险,因此多个股票商品的组合成为他们规避风险的最佳手段之一。

对冲系统的交易者在买入某一个商品或者股票后会卖出另一个商品或者股指来规避单边持仓的风险。比如在期货市场中,交易者会买入家畜卖出玉米;在外汇市场中,交易者会买入一种货币卖出另外一种货币;股票市场中,交易者买入股票卖出股指。

相对于上述4种交易系统,对冲系统更为复杂并且需要更多的专业知识和技巧。交易者的背景知识不仅局限于交易的股票信息,更需要了解相关的商品、货币走势以及期权情况,因此对冲系统并不适用于初级交易者。 专业的交易者利用对冲系统去解决不同的周期持仓,比如短期和中期情况。而初级交易者则往往适得其反,只是利用对冲系统去控制他们的损失而已,甚至是扩大损失——这也是对冲系统所存在的缺陷。对于没有专业教育背景和市场知识的投资者,对冲系统只会加大他们的损失,给他们带来更大的伤害。 交易系统已经发展了将近一个世纪了,根据不同的市场状况,各个交易系统都曾兴衰没落过。在今后的市场发展中,不同的交易系统也会有不同的演变,甚至有诸如高频交易这样的新兴系统崛起。只有充分了解系统如何运作、如何发展、何时运用,我们才能明智地选择适合当前市场的状况的交易系统。

基本特征

系统交易思维是“道”,“道”的物化则是“器”。交易系统作为“器”,应该具有如下基本特征。 反映交易对象、交易资本和交易者的特征 交易系统必须反映交易对象的价格运动特征,其中包括价格运动的趋势和价位,前者,为交易决策提供交易的战略方向,后者,提供交易的战术出入点,因此,交易系统必须具有一个的行情判断子系统,而这个子系统至少要具有趋势判断模块和价位判断模块两个基本的组成部分。 交易系统必须反映交易资本的风险特征。就风险交易对象的价格运动特征来讲,其某个具体时间空间的个别价格运动的随机性和价格总体运动的规律性是偶然与必然的对立统一,因此,在承认风险交易对象价格运动的规律可以揭示的同时,亦必须承认价格的随机扰动是不可避免的,是与其规律性共生共存的。由于价格的随机扰动的存在,必然造成行情判断子系统出现判断失误,从而造成交易风险。交易风险是具体的,其表现就是可能造成或者实际造成交易资本的损失,风险的大小则由亏损占交易资本的比例来衡量。并且,资本本身也具有独特的风险特征,譬如,资本占用时间的长短、资本的来源、投资的目的等等,都会对资本的风险属性构成影响。因此,交易系统仅仅具有行情判断功能是不行的,还必须具有风险控制功能,交易系统在结构上必须具有风险控制与资金管理子系统,从而在满足资本的风险特征的同时,达到精确量化地控制风险、保护资本的效果,进而实现资本的增殖要求。

交易系统还必须反映交易者(投资人)的人性特征。交易方法本身是科学的艺术,是具有艺术性的科学。其中,交易方法受价格运动特征和资本特征的制约,这种制约是科学性的体现,但交易方法还必须受到人性的制约,具有投资人的激进型、保守型或者稳健型的个性色彩,否则,交易系统则不能为人所接受。交易系统的人性特征,则导致了交易方法的艺术性,并具体体现为带有人性色彩的不同的交易策略。因此,交易系统如果是私密性的,则必然具有其研制人使用人的文化、性格、经验等个性特点;而交易系统如果是半开放性的的用于基金投资的交易工具,则应该具有可以容纳不同人性特征的交易策略库,以达到适应基金董事层或者具体的交易实施管理层人性特点的可选择性要求。 能够适应实战的需要

交易系统必须能够实时监控交易的全过程,能够独立自动完成价格信息的采集、整理、存储、分析决策及交易指令的下达,并且,这个指令必须包括交易日期时间、客户代码、交易对象名称、代码、交易方向、交易目的、交易数量、交易价格等全部指令要素。交易系统在执行上述任务的时候,必须达到替代并超越人工方式的标准,跨越人力的生理心理局限,满足人类设计使用交易系统的目标。从上述功能标准考虑,交易系统若欲达到这一标准,则必须是一个以价格信息网络和指令传输网络为通道、以计算机为载体的智能程序系统。

在设计、完善和运用交易系统的实践中,出于专业的兴趣,通过各种渠道自然而然地接触了很多声称拥有交易系统的人,然而实际调查的结果,至今没发现一个真正拥有交易系统的。其中,比较典型的情况有两种:

第一种是把其他交易软件称为交易系统的。譬如:把钱龙、胜龙、世华金融家、指南针等以行情播报功能为主兼具行情辅助分析功能的软件称为交易系统;把金仕达等客户网络交易指令下单系统称为交易系统。这些软件不具备风险控制和资金管理功能,也没有交易策略库,更不具备独立智能决策及下达交易指令的功能,因此,不能称为交易系统,而只能叫作行情播报软件、行情扶助分析软件或者网络交易指令下单与传输管理系统。

第二种情况是一些交易员自称拥有交易系统,而实际上却并没有物化的实体,其中多数只是一些行情判断的指标组合或是较为初步的系统交易思路而已。这些没有物化形态的所谓交易系统,即使是较为完善的系统交易思想,也仍然不具备交易系统的特征而不能称为交易系统。

使用

交易系统的重要性越来越受到投资者的关注。随着中国期货市场的发展,投资者由原来的盲目交易正逐渐转向理性投资,由被动的跟盘转向由交易系统来指导自己的交易。实际上,在期货市场长期获利的交易系统应该存在,但交易系统对于交易者来讲仅仅只是一件交易工具,也并不是任何人用同样的交易系统都会得出同样的交易结果的。获得了交易系统和通过交易系统来获利完全不是一回事,运用交易系统的能力远比交易系统本身更为重要。

评判一套交易系统,至少应包含以下几方面:是否有明确的交易信号;风险能否有效控制;是否具有可操作性;是否具有获利能力;是否适合自己。

如今,寻找或购买一套交易系统并不困难,交易系统本身已不是什么秘密,只要你愿意就可以拥有一套甚至若干套交易系统,但如何获利却仍是秘密。对大多数投资者来讲,运用交易系统进行交易和自己摸索所得的交易结果差别并不大,长期获利依然是可望而不可及的。投资者会发现在模拟交易中系统很好用,而一旦进入实战则似乎并不是那么好用。个中原因就在于投资者并未真正了解交易系统,或者这套交易系统并不适合他,而更关键的因素则可能是他根本就不具备运用交易系统的能力。 要想通过交易系统获利,首先就必须正确认识交易系统,同时自己的交易能力一定要和交易系统相匹配。运用交易系统的能力表现在两个方面:如何度过系统的困难时期;如何充分发挥系统的优势。

千万不要认为具有获利能力的交易系统可以保证你每笔交易都成功!任何的获利都是由亏小赢大组成的,任何交易系统都有弱点,亏损不可避免。对于趋势跟踪系统来讲,它不要求盈利的次数大于亏损的次数,它只要求不断地用小的止损去寻找大的获利机会,这样的系统需要使用者做好不断接受小额亏损的准备。而对于短线交易系统来讲,它更注重追求赢利次数大于亏损次数,它追求准确率。所以,投资者在选择交易系统时一定要清楚哪种系统适合自己,切不可盲目选择。短线交易要求投资者密切关注市场的一举一动,波动就是他的利润来源,在交易中不能有任何干扰;而趋势交易则相反,它忌讳仔细盯盘,仔细盯盘会破坏他对趋势的整体把握,波动是他的亏损之源,他只需关注市场的趋势是否改变即可。但市场上大部分的投资者都是用仔细盯盘的方式来企图获取趋势利润,这导致他们对短线和趋势都无法把握。

系统交易的本质是处理正在发生的情况,而不是处理未来将要发生的情况,它是根据交易信号来交易,而不是预测市场来交易。但期市中有很多人是花费太多的时间来应对未来将要发生的情况,而对正在发生的情况却不知所措。这导致他的交易无法有效地进行。他总想走在市场前面却忽略市场的现实情况,从而使他的交易处于虚幻之中,缺乏现实的基础。这有违交易系统的本质。正确的交易思想是运用交易系统的前提!

在系统处于亏损时期时,不要轻易认为系统需要改变或更换,亏损是正常现象,必须接受,此时应告诉自己如何来提高处理困难的能力和耐心。而在系统的获利时期,切不可耍小聪明,认为可以运用自己的交易能力来提高系统的效率,此时遵守纪律胜过一切!系统的困难时期可以提高你的交易能力,系统的收获时期则可以考验你的自律精神!

对于系统交易者来讲,市场的涨跌已不重要,重要的是对交易信号的执行。因为系统的交易信号经常会与你对市场的看法相矛盾,很多的交易机会就是在投资者的犹豫彷徨中错失的,这也是导致使用同样的交易系统其交易结果大不一样的关键所在。市场无论是涨还是跌,系统在关键时刻都会发出交易信号,认真执行交易系统可以大大简化我们的交易,使交易更加简单有效,这也是为什么交易系统这么重要的根本原因。

另外,使用交易系统必须保持适当的灵活性。同样的交易系统不同的人使用,交易结果一定不一样,有人赚,有人亏,有人大赚,有人大亏,关键还在于使用者的运用能力。交易永远不可能跟数学公式一样!交易系统具有相对的机械性,而

适当的灵活就如同润滑油,可以使这部机器更好地运转,润滑油就是你的交易能力和应变能力。

所以,在使用交易系统之前,千万不要盲目乐观,获利的关键还是在于你的交易能力,系统只能帮你解决部分难题,而不是全部。

交易师

“认识你自己”是铭刻在古希腊廊柱上的名文,同时也是每一个交易师铭刻于心的交易名言。交易系统是交易师的工具,拥有交易系统是期货市场持续稳定获利的必要条件,但并非重要条件。这说明拥有一个好的交易系统是取得投资成功的良好开端,但最终能否取得成功还必须交易执行者即交易师的配合。在交易过程中最难的还是人的心态,有句话说得好,\性格决定命运”,在交易中则是性格决定了交易工具的选择和交易的最终成败。 交易师认为:短线交易者不适合用趋势系统进行交易,短线交易者需要仔细盯盘,并洞察其中的蛛丝马迹,在交易中精力必须高度集中,不能受到丝毫的影响。而对于趋势交易者来说则不用盯盘,不为盘面的涟漪所干扰,甚至仔细看盘成了趋势交易者之大忌讳。这种截然不同的方法,来自于两种不同交易者的交易性格使然,不同的性格决定了不同的关注点和不同的交易方法以及不同的交易工具。 短线交易系统更强调的是系统的成功率,即要求赢利次数要明显大于亏损次数,其奉行的投资哲学是“薄利多销,积少成多”;趋势交易系统则更注重的是小亏大赢,用不断的止损做为成本和代价去换取大的趋势利润,趋势交易者对成功率并不敏感,有些趋势交易系统的赢利次数甚至小于亏损次数,但其最终却是赢利系统,这充分说明了趋势系统所奉行的投资哲学是“厚利薄销,小亏大赢”。对于短线交易和趋势交易这两种交易方法而言没有孰是孰非,孰优孰劣之分,关键看其能否适合交易者的性格。因此短线交易者选择短线交易系统作为其交易工具,中线交易者选择趋势交易系统作为其交易工具,是交易师与交易系统的良好搭配。当然有经验的交易师会在短线系统和趋势系统之间找到较佳的结合点。如在前一段时间,《交易师天胶中线交易系统》一直处于“持币观望区”,在此期间,趋势交易者既可停止交易也可起用短线系统进行辅助交易。 交易系统和交易师的无缝连接才构成真正意义上的盈利系统。它包括以下几个方面的深刻涵义:

1、正确认识你自己,认清自己适合短线交易还是趋势交易。如果你对盘面波动非常敏感,建议你使用 短线系统,如果你认为短线的波动并不能让你体会到交易所带来的快乐,你应该属于趋势交易者,建议你使用趋势系统进行交易。 2、交易系统是否具有明确、量化、唯一的交易信号。

3、交易系统是否通过历史检验,即检验该系统在过去的盈利分布情况是否符合标准。

4、交易系统是否通过历史外推检验,即检验该系统在历史分区的盈利分布是否符合标准。

5、交易系统是否通过实战检验,实战检验是交易系统检验过程中最重要的一个环节,实践是检验真理的唯一标准,很多模拟交易比赛的佼佼者为什么会在实际交易中一塌糊涂?很多历史检验完美无缺的交易系统投入实战为什么总不能让

人得心应手?个中关键相信你读了本文后应该豁然开朗,《交易师期货中线交易系统》是经过长期历史检验和近3年实战检验的系统,是趋势交易者的首选交易工具。如今《交易师期货短线交易系统》已经完成了历史检验的过程,正在经历最后的实战检验阶段,并将在国庆节后奉献给投资者,请投资者密切关注。 6、在执行系统信号时应不折不扣,不要心存犹豫。对系统的犹豫主要来自于系统亏损时期的信心衰竭,“月有阴晴圆缺,人有悲欢离合”,正是由于瑕疵的存在,才构成了真正的完美。首先我们应认识到交易系统的亏损期属于正常现象,此时期才是真正考验和提高交易师交易水平的时期,是考验交易师应对困难、处理困难能力的时期,是培养交易员稳健交易风格和耐心交易品质形成的重要时期。

实践证明:能在系统亏损时期,并尚能一如既往地执行交易信号的投资者才是真正的、少数的赢利者。因为未来是不可预测的,在事前人们并不知道这是系统的困难时期,而这个时期往往是已经在其成为历史之后才能被发现,因此这个时期的交易信号如果你没有去执行,很可能就会漏掉行情。交易系统并不试图去预测价格的空间和时间,系统唯一做的就是把握现在,活在当下,是处理正在发生事情的反应式交易,而不是处理尚未发生事情的预测式交易。很多人毕其一生心血研究期货预测技术,而忽略了正在发生的现实,导致其交易操作严重缺乏现实基础。因此交易师不愿再听到所谓的“你认为天胶明天是不是要涨?”的低水平提问,因为交易师根本无法回答这个问题。

误区

理解方面

投资行业很多人都知道交易系统这个概念,虽然常常把交易系统挂在嘴边,但事实上能够正确认识交易系统、了解交易系统的组成部分和制作过程的投资者并不多,而且相当一部分投资者对交易系统存在着各种各样的误解。对交易系统全面的、正确的认识应该是这样的:交易系统是一套完整的交易规则,这一交易规则是客观的、惟一的、量化的,它严格规定了投资的各个环节,要求投资者完全按照其规则进行操作。其组成部分包括:预测分析模块、风险管理和投资策略。预测分析模块的功能是给出入场出场信号;风险管理的功能是保护资金和利润;投资策略的功能是指示在不同的实际情况下的具体操作。对交易系统认识的误区有以下几方面,导致这些误区的根源是这些投资者对交易系统缺乏全面的认识。由于对交易系统缺乏了解导致的误区 误区一 交易系统的功能是为了节约时间一套设计完整的交易系统确实能够大大节约交易人员的时间,但这只是交易系统本身给交易人员带来的若干项好处中的一项,甚至可以说是附带的一项好处。因为一套完整的交易系统给投资者作了严格的原则约定,投资者必须完全按照交易系统给出的指示进行操作,可以说不允许投资者对出入场以及头寸控制进行灵活处理。所以,只要按照交易系统操作,投资者就不需要每天盯盘。事实上许多投资者每天盯盘所花费的时间非常多,尤其是一些盯外盘的投资者。使用了交易系统,盯盘这项操作就交给了交易系统来处理,投资者只需按照交易系统给出的信号执行即可。但节约时间并不是交易系统的功能所在,交易系统的功能在于稳定地获取利润。很多投资者认为自己获得利润的能力很强,没必要设计一套系统来限制自己的灵活性。其实这些投资者是错误地将获取利润的经验当作获取利润的能力了。可以说绝大多数投资者都曾经有过赢利的历史,但他们并不一定具备赢利的能力。如果能够给这些投资者提供一套功能良好的交易系统,对他们来说重要的不是节约了时间,而是使他们赚了钱。 误区二 交易系统是一个预测系统。交易系统的重要组成部分是给出买入和卖出的信号,每一个买入卖出信号必然对应的是对未来行情的研判。一个买入信号意味着交易系统发现行情的走势符合一个既定的特征,这个既定的特征代表调整已经结束或者价格发生了原则性的突破,从熊市转变为牛市。因而,交易系统认为可以买入,但这一信号并不意味着行情将有 100%的可能性发生转变,有时候信号也会出错,甚至出错的可能性在某一时间段还会很高。如果投资者按照这一信号大举买入,重仓甚至满仓操作,其风险将不能得到控制,很可能使投资者损失惨重。其实,分析预测功能只是交易系统的一部分,交易系统还有其他两个重要的组成部分:风险管理、投资策略。这三个部分是相辅相成的,缺少任何一部分,交易系统都是残缺的,都不能很好地管理投资。如果只把交易系统作为一个预测系统,不注重风险管理和投资策略,投资者即便有较好的买入或卖出机会,也可能会亏损出局。只有良好的风险管理、投资策略与预测系统相配合,在信号正确的情况下,尽可能扩大盈利;在信号错误的情况下,可以及时止损退出,这样的交易系统才是完整的交易系统。 误区三 交易系统就是电脑程序认为交易系统就是电脑程序的人很多,事实上人们在电脑上可以看到的交易系统只是它的一个主要的物化表现形式,人们称之为程式交易系统。其实,交易系统并不一定需要通过电脑程序来体现,如果人们可以将预测分析、风险管理、投资策略定量化、原则化、惟一化,并形成一个人工识别的组合(不通过电脑实现),这样的组合也是一套交易系统。但由于人们在交易系统的制作过程中需要进行大量的数据统计、分析工作,这些工作如果由人工来做既费时又费力,而使用电脑就可以极大地改善交易系统制作效率,可以及时地将系统制作人的思想体现出来。而且,将交易系统放到电脑上,由电脑给出各个信号,这样的信号更加客观,可以促使交易员更好地执行交易系统,避免人为情绪的波动对投资产生影响。因此,大多数交易系统都是程式交易系统。由此我们可以看出,程式交易系统并不仅仅只是一个电脑程序,它是预测、风险管理、投资策略这一组合在电脑中的物化,是很复杂的一套体系。

设计方面

误区一 交易系统就是指标的优化很多交易系统的制作者认为,交易系统就是优化之后的指标,因此这些制作者热衷于使用分析家、SUPERCHAT等股票分析软件的指标优化功能,每天对每个指标进行计算并赋予特定的参数。其实这些人犯了两个错误,一是将交易系统的预测分析部分误认为是交易系统的全部,忽略了风险管理和投资策略,但实质上这两部分有时候比预测分析部分更重要。二是交易系统的预测分析部分除了指标的优化之外,还包括投资理念的体现。首先,制作预测分析部分时,制作者必须对目标品种的走势非常了解,并已经具备了良好的技术分析手段,即使没有经过优化,制作者也能人为的比较准确地进行分析。其次,制作者必须将若干的条件进行组合,不仅仅是对已有的指标进行优化,更重要的是将自己的分析思路程序化,或者可以说是编出一个新的复合指标。这些复合指标经过调试之后再通过优化来提高性能。这样才能构成交易系统的预测优化部分。 误区二

交易系统的利润总额是最重要的,能够获得利润最大的交易系统就是最好的交易系统交易系统的利润总额确实是衡量交易系统好坏的重要依据,但绝对不是最重要的,如果将通过历史数据检验能够获得最大利润的系统应用在实践之中会发生很多问题。首先,这一利润总额与用来计算的历史数据的年限有关,可能某一年的利润额特别高从而导致几年的利润额也高,这样的系统在实践中是不可取的,因为我们不知道未来的行情是否与该系统历史中获得高利润额的行情相似,或者说很可能不一致,如果未来的行情不一致,使用这套系统就不能获得高利润,甚至可能会赔钱。其次,我们在实践操作中首先应该避免市场风险,在此基础上再去获取稳定的受益,如果将追求利润总额高放在首位必然要承担较大的风险。因此,交易系统应该首先是安全的,有能力避免市场的风险,其次应该稳定,能够保证在不同的情况下都能赢利,然后再去获取尽可能大的受益。

实施方面

误区一

交易系统使用的人很多,因而不能盈利这种观点其实是将交易系统与普通的常用软件混为一谈,他们认为如果使用的人多了就会不准确,影响利润。交易系统是很个性的,它是交易思想的物化体现,因为每个人的交易思想都不可能是一样的,因而这些交易系统在使用过程中并不会产生一致的行为。这些系统使用的人多了确实与常用软件没什么区别,在实践使用过程中会降低利润,但这本质上可能还是因为该交易系统的质量有问题,毕竟好的交易系统完全可以通过市场获得高额利润。 误区二

交易系统比较机械,只能作参考有这种看法的人对交易系统的本质没有搞清楚,交易系统的本质是为了帮助投资者提炼自己的交易思想,形成一个标准化的规范并约束投资者按照规范进行投资操作,避免人为的情绪波动产生的损失。交易系统是投资者制作的,投资者的交易思想如果比较机械,那形成的交易系统就会比较机械;如果投资者的交易思想比较灵活,那形成的交易系统就比较灵活。当然并不是所有的投资者都能将自己的思想提炼并形成交易系统的,只有成熟的交易思想才能形成交易系统。事实上,我们平时能够看到的交易系统都是一些指标的优化、或没有体现风险管理和交易策略的预测分析体系,这些所谓的交易系统并不是真正的成熟的交易系统,在指导操作的过程中确实比较机械。 误区三

交易系统的利润是理论上的,但在实际中做不到有一些交易系统确实会碰到这些问题,这些交易系统大多数是盘中出信号的交易系统。在实际操作中,这些信号出现后如果不能通过计算机及时下单,每次都要人工在信号出现之后下单,就会产生一定的滞后,而且成交价格也可能不利,因而在实际操作中的利润总是没有电脑模拟盘的利润高。但出现这种问题的根源并不在于交易系统实现的利润是理论化的,而是在于这些交易系统的设计存在问题。交易系统是为了给投资者提供直接的交易支持并帮助投资者遵守既定的原则,如果在实践中使用盘中即时的信号指导操作不能实现,那投资者应该按照他能接受的某一特定时间的信号进行操作,比如收盘时按照是否有信号进行收盘价的操作。事实上,盘中给出的信号常常是虚假的,比如盘中价格向上突破了某一关键的阻力位,交易系统因此发出了一个买入信号,而随后价格又跌回该阻力位之下,该信号随之消失。如果按照这种虚假的信号进行操作,将会导致不必要的损失。 误区四

交易应该保持连续性。很多交易员有了经过测试能稳定盈利的交易系统,但是仍不能盈利,从而怀疑交易系统的正确性。其实有时候可能是自己交易不连续引起的。一个系统的准确率不可能能达到百分之百,所以面对错误就好做好止损。如果连续碰到几次止损行情,交易员都进场了,但是碰到盈利的行情,交易员却因为各种原因而未进场,那么长期下来也是亏损的。正确的做法是:把握住每次进场的机会,不要错过任何一次机会,因为你不知道下次机会是赚还是亏!

大家好,刚刚来到TB社区,我今年20岁,目前在美国读书准备学习金融工程专业。我的父母是国内私募基金的操盘手,从大概八岁起就逐步接触股票期货和各种金融产品的交易。从最开始的巴菲特式的buy and hold策略,到后来研究长期资本管理公司的无风险套利策略,再到巴菲特,罗杰斯式的宏观对冲策略,以及国内外著名炒单手的日内超短线策略。其间我还研究了德州扑克的打法并获得了pokerstrategy的钻石会员。我研究自动化交易很多年了,以前主要在MT4平台上设计和制作用于外汇市场自动化交易程序,这是我的实盘账户在线网址:carpower007.mt4live.com过去六个月盈利超过300%资金回撤小于10%.最近受一个私募朋友的委托开发适应国内期货市场的自动化交易程序.在这里我将分享我设计自动化程序的每一个步骤,包括测试报告和代码,由于我在TB方面还是新手希望各位前辈能够多多指点.大家如果常去国外的交易系统论坛的就会发现那里的老外非常有分享精神,一来有很多人把自己已经非常成熟的交易系统的源代码分享出来,二来只要有人提出想法就会有很多智同道和的人帮助他完成交易系统编程工作,通过这样的分享他们的平均水平越来越高.而国内的交易系统设计者们却总是闭门造车,很少互相分享互相帮助.我希望通过我的分享在我们的社区里掀起分享互助的热潮,有更多的高手分享出交易策略有更多的程序员愿意帮助论坛里的朋友编写指标和交易策略使我们的整体交易水平越来越高.

在接下来的几篇帖子里我将和大家分享我收集破解的800多个国外自动化交易程序中最优秀的几个的原理,并和大家一起探讨如何把他们移植到国内的交易市场里.这些系统包括:

1.基于交易时段选择和高低点突破的Hans123突破系统

2.适应震荡市场的EA scalper pro剥头皮系统(我外汇实盘用的系统)

3.适应震荡市场的ea boss剥头皮交易系统(汇友曾经有过2周22倍资金回撤0.89%的实盘交易记录)

4.基于新闻公布和基本面瞬时变化的自动化交易程序Luckey news5基于随机漫步原理和金字塔加码的稳健盈利ea point Break 5和其升级版DTS6用于eurgbp eurusd gbpusd的三角套利程序。其中ea boss和ea scalper pro都有一套完整的震荡市场过滤系统如果移植到国内相信对大家的交易应该很有帮助.由于外汇市场的交易手续费大都在百分之二以上.从赌博数学和金融数学的概率期望角度来分析,所有在外汇市场上有效的系统,在国内千分之三的手续费条件都应该是有效的而且利润应该是国外系统的数倍.

首先我来介绍第一个系统Hans123突破交易系统.

大家知道外汇市场主要分为三个交易时段,亚洲盘.欧洲盘和美洲盘.还有一个是只有电子盘交易的时段.其中电子盘和亚洲盘由于参与者较少,和亚洲金融机构实力较小的缘故,行情主要以上下震荡为主,这段时间是趋势交易者的地狱,但是是逆势剥头皮交易的天堂,很多准确率超过99%且风险很小的暴利策略都是针对这个交易时段的设计的(比如ea scalper pro和ea boss)这里我们后面再详细讨论.欧洲盘和美洲盘是参与者最多的时段,是最适合进行突破交易的时段,hans123就是一个非常典型且非常有效的自动化交易策略,它的基本原理是开盘一定时间内突破前一个市场的最高价或最低价顺势做多或做空,经过对止损止盈等参数的优化这套系统可以应用到几乎所有的外汇品种中并且盈利稳定,下面是具体的交易策略.

--交易规则— 初始策略

1)找出亚洲盘的最低最高点,在欧洲开市时. 2)挂单最高价+5点买进,最低价-5点卖出。 3)美洲盘开市前平掉所有仓位.

1)找出欧洲盘最高最低价在美洲盘开市时. 2)挂单最高价+5点买进,最低价-5点卖出。 3)美洲盘收市前平掉所有仓位 EUR/USD:

Buy Stop = 最高价 + 5; 止盈 = Buy Stop + 80; 止损 = Buy Stop - 50; Sell Stop = 最低价 - 5; 止盈 = Sell Stop - 80; 止损 = Sell Stop + 50;

有30点浮动利润时将止损移至开仓价位。(30点追踪止损) GBP/USD:

Buy Stop = 最高价 + 5; 止盈 = Buy Stop + 120;

止损 = Buy Stop - 70; Sell Stop = 最低价 - 5; 止盈 = Sell Stop - 120;

止损 = Sell Stop + 70;有40点浮动利润时将止损移至开仓价位。(40点追踪止损) 每日早7点,平掉手上所有单子。

实盘使用的时候建议大家根据品种波动率来优化止盈止损等参数以达到最好的效果,这个mt4里可以用遗传基因算法优化来搞定很快,TB上目前用的还是穷举法,期待老大给咱们开发一下呵呵.

以下是原贴地址里面包括交易系统的模板和自动化交易程序国内好像给屏蔽了可能得翻墙 http://www.forex-tsd.com/expert- ... 785-hans123-ea.html

我各人优化以后这个系统的年均盈利在100%左右,资金回撤20%,使用的是分笔成交数据.后面我传了一份国际黄金期货的测试报告这个大家相对外汇还要熟悉一些,大家参考一下。

下面来谈谈如何把这个系统移植到国内的期货市场中来.

我目前的基本想法是这样的,hans123可以有以下几种移植方法

1突破昨日最高最低点5点顺势开仓.收盘前关仓.设置止盈止损追踪止损,止盈止损都设置成参数,以便根据品种波动率优化.这里最好加一个限制开仓时间的参数便于优化交易时段,因为根据我的经验一般来讲每个品种的有效突破都集中在一个特定的时段,并以此时段为中心进行正态分布排列。所以优化交易时段对这个策略来讲非常重要。这个在后面我共享的一个外汇市场的统计表里有说明,大家可以参考(进一步优化的filter:交易时段优化,ATR,Keltner Channel,KDJ等)

2突破前一个交易时段的最高最低点5点顺势开仓,本交易时段结束前平掉所有仓位。设置止盈止损追踪止损,止盈止损追踪止损都设置成参数以便根据品种波动率优化。加一个限制开仓时间的参数便于优化交易时段。(进一步优化的filter:交易时段优化,ATR,Keltner Channel,KDJ等)

我在论坛里逛了下发现了几个和我想法相似的朋友下面是他们已经完成的代码的整理,有些功能还没有实现各位前辈老大可否倾囊相授,告诉我如何实现这些功能,多谢了:)这个突破系统不要nextbar发送功能只要根据所有的即时价位来发出交易信号。另外希望能精确到分钟

1简单的昨日高低点突破系统:

这个系统我希望高手可以帮助我把那些加仓反手的功能都去掉,或者设置成可以开关的功能然后加入止盈止损和追踪止损并加入交易时间限制,使得我可以针对品种波动率优化参数。

日内高低点突破交易系统

//------------------------------------------------------------------------ // 简称: todayHLCross // 名称:

// 类别: 交易指令

// 类型: 其他 // 输出:

//------------------------------------------------------------------------ /*

日内开盘区高低点机械突破系统 */

Params

Numeric maxLots(1);//单次开仓手数 Numeric maxTrad(4);//最大交易次数

Numeric minSpt(15);//最小开仓间隔bar数

Numeric splitRate(3); //交易滑点和佣金

Numeric tradBegin(930); //开仓时间 Numeric tradEnd(1430); //开仓截止时间

Numeric closeTime(1457); //bar的时间超过此值后平仓,一分钟交易=1457 Vars

Numeric splitDot; //交易滑点

Bool bc(False);//开多条件 Bool sc(False);//开空条件

Numeric tradePrice(0);

NumericSeries hh; NumericSeries ll;

Begin

splitDot=splitRate*MinMove();

If(BarStatus==0) {

hh=High; ll=Low; Return; }

if(Day !=Day[1]) {

hh=High;

ll=Low; } Else

If(Time<0.0001*tradBegin) {

if(High>hh[1]) hh=High; Else hh=hh[1];

if(Low

if(Time>=0.0001*tradBegin And Time<=0.1500) {

hh=hh[1];

ll=ll[1];

//穿越模式

bc=CrossOver(Open,hh) Or CrossOver(High,hh) Or CrossOver(Low,hh) Or CrossOver(Close,hh) ;

sc=CrossUnder(Open,ll) Or CrossUnder(High,ll) Or CrossUnder(Low,ll) Or CrossUnder(Close,ll);

if(MarketPosition == 0) {

// 当前无仓,开始建立多头 if(bc) {

if(BarStatus==2) tradePrice= Q_AskPrice +splitDot; Else tradePrice=hh+splitDot;

Buy(maxLots,tradePrice); } Else

// 当前无仓,开始建立空头 If(sc ) {

if(BarStatus==2)tradePrice= Q_BidPrice -splitDot; Else tradePrice=ll-splitDot;

SellShort(maxLots,tradePrice); } }

//----------------------------------------------------------------------------- Else {

if(MarketPosition > 0 ) {

// 当前多仓,加仓多头

if(bc And BarsSinceLastEntry>minSpt) {

if(BarStatus==2) tradePrice= Q_AskPrice +splitDot; Else tradePrice=hh+splitDot;

Buy(maxLots,tradePrice);

} // 当前多头,要求反转为空头 if(sc) {

if(BarStatus==2)tradePrice= Q_BidPrice -splitDot; Else tradePrice=ll-splitDot;

// 平多头开空

SellShort(maxLots,tradePrice); } //持仓处理,止损止盈平仓 //........ }

//----------------------------------------------------------------------------------------------- Else

if(MarketPosition < 0 ) {

// 当前空仓,加空头

If(sc And BarsSinceLastEntry>minSpt) {

if(BarStatus==2)tradePrice= -splitDot; Else tradePrice=ll-splitDot;

SellShort(maxLots,tradePrice); } // 当前空头,要求反转为多头 if(bc) {

if(BarStatus==2) Q_AskPrice +splitDot; Else tradePrice=hh+splitDot; //平空头,开多

Buy(maxLots,tradePrice);

}

//持仓处理,止损止盈平仓 //........ }

} } End

//------------------------------------------------------------------------ // 编译版本 GS2004.06.12 // 用户版本 2008/11/18 18:49 // 版权所有 fish0451

Q_BidPrice tradePrice= // 更改声明 TradeBlazer Software保留对TradeBlazer平台

// 每一版本的TrabeBlazer公式修改和重写的权利 //------------------------------------------------------------------------

网友回复:

2定义时间段内高低点的函数: vars

NumericSeries TmpHiLine; Begin

If(Date!=Date[1]) {

TmpHiLine = InvalidNumeric; }else {

TmpHiLine = TmpHiLine[1]; }

If(Time >= 0.1100 && Time <= 0.1120) {

If(TmpHiLine == InvalidNumeric ) TmpHiLine = High; else

TmpHiLine = max(High,TmpHiLine ); }

PlotNumeric(\End

一个30分钟突破的日内系统

这个系统我认为缺乏一个有效的过滤器会造成很多无效突破,在过滤器中最简单有效的是交易时段过滤器正如我前面提到的有效突破总是集中在一天中的某一时段呈正态分布向两边展开。通过时间过滤器可以大大提高系统的成功率和稳定性。希望高手添加一下。

Params

Numeric nMins(30); // N分钟的突破

Numeric nOffset(3); // 突破式的价格偏移 Vars

NumericSeries HighestOf30Min; NumericSeries lowestOf30Min; Numeric myPrice; Numeric MinPoint; Numeric lots(1); Begin

MinPoint = MinMove*PriceScale; If(Date <> Date[1]) {

HighestOf30Min = High; lowestOf30Min = Low;

}Else If(Time < 0.0900+nMins*0.0001) {

HighestOf30Min = max(high,HighestOf30Min[1]); lowestOf30Min = min(Low,lowestOf30Min[1]); }Else {

HighestOf30Min = HighestOf30Min[1]; lowestOf30Min = lowestOf30Min[1]; }

If(High >= HighestOf30Min + nOffset*MinPoint && MarketPosition != 1) {

myPrice = HighestOf30Min + nOffset*MinPoint; If(Open > myPrice) myPrice = Open; Buy(lots,myPrice); }

If(Low <= lowestOf30Min - nOffset*MinPoint && MarketPosition != -1) {

myPrice = lowestOf30Min - nOffset*MinPoint; If(Open < myPrice) myPrice = Open; SellShort(lots,myPrice); }

If(Time >= 0.1459) {

Sell(lots,Open);

BuyToCover(lots,Open); } End

开拓者thermostat系统源码

源码内容:

inputs:

bollingerlengths(50), trendliqlength(50), numstddevs(2), swingprcnt1(0.50), swingprcnt2(0.75), atrlength(10),

swingtrendswitch(20); vars:

cmival(0),

buyeasierday(0), selleasierday(0), trendlokbuy(0), trendloksell(0), keyofday(0), swingbuypt(0), swingsellpt(0), trendbuypt(0), trendsellpt(0), swingprotstop(0);

cmival=choppymarketindex(30); buyeasierday=0; selleasierday=0;

trendlokbuy=average(low,3); trendloksell=average(high,3);

keyofday=(high+low+close)/3;

if(close>keyofday) then selleasierday=1; if(close<=keyofday) then buyeasierday=1;

if(buyeasierday=1) then begin

swingbuypt=open of tomorrow + swingprcnt1*avgtruerange(atrlength); swingsellpt=open of tomorrow - swingprcnt2*avgtruerange(atrlength);

end;

if(selleasierday=1) then begin

swingbuypt=open of tomorrow + swingprcnt2*avgtruerange(atrlength); swingsellpt=open of tomorrow - swingprcnt1*avgtruerange(atrlength); end;

swingbuypt=maxlist(swingbuypt,trendlokbuy); swingsellpt=minlist(swingsellpt,trendloksell);

trendbuypt=bollingerband(close,bollingerlengths,numstddevs); trendsellpt=bollingerband(close,bollingerlengths,-numstddevs);

if(cmival

if(marketposition<>1) then buy(\ stop;

if(marketposition<>-1) then sellshort(\ swingsellpt stop; end else begin

swingprotstop=3*avgtruerange(atrlength); buy(\ sellshort(\

sell from entry(\ stop;

buytocover from entry(\ average(close,trendliqlength) stop;

sell from entry(\ stop;

buytocover from entry(\ swingprotstop stop; end;

开拓者盈多亏交易策略源码

简称: JY

// 名称:盈多亏少 // 类别: 公式应用 // 类型: 用户应用

//------------------------------------------------------------------------

Params

Bool bInitStatus(false); Numeric InitMP(0);

Numeric MidLinel(5600);

Numeric MidLineLength(250); Numeric FirstGrid(3); Numeric TotalGrids(10); Numeric GridInterval(3); Numeric WinGrid(3); Numeric EveryLots(1); Numeric MidLineWeieht(1);

Numeric ExitOnCloseMins(14.50); Vars

Numeric MidLineWeight; NumericSeries midline; Numeric MinPoint; Numeric AvgOfClose; Numeric AskLine; Numeric BidLine;

NumericSeries RealMidLine; Numeric MyRealMp(0); Numeric TmpGridIndex; Numeric TmpPrice; Numeric TmpPriee; Numeric OpenDPrice; Begin

OpenDPrice= opend; if(day<>day[1]) {

midline=OpenDPrice; }Else {

midline=midline[1]; }

MinPoint=MinMove*PriceScale; MyRealMp=GetGlobalvar (0);

AvgOfClose =AverageFC(Close, MidLineLength); If (BarStatus== O) {

If(MyRealMp == InvalidNumeric || bInitStatus) {

MyRealMp=InitMP;

SetGlobalVar(0,MyRealMp); }Else

If(BarStatus==2&&A_AccountID!=\ {

If(Q_AskPrice <= 0||Q_BidPrice <=0 ) Return; } }

If(Q_BidPrice==Q_UpperLimit||Q_AskPrice==Q_LowerLimit) {

Return; }

If ((Time==0.0900||Time==0.1030||Time==0.1330)&&(High ==Low)) {

Return;

}

If (CurrentTime

RealMidLine=MidLine*MidLineWeight+AvgOfClose*(1-MidLineWeight);

AskLine=Q_AskPrice; BidLine=Q_BidPrice;

Commentary (\中线=\ Commentary (\叫卖价=\ Commentary (\叫买价\

If (MyRealmP<=0 &&BidLine>RealMidLine+FirstGrid*MinPoint) {

TmpPrice=RealMidLine+FirstGrid*MinPoint+Abs (MyRealMp)* (GridInterval*MinPoint);

TmpPriee=Ceiling (TmpPrice, Minpoint); Commentary (\开仓价=\ TmpGridIndex=1- IntPart ((BidLine-RealMidLine -FirstGrid*MinPoint)/(GridInterval*MinPoint));

If(TmpGridIndex=-1*TotalGrids) {

MyRealMp=MyRealMp-1; A_SendOrder (Enum_Buy, Enum_Entry, EveryLots, BidLine);

}//来源: www.cxh99.com }Else

If(MyRealMp>=0 && AskLine

TmpPrice=RealMidLine -FirstGrid*MinPoint -Abs(MyRealMp)*(GridInterval*MinPoint);

TmpPrice= Floor (TmpPrice, MinPoint);

Commentary (\开仓价=\ TmpGridIndex=1+Intpart ((RealMidLine- FirstGrid*MinPoint- AskLine)/(GridInterval*MinPoint));

If(TmpGridIndex>MyRealMp && TmpGridIndex<=TotalGrids) {

MyRealMp=MyRealMp+1;

A_SendOrder(Enum_Sell, Enum_Entry, EveryLots, AskLine);

}

}

If (MyRealMp>O) {

TmpPrice=RealMidLine-FirstGrid*MinPoint - (Abs (MyRealMp) -1) * (GridInterval*MinPoint) +WinGrid*MinPoint;

TmpPrice = Ceiling(TmpPrice, MinPoint);

Commentary (\平仓价 =\ }Else

If (MyRealMp

TmpPrice=RealMidLine+FirstGrid*MinPoint +(Abs (MyRealMp)- 1 )*(GridInterval*MinPoint) -WinGrid*MinPoint;

TmpPriee = Floor (TmpPrice, MinPoint);

Commentary (\平仓价=\

} TmpGridIndex=-1-

IntPart((AskLine-FirstGrid*MinPoint+WinGrid*MinPoint-RealMidLine)/(GridInterval*MinPoint));

TmpGridIndex=min (0, TmpGridIndex); If(TmpGridIndex>MyRealMp) {

MyRealMp=MyRealMp+1; A_SendOrder (Enum_Sell, Enum_Exit, EveryLots,AskLine);

TmpGridIndex=1+IntPart((RealMidLine-FirstGrid*MinPoint+WinGrid*MinPoint-BidLine)/(GridInterval*MinPoint));

TmpGridIndex=max (0, TmpGridIndex);

}

If(TmpGridIndex < MyRealMp) {

MyRealMp=MyRealMp-1; A_SendOrder (Enum_sell, Enum_Exit, EveryLots,BidLine);

} }Else

If(CurrentTime> ExitOnCloseMins/100) {

If(MyRealMp>0) {

MyRealMp=MyRealMp-1;A_SendOrder(Enum_Sell,Enum_Exit,EveryLots,BidLine); }Else

If(MyRealMp<0) {

MyRealMp=MyRealMp+1;A_SendOrder(Enum_Buy,Enum_Exit,EveryLots,AskLine); } }

SetGlobalVar(0,MyRealMp); Commentary(\实际仓位=\ Commentary(\当前时间=\ if(Q_LastTime >0.145000 and CurrentTime<0.150000) {

A_SendOrder(Enum_Sell,Enum_Exit,1,Q_BidPrice);

A_SendOrder(Enum_Buy,Enum_Exit,1,Q_AskPrice); } End

美国权威交易系统评选 前十大交易系统排名

据美国权威交易系统评选杂志《Futures Truth Magazine》2011 年10 月

最新发布的交易系统排名,NatGator、Catscan、DCS II 等模型的业绩

在过去一年进入了前十名榜单,前三名模型年收益率均在200%以上。

前十大交易系统排名(过去1 年)

排名交易系统名称 年收益率 %

1 NatGator 237.80%

2 Catscan

3 DCS II

4 Strategic

5 Sidewinder

6 ATS 6400

7 Aberration

8 Waverider

Moving Average

9

Reversal

10 Top Ten System

注:收益截至2011 年7 月31 证金。

前十大交易系统排名(自系统发布以来)

排名交易系统名称

222.10% 215.90% 173.50% 169.90% 169.00% 167.90% 166.30% 164.40% 162.60% 收益率计算基于3 倍保 年收益率 % 日,

1 Delphi II Agressive 170.50%

2 Trend Finder Tiger 162.50%

3 TSL_CEL_NG_1.1 161.90%

4 Natural Gas Offense 157.60%

31

前十大S&P 交易系统排名

5 Trend Finder Lion 2 141.90% 6 Auto Core Duo 90.10% 7 Propero ES 81.80% 8 Dual Thrust 81.70% 9 TSL_SP_1.0Z 76.90% 10 Trend Weaver 74.60% 注:交易系统必须发布18 个月以上,收益截至2011 年7 月日,收益率计算基于3 倍保证金。 排名交易系统名称 年收益率 % 1 FT Classic 107.30% 2 TSL_SP_1.0Z 76.90%

3 TSL_CEL_SP1 74.50%

4 Keystone 54.10%

5 Impetus SP 50.50%

6 Big Blue 2 49.60%

7 Strategic 500 45.50% 8 STC SP Daytrader 42.00%

9 R-Breaker 37.10%

10 %C Daybreaker 36.30%

注:排名基于系统发布以来业绩,收益截至2011 年7 月31

收益率计算基于3 倍保证金。

前十大一致性最好的交易系统

交易系统名称 开发者

Aberration Keith Fitschen

Andromeda Petros Development Corp.

Brix Alfaranda CTA

Checkmate Strategic Trading Systems

Dollar Trader for

日,

Dave Fox

Currencies

Golden SX Randy Stuckey

R-Breaker Richard Saidenberg

Ready-Set-Go longtermtrading.com

STC S&P Daytrade Stafford Trading Company

Trendchannel John Tolan

开拓者上唇下鄂指标+交易策略源码

上唇下鄂指标源码: Vars

NumericSeries MidPrice; // 定义变量用于保存高低价的平均值。 NumericSeries Value1; // 定义变量用于保存SMA值 NumericSeries Value2; // 定义变量用于保存SMA值 NumericSeries Value3; // 定义变量用于保存SMA值 NumericSeries Value4; // 用来保存中间变量 Begin

MidPrice = (High + Low)/2; Value1 = SMA(MidPrice,5); Value2 = SMA(MidPrice,8); Value3 = SMA(MidPrice,13);

PlotNumeric(\上唇\ PlotNumeric(\牙齿\ PlotNumeric(\下颚\

Value4 = Value2[5];

If(CrossOver(Close,Value4))

{

PlotNumeric(\ }

If(CrossUnder(Close,Value4)) {

PlotNumeric(\ } End

思路是这样的,当价格从上往下穿越牙齿的时候开空单并且平掉多单,股价从下往上穿越牙齿的时候开多单并且平掉空单,

===================================================================

上唇下鄂交易策略源码:

Vars

NumericSeries MidPrice; // 定义变量用于保存高低价的平均值。

NumericSeries Value1;

NumericSeries Value2;

Begin

MidPrice = (High + Low)/2;

Value1 = SMA(MidPrice,8);

Value2 = Value1[5];

If(CrossOver(Close,Value2))

{

Buy(1,Close);

}

If(CrossUnder(Close,Value2))

{

SellShort(1,Close);

} End

开拓者逐风破浪交易系统源码 部份品种实盘不错 日内交易

源码内容:

Params

Bool bInitStatus(false);//初始化标志,修改初始仓位时需设置为True Numeric InitMyRealMp(0);//初始当前仓位,正数表示多单,负数表示空单 Numeric FirstGrid(10);//第一笔交易的间距,最小跳动 Numeric AddGrid(30);//加仓间距,最小跳动 Numeric TotalGrids(10);//最大交易次数

Numeric TrailingGrid(10);//移动止损间距,最小跳动 Numeric EveryLots(1);//每次开仓手数

Numeric OffSet(1);//委托价偏差,默认买卖价偏差1个滑点 Numeric ExitOnCloseMins(15.00);//收盘平仓时间 Vars

Numeric HighAfterlongEntry; Numeric LowAfterShortEntry; Numeric MyRealMp(0); Numeric MinPoint; Numeric TmpPrice; Numeric TmpLots; Begin

MinPoint=MinMove*PriceScale;//当前商品最小变动量*当前商品的计数单位 MyRealMp=GetGlobalVar(0); //获取MyRealMp全局变量值 HighAfterlongEntry=GetGlobalVar(1); LowAfterShortEntry=GetGlobalVar(2);

If(BarStatus==0 And (MyRealMp==InvalidNumeric||bInitStatus))

{MyRealMp=InitMyRealMp;} If(Date<>Date[1])

{HighAfterlongEntry=High; LowAfterShortEntry=Low; MyRealMp=0; }Else

{HighAfterlongEntry=Max(HighAfterlongEntry,High); LowAfterShortEntry=Min(LowAfterShortEntry,Low);} if (Time0 And HighAfterlongEntry-Low>=TrailingGrid*MinPoint And(High-Low=TrailingGrid*MinPoint And Close

{TmpPrice=Max(HighAfterLongEntry-(TrailingGrid-OffSet)*MinPoint,Low); TmpLots=Abs(MyRealMp*EveryLots); Sell(TmpLots,TmpPrice); MyRealMp=0;

LowAfterShortEntry=Low; }else

If(MyRealMp<0 And High-LowAfterShortEntry>=TrailingGrid*MinPoint And (High-Low=TrailingGrid*MinPoint And Close>Open))) {TmpPrice=Min(LowAfterShortEntry+(TrailingGrid+OffSet)*MinPoint,High); TmpLots=Abs(MyRealMp*EveryLots); BuyToCover(TmpLots,TmpPrice); MyRealMp=0;

HighAfterLongEntry=0;}

If(MyRealMp==0 And High-LowAfterShortEntry>=FirstGrid*MinPoint)//第一笔多单开仓

{TmpPrice=Min(LowAfterShortEntry+(FirstGrid+OffSet)*MinPoint,High); TmpLots=EveryLots; Buy(TmpLots,TmpPrice); MyRealMp=1;

HighAfterLongEntry=High; }Else

If(MyRealMp>0 And MyRealMp=(FirstGrid+MyRealMp*AddGrid)*MinPoint)//多单加仓

{TmpPrice=Min(LowAfterShortEntry+(FirstGrid+MyRealMp*AddGrid+OffSet)*MinPoint,High);

TmpLots=EveryLots; Buy(TmpLots,TmpPrice); MyRealMp=MyRealMp+1; }else

If(MyRealMp==0 And HighAfterLongEntry-Low>=FirstGrid*MinPoint)//第一笔空单开仓

{TmpPrice=Max(HighAfterLongEntry-(FirstGrid-OffSet)*MinPoint,Low); TmpLots=EveryLots;

SellShort(TmpLots,TmpPrice); MyRealMp=-1;

LowAfterShortEntry=Low; }else

If(MyRealMp<0 And -1*MyRealMp=(FirstGrid+Abs(MyRealMp*AddGrid))*MinPoint)//空单加仓

{TmpPrice=Max(HighAfterLongEntry-(FirstGrid-Abs(MyRealMp*AddGrid)-OffSet)*MinPoint,Low);

TmpLots=EveryLots;

SellShort(TmpLots,TmpPrice); MyRealMp=MyRealMp-1;} }else

If(Time>=ExitOnCloseMins/100) {If(MyRealMp>0)

{TmpLots=Abs(MyRealMp*EveryLots); TmpPrice=Close; Sell(0,TmpPrice); MyRealMp=0;} If(MyRealMp<0)

{TmpLots=Abs(MyRealMp*EveryLots); TmpPrice=Close;

BuyToCover(0,TmpPrice); MyRealMp=0;}}

SetGlobalVar(0,MyRealMp);

SetGlobalVar(1,HighAfterLongEntry); SetGlobalVar(2,LowAfterShortEntry);

Commentary(\

Commentary(\ End

完整的包括止损,移动止赢交易策略实例 金字塔[其他期货软件]

使用说明:

代码工作在图表自动交易模式下

当出现开仓后,开仓价格相比,最大损失超过2%止损

当出现盈利后,与最大盈利价格相比,回落到60%幅度后止赢离场

MA1:=MA(CLOSE,5); MA2:=MA(CLOSE,30);

variable:maxprofit=0;//有仓位时最大获利幅度

//开仓

IF CROSS(MA1,MA2) THEN BEGIN BUY(1,1); maxprofit:=0; END

//平仓

SELL(CROSS(MA2,MA1),0);

//判断当前持仓状态下的最大盈利 win:=0; win2:=0;

if holding > 0 and enterbars > 0 then begin

win:=(c-enterprice)/enterprice*100; //记录最大盈利 if win > maxprofit then maxprofit:=win;

win2:=(maxprofit-win)/maxprofit*100; //最大盈利后的回调幅度 end

if holding < 0 and enterbars > 0 then begin

win:=(enterprice-c)/enterprice*100; //记录最大盈利 if win > maxprofit then maxprofit:=win;

win2:=(maxprofit-win)/maxprofit*100; //最大盈利后的回调幅度 end

//出现浮动亏损比如2%平仓 止损:SELL(win < -2,0);

//出现最高盈利后,回落到盈利的60%平仓出场 止赢:SELL(win2 >= 60 and openprofit > 0, 0);

移动止损模版[其他期货软件]

使用说明:

该模版用于历史评测,不用于实盘交易。

该模版的亮点在于模块化和扩展性

理解模版精华后,各种思路可在模版里随便添加、删除、扩展等

//该模版用于历史评测,不用于实盘交易。 //该模版的亮点在于模块化和扩展性

//理解模版精华后,各种思路可在模版里随便添加、删除、扩展等 variable:zs=c,hl=c;//声明全局变量zs、hl ma5:=ma(c,5); ma20:=ma(c,20);

atr:=ma(h-l,20);//市场平均波动幅度

buycond:=cross(ma5,ma20);//平空开多条件 sellcond:=cross(ma20,ma5);//平多开空条件

if holding>0 then begin 多止损:zs;

if l

if holding<0 then begin 空止损:zs;

if h>zs then sellshort(1,1,limitr,max(o,zs)+mindiff); else if buycond then sellshort(1,1,limitr,c); end

if holding=0 and buycond then begin//多头开仓 buy(1,1,limitr,c); zs:=c-2*atr;

hl:=c;//hl开仓后的最有利价位,刚买入时,最有利价位为开仓价 end

if holding=0 and sellcond then begin//空头开仓 buyshort(1,1,limitr,c); zs:=c+2*atr; hl:=c;

end

if holding>0 and enterbars>0 and h>hl then begin//最高价抬升,止损位相应地抬升 hl:=h;

zs:=hl-2*atr; end

if holding<0 and enterbars>0 and l

zs:=l+2*atr; end

金字塔R-Breaker交易系统源码[金字塔模型]

runmode:0;

input:notbef(090000); input:notaft(145500); input:f1(0.35); input:f2(0.07); input:f3(0.25);

input:myreverse(1); input:rangemin(0.2); input:xdiv(3);

variable:ssetup=0; variable:bsetup=0; variable:senter=0; variable:benter=0; variable:bbreak=0; variable:sbreak=0; variable:ltoday=0;

variable:hitoday=999999; variable:startnow=0; variable:div=0;

variable:rfilter=false;

i_reverse:=myreverse*(callstock(stklabel,vtopen,6,0)/100); i_rangemin:=rangemin*(callstock(stklabel,vtopen,6,0)/100);

if barpos=1 then begin startnow:=0;

div:=max(xdiv,1); end

hh:=ref(hitoday,1); cc:=ref(close,1); ll:=ref(ltoday,1);

if date>ref(date,1) then begin startnow:=startnow+1;

ssetup:=hh+f1*(cc-ll);

senter:=((1+f2)/2)*(hh+cc)-f2*ll; benter:=((1+f2)/2)*(ll+cc)-f2*hh; bsetup:=ll-f1*(hh-cc);

bbreak:=ssetup+f3*(ssetup-bsetup); sbreak:=bsetup-f3*(ssetup-bsetup);

hitoday:=high; ltoday:=low;

rfilter:=hh-cc>=rangemin; end

if high>hitoday then hitoday:=high; if low

if time>=notbef and time=2 and rfilter then begin if hitoday>=ssetup and holding>=0 then begin if low<=senter+(hitoday-ssetup)/div then begin sell(1,holding,limitr,senter+(hitoday-ssetup)/div); sellshort(1,1,limitr,senter+(hitoday-ssetup)/div); end end

if ltoday<=bsetup and holding<=0 then begin if high>=benter-(bsetup-ltoday)/div then begin

sellshort(1,holding,limitr,benter-(bsetup-ltoday)/div); buy(1,1,limitr,benter-(bsetup-ltoday)/div); end end

if holding<0 then begin

if high-enterprice>=i_reverse then sellshort(1,enterprice+i_reverse); end

if holding>0 then begin

if enterprice-low>=i_reverse then sell(1,enterprice-i_reverse); end

//来源 www.88gs.com if holding=0 then begin if high>=bbreak then buy(1,bbreak); end

if holding=0 then begin if low<=sbreak then sellshort(1,sbreak); end end

if time>=notaft then begin if holding<0 then

sellshort(1,holding,limitr,open);

if holding>0 then

sell(1,holding,limitr,open); end

盈亏:asset-500000,noaxis,coloryellow,linethick2;

复制上述代码粘贴到公式管理器即可

TB顺势指标交易策略源码

简称: CCIapply // 名称: 顺势指标 // 类别: 公式应用 // 类型: 用户应用

// 来源: WW.CXH99.COM

//------------------------------------------------------------------------

Params

Numeric Para1(10); Numeric Para2(5);

Numeric Length(14); Numeric AvgLength(9); Vars

Bool Condition1;

Bool Condition2; Bool PreBreakoutFailure; NumericSeries TmpValue; Numeric Mean( 0 ); Numeric AvgDev( 0 ); Numeric Counter( 0 ) ;

NumericSeries CCIValue(0); NumericSeries CCIAvg;

Numeric ExitLowestPrice;

Numeric myEntryPrice; // 开仓价格 Numeric myExitPrice; // 平仓价格

NumericSeries preEntryPrice(0); // 前一次开仓的价格

Begin

TmpValue = High + Low + Close;

Mean = AverageFC( TmpValue, Length ) ;

AvgDev = 0 ;

for Counter = 0 to Length - 1 {

AvgDev = AvgDev + Abs( TmpValue[Counter] - Mean ) ; }

AvgDev = AvgDev / Length ;

if( AvgDev == 0)

CCIValue = 0; Else

CCIValue = ( TmpValue - Mean ) / ( 0.015 * AvgDev ) ; //求CCI值 CCIAvg = AverageFC(CCIValue, AvgLength );

If(BarStatus == 0) {

preEntryPrice = InvalidNumeric; PreBreakoutFailure = false; }

Condition1 =CCIValue>=CCIAvg&&CCIValue[1]CCIAvg[1];

If(Condition1) {

if (MarketPosition==-1) {

myExitPrice=c;

Commentary(\ BuyToCover(1,c); }

if (MarketPosition==0) {

myEntryPrice=Data0.close;

Commentary(\ Buy(1,close); } }

If(Condition1) {

If(MarketPosition==1) {

myExitPrice=c;

Commentary(\ Sell(1,c); }

If (MarketPosition==0) {

myEntryPrice=Data0.close;

Commentary(\ SellShort(1,close); } } End

//------------------------------------------------------------------------ // 编译版本 GS2010.12.08 CXH99.COM // 来源: www.88gs.com

// 版权所有 guitar1234

// 更改声明 TradeBlazer Software保留对TradeBlazer平台

// 每一版本的TrabeBlazer公式修改和重写的权利

多空价差平仓源码

咨询内容:

Params

Numeric M(1);

Numeric BarRef(30);//回溯bar的根数 Numeric MARef(30);//均线回溯天数 Vars

NumericSeries Spread(0); Bool CondInB(False); Bool CondInS(False); Bool CondExB(False); Bool CondExS(False);

Begin

If(Data0.Close!=InvalidNumeric&&Data1.Close!=InvalidNumeric) {

Spread=Data0.Close-Data1.Close; // 定义价差 //参数定义

//////////////////////////////////////

CondInB= Spread>Highest(Spread[1],BarRef); //做多价差 CondInS= Spread

CondExB= CrossUnder(Spread ,Average(Spread[1],MARef)); //做多价差平仓

CondExS= CrossOver(Spread ,Average(Spread[1],MARef) ); //做空价差平仓

/////////////////////////////////////////////////////画图

1分钟k线显示当日结算价的线(即是分时图里的黄线)

咨询内容: Vars

NumericSeries AmountCum; // 当日以来成交总额的合计值

NumericSeries VolCum; // 当日以来成交量的合计值 Begin

if(day!=Day[1]) {

Amountcum=close*Vol; volcum=vol; }else {

AmountCum = amountcum[1]+close*vol; VolCum = volcum[1]+vol;

PlotNumeric(\ }

本文来源:https://www.bwwdw.com/article/fuu3.html

Top