用户工具

站点工具


tradestation编程

利用这些系统作为基础或范例,自行编写系统。这些例子都包括Trade station(简易语言)编写的程序在内。

突破系统

突破系统可以算是历史最悠久、结构最简单、效果最理想的交易系统之一。此系统之所以能够有效运作,主要是因为信号发生在趋势开始或趋势重新开动之初。每个趋势或主要走势,都是由先前高点或低点的突破开始,如果你喜爱介入这类行情,就适合采用突破系统。采用这类系统必须有心理准备,因为突破经常是假突破。若是如此,你就会买在最高点或放空在最低点。既然如此,突破系统何以能够赚钱呢?因为只要把握少数有效的突破信号,获利程度通常就很可观,足以弥补多数假信号造成的损失。耐心的交易者特别适合采用突破系统,因为他们愿意等待突破之后的回调走势,而且在部位获利持续扩大的情况下,愿意继续持有。突破系统的使用者,很多都采用止损单作为进场工具。我不太赞同这种做法,因为突破当时很可能已经处在超买或超卖情况下,最好还是等待行情回调再考虑进场。我本身是采用一套系统来寻找符合突破条件的市场,然后在较短时间周期上,运用另一套系统来捕捉回调走势的进场点,从而提高交易的胜算。

最简单的突破系统,可以把进场信号设定为价格穿越最近X期的最高价(或最低价)。至于部位的出场或止损,留待本章稍后讨论。现在让我们先处理进场信号。

Trade station的使用者,可以把买进信号设定如下:翻译:

Input:Length(10)

If Close>High(High,Length)〔l〕Then Buy on Close

输入变数:长度(10)

如果收盘>最高价(盘中高价,长度)〔1〕则在收盘买进

如果收盘价高于从前一期起算的最近10期(长度)最高价,则买进。(译者注:所谓“收盘”是指线形本身的收盘价,不是每天收盘价。如果采用5分钟走势图,每5分钟就有一个收盘价。)

“输人变数:长度(10)”这让你很容易调整最高价的回顾期间长度。一套系统的所有输人变数都摆在最顶端。〔1〕是指期间长度是由前一期起算,不是由当期起算。由于在收盘之前,你不能确定当期的最高价究竟是多少,所以不能把当期最高价考虑在信号设定内。

如果你希望在当期收盘之前就买进,则可以采用:

If High>High(High,Length)〔1〕Then Buy 如果收盘>最高价(盘中高价,长度)〔1〕则买进

为了避免被假突破欺骗而造成信号反复,可以在系统内加人滤网作为缓冲。这有很多处理方式。就目前考虑的例子来说,第一种方法是把最近10期最高价加上几点。换言之,唯有当价格高于最近10期最高价的点数超过特定程度之后,才接受买进信号:

If C>High(H,10)〔l〕+5 Points Then Buy on C 如果收盘>最高价(盘中高价,长度)〔1〕+5点则在收盘买进

你也可以利用价格波动率作为滤网。价格波动程度会随着行情或市场而变动,如果价格波动转剧,突破的确定就必须更谨慎。突破系统内,你可以加上1个标准差的滤网,来过滤一些偶发性的突破走势。对于买进信号,标准差缓冲可以加在最近X期最高价。你可以把这个条件直接设定在信号上,也可以另外考虑。我的做法如下:

Buffer=Stedev(Close,10)〔1〕

If C>High(H,10)〔l〕+Buffer Then Buy on C 缓冲=标准差(收盘价,10)〔1〕

如果收盘>最高价(盘中高价,长度)〔1〕+缓冲则在收盘买进

换言之,缓冲定义为当期之前最近10期收盘价的1个标准差。另外,我们也可以考虑采用移动平均突破系统,缓冲则设定如下:如果收盘价连续处在35期移动平均之上2天,则买进。这也可以确保不会只是1天行情。对于这类的缓冲,你也可以采用3天、4天或任何期间。

If Close>Average(Close,35)And Close〔1〕>Average(Close,35)[l〕Then Buy 如果收盘价>平均值(收盘,35),而且收盘〔1〕>平均(收盘,35)〔1〕,则买进

换言之,如果当期收盘价大于当期起算的35期收盘价平均值,而且前一期收盘价大于前一期起算的35期收盘价平均值,则买进。

此处或许还需要考虑另一个条件:成交量明显扩大。如果交易系统的信号条件不止一个,就必须把它们结合起来。例如:

Inputs:Length(10),Lengthv(5)

Condition1=High>Highest(High,Length)〔l〕

Condition2=Volume>(Average(Volume,Lengthv)*1.25)

If Conditionl And Condition2 Then Buy On Closer 输入变数:长度(10),长度V(5)

条件1=盘中高价>最高价(盘中高价,长度)〔1〕

条件2=成交量>{平均值(成交量,长度V)*1.253}

如果条件1与条件2都成立,则收盘买进

第一个条件也就是稍早提到的突破条件,换言之,价格突破最近10期的最高价。第2个条件则是成交量构成的滤网,当期成交量超过最近5期平均成交量的1.25倍。所以,如果成交量没有明显放大,即使价格发生突破,交易系统也不会出现买进信号。

某些突破系统需要一些特殊价格形态的配合,如:通道、趋势线、双重顶等,这些形态很难纳人电脑程序。对于这类系统,恐怕必须直接采用走势图来判断信号。虽然不能编写为电脑程序,但毕竟有一组明确的交易法则,所以也是交易系统。

趋势跟踪系统趋势跟踪交易方法,主要采用移动平均与趋势线。由于趋势线很难纳人电脑程序,所以趋势跟踪系统最好采用移动平均。如果想配合价格形态运用,恐怕就必须运用视觉交易系统。

如同先前讨论的突破系统一样,依靠趋势跟踪系统建立的部位,持有时间越久,绩效通常也越理想。如果行情来回摆荡,趋势跟踪系统就非常不适用。为了避免信号反复,最好采用较长期的移动均线。不过,有利就有弊。长期均线虽然可以避免信号反复,但也同时会造成信号不够及时的问题,当系统发出信号时,行情可能已经发展一大段了。所以,究竟如何在长期与短期均线之间掌握,这是交易者必须自己决定的。另外,请注意,移动平均本身就属于落后指标。不论涨势或跌势,唯有行情发展一段时间之后,既有趋势才会慢慢反映在移动平均。换言之,移动平均反映的趋势,是发生在稍早之前。任何系统只要采用移动平均,信号就会落后。但只要趋势足够强劲,这类系统仍然能够捕捉大部分的行情。

最基本的移动平均系统,当属两条平均线构成的穿越系统。如果短期均线向上穿越长期均线,则买进。

Input:Length1(10),Length2(35)

If Average(Close,Length1)Cross Over

Average(Close,Length2)Then Buy On Close 输入变数:长度1(10),长度2(35)

如果平均数(收盘,长度l)向上穿越

平均值(收盘,长度2),则收盘价买进

10期均线向上穿越35期均线,代表买进信号。虽然信号发生在当期结束,但可以在下一期开盘时采取行动,因为在当期还没有收盘之前,无法十分确定包含当期收盘价在内的移动平均数值。有时移动平均看起来似乎会穿越,但临收盘前可能突然发生逆转。你也可以对其稍微改变,利用前一期资料而在当期开盘买进:

Input:Length1(10),Length2(35)

If Average(Close,Length1)〔l〕Cross Over

Average(Close,Length2)Then Buy On Open 输入变数:长度1(10),长度2(35)

如果平均数(收盘,长度l)〔l〕向上穿越

平均值(收盘,长度2)〔l〕,则开盘买进

系统还可以设定另一个条件,规定只能顺着50期或200期均线的变动方向进行交易,使得部位不至于违背主要趋势。至于移动平均的变动方向,则可以比较目前起算的50期均线与10之前起算移动平均:

Input:BarsBack(10)

Condition1=Average(C,50)>Average(C,50)〔BarsBack〕 输入变数:数期前(10)

条件1=平均数(收盘,50)>平均值(收盘,50)〔数期前〕

除此之外,你可能还希望买进信号发生时,价格不要远离移动平均,否则就有追价之嫌。就我个人来说,我会要求当时价格与移动平均之间的距离,不得超过1平均真实区间;除了平均真实区间之外,当然也可以采用标准差或点数。以下利用35期均线来说明:

Input:Length2(35),ATRlen(10)

Condition2=[C-Average(C,Length2)]<ATR[ATRlen(10)] 输入变数:长度2(35),ATR长度(10)

条件2=[收盘一平均数(收盘,长度2)]<平均真实区间[ATR长度(10)]

关于移动平均在趋势跟踪系统内的运用,各种可能性都有,此处只提供几个例子供读者参考。

摆荡指标为基础的交易系统不论如何强调趋势跟踪交易的重要性,但有些人就是想要猜测底部或头部。对于这些逆势交易者,以摆荡指标为基础的交易系统或许十分有用。如果行情处在盘整区间,在支撑与压力之间来回游走,最适合运用摆荡指标系统在超卖区买进,在超买区卖出,尤其是短线交易。如果你希望永远留在市场内,也适合采用摆荡指标为基础的交易系统。关于如何运用摆荡指标结构电脑化系统,可能性虽然很多,但摆荡指标的最佳信号—价格与指标之间的背离—却很难编写为电脑程序。通常,背离现象都必须在走势图上通过视觉判断。可是,除此之外,我们可以运用很多方式编写摆荡指标的电脑化系统,以下准备讨论一些可能性。

首先,让我们讨论随机指标的例子:如果慢速K线向上穿越慢速D线,则买进。

Input:Length(14)

If Slowk(Length)Crosses Above SlowD(Length)Then Buy On Close 输入变数:长度(14)

如果慢速K线(长度)向上穿越慢速D线(长度),则收盘买进

另外,还可以规定,当穿越信号发生时,慢速K线与慢速D线都必须处在超买区(适买区域)。穿越信号发生时,由于慢速K线必定高于慢速D线,所以只需要规定慢速D线的读数限制。

Tnput:Length(14),BuyZone(30)

If Slowk(Length)>S1owD(Length)and S1owD(Length)Crosses Above BuyZone Then Buy On Close 输入变数:长度(14),适买区域(30)

如果慢速K线(长度)>慢速D线(长度)而且慢速D线(长度)向上穿越适买区域,则收盘买进

我们也可以利用RSI结构类似的系统:

Input:RSILen(10),BuyZone(30)

If RSI(Close,RSILen)Crosses Over BuyZone Then Buy On Close 输入变数:RSI长度(10),适买区域(30)

如果RSI(收盘,RSI长度)向上穿越适买区域,则收盘买进

交易者可以根据自己的观点设定适买区域。如果你认为RSI只要超过50就可以规定买进信号发生时的指标读数不得超过买线:

Input:SellZone(70)

Condition1=SlowD(Length)<SellZone 输入变数:适卖区域(70)

条件1=慢速D线(长度)<适卖区域

最后,我准备讨论一个适用于强劲趋势的系统。换言之,买进信号发生时,机指标处于超买区。虽然超买区通常不适合买进,但在不同市场状况下(大多头行情),随机指标很可能长期停留在超买区。此处的买进信号准备采用另一个技术指标ADX(平均趋向指数)。当ADX显示强劲的涨势,而且随机指标超过某读数,则买进。

If ADX(10)>30,And SlowD(14)>85,Then Buy On Close 如果ADX(10)>30,而且慢速D线(14)>85,则收盘买进

我们稍后会详细讨论出场策略,但目前这个例子要规定,只要随机指标读数小于70,就结束多头部位,因为强劲趋势已有软弱的迹象。同样,此处只讨论随机指标的少数运用例子。读者不妨回头翻阅第7章,或许可以得到一些结构交易系统的新点子。

根据市况进行调整

交易者必须保持弹性,根据市场状况调整策略。震荡剧烈的市场,所用的交易系统通常不同于趋势明显的行情。如果我看到市场震荡剧烈,通常都会在场外观望,或者采用随机指标为基础的系统,绝对不会用移动平均系统。这种情况下,尤其要避免采用突破系统。我不会在高价附近买进,反而会在此寻找放空机会。如果市场趋势很明显,我就会采用趋势跟踪指标,只利用摆荡指标明确趋势,或等待回调走势。这类市场状况下,我不会猜测价格头部,只会利用摆荡指标寻找超卖区的买进机会。

平均趋向指数(ADX)往往可以协助你判断市场趋势的明确程度。如果ADX读数低于20,你可能采用某套系统;如果ADx高于30,则采用另一套系统。

程序可以编写如下:If ADX(Length)>30,Then Trending Market System Else

If ADX(Length)<20,Then Choppy Market System Else;Middle Ground System

翻译:如果ADX(长度)>30,则采用趋势跟踪系统

如果ADX(长度)<20,则采用行情震荡系统;否则就采用中间性质系统

止损与出场

除非设定止损(停止)与出场参数,否则交易系统算不上完整。在整个交易过程中,出场的重要性,最起码也与进场相同。只提供进场信号的交易系统,就像初学者第一次在陡峭的斜坡滑雪,刚开始,你觉得很快乐,但可能要撞墙才能停下来。绝对不好玩,请相信我。获利是在出场时才结算,所以不要忽略出场的重要性。我的交易系统往往也有出场设定,但实际上大多在另一个时间周期上通过视觉方法决定出场时机。某些情况下,在出场信号发生之前,由于没有发生预期中的走势,我已经决定结束部位。你没有必要流失部分的获利,也没有必要被止损出场。一笔交易只要不再有效,就出场。如果稍后又出现转机,到时候再进场,现在没有必要冒险。

停止反转系统或许是设定出场策略最简单的交易系统。换言之,只要某些条件成立,预设的止损单就生效,不但结束既有部位,同时也建立反向部位。根据这类系统,你永远会停留在市场内,或是持有多头部位。可是,这种系统有一个问题:在短线使用上,你可能会逆势操作;换言之,部位方向与市场主要趋势不同。过去我经常采用停止反转系统,但现在如果碰到逆势信号,我通常都留在场外。

止损我个人采用的每个系统,都采用标准化的止损。只要行情偏离进场点达两个标准差或以上,我就认赔出场。

多头部位出场,距离收盘进场[标准差(收盘,10)]〔1〕则止损。

收盘进场是指当初进场线形的收盘价。采用这类止损,你必须定义进场信号。下面例子把进场信号定义为:

如果慢速K线(长度)向上穿越慢速D线(长度),则在收盘买进。

止损也可以设定为价格跌破移动平均达某个缓冲距离:

如果收盘<〔平均值(收盘,长度l)-缓冲〕,则多头部位出场。

或者当价格跌破最近5天的低点,则止损:

如果收盘<最低价(盘中低价,5)〔1〕,则多头部位出场。

出场除了停止—-反转系统之外,另一种常见的出场方法,是在特定线形数量之后出场。

当随机指标进入超买区,则出场;或者,当行情远离趋势线或移动平均,则出场。

一旦价格与移动平均之间的距离拉大到5个标准差,系统就产生出场信号,因为意味着涨势已经过度延伸,终究会拉回整理。此处只讨论一些可能性,读者应该自行测试,寻找自己最适用的交易法则。你也可以设定一组以上的出场或止损法则,只要有任何一组条件成立,就出场。

多套系统你没有必要只采用一套系统。某些人同时运用多套系统在特定股票或商品上。他们可能采用5套系统,如果每套系统都发出相同信号,就建立5个相同部位。如果信号彼此冲突,经过抵消之后,可能只建立一个部位。这是相当不错的方法,因为某些系统特别适用于震荡行情,另一些则适用于趋势明确的市场。对于每种可能发生的市场状况,都有一种特别适用的系统;那么不论市场状况如何,你都可以应对。如果很多系统都发出类似的信号,通常意味着交易绩效将很好。这种情况下,应该采纳所有的信号,部位规模也会扩大。

tradestation编程.txt · 最后更改: 2020/02/21 12:05 由 101.39.113.86