K线

常见定义

流星线:上影线较长,实体部分较短,下影线几乎没有

锤子线:下影线较长,实体部分较短,上影线几乎没有

刺透:一根大阳线后,被一根大阴线跌破超3/4(举例:首日上涨10%,次日下跌7%)。反之同理

吞没:一根大阳线后,被一根大阴线跌破起涨点(举例:首日上涨10%,次日下跌10%)。反之同理

黄昏星:一根大阳线,接一根(小阳、小阴、十字星)、再来一根大阴线

启明星:一根大阴线,接一根(小阳、小阴、十字星)、再来一根大阳线

持续形态:一根大阳线后,出现的小阴线、小阳线、十字星等没有跌破大阳线已上涨的3/4位置。反之同理

反转形态:顶部出现流星锤、刺透、吞没、黄昏星;底部出现锤子线、刺透、吞没、启明星

刺透、吞没、黄昏星、启明星,反包的那个大阴/阳线,长度越长、成交量越大,说明反转的力度越大

整理形态:阴阳交替,力度相当

三角形整理:一段上涨趋势,跟着一段下跌趋势。接着又来上涨趋势,然后又跟下跌趋势。依次类推。但是每次上涨趋势的幅度在逐渐变小。表示多头的兵力在逐渐减少,如果没有援兵,即将形成反转。反之同理

其他指标,如图:

量化策略

在结构中找波段 -> 在波段中找动能 -> 在动能之后找支撑阻力

期望值 = 正确概率 平均盈利 - 亏损概率 平均亏损

市场规律 -> 提炼要素 -> 形成规则 -> 执行订单 -> 期望值 > 0 -> 交易策略

如果期望值 <= 0 -> 调整要素 -> 继续进入循环

交易策略 -> 评估策略风险、判断盈利能力 -> 重用策略、使用策略或放弃策略

风险模型

一、套用凯利公式,计算投注比例以及止损比例

账户:10万

回撤:限制最大回撤在20%以内

策略:盈亏比2,盈利概率50%

投注比例 = (盈亏比 盈利概率 - 亏损概率) / 盈亏比 = ( 2 50% - 50%) / 2 = 25%

单笔止损比例 = 投注比例 最大回撤 = 25% 20% = 5%

单笔止损金额 = 账户金额 单笔止损比例 = 100000 5% = 5000

二、评估策略风险

总持仓风险 = 单笔亏损比例 * 最大持仓量

边际收益率 = 总收益 / 最大回撤

盈利倍率 = 总收益 / 潜在风险

盈利效率 = 总收益 / 交易量

账户 本金 止损 盈利 潜在风险 盈利倍率 盈利效率
A 10000 100 2000 100 20 0.2
B 10000 200 2000 200 10 0.2
C 10000 无止损 5000 10000 0.5 0.5

三、损失可能性

可能性小损失大:转嫁。比如:保险(车险、百万医疗)

可能性大损失大:规避。比如:高危极限运动

可能性大损失小:降低。比如:彩票(少买或不买)

可能性小损失小:自留。对于非保本理财来说,这是最好的状态了

增长模型

试错期:连续20笔订单,期望值 > 0。可使用模拟单

回本期:出金 > 入金

增长期:让利润在里面翻滚

支撑阻力

要寻找支撑阻力的时候,要关注:是否完成了多空转换的动作

止盈止损的区间根据:牛、熊、振荡微调

举例:趋势牛支撑阻力点微微调高(怕踏空),止盈点上涨幅度调高;趋势熊支撑阻力点微微调低(怕情绪下杀),止盈点上涨幅度调低等

在支撑阻力位置的成交量、涨跌幅,可以用来验证支撑阻力的强弱

后续的支撑阻力点发生了变化,可以调整支撑阻力线。如果变化的没有规律了,就删除支撑阻力线

思维方式

分析思维

  • 关注的是变化的行情
  • 每一笔交易都独立对待
  • 每笔交易决策成本高
  • 关注每一笔交易的得失
  • 盈利取决于个人能力

交易思维

  • 关注的是市场不变的规律
  • 简单的规则重复执行
  • 每笔订单决策成本低
  • 一组订单为基础去统计数据
  • 盈利取决于策略背后的假设

交易思维也需要考虑宏观这个大前提,在更高的维度才能看清规律的本质

价格行为

  • 从哪里获取市场信息,定义了交易的方式
  • 价格行为就是直接通过价格去获取市场信息的分析方式
  • 基本面影响长期价格,对短期价格没有确定性影响
  • 技术面跟价格有确定性关系,但是滞后而且会损失信息
  • 订单和价格之间有固定的规则,订单是资金带着赚钱的目的,对于价格预期的真实表达
  • 价格行为就是通过价格走势的变化来观察市场中资金的动作和预期

能力圈

不要突破自己的能力圈做事:只做看得懂的行情

扩大自己的能力圈:能看懂更多的行情

长线投资

预期高增长 -> 业绩逐渐兑现 -> 能够形成市场一定时间内的共识 -> 走势验证前面3点 -> 上升的阶梯不能破

预期高增长不可能一直持续下去,总有那么一天,增长会放缓。此时,如果这只股票足够强,那么就进入到大而不到期

大而不倒期后,股价相对波动放缓,除非基本面或行业发生重大变化,才能继续高增长

大而不倒期的股票可以作为基石仓位,好处是水涨船高,涨不会踏空。下跌的时候,机构会抱团取暖,会相对抗跌。有一定的对冲效果

公司视角

交易策略就是公司的产品。策略是为资金服务的。拥有交易系统,才能看到交易策略只是其中一个环节;如果一个策略就决定了交易的生死,那生存空间就被大大压缩了

交易系统就是如何运作公司。交易系统是盈亏的分界线。通过交易系统,透过规则,看到一个策略背后的风险才能看到什么样的策略是有价值的

系统决定生存,策略决定发展

技术指标

MACD,用于判断背离

MACD,全称是Moving Average Convergence Divergence,中文名称为指数平滑异同移动平均线

MACD由三部分组成:快速线(通常称为DIF或快线)、慢速线(通常称为DEA或信号线),以及柱状图(也叫BAR)

DIF(Difference,差值):这是快速线,表示的是12日的指数移动平均值(EMA12)减去26日的指数移动平均值(EMA26)。这个数值反映了短期内价格变动的趋势

DEA(Difference Exponential Average,差值指数平均数):这是慢速线,它是DIF的9日指数移动平均值。DEA的作用是对DIF的变化进行平滑处理,以减少短期波动的影响

柱状图:柱状图是由DIF减去DEA得到的结果,它直观地显示了两者的差异。如果柱状图为正,则显示为绿色(多头市场),反之则显示为红色(空头市场)

金叉与死叉:当快速线DIF从下方穿过慢速线DEA时,称为“金叉”,这通常是买入信号;相反,当DIF从上方穿下DEA时,称为“死叉”,这通常是卖出信号

柱状图颜色转换:当MACD柱状图从负转正(即从红变绿),意味着可能是一个买入机会;反之,从正转负(即从绿变红),则可能是卖出的机会

背离现象:当股价持续创新高或新低,但MACD未能跟随创出新高或新低时,就出现了所谓的“顶背离”或“底背离”。顶背离预示着潜在的下跌风险,而底背离则可能暗示上涨潜力

原理解释

一段上涨行情中,短均线会比长均线更灵敏,DIF和DEA的关系同理。所以MACD本质上是在描述上涨的速度。下跌同理

柱状图、金叉与死叉、背离等,本质上都是在描述股价上涨幅度与上涨速度(或反转)的关系。下跌同理

所以在盘整行情中,MACD可能会失效

EMA示例


def calculate_ema_c(prices, n):
    # 初始化EMA数组
    ema = []
    # 计算平滑系数
    alpha = 2 / (n + 1)
    # 第一个EMA值通常采用前n个价格的简单移动平均
    sma = sum(prices[:n]) / n
    ema.append(sma)

    # 对剩余的价格应用EMA公式
    for price in prices[n:]:
        ema_today = (price - ema[-1]) * alpha + ema[-1]
        ema.append(ema_today)

    return ema


# 示例数据
prices = [22, 22.1, 22.2, 21.9, 22.3, 22.5, 22.6, 22.8, 22.7, 22.6]
n = 10

ema_values = calculate_ema_c(prices, n)
print("Manually calculated EMA values:")
print(ema_values)

MACD示例

import pandas as pd
import numpy as np

def calculate_ema(prices, span):
    return pd.Series(prices).ewm(span=span, adjust=False).mean()

def calculate_macd(data, fast_period=12, slow_period=26, signal_period=9):
    # 计算快速EMA
    ema_fast = calculate_ema(data['close'], fast_period)

    # 计算慢速EMA
    ema_slow = calculate_ema(data['close'], slow_period)

    # 计算DIF
    dif = ema_fast - ema_slow

    # 计算DEA
    dea = dif.ewm(span=signal_period, adjust=False).mean()

    # 计算柱状图
    macd_histogram = 2 * (dif - dea)

    # 将结果添加到DataFrame中
    data['DIF'] = dif
    data['DEA'] = dea
    data['MACD_Histogram'] = macd_histogram

    return data

# 示例数据
data = {
    'date': pd.date_range(start='2020-01-01', periods=30),
    'close': [round(np.random.uniform(100, 150), 2) for _ in range(30)]
}
df = pd.DataFrame(data)
df.set_index('date', inplace=True)

# 计算MACD
result_df = calculate_macd(df)
print(result_df[['DIF', 'DEA', 'MACD_Histogram']])

相似K线

皮尔逊相关系数,用来找支撑阻力相似的图形

以下代码还未加工,实际场景是扫描数据库,且不需要日期一致

import pandas as pd
import numpy as np
from datetime import datetime


# 模拟的数据,实际中这里的数据应该从数据库查询等方式获取
# 格式为 [{"id": 1, "ts_code": "000001.SZ", "trade_date": "2024-01-01", "pct_chg": 0.01,...}, {...},...]
data = []

# 将数据转换为DataFrame,方便后续处理
df = pd.DataFrame(data)

# 指定股票代码
target_ts_code = "000001.SZ"
# 起始日期
start_date = datetime(2024, 1, 1)

# 筛选出目标股票符合时间范围的数据
target_stock_data = df[(df["ts_code"] == target_ts_code) & (pd.to_datetime(df["trade_date"]) >= start_date)]
# 提取目标股票的涨跌幅数据,转换为Series,索引为交易日期
target_pct_chg_series = target_stock_data.set_index("trade_date")["pct_chg"]

# 筛选出所有股票符合时间范围的数据
all_stocks_data = df[pd.to_datetime(df["trade_date"]) >= start_date]

# 用于存放最终结果,和目标股票走势相似的股票代码集合
similar_trend_stocks = set()

# 分组遍历每只股票的数据(按股票代码分组)
for ts_code, group_df in all_stocks_data.groupby("ts_code"):
    if ts_code!= target_ts_code:
        # 提取当前股票的涨跌幅数据,转换为Series,索引为交易日期
        group_pct_chg_series = group_df.set_index("trade_date")["pct_chg"]
        # 仅选取和目标股票有相同交易日期的数据进行对比(交集部分)
        common_dates = target_pct_chg_series.index.intersection(group_pct_chg_series.index)
        target_common_pct_chg = target_pct_chg_series.loc[common_dates]
        group_common_pct_chg = group_pct_chg_series.loc[common_dates]

        # 计算两只股票涨跌幅数据的相关系数(这里使用Pearson相关系数,可根据需要调整)
        correlation_coefficient = np.corrcoef(target_common_pct_chg, group_common_pct_chg)[0, 1]

        # 设定一个相关系数阈值,用于判断走势是否相似,可根据实际情况调整此阈值
        similarity_threshold = 0.8
        if correlation_coefficient >= similarity_threshold:
            similar_trend_stocks.add(ts_code)

print(similar_trend_stocks)

results matching ""

    No results matching ""