聚宽期货量化交易双均线策略及源代码
时间: 2023-05-31 20:04:00 浏览: 329
以下是聚宽期货量化交易双均线策略及源代码:
策略概述:
该策略是一种基于双均线的趋势跟踪策略,使用两条移动平均线(MA)来确定买入和卖出信号。当短期MA(如5日MA)上穿长期MA(如20日MA)时,产生买入信号;当短期MA下穿长期MA时,产生卖出信号。该策略适用于大部分的期货品种。
源代码:
# 导入聚宽期货模块
import jqdata
from jqdata import *
import talib
# 初始化函数,设定基准等等
def initialize(context):
set_benchmark('RB9999.XSGE')
set_option('use_real_price', True)
log.set_level('order', 'error')
# 设定股票池,这里以螺纹钢为例
g.stock = 'RB9999.XSGE'
# 设定参数,这里以5日MA和20日MA为例
g.short_ma = 5
g.long_ma = 20
# 设定交易费率,这里以万分之二为例
set_order_cost(OrderCost(open_tax=0.00002, close_tax=0.00002, open_commission=0.00002, close_commission=0.00002, minimum_commission=5), type='future')
# 开盘时运行函数
def handle_data(context, data):
# 获取股票价格数据
price = attribute_history(g.stock, g.long_ma + 1, '1d', ['close'], skip_paused=True, df=False)['close']
# 计算短期和长期移动平均线
short_ma = talib.SMA(price, g.short_ma)[-1]
long_ma = talib.SMA(price, g.long_ma)[-1]
# 判断是否买入或卖出
if short_ma > long_ma and context.portfolio.positions[g.stock].total_amount == 0:
# 买入
order_value(g.stock, context.portfolio.cash)
elif short_ma < long_ma and context.portfolio.positions[g.stock].total_amount > 0:
# 卖出
order_target(g.stock, 0)
阅读全文