————————前言————————
作为追涨杀跌的代言人,海龟交易法面世已经半个世纪有余。作为经典的华尔街交易策略,海龟交易法在当年号称能做到单品种年化80%以上,放到2025年的今天,这辆传奇超级跑车是否还能一战?!
先来看看海龟交易法的内核,这套交易系统包含以下几个关键部分: 1.市场选择:海龟交易法不局限于特定的市场,但是在高流动性的市场中表现优异!骨子里的跑车! 2.头寸规模:根据账户资金和市场波动率来确定交易头寸的大小,以控制风险。车速越快它越猛!! 公式:头寸单位 = (账户风险比例 × 总资金) / (ATR× 合约乘数) 3.入场策略:使用突破的概念进行入场。例如,当价格突破过去 20 天的最高价或最低价时,就会产生买入或卖出的信号。生下来就是为了超越对手! 4.加仓策略:初始头寸建立后,价格每有利变动 0.5 倍 ATR 则追加等量仓位,最多加仓 3 次。别人多3个档! 5.止损策略:设置止损位,以控制每笔交易可能的损失。安全很重要! 6.退出策略:采用跟踪止损的方法,随着盈利的增加逐步调整止损位,以保护利润。让利润跑起来! 海龟交易法就是这样来自于上个世纪的超级跑车,就像法x利,如果你听过它的名字,你就会忍不住想多看它两眼。 这套交易法在当时取得了显著的成功,证明了通过系统的培训和严格的纪律,普通人也能够在交易中取得较好的成绩。然而,它并非在所有市场环境中都能始终有效,交易方法的有效性还需要根据不同的市场条件和个人的风险承受能力进行调整和优化。 ————————量化策略———————— 海龟交易法已经面世半个世纪有余,面对现在的市场,是否还适用?是否还能获利? 我们一起来通过量化测试一下。
该部分可能对非专业人士不太友好,不喜欢编程的朋友可以直接看策略的测试部分。
核心代码如下:
// 核心参数设定
input int EntryPeriod = 20; // 入场周期,突破20日高/低点就进场
input int ExitPeriod = 10; // 退出周期,反向突破10日高/低点就出场
input double RiskPercent = 2; // 单笔风险比例
input int ATRPeriod = 20; // ATR计算周期
// 指标计算模块
double CalculateATR() { return iATR(_Symbol, PERIOD_D1, ATRPeriod, 0); }
void OnTick()
{
double upperChannel = iHigh(_Symbol, PERIOD_D1, iHighest(_Symbol, PERIOD_D1, MODE_HIGH, EntryPeriod, 1));
double lowerChannel = iLow(_Symbol, PERIOD_D1, iLowest(_Symbol, PERIOD_D1, MODE_LOW, ExitPeriod, 1));
// 多空信号生成
bool buySignal = Close[0] > upperChannel;
bool sellSignal = Close[0] < lowerChannel;
// 头寸计算
double atrValue = CalculateATR();
double lotSize = NormalizeDouble((AccountEquity()*RiskPercent/100)/(atrValue*MarketInfo(_Symbol,MODE_TICKVALUE)),2);
// 订单执行
if(buySignal && OrdersTotal()==0)
{
OrderSend(_Symbol, OP_BUY, lotSize, Ask, 3, Bid-2*atrValue, 0, "Turtle_Long"); }
else if(sellSignal && OrdersTotal()==0)
{
OrderSend(_Symbol, OP_SELL, lotSize, Bid, 3, Ask+2*atrValue, 0, "Turtle_Short"); } // 动态追踪止损
if(PositionsTotal()>0)
{
PositionSelectByTicket(PositionGetTicket(0));
double currentStop = PositionGetDouble(POSITION_SL);
double newStop = PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY ? Close[0] - 2*atrValue : Close[0] + 2*atrValue;
if(MathAbs(newStop - currentStop) > _Point)
OrderModify(OrderTicket(), OrderOpenPrice(), newStop, OrderTakeProfit(), 0); } } 其余代码省略,有兴趣的朋友可以私信找我获取。 可以看出来,海龟交易法就是简单粗暴的右侧突破交易法,就像超跑,玩的就是大马力! 这样的一辆大马力跑车在你面前,你不想跑上两圈? ————————策略测试—————————— 我们以今年1月1日到2月21日的黄金来进行测试,经常关注黄金的朋友都知道,从年初开始,黄金一直在创新高,我们看看海龟法则的使用效果。初始仓位为5%,测试图表周期为D1。
收益率300%+
单边趋势就是香
可以看到,海龟在强势的趋势行情中如鱼得水,过去了50多年,依然能够让你肾上腺素飙升!
那有人就要说了,这是说明趋势刚好符合海龟交易策略的特点,那要是遇到震荡行情怎么办,毕竟柴米油盐才是日常,速度与激情也不是天天有的。
那我们来试试,这辆超级跑车能不能兼顾一下家用。刚好2024年的11月到12月,黄金就是一个区间的震荡行情。我们用同样的系统和参数来测试一下这段时间。 这么看来超跑确实不太适合家用。超跑要是不能天天开,是不是有点太可惜了? 怎么办呢?常规来看,两个思路,买一辆日常家用车,或者,把超跑调教一下,让它能够适应大多数情况。
当然,小孩子才做选择,成年人全都要!
买一辆日常家用车不在今天的讨论范围,我们今天来研究一下怎么样让超跑适用于每一天的日常。
————————策略研究————————
如果观察仔细的朋友就会发现,在我们第一次测试中,我的止损和止盈肯定是要大一些,不然以黄金的高波动性,很容易一波回调就让我的仓位出场。
那第一个思考方向就来了,其它的参数不变的情况下,我把震荡期间的止损和止盈相对缩小一些是不是就能有所改善? 我们来试试看!
看来修改止损止盈以后确实对震荡行情有所改善,但是总觉得还不够,在这两个月期间,策略有很大一段时间都在空窗期,就像是两个月,限号限了一个月,这谁受得了。 如果不对系统框架进行修改的情况下,还有什么办法吗?
当然!比如说使用更小周期的图表来进行交易!我们来看看效果!
改变了一下赛道,这下直接夸张得离谱了!原本亏钱的行情,直接逆袭成2个月20倍!你敢信?!!
哈哈,看来离财富自由不远了?
如果有对这个交易系统感兴趣的伙伴,欢迎加入我的知识星球。 |