国外有名的凱特國王King Keltner交易系統[古期心得]
UID 2 积分 2874604 威望 1387331 布 龙e币 1487273 刀 在线时间 13155 小时 注册时间 2009-12-3 最后登录 2024-11-24
国外有名的凱特國王King Keltner交易系統[古期心得]
接下來的時間,想花一些時間跟大家來報告一些國外有名的交易系統。或許各位可以從這些系統裡面找到一些自己在開發系統的想法和靈感。我想就從很有名的一本書”Building Winning Trading Systems with TradeStation”裡面的交易系統開始報告起好了。
“Building Winning Trading Systems with TradeStation”是由George Pruitt & John Hill在2003年所寫的。這本算是TradeStation的教科書吧。因為這本書就是在教我們如何操作TradeStation和如何寫Easy Language的程式。同時裡面的第六章也列出了一些範例的交易系統。今天要報告的是裡面介紹的第一個系統,叫做凱特國王系統”King Keltner Trading Strategy”。
在交易系統設計的領域中,通道是常常被拿來使用的觀念之一。像是很有名的Bollinger Band就是採用通道的觀念所設計出來的系統。我們通常會先利用一條移動平均線來作為通道的中線,然後在這條移動平均線的上方加入一個數值,讓他變成上通道。然後在這條移動平均線的下方減去一個數值,讓他變成下通道。
而上下通道應該要加減多少數值,就各有巧妙不同了。最古老的方式是直接加減移動平均線的一個比率(比如說2%),這種系統就叫做envelop trading system。如果是加減2個標準差形成上下通道的話,這種系統就叫做Bollinger Band。而Chester Keltner在1960年提出的觀念,則是在這條移動平均線上加減Average True Range,形成上下通道。
Chester Keltner的這個系統,是要在價格突破上通道的時候做多,跌破下通道的時候做空。而George Pruitt & John Hill在這本書裡面,則改進了這個系統,加入了移動平均線出場的觀念,所以他們提的進出場的方式會變成下面這樣:
Setup:40天的移動平均線上揚只做多。40天的移動平均線下跌只做空。
Entry:價位突破上通道做多。價位跌破下通道做空。
Exit:當進場之後,等待價位回到移動平均線就出場。
觀念很簡單,程式碼也不複雜。書裡面的程式碼如下:
{King Keltner by George Pruitt—based on trading system presented by Chester Keltner}
Inputs: avgLength(40), atrLength(40);
Vars: upBand(0),dnBand(0),liquidPoint(0),movAvgVal(0);
movAvgVal = Average((High + Low + Close)/3,avgLength);
upBand = movAvgVal + AvgTrueRange(atrLength);
dnBand = movAvgVal - AvgTrueRange(atrLength);
if(movAvgVal > movAvgVal[1]) then Buy ("KKBuy") tomorrow at upBand stop;
if(movAvgVal < movAvgVal[1]) then Sell Short("KKSell") tomorrow at dnBand stop;
liquidPoint = movAvgVal;
If(MarketPosition = 1) then Sell tomorrow at liquidPoint stop;
If(MarketPosition = -1) then Buy To Cover tomorrow at liquidPoint stop;
而這個系統在 1982-2002年這20年的績效表現列出在下面這個表。
KK Performance.JPG
這個表在我看來,有一點特別引起我的興趣。就是績效表現特別好的商品就是日幣和天然氣這兩個商品。跟我這幾年的交易心得相同,看來容易操作的商品,用簡單的系統就可以得到很好的績效。
雖然King Keltner交易系統的概念很簡單,但是有一個小小的缺點,就是上下通道的寬度是固定的,也就是固定在一倍的ATR寬度。所以如果我們想要改用intraday資料來做交易的話,會想要試試看不同通道寬度,對於整體績效的影響。所以小弟在這裡做了個小小的修正,將我們可以試試看不同的通道寬度,也就是加入atrRatio這個參數。修改後的程式碼會變成是下面這樣:
Inputs: avgLength(40), atrLength(40),atrRatio(2);
Vars: upBand(0),dnBand(0),liquidPoint(0),movAvgVal(0);
movAvgVal = Average((High + Low + Close)/3,avgLength);
upBand = movAvgVal + atrRatio * AvgTrueRange(atrLength);
dnBand = movAvgVal - atrRatio * AvgTrueRange(atrLength);
if(movAvgVal > movAvgVal[1]) then Buy ("KKBuy") tomorrow at upBand stop;
if(movAvgVal < movAvgVal[1]) then Sell Short("KKSell") tomorrow at dnBand stop;
liquidPoint = movAvgVal;
If(MarketPosition = 1) then Sell tomorrow at liquidPoint stop;
If(MarketPosition = -1) then Buy To Cover tomorrow at liquidPoint stop;
论坛官方微信、群(期货热点、量化探讨、开户与绑定实盘)
期货论坛 - 版权/免责声明
1.本站发布源码(包括函数、指标、策略等)均属开放源码,用意在于让使用者学习程序化语法撰写,使用者可以任意修改语法內容并调整参数。仅限用于个人学习使用,请勿转载、滥用,严禁私自连接实盘账户交易 。
2.本站发布资讯(包括文章、视频、历史记录、教材、评论、资讯、交易方案等)均系转载自网络主流媒体,内容仅为作者当日个人观点,本网转载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。本网不对该类信息或数据做任何保证。不对您构成任何投资建议,不能依靠信息而取代自身独立判断,不对因使用本篇文章所诉信息或观点等导致的损失承担任何责任。
3.本站发布资源(包括书籍、杂志、文档、软件等)均从互联网搜索而来,仅供个人免费交流学习,不可用作商业用途,本站不对显示的内容承担任何责任。请在下载后24小时内删除。如果喜欢,请购买正版,谢谢合作!
4.龙听期货论坛原创文章属本网版权作品,转载须注明来源“龙听期货论坛”,违者本网将保留追究其相关法律责任的权力。本论坛除发布原创文章外,亦致力于优秀财经文章的交流分享,部分文章推送时若未能及时与原作者取得联系并涉及版权问题时,请及时联系删除。联系方式:http://www.qhlt.cn/thread-262-1-1.html
UID 22996 积分 4070 威望 2035 布 龙e币 2035 刀 在线时间 660 小时 注册时间 2023-7-21 最后登录 2024-11-21