QMT量化软件中可以用到的策略举例!免费开QMT的方法!

下面我们来看几个真正实用的策略

在这个策略里,我们会根据历史价格做出判断:

  • 如果上一时间点价格高出五天平均价1%,则全仓买入
  • 如果上一时间点价格低于五天平均价,则空仓卖出
def initialize(context):
    g.security = '600570.SS'
    set_universe(g.security)
    
def handle_data(context, data):
    security = g.security
    sid = g.security
    
    # 取得过去五天的历史价格
    df = get_history(5, '1d', 'close', security, fq=None, include=False)
    
    # 取得过去五天的平均价格
    average_price = round(df['close'][-5:].mean(), 3)

    # 取得上一时间点价格
    current_price = data[sid]['close']
    
    # 取得当前的现金
    cash = context.portfolio.cash
    
    # 如果上一时间点价格高出五天平均价1%, 则全仓买入
    if current_price > 1.01*average_price:
        # 用所有 cash 买入股票
        order_value(g.security, cash)
        log.info('buy %s' % g.security)
    # 如果上一时间点价格低于五天平均价, 则空仓卖出
    elif current_price < average_price and get_position(security).amount > 0:
        # 卖出所有股票,使这只股票的最终持有量为0
        order_target(g.security, 0)
        log.info('sell %s' % g.security)

 

set_yesterday_position – 设置底仓

set_yesterday_position(poslist)
使用场景

该函数仅在回测模块可用

接口说明

该函数用于设置回测的初始底仓。

注意事项:

该函数会使策略初始化运行就创建出持仓对象,里面包含了设置的持仓信息。

参数

poslist:list类型数据,该list中是字典类型的元素,参数不能为空(list[dict[str:str],...]);

数据格式及参数字段如下:

[{
    'sid':标的代码,
    'amount':持仓数量,
    'enable_amount':可用数量,
    'cost_basis':每股的持仓成本价格,
}]

参数也可通过csv文件的形式传入,参考接口convert_position_from_csv

返回

None

示例
def initialize(context):
    g.security = '600570.SS'
    set_universe(g.security)
    # 设置底仓
    pos={}
    pos['sid'] = "600570.SS"
    pos['amount'] = "1000"
    pos['enable_amount'] = "600"
    pos['cost_basis'] = "55"
    set_yesterday_position([pos])

def handle_data(context, data):
    #卖出100股
    order(g.security,-100)

 QMT量化交易如何开通,免费吗?

目前,证券公司提供了迅投QMT和恒生PTRADE两款免费量化交易软件,只需投资者在证券账户满足一定资金量即可申请使用。普通版资金要求约30万,而专业版相对更高,约100万,但目前有的券商申请条件更低,但详细的要通过客户进来咨询才行。

这是我所了解的一家券商,期权1.7/张,两融5%(量大可谈参照第二部分),ETF万0.5,股票佣金万1永久含规费!

而且免费赠送量化软件!(看账号名)

具体费率如下:

图片

QMT和PTrade都是国内比较常见的量化交易软件,都可以编写自己的量化策略,并且软件功能相对成熟。

QMT的功能定位于智能策略编写,技术门槛相对较高,需要投资者有一定的编程经验,它支持VBA和Python双语言。

PTrade的功能则更加简单一些,其定位为智能策略条件单等交易工具,更适合新手使用。基于Python语言的开放性使得PTrade能够支持多种交易接口,实现自动化交易、策略模拟等高级功能。

前期准备

开通量化交易软件之前,需要有一个证券账户,并且账户需要在支持该软件的券商开立,建议直接找到券商的客户经理开通,方便后期申请量化交易系统。

联系开通

确定了要使用的量化交易软件后,可以联系券商的客户经理,向他们提出开通申请,他们会提供具体的开通流程和所需材料清单。

提交材料

按照券商要求填写资料。通常需要填写一份开通申请表格,一份风险揭示书,提供个人邮箱,用于接收相关资料与消息。大概一两天就可以申请成功!

安装配置

申请通过后,券商会将量化交易软件的安装包和相关配置文件发送到所提供的邮箱。根据券商提供的指导,下载并安装软件,进行一些基本的配置,如设置交易账户、连接券商服务器等,就可以正常交易了。

### QMT量化平台策略代码示例 对于希望在QMT平台上发和测试量化交易策略的研究者来说,获取并理解一些基础的策略代码是非常重要的。下面是一个简单的双均线策略实现案例,在此案例中,通过Python编写了一个基本框架来展示如何利用QMT平台的数据接口进行回测。 #### 双均线策略简介 该策略主要依赖于短期与长期两根移动平均线之间的关系来进行买卖判断。当短周期均线上穿长周期均线时视为买入信号;反之,则作为卖出信号[^2]。 #### 环境搭建说明 为了能够在本地环境中运行这些例子,建议安装`miniqmt`库,这允许发者直接调用API完成数据请求以及模拟真实环境下的订单提交等功能[^1]。 ```python import pandas as pd from datetime import datetime from miniqmt import DataApi, TradeApi def get_data(api, symbol='000001.SZ', start_date='2023-01-01'): """ 获取指定股票的历史日K线 """ df = api.get_kline_daily(symbol=symbol, fields="open,close", begin=start_date) return df.set_index('datetime') class DualMA(object): def __init__(self, short_window=5, long_window=60): self.short_window = short_window self.long_window = long_window def fit(self, data): # 计算两个不同窗口大小的简单移动平均(SMA) sma_short = data['close'].rolling(window=self.short_window).mean() sma_long = data['close'].rolling(window=self.long_window).mean() signals = pd.DataFrame(index=data.index) # 初始化所有时间为持有现金状态 (即仓位为空) signals['signal'] = 0.0 # 当短期SMA上穿过期SMA时发出买入信号 signals['signal'][sma_short > sma_long] = 1.0 # 将连续相同的持仓情况合并成单次操作记录 signals['positions'] = signals['signal'].diff() return signals.dropna() if __name__ == "__main__": trade_api = TradeApi() data_api = DataApi() stock_code = '000001.SZ' hist_data = get_data(data_api, symbol=stock_code) model = DualMA(short_window=5, long_window=60) trading_signals = model.fit(hist_data) print(trading_signals.tail()) ``` 这段代码展示了怎样连接到miniqmt API服务端口,并从中提取所需证券品种的日级别收盘价序列用于构建我们的技术指标体系。接着定义了DualMA类负责处理具体的逻辑运算过程,最后输出最近几次可能发生的交易动作提示信息给用户查看。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值