资源简介

日内回转交易是指投资者就同一个标的(如股票)在同一个交易日内各完成多次买进和卖出的行为,其目的为维持股票数量不变,通过日内K线操纵,使可用余额增多,股票成本降低的一种盈利模式。

资源截图

代码片段和文件信息

# coding=utf-8
from __future__ import print_function absolute_import unicode_literals
try:
    import talib
except:
    print(‘请安装TA-Lib库‘)
from gm.api import *

‘‘‘
本策略基于掘金量化交易平台 网址:www.myquant.cn

本策略首先买入SHSE.600000股票10000股
随后根据60s的数据来计算MACD(12269)线并在MACD>0的时候买入100股MACD<0的时候卖出100股
但每日操作的股票数不超过原有仓位并于收盘前把仓位调整至开盘前的仓位
回测数据为:SHSE.600000的60s数据
回测时间为:2017-09-01 08:00:00到2017-10-01 16:00:00
‘‘‘


def init(context):
    # 设置标的股票
    context.symbol = ‘SHSE.600048‘
    # 用于判定第一个仓位是否成功开仓
    context.first = 0
    # 订阅浦发银行 bar频率为1min
    subscribe(symbols=context.symbol frequency=‘300s‘ count=35)
    # 日内回转每次交易100股
    context.trade_n = 1000
    # 获取昨今天的时间
    context.day = [0 0]
    # 用于判断是否触发了回转逻辑的计时
    context.ending = 0


def on_bar(context bars):
    bar = bars[0]
    if context.first == 0:
        # 最开始配置仓位
        # 需要保持的总仓位
        context.total = 10000
        # 购买10000股浦发银行股票
        order_volume(symbol=context.symbol volume=context.total side=PositionSide_Long
                     order_type=OrderType_Market position_effect=PositionEffect_Open)
        print(context.symbol ‘以市价单开多仓10000股‘)
        context.first = 1.
        day = bar.bob.strftime(‘%Y-%m-%d‘)
        context.day[-1] = day[-2:]
        # 每天的仓位操作
        context.turnaround = [0 0]
        return

    # 更新最新的日期
    day = bar.bob.strftime(‘%Y-%m-%d %H:%M:%S‘)
    context.day[0] = bar.bob.day
    # 若为新的一天获取可用于回转的昨仓
    if context.day[0] != context.day[-1]:
        context.ending = 0
        context.turnaround = [0 0]
    if context.ending == 1:
        return

    # 若有可用的昨仓则操作
    if context.total >= 0:
        # 获取时间序列数据
        symbol = bar[‘symbol‘]
        recent_data = context.data(symbol=symbol frequency=‘300s‘ count=35 fields=‘close‘)
        # 计算MACD线
        macd signal hist= talib.MACD(recent_data[‘close‘].values)
        ma_5=talib.MA(recent_data[‘close‘].values5)
        ma_20=talib.MA(recent_data[‘close‘].values20)
        # 根据MACD>0则开仓小于0则平仓
        if macd[-1]<0 and signal[-1]<0 and macd[-2] signal[-1] and ma_5[-1]>ma_20[-1]:
        #if  macd[-2] < signal[-2] and macd[-1] > signal[-1]:
        #if macd[-1]>0:
            # 多空单向操作都不能超过昨仓位否则最后无法调回原仓位
            if context.turnaround[0] + context.trade_n < context.total:

评论

共有 条评论