文华 WH8 编写股票、期货程序化交易的基本流程 [复制链接]

    autojiaoyi.com 文华 查看全部 使用道具 举报 回复

    第一步 整理思路,编写模型
    (一)趋势模型构建方法
         做程序化自动交易,首先要有模型,文华的趋势模型开发使用麦语言编程,语法简单,功能强大,初识编程的投资者在掌握了模型编写技巧后,也能轻易的将思路转化成交易模型。
        1、麦语言模型的结构:
        麦语言模型主要由变量、交易条件和交易指令以及模型关键字组成,如下图是一个简单过滤模型的基本结构。
        2、麦语言模型编写步骤:
        (1)构建模型思路,量化出必要的条件和数据,将其定义成变量;
        (2)将赋值好的变量组合起来,构建模型的开平仓条件;
        (3)对开平仓条件添加相应的开平指令,按照模型性质添加模型关键字;
        (4)模型编写完成后,进行语法检测,加载到主图并查看模型历史回测报告
        下图①-⑤是如何建立一个趋势模型。
        注:
        图中④处各属性选项用法如下:
        副图指标,加载模型在副图中显示;
       K线附属指标,加载模型在主图中显示,与k线叠加在一起;
        主图k线形态,加载模型在主图中显示,替换原有k线指标,该属性的模型不支持效果
    测试。
    (二)函数查找方法
        1、了解函数
        方法1:在编写菜单下点击函数列表,可以查看趋势模型和算法模型的全部函数和详细说明。
        方法2:在模型编写平台,双击蓝色的系统函数,点击右键【查找函数说明】,可查看当前函数的具体介绍。
        2、了解交易指令
        麦语言的交易指令如下,可在编写平台上点击【插入】->【插入指令】详细了解;
        买开指令-------------------------BK
        卖开指令-------------------------SK
        卖平指令-------------------------SP
        买平指令-------------------------BP
        买平开反手指令------------------BPK
        卖平开反手指令------------------SPK
        清仓指令-------------------CLOSEOUT
        限价止损指令-------------------STOP
        追踪止损指令------------------STOP1

    第二步 模型测试和优化
    (一)测试模型在历史K线的效果
    当有了模型后,我们通常是不敢马上进行实盘交易的,因为我们不了解模型,不知道它是否符合我们的交易思路、盈利率是多少、胜率是多少、多久出一次交易信号等等。只有了解模型才能信任模型并放心的在实盘中应用,所以在实盘交易前需要先检验模型在历史k线上的效果,深度了解模型的运行效果和局限性。
    如下图,是如何加载模型并查看回测报告的方法,加载模型后点击【回测报告】按钮可查看详细分析报告。
    如上图,通过回测分析报告中提供的各个参考指标,投资者可360度的检验模型好坏。
    点击下图④处的【资金曲线】,可以直观的看到资金曲线的变化情况,检查模型的效果是否符合我们的预期要求。
    (二)了解模型(查看模型交易明细)
    资金最大回撤发生在哪一根K线?出现资金最大回撤时的几笔交易的盈亏都是多少?模型测试的每笔交易的时间和价格具体是多少?这一系列问题都可在“信号明细”中找到答案。信号明细以表格的形式给出了模型完整的成交明细,记录模型下单历程。
    如下图红框位置所示,点击【信号明细】,可查看详细的效果测试成交明细。
    (三)测试模型的敏感度
    模型对于参数变动的敏感程度,直接反映了它对市场变化的适应能力,参数稍有风吹草动,收益率就大幅变动的模型显然是不稳定的。
    敏感性测试图以滑点、手续费等作为横坐标,以平均盈利/平均亏损、收益率等参数为纵坐标,用线性形态直观展现出参数变化对平均盈亏、胜率等指标的影响,测试模型的敏感程度,帮助我们找到更好的模型。
    如下图红框位置所示,选好横坐标和纵坐标要考量的变量后,点击【计算】按钮便可查看敏感性测试图。
    (四)优化模型参数
    我们会发现在一段时间内表现很好的模型,过了一段时间就好像失效了一样,这种情况可能是由于模型参数不再适应当前市场行情引起的,我们需要统计历史数据寻找新的最优参数。大量的指标计算、参数筛选工作单凭人工计算几乎是不可能的,利用“参数优化”功能,可在指定的范围内让计算机筛选出最适合当前行情的参数。
    如下图所示:通过①【枚举】按钮,进行大范围海选抽样。通过②【遗传】按钮,在已经筛选的优质参数附近寻找更优的参数。参数优化原理,请参考说明书“参数优化让模型达到最优”。
    第三步 模型的加载运行
      通过历史回测和参数优化,模型的执行效果得到了大幅提升。但是仅有模型是不能自动交易的,还需要借助程序化运行平台运行,自动下单。
    程序化软件有盒子和模组两种运行平台,对于习惯盯着K线图、指标、信号,有时还会手动干预下单的用户,更适合使用页面盒子功能;对于程序化思路成熟,不需要手动干预,由策略全自动下单、加减仓、风控、资金管理的用户,则更适合使用模组功能。
    (一)方式一:加入盒子自动运行
    一些投资者想要由软件计算信号,根据自己的盘感手动执行下单,这样的思路就需要使用盒子来实现。
    如下图,在加载页面盒子时选择“弹出下单提示”,当满足条件时,会弹出如下图红框中所示的确认窗口,点击【多反空】按钮即可完成下单。

    1、加载单合约到盒子运行步骤:
    如下图,是如何添加单合约到盒子:
    2、批量加载合约到盒子运行步骤:
    如果想要通过一个公式同时监控多个合约运行,逐一添加合约到盒子就太麻烦了。我们可以把需要运行的合约添加到一个合约篮子中,在篮子报价页面点右键->【一篮子合约装入页面盒子】,便可将合约批量添加到盒子中,如下图所示。   
          
    (二)方式二:加入模组全自动运行
    有的投资者想要实现出信号N秒后下单、一根K线执行多次信号,或者使用策略进行账户资金头寸管理、风险控制等,这些需求都需要在运行模组中实现。
    如下图,是如何建立运行模组的操作。
    模组加载之后的效果如下图,不同的页面区域分别显示分区模组、资金、信号、监控K线图和运行日志信息。
    1、建立模组时交易合约的指定方式(如下图)
    (1)模型中写入交易合约的此处会自动抓取模型中编写的交易合约
    模型中没有写入交易合约的,可在此处手动设置。
    (2)数据合约为指定交易合约(如IF1801):
    A 模型中写入TRADE_OTHER函数的,按照TRADE_OTHER函数指定的合约作为交易合约。
    B 模型中未写入TRADE_OTHER函数的,默认交易合约与数据合约一致。
    (3)数据合约为主连/指数合约:
    A 按照模型中TRADE_OTHER函数指定的合约作为交易合约。
    B TRADE_OTHER函数写为TRADE_OTHER('AUTO')时,可实现自动换月移仓。
    2.模组的运行方式选择(如下图)
    (1)延续回测信号运行方式:模组历史k线图显示回测的信号,后续以历史信号为基础,根据实时数据计算新信号。
    模组重新启动影响:
    如果本次启动与前一次退出之间产生新数据,缺失的数据会自动申请,并且对这部分数据进行历史回测。回测信号与历史信号同时保留,加载成功之后,延续这些信号继续运行。
    (2)忽略回测信号运行方式:模组历史k线图不显示信号,从模组加载时开始重新计算信号,不以任何历史信号为基础。
    模组重新启动影响:
    如果本次启动与前一次退出之间没有产生新数据,由于没有缺失数据,所以历史信号保留,加载完成之后,延续历史信号运行。
    如果本次启动与前一次退出之间产生新数据,缺失的数据会自动申请,但不会进行历史回测,并且清空所有的历史信号。加载成功之后,模组资金复原为初始资金,持仓清零,相当于重新开始运行。
    注:选择忽略回测信号的运行方式,模组加载成功后,第一个有效信号必须是开仓信号。

    (三)相关常见问题解答
    1、如何设置页面盒子平铺窗口数?
    答:软件右上方菜单【系统工具】—>【个性化设置】里设置平铺窗口个数,再单击页面盒子即可实现多窗口平铺。
    注:双击页面盒子可以直接单窗口放大显示当前页面盒子。
    2、页面盒子的模型如何删除?
    答:如下图所示,是将页面盒子删除的方法。
    3、页面盒子是否可以同时显示报价窗口?
    答:可以,在【系统工具】—>【个性化设置】—>【程序化交易】—>【页面盒子平铺带报价窗口】处进行设置即可。
    4、量能周期如何加载到盒子中?
    答:在盒子中添加合约后,在窗口里切换成量能周期,然后点击右键 ->保存页块即可。
    5、模组状态列表中各项代表的含义?
    下单信号:模组运行过程中最后确认、下单的信号(包括信号消失),不显示没有确认的可能变化的信号。
    信号手数:最后信号用户设置或模型写入的手数。
    下单手数:模组运行过程中实际的下单手数。
    理论持仓:BKVOL=根据信号下单手数计算的理论持仓,完全根据信号计算不受手动干预影响。
    初始权益:模组本次运行开始时实际资金曲线的权益值。
    当前权益:模组运行过程中实际资金曲线的权益值。
    可用资金:根据实际资金曲线计算的实际的可用资金,可实时查看模组的实际可用资金情况。
    实际资金曲线: =(初始权益 – 初始权益包含的浮动盈亏)+ 平仓盈亏(累计值)+ 当前浮动盈亏–手续费(累计值)。
    6、运行模组分区的使用技巧
    创建复本:登录多账号状态下,可为不同的交易账号,创建相同的运行模组。
    设置该模组为闲置状态:将该模组设置为退出运行状态,可一次退出分区内的所有模组。设置为闲置状态的模组不占用模组运行数量。
    设置该模组为激活状态:将闲置状态的模组恢复为运行状态,可一次打开分区内的所有模组。
    7、如果我不在电脑前,但想知道模型的运行情况怎么办?
    答:可以使用【日志邮件】功能,该功能可以帮助您接收到模型运行动态的邮件,人不在电脑前一样可以监控自己的程序。
    8、怎样实现手动打开模组时自动加载运行?
    答:在软件右上方菜单【系统工具】->个性化设置->程序化交易,勾选【打开模组自动加载】项,再次打开模组时就会自动加载运行。
    9、复核状态为什么显示为 --?
    答:显示为--,表示最后信号不需要复核。
    注:K线走完确认信号下单/不进行信号复核的信号执行方式,为不需要复核的信号。

    全部评论/0 条

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    0关注

    1粉丝

    453作品

    发布主题
    加入收藏 我要分享

    分享到微信

    打开微信扫一扫即可将网页分享至微信

    分享到论坛或者博客

    复制
    作者的其他作品查看全部
    快速回复 返回顶部 返回列表