会员登录 立即注册

搜索

新策略

[复制链接]
崎山小鹿 发表于 2 小时前 | 显示全部楼层 |阅读模式
崎山小鹿
2 小时前 3 0 看全部
本地运行的新策略
1.获取“平安银行”2024年10月6到11日的单日股票波动数据(数据:分钟级1m)并用折线图展示出来
m = 0.005
2.获得昨天收盘价
3.如果当前价格高于昨天收盘价在第一个波峰标记为卖点,绘制卖出线,
记录卖出价,当价格降低m设置买点,绘制买入线,设置买入标志
两个标志都有交易结束。

如果当前价格低于昨天收盘价且出现第一个波谷设置买点,设置买入完成标志
记录买入价,高于买入价m设置卖出点,设置卖出完成标志
两个标志都有交易结束

如果当天买入完成标志没有设置,标记收盘价为买入标志,或者卖出标志没有设置标记收盘价为卖出标志

输出

当日:

买点时间 & 价格

卖点时间 & 价格

并画图:

分钟折线

昨收线

买卖点横线 + 散点

参考代码:
from jqdatasdk import *
import pandas as pd
import matplotlib.pyplot as plt
from datetime import datetime, timedelta

plt.rcParams['font.sans-serif'] = ['Microsoft YaHei', 'SimHei']
plt.rcParams['axes.unicode_minus'] = False

# =============================
# 1. 登录
# =============================
import config
auth(config.JQ_USERNAME, config.JQ_PASSWORD)

# =============================
# 2. 参数
# =============================
stock = "000001.XSHE"
start_date = "2024-10-06"
end_date   = "2024-10-11"
m = 0.005

# =============================
# 3. 工具函数
# =============================
def get_intraday(date):
    df = get_price(
        stock,
        start_date=date + " 09:30:00",
        end_date=date + " 15:00:00",
        frequency="1m",
        fields=["close"],
        skip_paused=True,
        panel=False
    )
    if df.empty:
        return None

    df = df.reset_index()
    df.rename(columns={df.columns[0]: "time"}, inplace=True)
    df["time"] = pd.to_datetime(df["time"])
    return df

def get_prev_close(date):
    d = get_price(
        stock,
        end_date=date,
        count=2,
        frequency="daily",
        fields=["close"],
        panel=False
    )
    if len(d) < 2:
        return None
    return d.iloc[-2]["close"]

# =============================
# 4. 主循环
# =============================
current = datetime.strptime(start_date, "%Y-%m-%d")
end = datetime.strptime(end_date, "%Y-%m-%d")

while current <= end:
    date_str = current.strftime("%Y-%m-%d")
    df = get_intraday(date_str)

    if df is None or len(df) < 5:
        print(f"📅 {date_str} 休市")
        current += timedelta(days=1)
        continue

    prev_close = get_prev_close(date_str)
    if prev_close is None:
        current += timedelta(days=1)
        continue

    prices = df["close"].values

    buy = sell = None
    buy_price = sell_price = None

    # =============================
    # 情况 A:高于昨收 → 先卖后买
    # =============================
    if prices[0] > prev_close:
        for i in range(1, len(prices)-1):
            # 第一个波峰
            if prices[i] > prices[i-1] and prices[i] > prices[i+1]:
                sell = df.iloc[i]
                sell_price = prices[i]
                break

        if sell is not None:
            for j in range(i+1, len(prices)):
                if prices[j] <= sell_price * (1 - m):
                    buy = df.iloc[j]
                    buy_price = prices[j]
                    break

    # =============================
    # 情况 B:低于昨收 → 先买后卖
    # =============================
    else:
        for i in range(1, len(prices)-1):
            # 第一个波谷
            if prices[i] < prices[i-1] and prices[i] < prices[i+1]:
                buy = df.iloc[i]
                buy_price = prices[i]
                break

        if buy is not None:
            for j in range(i+1, len(prices)):
                if prices[j] >= buy_price * (1 + m):
                    sell = df.iloc[j]
                    sell_price = prices[j]
                    break

    # =============================
    # 补齐未完成交易
    # =============================
    close_time  = df.iloc[-1]["time"]
    close_price = df.iloc[-1]["close"]

    if buy is None:
        buy = pd.Series({"time": close_time, "close": close_price})

    if sell is None:
        sell = pd.Series({"time": close_time, "close": close_price})

    # =============================
    # 输出
    # =============================
    print(f"\n📅 {date_str}")
    print(f"昨收价:{prev_close:.2f}")
    print(f"🔺 买点:{buy['time']}  价格 {buy['close']:.2f}")
    print(f"🔻 卖点:{sell['time']} 价格 {sell['close']:.2f}")

    # =============================
    # 绘图
    # =============================
    plt.figure(figsize=(14, 6))
    plt.plot(df["time"], df["close"], label="分钟价格")

    plt.axhline(prev_close, linestyle="--", label="昨收价")

    plt.axhline(buy["close"], linestyle=":", color="green", label="买入线")
    plt.axhline(sell["close"], linestyle=":", color="red", label="卖出线")

    plt.scatter(buy["time"], buy["close"], color="green", s=80)
    plt.scatter(sell["time"], sell["close"], color="red", s=80)

    plt.title(f"平安银行 日内波峰/波谷策略({date_str})")
    plt.xlabel("时间")
    plt.ylabel("价格")
    plt.legend()
    plt.grid(alpha=0.3)
    plt.show()

    current += timedelta(days=1)

天不生墨翟,万古如长夜!以墨运商,以商助墨。金双石科技长期招聘科技研发人才!微信:qishanxiaolu   电话:15876572365   公司:深圳市金双石科技有限公司
回复

使用道具 举报

  • 您可能感兴趣
您需要登录后才可以回帖 登录 | 立即注册 |

本版积分规则 返回列表

管理员给TA私信
以墨运商,以商助墨。

查看:3 | 回复:0

  • 高端神经反馈脑波检测系统

    高端神经反馈脑波检测系统分为脑波检测、脑波分析、脑波解码三个部分。 前端主程序

    阅读:9|2026-01-06
  • 国内第三方量化平台有哪些有什么特点

    好的,我们来详细了解一下国内主流的第三方量化平台。这些平台极大地降低了个人投资者

    阅读:516|2025-12-09
  • 为什么脑波要去除伪迹

    1. 伪迹不是大脑信号 EEG设备记录的是头皮上非常微弱的电位变化(微伏级别,μV)。

    阅读:13|2025-12-05
  • 便携可视化语音AI耳机

    项目起源: 初先生的聊天记录: 你那边掌握的技术,有办法做一个有摄像头的,墨者机

    阅读:9|2025-12-01
  • 脑波峰值频率

    看看1-30Hz脑波功率曲线 发现15Hz之后的波动很小。 去掉15Hz之后的曲线 发现4Hz

    阅读:103|2025-11-28
  • 什么是基础节律

    🧠 一、什么是“基础节律”(Basic Rhythm) 基础节律 = 在闭眼静息状态下,大脑自发

    阅读:117|2025-11-27
  • 情绪指数EQ是什么?

    情绪指数 EQ 在脑波科学(特别是情绪解码、神经反馈、BCI 领域)中,通常不是单个固定

    阅读:231|2025-11-22
  • 抗癫痫作用的SMR波

    SMR 波(Sensorimotor Rhythm)是脑电学里一个非常重要、但经常被忽略的节律。它与运

    阅读:226|2025-11-22
  • 为什么科学家认为β波与人的注意、紧张相关

    科学家之所以非常确定 β波(13–30 Hz)与“注意、警觉、紧张、执行任务”相关,不是

    阅读:219|2025-11-22
  • 为什么说θ波与冥想、困倦相关

    科学界之所以认为 θ波(Theta, 4–7 Hz)与“冥想、困倦、催眠状态”有关,并不是玄

    阅读:212|2025-11-22
金双石科技,软件开发20年,技术行业领先,您的满意,就是我们的目标,认真负责,开拓进取,让成品物超所值
关于我们
公司简介
发展历程
联系我们
本站站务
友情链接
新手指南
内容审核
商家合作
广告合作
商家入驻
新闻合作

手机APP

官方微博

官方微信

联系电话:15876572365 地址:深圳市宝安区西乡街道宝民二路宝民花园 ( 粤ICP备2021100124号-1 ) 邮箱:qishanxiaolu@qq.com
QQ|Powered by Discuz! X3.5 © 2001-2026 Discuz! Team.
快速回复 返回顶部 返回列表