译自<BuildingWinningTradingSystemwithTradeStation>第6章第一节
KELTNER投资理论
以移动平均线计算为主要指标用在KELTNER投资理论中。移动平均线通过计算X周期日期求和并且区分累计求和通过X值。一些时间这些计算用在固定数字的日期指向上。你有了很多数据指示后,新数据指示很少影响在最终的平均价值。长期移动均线指标试图解决长期趋势运动。相反,短期移动平均线试图察觉短期市场波动。切斯特、凯特介绍这个移动均线系统是在1960年。KELTNER系统展示了依据最高、最低、和收盘价建设的移动平均线系统和在移动均线最高和最低价双边市场形成的波段和通道中。买入信号發生在当市场价格穿越上轨,卖出信号發生在当市场价格穿越下轨。我们可以应用基本的KELTNER方法,但需要增加一些铃声和汽笛。我们希望,切斯特,当市场發生突发的移动均线从一个方向移动,他是趋势發生变化的信号。在KELTNER系统中,上下波段的穿透被视为为趋势改变的信号。我们将跟随趋势在强势中买入在弱市中卖出。我们将随着赢利或亏损当市场折回移动均线的时候平仓离场。
主要問題是通道突破系统是一个假突破。主要时间里,通道展示出市场力量耗尽时候趋势转换。经常地市场耗尽他本身力量移动到上轨或下轨并且立即回来朝相反的方向运动。这个是我们最担心出现的。然而,自从我们认识到这个类型系统的弱点,我们设计程序止损在移动均线。当交易开始的时候许多交易方法将失败并且一些形式的保护止损应该被执行。如果许多交易方法失败,之后为什么确定交易在第一个位置。成功的交易是消减短小的损失并且让利润持续。这个基本的交易原则
在风险管理领域。你的投资理论让你参与到交易中并且风险管理系统管理你的头寸最终合理离场。在凯特王系统中,移动均线的指示和轨道的穿透是我们入场交易的手法,和我们头寸离场在移动均线系统是我们风险管理系统。我们的风险管理止损将及可能是保护性止损也可能是盈利性止损。如果我们抓长期趋势,移动均线应该朝一个方向移动随着我们入场信号并且幸运地获得好的移动收入。永遠记住出场技巧入场技巧的成功与否。凯特王系统是一个长期趋势系统,短期盈利不是我们的目的。我们将获利如果他们按照我们的计划,但是这个类型的系统他们最终可能达不到预想的目的。这个系统很少超过50%的成功率,我们抓到少数大的趋势将弥补多数小的亏损。
大多数均线系统都是非常简单的程序并且这个也不例外,我们仅仅需要两个工具(1)最高、最低、收盘价的移动平均线。(2)移动平均线真实排列。你可能不熟悉真实排列这个术语。每日的日线排列就是通过计算每日最高价最低价的加减。这些排列的平均将是对期货价格排列的一个评估。所以真实排列计算延伸出来的日线排列就是前日的收盘价(真实排列=MAX(昨日收盘,当日最高价)-MIN(昨日收盘,当日最低)因此,扩展了日线的范围从而包括一些昨日收盘造成的缺口。我们认为真实排列给出了一些更精确的测定市场波动的方法。因此我们努力获取长期移动趋势,我们将用40日参数为我们平均参考计算。
KingKeltnerPseudocode
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
yesterday'sandmarketaction<=dnBand
Alongpositionwillbeliquidatedwhentoday'smarketaction
<=liquidPoint
Ashortpositionwillbeliquidatedwhentoday'smarketaction
>=liquidPoint
KingKeltnerProgram
{KingKeltnerbyGeorgePruitt—basedontradingsystempresentedbyChester
Keltner}
Inputs:avgLength(40),atrLength(40);
Vars:upBand,dnBand,liquidPoint,movAvgVal;
movAvgVal=Average((High+Low+Close),avgLength);
upBand=movAvgVal+AvgTrueRange(atrLength);
dnBand=movAvgVal–AvgTrueRange(atrLength);
if(movAvgVal>movAvgVal[1])thenBuy("KKBuy")tomorrowatupBandstop;
if(movAvgVal<movAvgVal[1])thenSellShort("KKSell")tomorrowatdnBand
stop;
liquidPoint=movAvgVal;
112BuildingWinningTradingSystemswithTradeStation
If(MarketPosition=1)thenSelltomorrowatliquidPointstop;
If(MarketPosition=–1)thenBuyToCovertomorrowatliquidPointstop;