• Python量化交易学习笔记(十四)demo52——程序化交易,交易时间段内自动买入跟踪股票


    本文记录使用easytrader+easyquotation实现策略的程序化交易的流程。上一篇 已经记录了使用easytrader进行程序化交易的过程,本文主要对easyquotation获取实时数据实现策略进行介绍。

    • easyquotation安装 

     

    pip install easyquotation
    

      

    • 选择行情数据源
    # 选择数据源
    import easyquotation as eq
     q = eq.use('qq')
    

     

    • 判断是否进入交易时间9.30-11.30---1:00--3:00

     

    # 判断是否进入交易时间9.30-11.30---1:00--3:00
    time_now = datetime.datetime.now()
    if time_now.time() < datetime.time(9, 30, 0)
    or datetime.time(11, 30, 0) <= time_now.time() <= datetime.time(13, 0, 0):
    continue
    if time_now.time() >= datetime.time(15, 0, 0):
    print("当前时间:"+time_now.time().strftime('%Y-%m-%d-%H-%M-%S')+"不在交易时间段,退出交易程序化")
    break

     

    • 根据时间更新成交量权重

     

    volume_weight = 1
    if time_now.time() > datetime.time(13, 0, 0):
    delta_seconds = (time_now - datetime.datetime(time_now.year, time_now.month, time_now.day, 13, 0, 0)).total_seconds()
    volume_weight = 1 + delta_seconds / 7200

    print(' ', time_now)
    time_str = time_now.strftime('%Y-%m-%d-%H-%M-%S')
    #定义一个买入股票对象
    buy_stocks = {}
    data = q.stocks(stocks)
    print('返回数据:'+data)

     

    • 循环遍历

     

    for key in data:
    # 价格过20日均线
    ma_20 = (history_data[key]['ma_19'] * 19 + data[key]['now']) / 20
    if not data[key]['now'] >= ma_20:
    continue
    # 涨幅不能过大
    if not (data[key]['now'] - data[key]['close']) / data[key]['close'] < 0.0618:
    continue
    # 成交量
    if not data[key]['volume'] > history_data[key]['volume'] * volume_weight:
    continue

    buy_price = 0.02 + data[key]['now']
    if g_trade:
    buy_limit = min(balance, 3000)
    if 100 * buy_price < balance:
    ret = user.buy(key, buy_price, buy_limit // (buy_price * 100) * 100)
    print(ret)

    buy_stocks[key] = buy_price
    stocks.remove(key)
    print(key)

     

    C:Python38python.exe F:/GZH/stock/src/com/gzh/stock51_buy.py
    获取当前目录:F:GZHstocksrccomgzh/../
    股票代码: ['sh600256', 'sh600348', 'sh600968', 'sh600971', 'sh601857', 'sh603300']
    数据:

    {
    "name": "广汇能源",
    "code": "600256",
    "now": 3.28,
    "close": 3.4,
    "open": 3.38,
    "volume": 55377600,
    "bid_volume": 15774500,
    "ask_volume": 39603000,
    "bid1": 3.27,
    "bid1_volume": 1127100,
    "bid2": 3.26,
    "bid2_volume": 1612700,
    "bid3": 3.25,
    "bid3_volume": 1507900,
    "bid4": 3.24,
    "bid4_volume": 252600,
    "bid5": 3.23,
    "bid5_volume": 324400,
    "ask1": 3.28,
    "ask1_volume": 80100,
    "ask2": 3.29,
    "ask2_volume": 261900,
    "ask3": 3.3,
    "ask3_volume": 214900,
    "ask4": 3.31,
    "ask4_volume": 325600,
    "ask5": 3.32,
    "ask5_volume": 741600,
    "最近逐笔成交": "",
    "涨跌": -0.12,
    "涨跌(%)": -3.53,
    "high": 3.39,
    "low": 3.27,
    "datetime": datetime.datetime(2021, 7, 8, 10, 30, 15),
    "价格/成交量(手)/成交额": "3.28/553776/183582685",
    "成交量(手)": 55377600,
    "成交额(万)": 183580000,
    "turnover": 0.82,
    "PE": 11.78,
    "unknown": "",
    "high_2": 3.39,
    "low_2": 3.27,
    "振幅": 3.53,
    "流通市值": 221.53,
    "总市值": 221.53,
    "PB": 1.25,
    "涨停价": 3.74,
    "跌停价": 3.06,
    "量比": 2.92,
    "委差": 32006,
    "均价": 3.32,
    "市盈(动)": 6.9,
    "市盈(静)": 16.58
    }

      

  • 相关阅读:
    使用Bootstrap后,关于IE与Chrome显示字体的问题
    利用百度接口,识别身份证
    双日历日期选择控件
    回复一个朋友:如何理解委托
    IIS7增加mine类型,以便可以访问apk
    关于SqlBulkCopy SQL批量导入需要注意,列名是区分大小写的
    关于取表中id最大值+1的select语句,哪种效率更高?
    MySQL中如何分析查询语句
    判断同名股票是否存在的MyBatis查询函数写法
    Thymeleaf中model设一个值 页面显示此值 JS取此值
  • 原文地址:https://www.cnblogs.com/gzhbk/p/14923104.html
Copyright © 2020-2023  润新知