全部版块 我的主页
论坛 金融投资论坛 六区 金融实务版 比特币、区块链与元宇宙
754 1
2022-10-18

量化交易開发:是指以先进的数学模型替代人为的主观判断,利用计算机技术从庞大的历史数据中海选能带来超额收益的多种“大概率”事件以制定策略,极大地减少了投资者情绪波动的影响,避免在市场极度狂热或悲观的情况下作出非理性的投资决策。

量化交易机器人优点:

1、克服人性的弱点:没有贪婪和恐惧,纪律性强、严格执行投资策略,不受投资者情绪的变化而随意更改。

2、模型的系统性:多层次的量化模型、多角度的观察及海量数据的处理,结合大数据处理技术捕捉至刂更多的投资机会。

3、及时、快速、准确:及时快速地跟踪市场变化,不断发现能够超额收益的新的统计模型,寻找新的交易机会。并且保证下单的准确无误,这是主观交易无法相提并论的。

量化交易就是把资金交给一个机器人,然后你把你的策略设定,他就按照你的来进行购买和出售货币。

策略一、仓位马丁策略(比较常见的策略)

在量化交易中最常用的方法就是利用网格交易法,在亏损的交易中通过仓位的加备来实现。仓位分布1,2,4,8,16…。

缺点:是在趋势行情中,最终的建仓数量会非常大。如果浮动亏损超过本金就会爆仓。

量化投资策略

量化投资策略是基于大数据基础上,利用统计学、数学、信息技术、人工智能等方法取代人工作出决策,通过模型完成股票交易来构建投资组合。

相对于人为主观投资,量化投资策略的最大特点是其具有一套基于数据的完整交易规则。

在投资决策的所有环节,根据设定好的客观量化标准,严格贯彻执行,比如,根据自己已经持有的A股票,等到A股票的横指标达到多少的阈值时,才可以开仓,以及每次开仓要买卖多少手等交易规则。

双均线策略

# 导入函数库

from jqdata import *

# 初始化函数,设定基准等等

def initialize(context):

    # 设定沪深300作为基准

    set_benchmark('000300.XSHG')

    # 开启动态复权模式(真实价格)

    set_option('use_real_price', True)

    # 输出内容到日志 log.info()

    log.info('初始函数开始运行且全局只运行一次')

    # 过滤掉order系列API产生的比error级别低的log

    # log.set_level('order', 'error')

    ### 股票相关设定 ###

    # 股票类每笔交易时的手续费是:买入时佣金万分之三,卖出时佣金万分之三加千分之一印花税, 每笔交易佣金最低扣5块钱

    set_order_cost(OrderCost(close_tax=0.001, open_commission=0.0003, close_commission=0.0003, min_commission=5), type='stock')

    ## 运行函数(reference_security为运行时间的参考标的;传入的标的只做种类区分,因此传入'000300.XSHG'或'510300.XSHG'是一样的)

      # 开盘前运行

    run_daily(before_market_open, time='before_open', reference_security='000300.XSHG')

      # 开盘时运行

    run_daily(market_open, time='open', reference_security='000300.XSHG')

      # 收盘后运行

    run_daily(after_market_close, time='after_close', reference_security='000300.XSHG')

## 开盘前运行函数

def before_market_open(context):

    # 输出运行时间

    log.info('函数运行时间(before_market_open):'+str(context.current_dt.time()))

    # 给微信发送消息(添加模拟交易,并绑定微信生效)

    # send_message('美好的一天~')

    # 要操作的股票:宏达股份(g.为全局变量)

    g.security = '600331.XSHG'

## 开盘时运行函数

def market_open(context):

    log.info('函数运行时间(market_open):'+str(context.current_dt.time()))

    security = g.security

    # 获取股票的收盘价

    close_data = get_bars(security, count=5, unit='1d', fields=['close'])

    # 取得过去五天的平均价格

    MA5 = close_data['close'].mean()

    # 取得上一时间点价格

    current_price = close_data['close'][-1]

    # 取得当前的现金

    cash = context.portfolio.available_cash

    # 如果上一时间点价格高出五天平均价1%, 则全仓买入

    if (current_price > 1.01*MA5) and (cash > 0):

        # 记录这次买入

        log.info("价格高于均价 1%%, 买入 %s" % (security))

        print("当前可用资金为{0}, position_value为{0}".format(cash, context.portfolio.positions_value))

        # 用所有 cash 买入股票

        order_value(security, cash)

    # 如果上一时间点价格低于五天平均价, 则空仓卖出

    elif current_price < MA5 and context.portfolio.positions[security].closeable_amount > 0:

        # 记录这次卖出

        log.info("价格低于均价, 卖出 %s" % (security))

        # 卖出所有股票,使这只股票的最终持有量为0

        order_target(security, 0)

## 收盘后运行函数

def after_market_close(context):

    log.info(str('函数运行时间(after_market_close):'+str(context.current_dt.time())))

    #得到当天所有成交记录

    trades = get_trades()

    for _trade in trades.values():

        log.info('成交记录:'+str(_trade))

    log.info('一天结束')

    log.info('##############################################################')

均线最早由美国投资专家Joseph E.Granville(格兰威尔)于20世纪中期提出,现在仍然广泛为人们使用,成为判断买卖信号的一大重要指标。从统计角度来说,均线就是历史价格的平均值,可以代表过去N日股价的平均走势。​​​​


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2022-10-18 18:00:45
点赞支持 感谢分享
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群