Turtle Trading 海龟交易策略

海龟交易策略(Turtle Trading Strategy)是由Richard Dennis和William Eckhardt在20世纪80年代开发的一种经典趋势跟随策略。该策略通过追踪价格的最高价和最低价来确定买入和卖出点位,并旨在捕捉长期趋势并获取利润。

海龟交易策略是如何诞生的

Richard Dennis是美国70年代著名的期货投资者,据传他在短短三年内从期货市场赚走了3.5亿美金。他曾和朋友William Eckhardt打赌,认为交易技能并不是天生的天赋,通过后天的系统培训,小白也可以变成出色的交易者。他招募24个普通人(他称之为“海龟”),并对他们进行了为期两周的培训,通过培训考核后给他们每个人都安排了一笔初始资金作为本金,金额从25万至200万美金不等。五年后,这些“海龟”的资金达到了1.75亿美金,Richard Dennis在实验结束后公布了他的培训体系,这就是著名的海龟交易策略。海龟交易策略是最早的量化交易方法之一,它的成功使得更多的交易者开始采用系统化的方法来进行交易,而不仅仅是依靠主观判断或者情绪。

交易规则

海龟交易策略非常注重严格的风险管理,这对量化交易产生了深远影响。量化交易者开始更加重视风险控制,采用止损和仓位控制等方法来规避风险。以下是海龟交易策略的详细介绍:

  1. 市场选择:海龟交易策略适用于具有足够流动性和波动性的市场,例如股票、期货或外汇市场。选择市场时,要考虑交易品种的流动性和可交易性。
  2. 入市规则:海龟交易策略使用突破系统来确定买入和卖出点位。具体来说,当价格突破最近一段时间(例如20日)的最高价时,产生买入信号;当价格突破最近一段时间的最低价时,产生卖出信号。
  3. 头寸规模:海龟交易策略采用固定风险模型来确定每个交易的头寸规模。根据风险限制,每个交易的风险限制为总资金的一定比例(例如2%)。根据当前的价格和波动性,计算每个交易的头寸规模,以确保风险控制在预设的范围内。
  4. 止损规则:海龟交易策略非常注重风险管理。在每个交易中,设定一个初始止损点位,当价格达到止损点位时,平仓并止损。初始止损点位通常设置在买入或卖出时的最后一个N日的最低价或最高价。随着价格上涨或下跌,根据市场情况调整止损点位,以保护利润和控制风险。
  5. 退出规则:海龟交易策略使用固定的盈利目标来确定退出点位。当价格达到预设的盈利目标时,平仓并获利。盈利目标可以根据市场的波动性和策略的需求来设定。
  6. 信号过滤:为了过滤掉一些无效的交易信号,可以使用其他技术指标或过滤条件来确认买入和卖出信号。常见的过滤指标包括移动平均线、相对强弱指标(RSI)等。
  7. 回测和优化:在实际应用之前,建议对历史数据进行回测和优化。通过回测,可以评估策略在历史数据上的表现,并根据实际情况进行参数的优化和调整。

需要注意的是,海龟交易策略并非完美无缺,可能会遇到市场不适应或产生较大回撤的情况。因此,风险管理和严格执行交易规则对于该策略的成功至关重要。此外,策略的具体参数和细节可能因个人而异,应根据个人的风险偏好、交易目标和市场条件进行适当的调整和优化。

下面是实现海龟交易策略的代码,行情报价使用的是Alltick的实时数据接口。

用Java实现的海龟交易策略示例

import java.util.List;

public class TurtleTradingStrategy {
    public static void main(String[] args) {
        List<Double> prices = // 实时行情价格从Alltick的API中读取
        int breakoutPeriod = 20; // 突破周期

        double highestHigh = Double.MIN_VALUE;
        double lowestLow = Double.MAX_VALUE;
        boolean inMarket = false; // 是否持仓
        double entryPrice = 0.0; // 入场价格

        for (double price : prices) {
            // 更新最高价和最低价
            if (price > highestHigh) {
                highestHigh = price;
            }
            if (price < lowestLow) {
                lowestLow = price;
            }

            if (!inMarket && price > highestHigh) {
                // 产生买入信号,突破最高价,买入
                inMarket = true;
                entryPrice = price;
                // 执行买入操作
                // ...
            } else if (inMarket && price < lowestLow) {
                // 产生卖出信号,突破最低价,卖出
                inMarket = false;
                // 执行卖出操作
                // ...
            }

            // 更新突破周期内的最高价和最低价
            if (prices.indexOf(price) >= breakoutPeriod) {
                double previousPrice = prices.get(prices.indexOf(price) - breakoutPeriod);
                if (previousPrice == highestHigh) {
                    // 需要重新计算最高价
                    highestHigh = calculateHighestHigh(prices, prices.indexOf(price) - breakoutPeriod + 1, prices.indexOf(price));
                }
                if (previousPrice == lowestLow) {
                    // 需要重新计算最低价
                    lowestLow = calculateLowestLow(prices, prices.indexOf(price) - breakoutPeriod + 1, prices.indexOf(price));
                }
            }
        }
    }

    private static double calculateHighestHigh(List<Double> prices, int startIndex, int endIndex) {
        double highestHigh = Double.MIN_VALUE;
        for (int i = startIndex; i <= endIndex; i++) {
            double price = prices.get(i);
            if (price > highestHigh) {
                highestHigh = price;
            }
        }
        return highestHigh;
    }

    private static double calculateLowestLow(List<Double> prices, int startIndex, int endIndex) {
        double lowestLow = Double.MAX_VALUE;
        for (int i = startIndex; i <= endIndex; i++) {
            double price = prices.get(i);
            if (price < lowestLow) {
                lowestLow = price;
            }
        }
        return lowestLow;
    }
}

用Python实现的海龟交易策略示例

def turtle_trading_strategy(prices, breakout_period=20, risk_percentage=0.02):
    highest_high = float('-inf')
    lowest_low = float('inf')
    in_market = False
    entry_price = 0.0

    for price in prices:
        # 更新最高价和最低价
        if price > highest_high:
            highest_high = price
        if price < lowest_low:
            lowest_low = price

        if not in_market and price > highest_high:
            # 产生买入信号,突破最高价,买入
            in_market = True
            entry_price = price
            # 执行买入操作
            # ...

        elif in_market and price < lowest_low:
            # 产生卖出信号,突破最低价,卖出
            in_market = False
            # 执行卖出操作
            # ...

        # 更新突破周期内的最高价和最低价
        if prices.index(price) >= breakout_period:
            previous_prices = prices[prices.index(price) - breakout_period:prices.index(price)]
            previous_highest_high = max(previous_prices)
            previous_lowest_low = min(previous_prices)
            if previous_highest_high == highest_high:
                # 需要重新计算最高价
                highest_high = calculate_highest_high(prices, prices.index(price) - breakout_period + 1, prices.index(price))
            if previous_lowest_low == lowest_low:
                # 需要重新计算最低价
                lowest_low = calculate_lowest_low(prices, prices.index(price) - breakout_period + 1, prices.index(price))

def calculate_highest_high(prices, start_index, end_index):
    highest_high = float('-inf')
    for i in range(start_index, end_index + 1):
        price = prices[i]
        if price > highest_high:
            highest_high = price
    return highest_high

def calculate_lowest_low(prices, start_index, end_index):
    lowest_low = float('inf')
    for i in range(start_index, end_index + 1):
        price = prices[i]
        if price < lowest_low:
            lowest_low = price
    return lowest_low

  • 9
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
海龟交易策略是一种经典的市场交易策略,其基本原理是根据价格的波动情况进行交易。 在Python中,可以使用Turtle库来实现海龟交易策略的源码。以下是一个简单的示例: ```python import turtle def turtle_trading_strategy(price_data): # 初始化海龟交易指标参数 entry_price = price_data[0] # 入场价格 exit_price = price_data[0] # 出场价格 stop_loss = price_data[0] * 0.98 # 止损价格 position = 0 # 持仓数量,0表示没有持仓,正数表示多头持仓,负数表示空头持仓 # 初始化海龟图形 turtle.setup(800, 600) # 设置画布大小 turtle.title("Turtle Trading Strategy") # 设置标题 # 循环遍历价格数据 for price in price_data: if price > entry_price and position <= 0: # 如果价格高于入场价格且当前没有持仓,则进行多头开仓操作 turtle.pendown() turtle.goto(0, price) turtle.penup() entry_price = price stop_loss = entry_price * 0.98 # 更新止损价格 position = 1 # 更新持仓数量 elif price < exit_price and position >= 0: # 如果价格低于出场价格且当前持有多头仓位,则进行多头平仓操作 turtle.pendown() turtle.goto(0, price) turtle.penup() exit_price = price position = 0 # 更新持仓数量 elif price < stop_loss and position >= 0: # 如果价格低于止损价格且当前持有多头仓位,则进行多头止损操作 turtle.pendown() turtle.goto(0, price) turtle.penup() exit_price = price position = 0 # 更新持仓数量 elif price > stop_loss and position < 0: # 如果价格高于止损价格且当前持有空头仓位,则进行空头止损操作 turtle.pendown() turtle.goto(0, price) turtle.penup() exit_price = price position = 0 # 更新持仓数量 turtle.done() # 绘制完毕后显示海龟图形 # 示例数据 price_data = [100, 110, 105, 120, 130, 125, 115, 135, 140, 130] # 调用海龟交易策略函数 turtle_trading_strategy(price_data) ``` 上述代码实现了一个简单的海龟交易策略,给定一个价格数据列表,程序根据海龟交易策略的规则进行买入和卖出操作,并使用Turtle库在画布上进行可视化展示。具体规则包括根据价格的波动情况进行入场、出场和止损操作。 该示例中的价格数据为示意数据,实际应用时需要根据市场的实时价格进行交易决策。同时,为了简化代码,示例中省略了其他相关操作,如手续费、资金管理等,实际应用中需要综合考虑更多因素。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值