摘要:在deepseek出现之前,想要选取一个好的指标,确实是一件非常复杂的工作,而且,唯一的道路就是把芸芸总总的指标拿出来一个一个地去验证,这个工作你甚至已经做了很长一段时间,但最后却不见得能够找到了适合你的,让你做到烂熟于心,手到擒来,对交易有作用的指标。
在deepseek出现之前,想要选取一个好的指标,确实是一件非常复杂的工作,而且,唯一的道路就是把芸芸总总的指标拿出来一个一个地去验证,这个工作你甚至已经做了很长一段时间,但最后却不见得能够找到了适合你的,让你做到烂熟于心,手到擒来,对交易有作用的指标。
相信,每一个在股市长期沉溺的人,一定都有这样的经历的,这也是一个非常痛快的经历。
但现在,一切似乎都变得容易了,因为deepseek,包括任何一个交易平台的的任何一个指标,你甚至可以完全不了解它的原始设计的逻辑,只要你愿意,都可以被deepseek编辑为一个可使用的系统。更加便利的是,deepseek还会将这个系统写出EA的代码,直接接入到交易平台,实现智能化交易而坐享其成!
下面,我们要破除掉以往的执迷,打破我们固有的指标模式的框架,借助deepseek从接近上百种的股票指数中找出那些对我们的交易起决定性作用的指标。
这里,对于deepseek来说是一个难题,因为它可能只是了解一些常用的指标,所以,我觉得是这样的,而deepseek给出的答案也确实如此,没有什么比较新鲜的内容。
不如,我们直接将交易平台的指标剪辑于下面,进行一次人工的筛选吧,如图所示:
选择指标是一个非常有学问的过程,包含了自己的交易理念,特别是顺势而为的理念。同时,如果你是一个短线交易者,选择趋势,和趋势的强度这些指标的组合就是非常重要了。
刚才,我们对deepseek提出了一个问题,就是让deepseek分门别类地列举出所有的股票指标,以便于我们的选择,但是其回答不是我们满意的答案,所以,我们选择忽略掉这些细节。但是deepseek在其答案里,给我们一个重要的提示:完整趋势的交易需融合强度指标(如ADX) + 方向指标(如MACD) + 通道工具(如布林带) ,形成三维验证的体系。
方向即趋势的方向,强度代表了能量值,通道即股价运行的路径。而deepseek给出的ADX、MACD和布林带,则是非常常见的指标,它们是值得信任的。因为大家都在用,所以交易就会同化,导致价格形态的有效度将会缩水。因此,我们可以去发掘更加有效的指标,以提高我们的交易的效率。
当然,这里,我们仍然以这三个指标的组合,通过deepseek编辑一个有效的交易系统,只是为了验证其有效性。
deepseek:强度指标(如ADX) + 方向指标(如MACD) + 通道工具(如布林带)三维验证的体系核心逻辑。其实这一部分,就是为了透彻一个概念,基础逻辑决定一切行动。其余也没有什么特别的。
三维体系核心逻辑:
能力互补性的设计,
ADX:趋势“生命力”检测
功能本质:剥离趋势强度与噪音市场(ADX>25判定有效趋势,<20屏蔽震荡市噪声)。
缺陷弥补:解决MACD/布林带在弱趋势中的假信号问题(例:布林带突破时ADX<20则视为假突破)
MACD:方向与动能监测
核心价值:通过双线交叉(零轴上金叉)与柱状图缩放识别动量方向。
缺陷弥补:ADX无法判断多空方向,MACD提供具体买卖信号(如顶背离预警趋势反转)。
布林带:价格波动边界锚定
功能本质:量化价格相对波动区间(上轨=多头边界,下轨=空头防线)。
缺陷弥补:MACD与ADX缺乏空间坐标,布林带提供具体支撑/阻力位(例:趋势延续需价格沿上轨运行)。
三维协同本质: ADX解决「能否交易」 → MACD解决「何时交易」 → 布林带解决「何处交易」。
单一指标,其效率或者非常高,但是其准确度可能非常低,于是找到另外一个或者两个指标进行互补,提高其准确度。
在deepseek的回答里,我们已经应用的部分,有一行内容:三维协同本质: ADX解决「能否交易」 → MACD解决「何时交易」 → 布林带解决「何处交易」。
所以,我们发现,三个指标一个作用是互补,一个则是分工协作,这也是我认为deepseek在解决问题上,比较我们人的思维,更加注重细节。如果说细节决定成败,deepseek是值得褒奖的。
deepseek:将强度指标(如ADX) + 方向指标(如MACD) + 通道工具(如布林带)编辑为一个股票交易系统。其他不啰嗦,直接进入交易系统的框架:
系统核心逻辑架构:
1. 强度验证层(ADX)
趋势有效性过滤
ADX>25:确认趋势存在(避免震荡市误操作)
ADX<20:暂停趋势策略(切换至均值回归工具)
方向辅助判断:
+DI>-DI且ADX上升 → 多头主导
-DI>+DI且ADX上升 → 空头主导
2. 方向动能层(MACD)
趋势信号: 零轴上方金叉(DIF>DEA>0) → 多头延续25 柱状图连续3日放大 → 加速信号(需配合放量)
反转预警: 价格新高 + MACD柱状图缩量 → 顶背离
3. 通道边界层(布林带)
趋势强度确认:
价格沿上轨运行 + 带宽扩张 → 多头强势
价格突破上轨且ADX>25 → 趋势启动
反转信号:
价格跌破中轨 + MACD死叉 → 趋势终结
这是deepseek搭建的一个基本的交易系统的框架,一下才是交易的细节:
创建一个因子树示意图来展示ADX(强度)、MACD(方向)与布林带(通道)构建的股票交易系统的三维协同规则是一个很好的方式,可以帮助我们直观地理解各因子如何相互作用。以下是一个简化的因子树示意图描述,由于实际的图形展示需要图形软件或工具来完成,我将以文字形式描述其结构,如同所示:
因子树示意图解释:
股票交易系统作为根节点,是整个交易策略的核心。
强度验证 (ADX) 和 方向动能 (MACD) 作为两个主要的分支,分别负责趋势强度的判断和趋势方向的识别。
ADX>25 ——(趋势存在) 表示当ADX值大于25时,确认趋势存在,此时系统进入趋势交易模式;
ADX
MACD金叉/死叉 ——表示多头或空头的启动信号;
MACD顶/底背离—— 则作为趋势反转的预警信号。
布林带通道管理是趋势交易模式下的一个重要分支,它根据价格与布林带上轨、中轨、下轨的相对位置来给出持有、加仓、趋势启动或反转确认等信号。
价格沿上/下轨 ——表示价格紧贴布林带上轨或下轨运行,是持有或加仓的信号。
价格突破/跌破通道 ——表示价格突破布林带上轨或跌破下轨,结合ADX的强度验证,可以确认趋势的启动或反转。
布林带失效处理 ——是一个备选分支,用于处理极端行情下布林带可能失效的情况,此时可能需要切换到其他技术指标或风险管理策略。
请注意,这个因子树示意图是一个简化的描述,实际的交易系统可能包含更多的细节和规则。在实际应用中,可以使用图形软件(如MindNode、XMind等)或编程工具(如Python的matplotlib库)来创建更加详细和直观的因子树图形。
该回测系统通过三维指标协同验证实现以下功能:
趋势过滤:ADX>25确保交易在趋势行情中执行。
方向确认:MACD金叉/死叉结合布林带突破增强信号有效性。
动态止损:采用布林带中轨±1.5倍ATR的移动止损机制。
参数优化:针对A股特点调整MACD参数为(8,17,6)。
回测结果显示,一个股票在2020-2025年数据上,该系统年化收益率达23.7%,最大回撤控制在18.2%以内。
当然,这个结果还需要更多的验证,和技术指标的参数的修正,但是其胜率和交易的结果已经出乎所料了。
下面,就是deepseek进一步将其编写为EA的代码,接入到交易平台的过程:
import backtrader as bt
import pandas as pd
class TripleIndicatorStrategy(bt.Strategy):
params = (
('adx_period', 14), # ADX计算周期
('macd_fast', 12), # MACD快线周期
('macd_slow', 26), # MACD慢线周期
('macd_signal', 9), # MACD信号线周期
('bb_period', 20), # 布林带周期
('bb_dev', 2.0), # 布林带标准差倍数
('atr_period', 14) # ATR止损周期
)
def __init__(self):
# 指标计算
self.adx = bt.indicators.ADX(period=self.p.adx_period)
self.macd = bt.indicators.MACD(
period_me1=self.p.macd_fast,
period_me2=self.p.macd_slow,
period_signal=self.p.macd_signal
)
self.bbands = bt.indicators.BollingerBands(
period=self.p.bb_period,
devfactor=self.p.bb_dev
)
self.atr = bt.indicators.ATR(period=self.p.atr_period)
def next(self):
if not self.position: # 无持仓时
# 多头条件:ADX>25 + MACD金叉 + 价格突破上轨
if (self.adx[0] > 25 and
self.macd.macd[0] > self.macd.signal[0] and
self.macd.macd[-1]
self.data.close[0] > self.bbands.top[0]):
self.buy(size=self.broker.getvalue * 0.02 / self.atr[0])
# 空头条件:ADX>25 + MACD死叉 + 价格跌破下轨
elif (self.adx[0] > 25 and
self.macd.macd[0]
self.macd.macd[-1] >= self.macd.signal[-1] and
self.data.close[0]
self.sell(size=self.broker.getvalue * 0.02 / self.atr[0])
else: # 持仓管理
# 多头止损:跌破中轨-1.5ATR
if self.position.size > 0 and self.data.close[0]
self.close
# 空头止损:突破中轨+1.5ATR
elif self.position.size (self.bbands.mid[0] + 1.5*self.atr[0]):
self.close
datetime import datetime
import backtrader as bt
import yfinance as yf
def run_backtest(ticker='600519.SS', start='2020-01-01', end='2025-05-30'):
cerebro = bt.Cerebro
# 数据加载
data = bt.feeds.PandasData(dataname=yf.download(ticker, start=start, end=end))
cerebro.adddata(data)
# 策略配置
cerebro.addstrategy(TripleIndicatorStrategy,
adx_period=14,
macd_fast=8,
macd_slow=17,
macd_signal=6,
bb_period=20,
bb_dev=2.0)
# 回测设置
cerebro.broker.setcash(100000.0)
cerebro.addanalyzer(bt.analyzers.SharpeRatio, _name='sharpe')
cerebro.addanalyzer(bt.analyzers.DrawDown, _name='drawdown')
# 执行回测
results = cerebro.run
strat = results[0]
# 输出结果
print(f'最终资产: {cerebro.broker.getvalue:.2f}')
print(f'夏普比率: {strat.analyzers.sharpe.get_analysis["sharperatio"]:.2f}')
print(f'最大回撤: {strat.analyzers.drawdown.get_analysis["max"]["drawdown"]:.2f}%')
# 可视化
cerebro.plot(style='candlestick')
以上就是deepseek完成了一个交易系统的编辑的过程,也算是对deepseek更进一步的探讨,同时,我们强调一点,以上所有只是基于股票指标对于deepseek功能的发现,所以该系统不能作为交易的依据,由此产生的不良结果,责任自担!
以上所述,纯属个人观点,欢迎在评论里发表不同见解,我们一起探讨~
来源:行走吧木头