译自
必胜外汇原创翻译
KELTNER交易系统
KELTNER交易系统以移动平均线计算为主要指标,移动平均线计算X周期的 (收盘 高 低)/3 平均值。通常x是固定的数值。实际上,数据越多,新的数据对计算结果的影响越小。长期移动均线试图解决长期趋势运动,相反,短期移动平均线可以图察觉短期市场波动。切斯特*凯特1960年提出了这个移动均线系统。买入信号发生在当市场价格穿越上轨,卖出信号发生在当市场价格穿越下轨。我们可以应用基本的KELTNER方法,但需要增加一些辅助规则。我们希望,市场移动均线向一个方向移动,他是趋势发生变化的信号。必胜外汇 www.eastmoney.com作品在KELTNER系统中,上下波段的穿透被视为趋势改变的信号。我们将跟随趋势在强势中买入在弱市中卖出。我们将在市场折回移动均线的时候平仓离场,不管赢利或亏损。
系统主要问题在于通道突破系统会出现假突破。大多数时间里,通道展示出市场出现趋势转折。但是,有些时候市场移动到上轨或下轨后,立即回来朝相反的方向运动。这个是我们最担心的。然而,自从我们认识到这个类型系统的弱点,我们设计了程序止损--移动均线。当严格按照系统交易的时候,会有许多交易失败并且被止损。成功的交易将弥补这些短小的损失,并且让利润持续。这个是基本的交易原则。
资金管理。你的交易系统让你进入交易,资金管理则管理你的头寸直至最终合理离场。在Keltner系统中,移动均线的指示和轨道的穿越是我们入场交易的方法,移动均线系统帮助我们管理头寸。我们的资金管理(止损)可能是保护性止损(亏损)也可能是盈利性止损(止赢)。如果我们抓住了长期趋势,移动均线应该朝我们入场的方向移动,跟随信号,我们将获得满意的赢利。Keltner系统是一个长期趋势系统,短期盈利不是我们的目标。如果按照计划,我们将获利。但是这个类型的系统很少超过50%的成功率,少数大的趋势将弥补多数小的亏损。
大多数均线系统都是非常简单的程序,这个也不例外,我们仅仅需要计算:(1)最高、最低、收盘价的移动平均线。必胜外汇 www.eastmoney.com作品(2)真实波幅的平均线。每日的真实波幅的计算就是每日最高价、最低价的加减。例如:昨日的真实波幅=MAX(昨日收盘,当日最高价)-MIN(昨日收盘,当日最低)。因为我们努力获取长期移动趋势,我们将用40日参数为我们平均参考计算。
KingKeltner Pseudocode(自然语言描述。必胜注:自然语言是编程时表述思路用的,介于计算机语言和日常语言之间,据此可较容易实现编程)
movAvg=Average(((High Low Close)/3),40)
upBand=movAvg Average(TrueRange,40)
dnBand=movAvg–Average(TrueRange,40)
liquidPoint=Average(((High Low Close)/3),40)
Alongpositionwillbeinitiatedwhentoday'smovAvgisgreaterthan
yesterday'sandmarketaction>=upBand
Ashortpositionwillbeinitiatedwhentoday'smovAvgislessthan
必胜外汇 www.eastmoney.com作品yesterday'sandmarketaction<=dnBand
Alongpositionwillbeliquidatedwhentoday'smarketaction
<=liquidPoint
Ashortpositionwillbeliquidatedwhentoday'smarketaction
>=liquidPoint
KingKeltnerProgram
{KingKeltnerbyGeorgePruitt—basedontradingsystempresentedbyChester
Keltner}
Inputs:avgLength(40),atrLength(40);
Vars:upBand(0),dnBand(0),liquidPoint(0),movAvgVal(0);
movAvgVal=Average((High Low Close),avgLength);必胜外汇 www.eastmoney.com作品
upBand=movAvgVal AvgTrueRange(atrLength);
dnBand=movAvgVal–AvgTrueRange(atrLength);
if(movAvgVal>movAvgVal[1])thenBuy("KKBuy")tomorrowatupBandstop;
if(movAvgVal
liquidPoint=movAvgVal;
112BuildingWinningTradingSystemswithTradeStation
If(MarketPosition=1)thenSelltomorrowatliquidPointstop;
If(MarketPosition=–1)thenBuyToCovertomorrowatliquidPointstop;