第 11 章 海龟策略----SPL量化编程课
本文介绍了海龟交易策略中的唐奇安通道指标应用。该策略通过计算过去N天(通常20天)的最高价和最低价,形成上下轨道线。当价格突破上轨时产生买入信号(1),跌破下轨时产生卖出信号(-1)。文章详细说明了指标计算方法和交易规则:空仓时出现买入信号则以收盘价买入1手,持仓时出现卖出信号则以收盘价清仓。最后给出了基于此策略的回测代码实现流程,包括数据加载、指标计算和交易信号执行等关键步骤。该策略利用价格通道
从本章起,我们来用前面学过的框架实现一些常见的策略。
海龟策略(Turtle Strategy)是一种经典的投资和交易策略。
它的内容是这样的:在股价超过过去 N 个交易日的股价最高点时买入,在股价低于过去 N 个交易日的股价最低点时卖出(N 通常设为 20)。上述的若干个最高点和最低点会组成一个通道,称为“唐奇安通道 (Donchian Channel)”。原始的唐奇安通道有两条线,过去 N 天最高价的最大值形成的线叫做上阻力线,过去 N 天最低价的最小值形成线叫做下支撑线。
唐奇安通道的主要作用是帮助交易者确定买入和卖出时机。因为唐奇安通道是根据最高价和最低价计算出来的,通道的宽窄又随着价格的变化自动调整,所以大多数时候价格是在通道之内运行,很少突破其上下轨道的。
也就是说,价格并不会随意突破阻力线和支撑线,但如果有效突破,那就预示着大行情可能将会出现。此时交易者可以根据支撑和阻力线,确定买进或卖出的具体时机。比如:当价格向上突破阻力线就买入,当价格跌破支撑线就卖出。
我们把突破“唐奇安通道”上阻力线时设为买入信号(1),低于下支撑线时设为卖出信号(-1),其他时间为不操作(0)。
根据这个原理我们首先来编写唐奇安指标。
定义指标参数:
A | 序表,K线数据 |
y | 指标返回列。1买入信号,-1卖出信号 |
n | 周期 |
在indicator.splx中编写指标函数:
A | B | |
… | …… | …… |
43 | func Donchian(A, $y, n) | =A.run(${y} = if( 收盘>最高[-n:-1].max():1, 收盘<最低[-n:-1].min():-1; 0) ) |
当有买入信号且空仓时,下买入订单;有卖出信号且有持仓股票时,下卖出订单。
编写回测代码:
A | B | |
1 | >call("init.splx") | |
2 | 2024 | =date(A2,1,1) |
3 | =workday(B2,-110,HOLIDAY) | =date(A2,12,31) |
4 | 600690 | =Load@C(A4, A3,B3) |
5 | ||
6 | =B4.derive(:DC) | |
7 | =Donchian(A6, DC, 20) | |
8 | ||
9 | =Begin(A6) | |
10 | =A9.select( 日期>=B2) | |
11 | for A10 | =H=昨日.持仓 |
12 | =卖出=if(昨日.DC==-1,SellOff( ~, H,收盘 ) ) | |
13 | =if(昨日.DC==1 && H.len()<=0, 买入|=Buy( ~,100,收盘)) | |
14 | =Loop() | |
15 | =Summary(A10) | =Display(A15) |
A6:A7 调用函数计算唐奇安指标。
B12 当指标值为 -1 时,以当日收盘价格全部卖出
B13 当指标值为 1 并且空仓时,以当日收盘价格买入 1 手。
回测结果:
更多推荐
所有评论(0)