首页 > 其他分享 >量化交易学习日记8-大单净额进阶(张江高科为例)

量化交易学习日记8-大单净额进阶(张江高科为例)

时间:2024-09-25 18:48:15浏览次数:10  
标签:大单 进阶 为例 res 金额 value dict 区间 净额

说明

大单净额是反应主力的动向,这没错,
可是,成交额多少算大单?

之前写的大单净额功能我自己测试了一下,拿庄股张江高科建仓的阶段举个例子:
在这里插入图片描述
在这里插入图片描述
可以看到,不管是大单净额(门槛是25万)还是全资金流向,流出都是惊人的,可是,建仓阶段不应该是主力进入的过程吗,我对该股进行过长期跟踪,这是一个典型的周期性庄家,即在股价接近长期趋势线附近时介入,
其他时候基本都在睡觉,所以建仓的过程一定是要去拿筹码的,既然笼统的大单净额看不出端倪,那就高度在低一点,用区间净额来看看他到底葫芦装的什么药。
所以我新写了一个区间净额的函数,目的是找到在哪个成交额区间,有主力的身影。

# 初始化叫买叫卖序号的小字典
def add_bill(df_name,buy_dict,sell_dict, x):
    if x['叫买序号'] not in buy_dict[df_name]:
        buy_dict[df_name][f'{x["叫买序号"]}'] = 0
    if x['叫卖序号'] not in sell_dict[df_name]:
        sell_dict[df_name][f'{x["叫卖序号"]}'] = 0
# 更新每个DataFrame的买卖序号的成交额
def update_bill(df_name,buy_dict,sell_dict, x):
    buy_dict[df_name][str(x['叫买序号'])] += x['成交额']
    sell_dict[df_name][str(x['叫卖序号'])] += x['成交额'] * (-1)
    
def find_unusual_price(start_date, end_date, code):  
    dic = get_data(start_date, end_date, code)  # 假设这个函数已定义并返回字典

    buy_dict = {}
    sell_dict = {}

    for key, value in dic.items():
        df_name = str(key)
        buy_dict[df_name] = {}
        sell_dict[df_name] = {}

        # 假设 add_bill 和 update_bill 函数已定义并正确处理数据
        value.apply(lambda x: add_bill(df_name, buy_dict, sell_dict, x), axis=1)
        value.apply(lambda x: update_bill(df_name, buy_dict, sell_dict, x), axis=1)

    temp = 0  # 当前区间净额
    pre_temp = 0  # 上上个区间净额
    min_value = 0

    # 用于记录所有净额流入和流出的区间
    inflow_list = []  # 记录流入的区间及金额
    outflow_list = []  # 记录流出的区间及金额

    while min_value < 20_000_000:
        # 根据 min_value 调整步长和 max_value
        if min_value < 1_000_000:
            # 0-5万,5万-10万,10万-15万... 的模式
            step_size = 50_000
            max_value = min_value + step_size
        elif 1_000_000 <= min_value < 3_000_000:
            # 100万-120万,120万-140万,140万-160万... 的模式
            step_size = 200_000
            max_value = min_value + step_size
        elif 3_000_000 <= min_value < 6_000_000:
            # 300万-350万,350万-400万,400万-450万... 的模式
            step_size = 500_000
            max_value = min_value + step_size
        else:
            # 600万-800万,800万-1000万,1000万-1200万... 一直到 1800万-2000万
            step_size = 2_000_000
            max_value = min_value + step_size

        if max_value > 20_000_000:
            max_value = 20_000_000

        res_buy = 0
        res_sell = 0

        # 遍历买入字典
        for df_name, buy in buy_dict.items():
            for key, value in buy.items():
                if min_value < value < max_value:
                    res_buy += value

        # 遍历卖出字典
        for df_name, sell in sell_dict.items():
            for key, value in sell.items():
                if -max_value < value < -min_value:
                    res_sell += value

        res = res_sell + res_buy

        # 过滤掉0-5万区间
        if not (min_value == 0 and max_value == 50_000):
            # 如果净额为正,记录为流入
            if res > 0:
                inflow_list.append({"区间": f'{min_value / 10000}万 - {max_value / 10000}万', "金额": res})
            # 如果净额为负,记录为流出
            elif res < 0:
                outflow_list.append({"区间": f'{min_value / 10000}万 - {max_value / 10000}万', "金额": res})

        # 检查净额符号是否变化
        if temp != 0 and (res * temp < 0) and (res * pre_temp <= 0):
            # 符号与上一个区间不同,且与上上个区间不同,输出异常行
            print(f'**********************************************{min_value / 10000}万 - {max_value / 10000}万:净额为 {res} ')
        else:
            # 否则正常输出
            print(f'{min_value / 10000}万 - {max_value / 10000}万:净额为 {res}')

        # 更新 pre_temp 为上上个区间的净额
        pre_temp = temp
        # 更新 temp 为当前区间净额
        temp = res  
        # 更新 min_value,进入下一个区间
        min_value += step_size

    # 对流入和流出的列表按金额进行排序,分别取前3个
    inflow_list = sorted(inflow_list, key=lambda x: x["金额"], reverse=True)[:6]
    outflow_list = sorted(outflow_list, key=lambda x: x["金额"])[:6]

    

    # 返回净额流入和流出前3的区间及金额,以字典包列表的形式
    return inflow_list + outflow_list

来测试一下

**************是异常区间,逻辑目前写的不太智能,将就看看就行
0.0万 - 5.0万:净额为 104204133.3900001
**********************************************5.0万 - 10.0万:净额为 -15318213.309999824 
10.0万 - 15.0万:净额为 -11756345.690000117
15.0万 - 20.0万:净额为 -1783776.1499999762
**********************************************20.0万 - 25.0万:净额为 2440847.430000022 
25.0万 - 30.0万:净额为 8888681.349999994
**********************************************30.0万 - 35.0万:净额为 -12332765.93999999 
35.0万 - 40.0万:净额为 -4580554.430000007
40.0万 - 45.0万:净额为 -12775197.029999986
45.0万 - 50.0万:净额为 -3008209.160000004
50.0万 - 55.0万:净额为 -8869975.540000007
55.0万 - 60.0万:净额为 -3348542.789999999
**********************************************60.0万 - 65.0万:净额为 7006457.759999998 
65.0万 - 70.0万:净额为 -8786775.950000003
70.0万 - 75.0万:净额为 -5632061.18
75.0万 - 80.0万:净额为 -6018003.440000001
80.0万 - 85.0万:净额为 -2503131.0
85.0万 - 90.0万:净额为 -15454552.0
90.0万 - 95.0万:净额为 -992974.4500000011
95.0万 - 100.0万:净额为 -7725072.579999998
**********************************************100.0万 - 120.0万:净额为 2338112.5 
120.0万 - 140.0万:净额为 -4606253.169999994
140.0万 - 160.0万:净额为 19141404.68
160.0万 - 180.0万:净额为 1918238.759999998
**********************************************180.0万 - 200.0万:净额为 -201599.01999999955 
200.0万 - 220.0万:净额为 -2033074.0
220.0万 - 240.0万:净额为 -4607083.0
240.0万 - 260.0万:净额为 -2492948.0
**********************************************260.0万 - 280.0万:净额为 171773.0 
280.0万 - 300.0万:净额为 -8770491.0
300.0万 - 350.0万:净额为 -3146053.0
350.0万 - 400.0万:净额为 -3881315.0
**********************************************400.0万 - 450.0万:净额为 106032.0 
450.0万 - 500.0万:净额为 -9600610.0
500.0万 - 550.0万:净额为 0
550.0万 - 600.0万:净额为 -5703347.0
**********************************************600.0万 - 800.0万:净额为 14943198.96 
800.0万 - 1000.0万:净额为 8270044.0
1000.0万 - 1200.0万:净额为 0
1200.0万 - 1400.0万:净额为 0
1400.0万 - 1600.0万:净额为 0
1600.0万 - 1800.0万:净额为 0
1800.0万 - 2000.0万:净额为 0
这是对流入流出金额前6的返回
[{'区间': '160.0万 - 180.0万', '金额': 66057418.599999964},
 {'区间': '15.0万 - 20.0万', '金额': 55026535.20000005},
 {'区间': '50.0万 - 55.0万', '金额': 35721474.920000196},
 {'区间': '85.0万 - 90.0万', '金额': 24278255.340000033},
 {'区间': '240.0万 - 260.0万', '金额': 19535116.099999994},
 {'区间': '60.0万 - 65.0万', '金额': 18371155.659999996},
 {'区间': '100.0万 - 120.0万', '金额': -121388431.24000001},
 {'区间': '20.0万 - 25.0万', '金额': -99664927.18000007},
 {'区间': '140.0万 - 160.0万', '金额': -90343061.07999998},
 {'区间': '450.0万 - 500.0万', '金额': -86259436.31},
 {'区间': '55.0万 - 60.0万', '金额': -79496567.78999993},
 {'区间': '400.0万 - 450.0万', '金额': -63436404.029999994}]

通过分析这个排行和每个区间的日志输出,大致可以得出主力在
15.0万 - 20.0万
50.0万 - 55.0万,
60.0万 - 65.0万,
85.0万 - 90.0万,
160.0万 - 180.0万,
240.0万 - 260.0万,
这几个区间有下单偏好,这里的主力可能不仅仅是庄家,我且把他们笼统的概括为主力。

这就比较清晰的看出一些端倪,相比于传统的ddz大单净额指标,做了这个试验之后以后训练模型的时候就不会把ddz作为训练特征量了。

以下是一些其他的验证

1.下杀洗盘的时候,大单惊人的流出,中单吃进,猜测正确!
在这里插入图片描述
张江高科20230310-20230314

[{'区间': '5.0万 - 10.0万', '金额': 89262990.82999998},
 {'区间': '10.0万 - 15.0万', '金额': 75206322.47000009},
 {'区间': '15.0万 - 20.0万', '金额': 28240185.349999964},
 {'区间': '25.0万 - 30.0万', '金额': 24423681.829999983},
 {'区间': '160.0万 - 180.0万', '金额': 18707696.0},
 {'区间': '350.0万 - 400.0万', '金额': 11466855.0},
 {'区间': '600.0万 - 800.0万', '金额': -45547490.05},
 {'区间': '800.0万 - 1000.0万', '金额': -27337358.0},
 {'区间': '300.0万 - 350.0万', '金额': -26075998.58},
 {'区间': '75.0万 - 80.0万', '金额': -22347067.479999997},
 {'区间': '35.0万 - 40.0万', '金额': -21945525.919999994},
 {'区间': '500.0万 - 550.0万', '金额': -20902481.0}]

2.暴力拉升之前,向上试盘,大单特大单比较多,但是没有足够的的中单托起拉升后股价,释放上方散户筹码,为后续上涨拉升做准备。猜测正确!

张江高科20230828-20230905

[{'区间': '300.0万 - 350.0万', '金额': 48570184.0},
 {'区间': '600.0万 - 800.0万', '金额': 44215261.029999994},
 {'区间': '80.0万 - 85.0万', '金额': 34058338.349999994},
 {'区间': '50.0万 - 55.0万', '金额': 28812496.560000017},
 {'区间': '45.0万 - 50.0万', '金额': 25290363.50999999},
 {'区间': '100.0万 - 120.0万', '金额': 23274133.27000001},
 {'区间': '5.0万 - 10.0万', '金额': -111576654.53000009},
 {'区间': '15.0万 - 20.0万', '金额': -38269510.640000105},
 {'区间': '30.0万 - 35.0万', '金额': -16751433.599999934},
 {'区间': '280.0万 - 300.0万', '金额': -14608676.0},
 {'区间': '1200.0万 - 1400.0万', '金额': -12628024.0},
 {'区间': '85.0万 - 90.0万', '金额': -6016211.6000000015}]

标签:大单,进阶,为例,res,金额,value,dict,区间,净额
From: https://blog.csdn.net/2301_80249944/article/details/142435054

相关文章

  • 进阶美颜功能技术开发方案:探索视频美颜SDK
    视频美颜SDK(SoftwareDevelopmentKit)作为提升视频质量的重要工具,越来越多地被开发者关注与应用。接下俩,笔者将深入探讨进阶美颜功能的技术开发方案,助力开发者更好地利用视频美颜SDK。 一、视频美颜SDK的核心功能视频美颜SDK的核心功能主要包括人脸检测、肤色调整、磨皮美白、祛斑去......
  • 资金进阶司库|规划与创新创景:引领业务、高效运营、战略增值
    连载导语司库体系建设是企业实现财务数字化转型和资金管理现代化的重要手段,是企业实现战略转型和高质量发展的关键支撑,也是企业应对复杂多变的全球经济环境和风险挑战的重要保障。司库承担着组织中的领导和战略引导作用,越来越多的企业以司库建设为抓手,加快推进自身财务数智化......
  • MapStruct 超神进阶用法,让你的代码效率提升十倍!
     MapStruct是一个强大且灵活的映射框架,很好的解决有关对象转换的问题,实现了代码的简洁和性能的兼顾。MapStruct的常规用法,网上有很多教程了,本文将列举一些进阶用法,方便日常开发使用。expression在转化的时候,执行java表达式,直接看例子:@Mapper(componentModel="spring")public......
  • MapStruct 超神进阶用法,让你的代码效率提升十倍!
     MapStruct是一个强大且灵活的映射框架,很好的解决有关对象转换的问题,实现了代码的简洁和性能的兼顾。MapStruct的常规用法,网上有很多教程了,本文将列举一些进阶用法,方便日常开发使用。expression在转化的时候,执行java表达式,直接看例子:@Mapper(componentModel="spring")public......
  • 如何进行数据清洗?以python和ETL工具为例
    数据清洗是数据分析处理中非常重要的一步,它涉及到识别并处理数据集中的错误或不一致信息,以提高数据质量。数据清洗直接对后续数据处理产生决定性影响,去除重复错误无效的数据能够大大提升数据分析的效率。本文将介绍数据清洗的常用方法和工具,同时以python为例用代码进行数据清洗......
  • Python高手必读的3本书——Python进阶三剑客
    Python的语法简单、易于学习,即使没有编程背景的人,也可以在较短时间内掌握Python的基础知识,用于编写简单的自动化脚本、数据处理和分析。目前,Python已经成为世界范围内最受欢迎的编程语言。入门Python简单,精通Python难,在这一波大模型技术背景下,精通Python已经势在必......
  • 【unity进阶知识1】最详细的单例模式的设计和应用,继承和不继承MonoBehaviour的单例模
    文章目录前言一、不使用单例二、普通单例模式1、单例模式介绍实现步骤:单例模式分为饿汉式和懒汉式两种。2、不继承MonoBehaviour的单例模式2.1、基本实现2.2、防止外部实例化对象2.3、最终代码3、继承MonoBehaviour的单例模式3.1、基本实现3.2、自动创建和挂载单例脚本......
  • Python字典进阶:setdefault技巧让你的代码更优雅,用setdefault优化你的Python数据处理流
    推荐阅读:数据科学的秘密武器:defaultdict——Python字典的自动化填充神器,让数据结构更灵活一、什么是setdefaultPython中的setdefault方法是字典(dict)类型的一个非常实用的方法,它允许开发者在尝试访问字典中不存在的键时,自动为该键设置一个默认值,并返回这个默认值。 二、s......
  • 万象更新 Html5 - es6 进阶: fetch
    源码https://github.com/webabcd/Html5作者webabcd万象更新Html5-es6进阶:fetch示例如下:es6\src\advanced\fetch.js/***FetchAPI-es6的异步请求接口**注:*1、fetch()返回的是Promise对象*2、fetch()的跨域请求遵循CORS标准**CORS-Cr......
  • 万象更新 Html5 - es6 进阶: iterator, generator
    源码https://github.com/webabcd/Html5作者webabcd万象更新Html5-es6进阶:iterator,generator示例如下:es6\src\advanced\iterator_generator.js/***iterator-迭代器(可迭代对象有Array,TypedArray,Map,Set,String)*next()-迭代到下一个位置*......