量化策略怎么写?PTrade/QMT 基础策略模板分享
发布时间:2026-5-25 13:39阅读:210
PTrade 基础策略模板:简单均线策略
策略原理
利用短期均线与长期均线的交叉来产生买卖信号。当短期均线向上穿过长期均线时,产生买入信号;当短期均线向下穿过长期均线时,产生卖出信号。
代码实现
python
# 初始化函数,设定要操作的股票、基准等等
def initialize(context):
# 定义一个全局变量, 保存要操作的股票
g.security = '600519.SH'
# 设定沪深300作为基准
set_benchmark('000300.SH')
# 开启动态复权模式(真实价格)
set_option('use_real_price', True)
# 输出内容到日志 log.info()
log.info('初始函数开始运行且全局只运行一次')
# 过滤掉order系列API产生的比error级别低的log
log.set_level('order', 'error')
# 设定滑点为0
set_slippage(FixedSlippage(0))
# 设定手续费
set_order_cost(OrderCost(open_tax=0, close_tax=0.001, open_commission=0.0003, close_commission=0.0003, min_commission=5), type='stock')
# 每个单位时间(如果按天回测,则每天调用一次,如果按分钟,则每分钟调用一次)调用一次
def handle_data(context, data):
# 获取股票的收盘价
close_data = data[g.security].close
# 计算短期均线和长期均线
short_window = 5
long_window = 20
short_ma = close_data[-short_window:].mean()
long_ma = close_data[-long_window:].mean()
# 获取当前的现金
cash = context.portfolio.cash
# 获取当前股票持仓数量
position = context.portfolio.positions[g.security].quantity if g.security in context.portfolio.positions else 0
# 金叉买入
if short_ma > long_ma and position == 0:
# 计算可买入数量
num_to_buy = int(cash / data[g.security].close)
if num_to_buy > 0:
order(g.security, num_to_buy)
log.info("买入 %s" % (g.security))
# 死叉卖出
elif short_ma < long_ma and position > 0:
order_target(g.security, 0)
log.info("卖出 %s" % (g.security))
QMT 基础策略模板:双均线策略
策略原理
同样基于双均线交叉原理进行买卖操作,通过对比短期和长期移动平均线的数值关系来决定交易时机。
代码实现
python
import numpy as np
from qmtsdk import *
def initialize(context):
# 设置交易品种
context.symbol = '000001.SZ'
# 设置短期窗口和长期窗口
context.short_window = 5
context.long_window = 20
# 初始化仓位
context.position = 0
def handle_data(context, data):
# 获取收盘价序列
close_prices = data.get_bars(context.symbol, 'D', context.long_window).close
if len(close_prices) < context.long_window:
return
# 计算短期均线和长期均线
short_ma = np.mean(close_prices[-context.short_window:])
long_ma = np.mean(close_prices[-context.long_window:])
# 获取可用资金
available_cash = context.account().cash
# 金叉买入
if short_ma > long_ma and context.position == 0:
num_shares = int(available_cash / data.current(context.symbol, 'close'))
if num_shares > 0:
order_shares(context.symbol, num_shares)
context.position = num_shares
log.info('买入 %s, 数量 %d' % (context.symbol, num_shares))
# 死叉卖出
elif short_ma < long_ma and context.position > 0:
order_shares(context.symbol, -context.position)
context.position = 0
log.info('卖出 %s, 数量 %d' % (context.symbol, context.position))
以上两个基础策略模板在 PTrade 和 QMT 上实现了简单的双均线策略,新手可以根据实际情况调整参数和优化策略,例如改变均线周期、添加止损止盈条件等,进一步丰富策略的功能和适应性。股票/量化开户找我!无门槛国债逆回购一折 (百万分之一)!ETF佣金万0.5!优惠多多!免费量化使用量化软件QMT+miniQMT+ptrade!

温馨提示:投资有风险,选择需谨慎。
- 2026 年怎么样免费开通 QMT 量化软件|手机线上开通 QMT 详细攻略
- 2026年如何免费开通量化交易权限?QMT、PTrade零费用开通全攻略
- 2026 年最新 QMT 量化交易软件开通全流程!免费开通超详细教程
- 2026 年全网最全 QMT 量化软件详解!QMT 开通门槛 + 详细操作流程
- 2026完整版QMT量化交易攻略:支持券商、开通资金门槛、实操细则全解析
- 2026最新完整版QMT专业量化交易开户全指南:开通条件、流程、费率全解析
- 现在 QMT 与 PTrade 量化交易怎么选,量化免费开通保姆级全攻略(2026 最新)
- 2026 年最新量化交易 QMT+PTrade 开通全攻略:轻松看懂量化开通门槛
-
8月可转债强赎密集来袭!最后转股日汇总,手里有的赶紧看
2026-08-24 11:33
-
2026年开户选长城证券、华泰证券还是中金财富好?
2026-08-24 11:33
-
公积金新规9月20日实施!房租提取不卡比例,装修物业费也能提
2026-08-24 11:33


问一问

+微信
分享该文章
