Python量化交易学习——Part2 获取交易数据

在本节中,主要是对掘金中一些基本的功能进行讲解。

新建策略

当我们建立一个空策略后,代码显示如下图所示:

# coding=utf-8
from __future__ import print_function, absolute_import
# 引用掘金数据库
from gm.api import *


# 策略中必须有init方法,初始化
def init(context):
    pass



if __name__ == '__main__':
    '''
        strategy_id策略ID, 由系统生成
        filename文件名, 请与本文件名保持一致
        mode运行模式, 实时模式:MODE_LIVE回测模式:MODE_BACKTEST
        token绑定计算机的ID, 可在系统设置-密钥管理中生成
        backtest_start_time回测开始时间
        backtest_end_time回测结束时间
        backtest_adjust股票复权方式, 不复权:ADJUST_NONE前复权:ADJUST_PREV后复权:ADJUST_POST
        backtest_initial_cash回测初始资金
        backtest_commission_ratio回测佣金比例
        backtest_slippage_ratio回测滑点比例
        backtest_match_mode市价撮合模式,以下一tick/bar开盘价撮合:0,以当前tick/bar收盘价撮合:1
        '''
    run(strategy_id='自己的ID',
        filename='main.py',
        mode=MODE_BACKTEST,
        token='自己的token码',
        backtest_start_time='2020-11-01 08:00:00',
        backtest_end_time='2020-11-10 16:00:00',
        backtest_adjust=ADJUST_PREV,
        backtest_initial_cash=10000000,
        backtest_commission_ratio=0.0001,
        backtest_slippage_ratio=0.0001,
        backtest_match_mode=1)

掘金量化交易系统虽然支持python编译,但是直观性上没有第三方IDE好,所以我采用的方法是将代码直接copy到pycharm中进行编译。
在第三方软件进行编译时,需要注意的有三点:
(1)策略ID:策略 ID 用于终端识别策略身份,如识别不同策略发来的日志、消息、回测报表,交易信号等。可在策略编辑页面点击右下角的设置按钮查看、复制策略 ID。必须和策略里run()的strategy_id一致。
(2)token:token ID 用于服务端识别用户登录身份,如从服务器提取数据。
如需获取,点击掘金量化终端顶部的“系统设置”即可。同时,也可以选择重新生成 token ID,此时旧的 token ID 将失效。
在这里插入图片描述
(3)filename:这个需要与第三方IDE设置的文件名相同,比如在pycharm中设置的文件名为test1.py,那么这里的main.py就需要改成test1.py。

获取数据

量化投资的第一步就是如何获取股市的数据。
交易标的:股票、期货、可转债、ETF、指数、基金
交易市场:上交所(SHSE)、深交所(SZSE)、中金所(CFFEX)、上期所(SHFE)、大商所(DCE)、郑商所(CZCE)、上海国际能源交易中心(INE),广期所(GFEX)
数据类型:实时行情数据、历史行情数据、基本面数据。
其中,实时行情数据和历史行情数据均包含 tick 行情、bar 行情。
基本面数据包含财务指标、指数成分、行业概念和交易日等数据。
我这里采用第三方IDE获取数据,数据仅返回一次。

# coding=utf-8
import gm.api as gm
import talib
import numpy as np
import pandas as pd
gm.set_token("自己的token码")
"""
1、set_token 设置用户token, 如果token不正确, 函数调用会抛出异常;
2、调用数据查询函数, 直接进行数据查询。
"""

data = gm.history_n(symbol="SZSE.002415",frequency="1d",count=100,end_time="2024-5-24",fields="close",fill_missing="last",adjust=gm.ADJUST_PREV,df=True)
close = np.asarray(data["close"].values)
data.to_csv("data.csv")
print(close)

这里用到了gm.history_n()这个函数,目的是为了获取历史的N条数据,我上面的代码就是获取了海康威视仅100天的收盘价,并存储到excel中,同时打印出来。
返回值:
在这里插入图片描述
返回的CSV数据:
在这里插入图片描述

gm.history_n() 函数

history_n(symbol, frequency, count, end_time=None, fields=None, skip_suspended=True,
          fill_missing=None, adjust=ADJUST_NONE, adjust_end_time='', df=False)

参数:

参数名类型说明
symbolstr标的代码(只允许单个标的的代码字符串),如SZSE.002415代表深圳交易所上市的海康威视
frequencystr频率,支持’tick’(交易所服务器刷新频率),‘1d’,‘60s’等,默认为’1d’。
countint数量(正整数)
end_timestr or datetime.datetime结束时间(%Y-%m-%d %H:%M:%S 格式),也支持datetime.datetime格式,默认None时,用了实际当前时间,非回测当前时间
fieldsstr指定返回对象字段,如有多个字段,中间用,隔开,默认所有,如(open,high,low,price)等。
skip_suspendedbool是否跳过停牌,默认跳过
fill_missingstr or None填充方式,None——不填充;‘NaN’——用空值填充,‘Last’——用上一个填充,默认None
adjustintADJUST_NONE or 0:不复权;ADJUST or 1:前复权;ADJUST_POST or 2:后复权 默认不复权
adjust_end_timestr复权基点时间,默认当前时间
dfbool是否返回dataframe格式(有时间戳),默认False,返回list[dict]

注意:

  1. 返回的list/DataFrame是以参数eob/bob的升序来排序的
  2. 若输入无效标的代码,返回空列表/空DataFrame
  3. 若输入代码正确,但查询字段包含无效字段,返回的列表、DataFrame 只包含 eob、symbol和输入的其他有效字段
  4. end_time 中月,日,时,分,秒均可以只输入个位数,例:‘2017-7-30 20:0:20’,但若对应位置为零,则0不可被省略,如不可输入’2017-7-30 20: :20’
  5. skip_suspended 和 fill_missing 参数暂不支持
  6. 单次返回数据量最大返回 33000, 超出部分不返回
  7. end_time 输入不存在日期时,会报错 details = “Can’t parse string as time: 2020-10-40 15:30:00”

转载请注明出处:雪中嬉戏的柴犬

### 使用深度学习进行遥感灾害监测的方法和应用 #### 方法概述 使用深度学习进行遥感灾害监测涉及多个阶段的工作流,从数据准备到最终的应用部署。该过程不仅依赖于高质量的数据集,还需要精心设计的算法来实现高效的灾害识别与预测。 #### 数据收集与预处理 在开始任何建模之前,获取合适的遥感影像至关重要。这些图像是后续所有工作的基础,决定了模型性能的好坏。对于水旱灾害这样的特定事件,应优先考虑那些能反映受灾前后情况的时间序列图像[^2]。一旦获得了原始影像资料,则需对其进行必要的预处理工作,比如去除噪声、校正几何畸变等,确保输入至神经网络的数据具备良好的一致性和准确性[^1]。 #### 模型构建与训练 针对不同类型的灾害特点,可以选择适合的任务导向型架构来进行定制化开发。例如,在面对洪水泛滥这类大面积影响范围的情况下,可以采用U-Net或其他类似的语义分割框架;而对于干旱状况评估而言,可能更适合运用目标检测或分类模型去量化植被健康状态的变化趋势。此外,考虑到时空维度上的连续性特征,循环卷积神经网络(RCNNs)、长短时记忆单元(LSTMs)及其变体也被证明是非常有效的解决方案之一[^3]。 #### 应用实例:林地变化监测案例分享 以森林火灾为例说明具体的实践方式。一项研究表明,通过结合多源遥感影像以及先进的深度学习技术——特别是孪生神经网络加上特征金字塔网络结构(Siamese Neural Network with Feature Pyramid Networks),可以在很大程度上改善现有方法存在的局限性,如较低的数据质量和不理想的探测效果。此组合方案不仅可以精准地区分正常生长区与受损区域边界,而且还能适应更广泛的空间分辨率需求,从而为灾情评估提供了更加可靠的技术支持[^4]。 ```python import tensorflow as tf from keras.models import Model from keras.layers import Input, Conv2D, MaxPooling2D, UpSampling2D, concatenate def build_siamese_fpn(input_shape=(None, None, 3)): inputs = Input(shape=input_shape) # Encoder part of Siamese network (shared weights) conv1 = Conv2D(64, kernel_size=3, activation='relu', padding='same')(inputs) pool1 = MaxPooling2D(pool_size=(2, 2))(conv1) # Decoder part using FPN structure upsampled_conv1 = UpSampling2D(size=(2, 2))(pool1) merged = concatenate([upsampled_conv1, conv1], axis=-1) output = Conv2D(1, kernel_size=1, activation='sigmoid')(merged) model = Model(inputs=[inputs], outputs=output) return model ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值