合肥生活安徽新闻合肥交通合肥房产生活服务合肥教育合肥招聘合肥旅游文化艺术合肥美食合肥地图合肥社保合肥医院企业服务合肥法律

代写聚宽量化策略 聚宽代码代写

时间:2024-03-28  来源:合肥网hfw.cc  作者:hfw.cc 我要纠错


'''
1、首先计算:
(1)N日High的最高价HH, N日Close的最低价LC;
(2)N日Close的最高价HC,N日Low的最低价LL;
(3)Range = Max(HH-LC,HC-LL)
(4)BuyLine = Open + K1*Range
(5)SellLine = Open + K2*Range

2.构造系统
(1)当价格向上突破上轨时,如果当时持有空仓,则先平仓,再开多仓;如果没有持仓,则直接开多仓;
(2)当价格向下突破下轨时,如果当时持有多仓,则先平仓,再开空仓;如果没有持仓,则直接开空仓;
'''

def initialize(context):
    # 设定沪深300作为基准
    set_benchmark('000300.XSHG')
    # True为开启动态复权模式,使用真实价格交易
    set_option('use_real_price', True) 
    # 设定成交量比例
    set_option('order_volume_ratio', 1)
    # 关闭订单提醒
    # log.set_level('order', 'error')
    # 设定期货保证金比例
    set_option('futures_margin_rate', 0.3)
    # 设定操作金融期货
    set_subportfolios([SubPortfolioConfig(cash=context.portfolio.cash, type='index_futures')])
    # 金融期货close_today_commission可不用设定,平今仓默认0.0023
    set_order_cost(OrderCost(open_commission=0.000023, close_commission=0.000023, close_today_commission=0.0023), type='index_futures')
    #运行函数
    run_daily(set_info, time='before_open', reference_security='IF1512.CCFX')
    run_daily(trade, time='every_bar', reference_security='IF1512.CCFX')

def set_info(context):
    # 分钟计数
    g.minute_count = 0

def trade(context):
    # 开盘第一分钟
    if g.minute_count == 0:
        # 获取当月可交易的 HS300 股指期货合约
        g.security = get_stock_index_futrue_code(context,symbol='IF',month='current_month')
        # 获取 BuyLine, SellLine
        g.BuyLine, g.SellLine = dual_thrust(g.security,n=10,K1=0.5,K2=0.5)
        # 分钟计数
        g.minute_count += 1
    # 开盘第一分钟之后
    else:
        # 获取标的可平多仓
        long_closeable_amount = context.portfolio.long_positions[g.security].closeable_amount
        # 获取标的可平空仓
        short_closeable_amount = context.portfolio.short_positions[g.security].closeable_amount
        # 获取标的的最新价
        current_price = attribute_history(g.security, 1, '1m', ['close'], df=False)['close'][0]

        # 当价格向上突破上轨时
        if current_price > g.BuyLine:
            # 如果当时持有空仓,则先平仓,再开多仓;
            if(short_closeable_amount>0):
                # 平空仓
                order_target(g.security, 0 , side='short')
                # 开1手多仓
                order(g.security, 1, side='long')
                log.info('持有空仓,先平仓,再开多仓')
            # 如果没有持仓,则直接开多仓;
            elif (short_closeable_amount == 0) and (long_closeable_amount == 0):
                # 开1手多仓
                order(g.security, 1, side='long')
                log.info('没有持仓,开多仓')
        # 当价格向下突破下轨时
        elif current_price < g.SellLine:
            # 如果当时持有多仓,则先平仓,再开空仓;
            if (long_closeable_amount>0):
                # 平多仓
                order_target(g.security, 0 , side='long')
                # 开1手空仓
                order(g.security, 1, side='short')
                log.info('持有多仓,先平仓,再开空仓')
            # 如果没有持仓,则直接开空仓;
            elif (short_closeable_amount == 0) and (long_closeable_amount == 0):
                # 开1手空仓
                order(g.security, 1, side='short')
                log.info('没有持仓,则直接开空仓')

        # 分钟计数
        g.minute_count += 1

## 获取 BuyLine 和 SellLine
def dual_thrust(security,n,K1,K2):
    hist = attribute_history(security, n, '1d', ['high','low','close','open'], df=False)
    HH = max(hist['high'])
    LC = min(hist['close'])
    HC = max(hist['close'])
    LL = min(hist['low'])
    Open = get_current_data()[security].day_open
    # 获取 Range
    Range = max((HH-LC),(HC-LL))
    # 计算BuyLine 和 SellLine
    
    BuyLine = Open + K1 * Range
    SellLine = Open - K2 * Range
    # 返回结果
    return BuyLine, SellLine

## 获取当天时间正在交易的股指期货合约
def get_stock_index_futrue_code(context,symbol,month='current_month'):
    '''
    获取当天时间正在交易的股指期货合约。其中:
    symbol:
            'IF' #沪深300指数期货
            'IC' #中证500股指期货
            'IH' #上证50股指期货
    month:
            'current_month' #当月
            'next_month'    #隔月
            'next_quarter'  #下季
            'skip_quarter'  #隔季
    '''
    display_name_dict = {'IF':'沪深300指数期货','IC':'中证500股指期货','IH':'上证50股指期货'}
    month_dict = {'current_month':0, 'next_month':1, 'next_quarter':2, 'skip_quarter':3}

    display_name = display_name_dict[symbol]
    n = month_dict[month]
    dt = context.current_dt.date()
    a = get_all_securities(types=['futures'], date=dt)
    try:
        df = a[(a.display_name == display_name) & (a.start_date <= dt) & (a.end_date >= dt)]
        if (len(df)>4) and (month in ('next_quarter','skip_quarter')):
            return df.index[n+1]
        else:
            return df.index[n]
    except:
        return 'WARRING: 无此合约'

# 获取金融期货合约到期日
def get_CCFX_end_date(fature_code):
    return get_security_info(fature_code).end_date



如有需要,请加QQ:88652583 或微信: 88652583

扫一扫在手机打开当前页
  • 上一篇:代写CPSC 217、代做python编程设计
  • 下一篇:菲律宾机场小黑屋 &#160;为什么会被关进菲律宾小黑屋
  • 无相关信息
    合肥生活资讯

    合肥图文信息
    海信罗马假日洗衣机亮相AWE  复古美学与现代科技完美结合
    海信罗马假日洗衣机亮相AWE 复古美学与现代
    合肥机场巴士4号线
    合肥机场巴士4号线
    合肥机场巴士3号线
    合肥机场巴士3号线
    合肥机场巴士2号线
    合肥机场巴士2号线
    合肥机场巴士1号线
    合肥机场巴士1号线
    合肥轨道交通线路图
    合肥轨道交通线路图
    合肥地铁5号线 运营时刻表
    合肥地铁5号线 运营时刻表
    合肥地铁4号线 运营时刻表
    合肥地铁4号线 运营时刻表
  • 关于我们 | 打赏支持 | 广告服务 | 联系我们 | 网站地图 | 免责声明 | 帮助中心 | 友情链接 |

    Copyright © 2020 hfw.cc Inc. All Rights Reserved. 合肥网 版权所有
    ICP备06013414号-3 公安备 42010502001045