量化投资入门海龟交易法策略

在量化投资的广阔领域中,海龟交易法策略犹如一颗璀璨的明珠,以其独特的理念和清晰的规则,吸引着众多投资者的目光。对于初涉量化投资的新手而言,深入了解海龟交易法策略,不失为开启投资智慧之门的一把金钥匙。

海龟交易法诞生于 20 世纪 80 年代,当时交易员理查德・丹尼斯(Richard Dennis)和威廉・埃克哈特(William Eckhardt)就交易员究竟是天生的还是可以后天培养的这一问题产生了分歧。为了解决这一分歧,他们决定进行一场实验 —— 招募并培训一批交易员,将自己的交易方法传授给他们,让他们使用相同的交易系统进行交易。这些被招募的交易员就如同在大海中自由遨游的海龟,“海龟交易法” 因此得名。令人惊叹的是,这些经过培训的 “海龟” 们在四年间取得了年化收益率超过 100% 的优异成绩,使得海龟交易法声名远扬。

二、海龟交易法策略的核心原则

  1. 跟随趋势:海龟交易法坚信市场趋势一旦形成,便具有延续性。它致力于捕捉市场的主要趋势,无论是上涨还是下跌趋势,力求在趋势的起始阶段入场,在趋势反转或结束时离场,从而获取丰厚的利润。
  2. 风险控制:策略将风险控制置于至关重要的位置。通过精心设定单笔交易的最大风险暴露比例,有效避免因单次交易失误而导致的重大损失。同时,严格的止损规则如同坚固的盾牌,时刻保护着投资组合免受过度损失的侵害。
  3. 头寸管理:根据市场的波动性和账户资金规模,海龟交易法精准地确定每笔交易的头寸规模。旨在确保在控制风险的前提下,充分利用市场机会,实现收益的最大化。
量化投资入门海龟交易法策略

唐琪安通道

三、海龟交易法策略的具体规则

  1. 入市规则以唐奇安通道突破为基础:海龟交易法运用唐奇安通道指标来判断市场的突破点。唐奇安通道由上轨、中轨和下轨组成,上轨为过去 N1 个交易日的最高价,下轨为过去 N1 个交易日的最低价,中轨则为上轨与下轨的平均值。当价格向上突破上轨时,产生买入信号;当价格向下突破下轨时,发出卖出信号。通常,短期交易系统中 N1 取值为 20,长期交易系统中 N1 取值为 55。过滤假突破:为了降低假突破带来的风险,海龟交易法还设置了一些过滤条件。例如,在价格突破上轨后,如果成交量显著放大,且突破后的价格走势在一定时间内保持稳定,不出现快速回调,那么此次突破被认为是有效的买入信号。
  2. 止损规则:海龟交易法设定了严格的止损标准,以限制每笔交易的潜在损失。止损位通常设置在入市价格的一定百分比处,一般为 2% 左右。一旦价格触及止损位,立即平仓离场,以防止损失进一步扩大。例如,若以 100 元的价格买入某只股票,止损位设定为 98 元,当股价跌至 98 元时,自动执行卖出操作。
  3. 头寸管理规则根据波动性确定头寸规模:海龟交易法采用平均真实波幅(ATR)来衡量市场的波动性。ATR 反映了一定时间内市场价格波动的平均幅度。根据 ATR 值和账户资金规模,计算出每笔交易的头寸规模。具体计算公式为:头寸规模 = 账户资金 × 风险百分比 / (ATR × 每点价值)。其中,风险百分比一般设定为 1% – 2%,每点价值根据不同的交易品种而定。例如,某投资者账户资金为 100 万元,交易品种的 ATR 值为 2,每点价值为 100 元,风险百分比设定为 1%,则头寸规模 = 1000000 × 0.01 / (2 × 100) = 50 股。金字塔式加仓:在交易过程中,如果市场走势朝着预期方向发展,海龟交易法会采用金字塔式加仓策略。即当价格上涨一定幅度后,逐步增加头寸,但每次加仓的数量逐渐减少。例如,首次买入 100 股,当股价上涨 5% 后,再买入 80 股;股价继续上涨 5%,再次买入 60 股。这样可以在控制风险的同时,充分利用市场趋势,增加盈利。
  4. 出市规则跟踪止损出市:随着市场价格的波动,海龟交易法会动态调整止损位,采用跟踪止损的方式锁定利润。例如,当股价上涨时,止损位也相应上移,但始终与当前股价保持一定的距离。一旦股价回调触及跟踪止损位,立即平仓获利了结。固定盈利目标出市:除了跟踪止损出市,海龟交易法还可以设定固定的盈利目标。当盈利达到预设的目标百分比时,如 20% 或 30%,执行卖出操作,实现利润落袋为安。

基于PTrade 平台代码示例(仅供学习):

def initialize(context):
    g.config = {
        'n1': 20,                 # 唐琪安通道上轨计算周期
        'n2': 10,                 # 唐琪安通道下轨计算周期
        'ATR':14,                 # ATR计算周期
        'RD_ATR':0.03,            # 减仓时,每单位atr变动减仓3%资金
        'ADD_ATR':0.02,           # 加仓时,每单位atr变动增加2%资金
        'ET_ATR':0.02,            # 入场时,每单位atr变动买入2%资金
        'SL':-0.05,               # 止损,下跌超过5%
        'TP':0.3                  # 止盈,盈利超过30%   
    }

def handle_data(context, data):
        # 自定义标的和买入数量
        stock =  g.security
        buy_amount = g.buy_amount
        
        # 获取历史行情
        df_his = get_history(count=60, frequency='1d', field=['close','low','high'], security_list=stock, fq='pre', include=False)
        
        # 唐琪安通道上轨、下轨计算
        df_his['up'] = df_his['high'].shift(1).rolling(window=g.config['n1']).max()   
        df_his['down'] = df_his['low'].shift(1).rolling(window=g.config['n2']).min()   
        
        # 取最高、最低价格
        high, low, close = df_his['high'], df_his['low'], df_his['close']
        high_top1 = high.where(high>(close.shift(1)), (close.shift(1)))
        low_top1 = low.where(low<(close.shift(1)), close.shift1 atr atr='(high_top1' - low_top1-g.configatr:.mean position='get_position(stock)' hold_profit='position.last_sale_price/position.cost_basis-1' if position.cost_basis='0' else 0 if position.enable_amount> 0:
            #清仓,价格低于通道下轨卖出,或达到止损止盈条件
            if df_his['low'][-1] < df_his['down'][-1] or hold_profit <= g.configsl or hold_profit>= g.config['TP'] :
                vol = position.enable_amount
                if vol >0:
                    order(stock, -vol)
                    
            # 减仓,下跌一个ATR
            elif df_his['low'][-1] <= position.cost_basis - atr: vol='min(position.enable_amount,' buy_amount g.configrd_atratr100100 orderstock -vol elif hold_profit>0 and df_his['high'][-1] >= position.last_sale_price + 0.5 * atr:
                price = position.last_sale_price
                vol = min(context.portfolio.cash/price, buy_amount * g.config['ADD_ATR']/atr)//100*100
                if vol > 0:
                    order(stock, vol)
                    
         # 入场
        if position.amount == 0:
            if df_his['high'][-1] > df_his['up'][-1]:
                price = position.last_sale_price
                vol = min(context.portfolio.cash/price, buy_amount * g.config['ET_ATR']/atr)//100*100   
                if vol > 0:
                    order(stock, vol)

四、海龟交易法策略的优缺点

  1. 优点规则明确,易于执行:海龟交易法的交易规则清晰明了,不存在模糊地带。投资者只需严格按照规则进行操作,无需依赖主观判断,避免了因情绪干扰而导致的错误决策。适应性强:该策略适用于多种金融市场和交易品种,无论是股票、期货还是外汇市场,都能发挥其作用。其基于趋势跟踪的理念,在不同市场环境下都有机会捕捉到趋势性行情。风险可控:通过严格的止损规则和头寸管理方法,海龟交易法能够有效控制投资风险。明确的单笔交易风险限制和止损设置,确保投资者在面对市场不确定性时,不至于遭受毁灭性的损失。
  2. 缺点交易成本较高:由于海龟交易法频繁地进行买卖操作,尤其是在市场波动较大时,交易次数增多,会产生较高的交易成本,如佣金、印花税等。这些成本在长期交易过程中可能会对收益产生一定的侵蚀。市场适应性的局限性:虽然海龟交易法在趋势明显的市场中表现出色,但在震荡市中,价格反复波动,频繁触发买卖信号,容易导致投资者在来回交易中产生亏损。依赖历史数据:策略的一些参数设定和规则制定是基于历史数据的统计分析。然而,市场环境是不断变化的,过去有效的规则在未来可能不再适用,这就需要投资者不断地对策略进行优化和调整。

五、海龟交易法策略的优化与应用

  1. 优化策略参数:投资者可以根据不同的市场环境和交易品种,对海龟交易法的参数进行优化。例如,调整唐奇安通道的周期、止损比例、头寸规模计算中的风险百分比等。通过历史数据回测,找到最适合当前市场情况的参数组合,提高策略的盈利能力。
  2. 结合其他指标:为了弥补海龟交易法在某些方面的不足,可以将其与其他技术指标或分析方法相结合。比如,结合相对强弱指标(RSI)来判断市场的超买超卖情况,当 RSI 指标显示市场处于超买状态时,即使海龟交易法发出买入信号,也可以适当谨慎操作;或者结合移动平均线来确认趋势的有效性,增加交易信号的可靠性。
  3. 模拟交易与实盘验证:在将海龟交易法应用于实盘交易之前,建议投资者先进行模拟交易。通过模拟交易,熟悉策略的交易规则和操作流程,同时观察策略在不同市场环境下的表现。在模拟交易取得一定成效后,再逐步将策略应用于实盘交易,并根据实际交易情况进行调整和优化。

海龟交易法策略作为量化投资领域的经典策略之一,为投资者提供了一种科学、系统的交易方法。尽管它存在一些局限性,但通过合理的优化和应用,结合投资者自身的风险承受能力和投资目标,仍然能够在金融市场中发挥重要作用,帮助投资者实现资产的稳健增值。希望本文对海龟交易法策略的讲解,能为广大量化投资爱好者带来启发和帮助,开启属于自己的投资成功之旅。

发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/1063282
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!

(0)
股市刺客的头像股市刺客
上一篇 22小时前
下一篇 43分钟前

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注