量化交易平台Ptrade、QMT框架,入门

·量化投资从入门到入土

·免费提供Ptrade、QMT技术支持与疑问解答

·帮助搭建量化交易平台及风控系统

·这个账号会持续更新相关示例的讲解,欢迎关注

·欢迎深入交流

~~~~~~~~~~~~~~~~~~~~~~~~~~~华~丽~分~割~线~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

def initialize(context):
    # 初始化模块;                                    
    g.security = "600570.SS"
    set_universe(g.security)

def handle_data(context, data):
    pass

        许多量化小白刚下载平台接触到这样的代码的时候就直接傻眼了,为什么他定义函数却不执行?为什么这样的代码可以跑?为什么定义了函数变量但是却没有使用?其实是因为这个是底层用C++写的交易框架,并不是真的意义上和Pycharm一模一样的编程软件,为了加快运行速度,他会将一些代码转化成C++代码执行,不同的框架也会同时运行,所以我们的定义一些需要在多个框架使用的变量时,我们需要将它转化成全局变量。

        在Ptrade中initialize和handle_data其实是可以同时运行的,这是量化交易中最重要的两个框架,他们的运行条件不同(详见开发文档),可以轻松帮助我们完成量化交易操作。

        对于框架中的context对象,他是业务上下文对象,可以让我们便捷地查询一些信息。比如:

capital_base -- 起始资金
previous_date –- 前一个交易日
sim_params -- SimulationParameters对象
    capital_base -- 起始资金
    data_frequency -- 数据频率
portfolio -- 账户信息,可参考Portfolio对象
initialized -- 是否执行初始化
slippage -- 滑点,VolumeShareSlippage对象
    volume_limit -- 成交限量
    price_impact -- 价格影响力
commission -- 佣金费用,Commission对象
    tax—印花税费率
    cost—佣金费率
    min_trade_cost—最小佣金
blotter -- Blotter对象(记录)
    current_dt -- 当前单位时间的开始时间,datetime.datetime对象(北京时间)
recorded_vars -- 收益曲线值

context对象的使用非常简单,可以参考示例

def initialize(context):
    g.security = ['600570.SS', '000001.SZ']
    set_universe(g.security)

def handle_data(context, data):
    #获得当前回测相关时间
    pre_date = context.previous_date
    log.info(pre_date)  
    #其中log.info函数是日志信息函数,你可以把他理解成Pycharm中的print函数

    year = context.blotter.current_dt.year
    log.info(year)
    month = context.blotter.current_dt.month
    log.info(month)
    day = context.blotter.current_dt.day
    log.info(day)
    hour = context.blotter.current_dt.hour
    log.info(hour)
    minute = context.blotter.current_dt.minute
    log.info(minute)
    second = context.blotter.current_dt.second
    log.info(second)
    #得到"年-月-日"格式
    date = context.blotter.current_dt.strftime("%Y-%m-%d")
    log.info(date)
    #得到周几
    weekday = context.blotter.current_dt.isoweekday()
    log.info(weekday)

        initialize框架中,g其实是全局对象,它用于存储用户的各类可被不同函数(包括自定义函数)调用的全局数据。在initialize中保存的参数,如果不将他储存成为全局变量,那他就不能再其他框架被调用。

def initialize(context):
    g.security = "600570.SS"
    g.count = 1
    g.flag = 0
    set_universe(g.security)

def handle_data(context, data):
    log.info(g.security)
    log.info(g.count)
    log.info(g.flag)

欢迎私信交流

### QMT量化交易平台的优势 QMT智能量化交易系统具备显著的技术优势,能够满足现代金融市场对于速度和精度的要求。该平台不仅实现了高效的订单处理能力,还通过高度自动化的流程减少了人为干预的可能性,从而提高了交易效率[^1]。 #### 高效性 QMT系统的架构设计旨在优化数据传输路径并减少延迟时间,在毫秒级别内完成复杂的计算任务,确保指令快速下达市场。这种低延迟能力使得用户能够在瞬息万变的行情中抓住最佳买卖时机。 #### 精准度 为了提高决策准确性,QMT集成了先进的算法模型用于分析历史价格走势以及预测未来趋势变化。这些模型基于大量真实交易记录训练而成,可以有效识别潜在的投资机会,并提供科学合理的建议给到使用者。 #### 自动化程度高 整个交易过程几乎完全由计算机程序控制,从选股、建模直到下单执行都无需人工参与。这不仅降低了操作风险,也节省了大量的时间和精力成本,让投资者可以把更多注意力放在策略研究上而不是日常繁琐的操作当中。 --- ### QMT量化交易平台的特点 除了上述提到的核心竞争力外,QMT还有以下几个值得注意的地方: - **丰富的API接口**:支持多种编程语言接入,方便开发者根据自己需求定制专属功能模块; - **强大的回溯测试环境**:允许用户在一个模拟环境中反复验证自己的投资逻辑是否可行,直至满意为止再投入实际资金运作; - **严格的安全保障措施**:采用多重加密技术和权限管理机制来保护客户资产安全和个人信息安全; --- ### 主要功能介绍 针对不同层次用户的多样化需求,QMT提供了广泛而深入的服务选项: - **策略编写与调试**:内置可视化编辑器可以帮助初学者轻松构建简单有效的交易规则;而对于高级玩家,则开放源码级访问权限以便于实现复杂多样的个性化设定。 ```python def simple_moving_average_strategy(data, short_window=40, long_window=100): signals = pd.DataFrame(index=data.index) signals['signal'] = 0.0 # 计算短期移动平均线 (SMA) 和长期 SMA signals['short_mavg'] = data['Close'].rolling(window=short_window, min_periods=1).mean() signals['long_mavg'] = data['Close'].rolling(window=long_window, min_periods=1).mean() # 创建买入/卖出信号 signals['signal'][short_window:] = np.where(signals['short_mavg'][short_window:] > signals['long_mavg'][short_window:], 1.0, 0.0) # 生成交易订单 signals['positions'] = signals['signal'].diff() return signals ``` - **实时监控与预警通知**:一旦市场价格触及预设条件即刻触发警报提醒,使投资人不会错过任何重要事件的发生时刻。 - **跨市场联动分析**:利用大数据挖掘技术关联多个交易所之间的关系模式,寻找套利空间或避险途径[^2]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

方圆量化

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值