• 量化投资_EasyLanguage/PowerLanguage教学课程__【第一篇基础】__【第二十五章投资组合】


    第二十五章:投资组合

    第一节:投资组合策略绩效

      投资组合回测即 MultiCharts Portfolio Backtester,可将多个信号 组合在一个策略中或将多个商品的策略组合,而无需打开图表窗口即 可回测绩效。

       投资组合的策略绩效可从绩效报告中看到,当然如果需要根据策 略的盈亏状况进一步调整策略逻辑,可使用本章提供的绩效关键字。 包括毛利、毛损、净利、最大策略回测、总亏损次数、总盈利次数、 获利百分比、总交易次数等。

    1.1 Portfolio_GrossLoss

    # 语法:

    语法 Portfolio_GrossLoss
    注意 此功能仅能在信号中,并且搭配 Portfolio Backtester 使用。

    # 示例:

    若投资组合中共有四笔亏损交易,值分别为 1052015,
    则 Portfolio_GrossLoss 会返回-50。
    若投资组合并无亏损交易,则 Portfolio_GrossLoss 会返回 0

    # 说明

      返回目前投资组合亏损总金额(毛损)

    1.2 Portfolio_GrossProfit

    # 语法:

    语法 Portfolio_InvestedCapital
    注意 此功能仅能在信号中,并且搭配 Portfolio Backtester 使用。

    # 示例:

    如果在投资组合中当前策略计算所投资的现金资产数为
    100000,则 Portfolio_InvestedCapital 返回 100000。
    (例如:如果有三个持仓头寸:50000 多,20000 多,30000空。)

    # 说明

      返回在投资组合中当前策略计算所投资的现金资产数

    1.3 Portfolio_MaxIDDrawdown

    # 语法:

    语法 Portfolio_MaxIDDrawdown
    注意 此功能仅能在信号中,并且搭配 Portfolio Backtester 使用。

    # 示例:

    在整个交易期间,投资组合权益资金最大亏损为 500,则
    Portfolio_MaxIDDrawdown 会返回-500

    # 说明

      返回投资组合在交易期间内所出现的最大权益资金亏损金额

    1.4 Portfolio_NetProfit

    # 语法:

    语法 Portfolio_NetProfit
    注意 此功能仅能在信号公式,并且搭配 Portfolio Backtester 使用。

    # 示例:

    若投资组合中有获利交易 2510,亏损交易 510,则
    Portfolio_NetProfit 将返回 20。
    若投资组合中有获利交易 105,亏损交易 2010,则
    Portfolio_NetProfit 将返回-15。
    若投资组合中没有已经完成的交易,则 Portfolio_NetProfit 将
    返回 0

    # 说明

      返回目前投资组合完成交易的获利总额(净利)

    1.5 Portfolio_NumLossTrades

    # 语法:

    语法 Portfolio_NumLossTrades
    注意 此功能仅能在信号中,并且搭配 Portfolio Backtester 使用。

    # 示例:

    在投资组合有 5 笔亏损交易,则 Portfolio_NumLossTrades 会
    返回 5。
    若投资组合没有已经完成的交易,则 Portfolio_NumLossTrades
    会返回 0 

    # 说明

      返回目前投资组合亏损交易总笔数

    1.6 Portfolio_NumWinTrades

    # 语法:

    语法 Portfolio_NumWinTrades
    注意 此功能仅能在信号中,并且搭配 Portfolio Backtester 使用。

    # 示例:

    在投资组合有 5 笔获利交易,则 Portfolio_NumWinTrades 会
    返回 5。
    若投资组合没有已经完成的交易,则 Portfolio_NumWinTrades
    会返回 0

    # 说明

      返回目前投资组合获利交易总笔数

      

    1.7 Portfolio_PercentProfit

    # 语法:

    语法 Portfolio_PercentProfit
    注意 此功能仅能在信号中,并且搭配 Portfolio Backtester 使用。

    # 示例:

    在投资组合总交易笔数有 10 笔,其中获利 7 笔交易,则
    Portfolio_PercentProfit 会返回 70(即 70%)。

    # 说明

      返回目前投资组合获利交易次数占总交易次数的比例

    1.8 Portfolio_StrategyDrawdown

    # 语法:

    语法 Portfolio_StrategyDrawdown
    注意 此功能仅能在信号中,并且搭配 Portfolio Backtester 使用。

    # 示例:

    若目前投资组合从最近的权益资金高点亏损的金额为 100,
    则 Portfolio_StrategyDrawdown 会返回-100

    # 说明

      返回投资组合从最近权益资金高点的亏损金额

    1.9 Portfolio_TotalTrade

    # 语法:

    语法 Portfolio_TotalTrade
    注意 此功能仅能在信号中,并且搭配 Portfolio Backtester 使用。 

    # 示例:

    若投资组合总共交易 5 笔,则 Portfolio_TotalTrade 会返回 5。
    若投资组合总共交易 0 笔,则 Portfolio_TotalTrade 会返回 0

    # 说明

      返回目前投资组合完成交易总笔数

    第二节:投资组合策略部位

      投资组合策略指定部位的最大潜在亏损、当前的持仓笔 数、当前未平仓的净利以及潜在亏损的设定。

    2.1 Portfolio_CalcMaxPotentialLossForEntry

    # 语法:

    语法
    Portfolio_CalcMaxPotentialLossForEntry(持仓方向,<手数>,<价
    格>);
    <>括号内的参数为选用参数。
    参数
    持仓方向——数值表达式,代表持仓多空状态(如:1 代表多
    头,-1 代表为空头)。
    手数——选用参数,数值表达式,代表持仓的手数。若未指
    定手数,则会以策略属性》属性页面内设定的数量为预设值。
    价格——选用参数,数值表达式,代表持仓的成交价格。若
    未指定价格,预设会以当根 K 棒的收盘价为成交价。如果有
    一个空头进场,此参数可以向下调整;如果有一个多头进场,
    此参数可以向上调整。
    注意 此功能仅能在信号中,并且搭配 Portfolio Backtester 使用。

    # 示例:

    Portfolio_CalcMaxPotentialLossForEntry(0,25,High)
    将会返回 0,若持仓方向=0。
    Portfolio_CalcMaxPotentialLossForEntry(1,100,Close)
    将会返回最大潜在亏损(不含保证金、手续费或滑价),如果
    使用者在收盘价买进 100 手多头。
    Portfolio_CalcMaxPotentialLossForEntry(-1,5,Open)
    将会返回最大潜在亏损(不含保证金、手续费或滑价),如果
    使用者在开盘价卖出 5 手空头。
    Portfolio_CalcMaxPotentialLossForEntry(1)
    将会返回最大潜在亏损(不含保证金、手续费或滑价),如果 使用者以策略属性》属性页面设定的手数并在收盘价买入多 头。

    # 说明

      计算并返回使用者在一定数量的手数和某个价位的进场部位 的最大潜在亏损(不含保证金、手续费或滑价)。

    2.2 Portfolio_CurrentEntries

    # 语法:

    语法 Portfolio_CurrentEntries
    注意 此功能仅能在信号中,并且搭配 Portfolio Backtester 使用。

    # 示例:

    将目前投资组合未平仓交易的笔数存入变量 Value1:
    Value1= Portfolio_CurrentEntries;

    # 说明

      返回投资组合目前未平仓的交易笔数。

    2.3 Portfolio_MaxOpenPositionPotentialLoss

    # 语法:

    语法 SetStopPosition;
    SetStopLoss(Portfolio_MaxOpenPositionPotentialLoss);
    注意 此功能仅能在信号中,并且搭配 Portfolio Backtester 使用。

    # 示例:

    Value1=Portfolio_MaxOpenPositionPotentiaLoss;
    If Value1<>0 then begin
    SetStopPosition;
    SetStopLoss(Value1);
    End;
    当投资组合没有未平仓部位时,则
    Portfolio_MaxOpenPositionPotentiaLoss 返回值是 0
    当投资组合从建立部位开始,曾出现过的最大亏损金额为
    $100,则 Portfolio_MaxOpenPositionPotentiaLoss 返回值是 100

    # 说明

      返回投资组合中,计算并返回目前商品未平仓部位最大可能 亏损金额(不含保证金、手续费或滑价)。

    2.4 Portfolio_OpenPositionProfit

    # 语法:

    语法 Portfolio_OpenPositionProfit
    注意 此功能仅能在信号中,并且搭配 Portfolio Backtester 使用。

    # 示例:

    若投资组合目前没有未平仓的部位,则
    Portfolio_OpenPositionProfit 的返回值是 0。
    若投资组合所有未平仓部位从进场到现在已获利$100,则
    Portfolio_OpenPositionProfit 的返回值是 100。
    若投资组合所有未部位从进场到现在已经亏损$50,则
    Portfolio_OpenPositionProfit 返回值是-50

    # 说明

      返回目前投资组合所有未平仓部位的净利总金额(即未平仓 盈利/亏损)。

    2.5 Portfolio_SetMaxPotentialLossPerContract

    # 语法:

    语法 Portfolio_SetMaxPotentialLossPerContract(NewValue)
    参数
    NewValue——数值表达式,代表意义如下:
    *介于[-100,-0.001]之间的数值;设定投资组合每手部位最大
    可能损失比率(最大潜在损失比率:%)。
    *介于[0.001,1e+29]之间的数值;设定投资组合每手部位最
    大可能损失金额(最大潜在损失金额:$)。
    *等于 0;使用在投资组合设置》潜在损失设置中的预设值。

    返回 True——代表新值设定成功 False——代表新值可能超出上述的数值范围,设定失败,并 不会变更原有的最大潜在损失设定。
    注意 此功能仅能在信号中,并且搭配 Portfolio Backtester 使用。

    # 示例:

    当投资组合部位中存在商品”MSFT”时,则将最大潜在损失比
    率设为 10%:
    If “MSFT” = SymbolName then
    Portfolio_SetMaxPotentialLossPerContract(-10);
    设定最大潜在损失比率为 5%:
    Portfolio_SetMaxPotentialLossPerContract(-5);
    设定最大的潜在损失金额是$200:
    Portfolio_SetMaxPotentialLossPerContract(200);

    # 说明

      重新设定测试商品的潜在损失。如果选择的是最大潜在损失 金额,则设定的是绝对数值;如果选择的是最大潜在损失比 率,则设定的是百分比值。 设定后的值在之后的策略计算中持续有效,直到再次调用 Portfolio_SetMaxPotentialLossPerContract 来重新设定新值。

    第三节:投资组合属性

      在投资组合中,保证金、潜在亏损等属性值,可由本章关键字取 得。 注:QM——QuoteManager,即报价管理器。

    3.1 Portfolio_GetMarginPerContract

    # 语法:

    语法 Portfolio_GetMarginPerContract
    返回
    负值,代表使用者选择保证金占%N 的合约价值,返回值是
    设定值 N 乘以-1。
    正值,代表使用者选择固定保证金值,返回值和 QM 中设定
    的保证金相同(可用关键字 Margin 取到)。
    注意 此功能仅能在信号中,并且搭配 Portfolio Backtester 使用。

    # 示例:

    若使用者选用固定保证金值,但 QM 中的商品属性并未设定
    保证金,则 Portfolio_GetMarginPerContract 返回值是 0。
    若使用者选用固定保证金值,并与 QM 中的编辑商品》期货
    设定保证金为$25,则 Portfolio_GetMarginPerContract 返回值
    是 25。
    若使用者选用保证金占%N 的合约价值,并设定保证金为 10%
    的合约价值,则 Portfolio_GetMarginPerContract 返回值是-10

    # 说明

      取得使用者在 Portfolio Backtester 的投资组合设置页面的保 证金设置。

    3.2 Portfolio_GetMaxPotentialLossPerContract

    # 语法:

    语法 Portfolio_GetMaxPotentialLossPerContract
    返回
    *介于[-100,-0.001]之间(设定值乘以-1),代表投资组合设置
    中设定为最大潜在损失比率(%)。
    *介于[0.001,1e+29]之间,代表投资组合设置中设定为最大潜
    在损失金额($)。
    
    注意 此功能仅能在信号中,并且搭配 Portfolio Backtester 使用。

    # 示例:

    若使用者设定使用最大潜在损失比率(%)为 5,
    则 Portfolio_GetMaxPotentialLossPerContract 的返回值是-5。
    若使用者设定使用最大潜在损失金额($)为 0.001,
    则 Portfolio_GetMaxPotentialLossPerContract 返回值是 0.001

    # 说明

      取得使用者在 Portfolio Backtester 的投资组合设置页面设定 的潜在损失。

    3.3 Portfolio_MaxRiskEquityPerPosPercent

    # 语法:

    语法 Portfolio_MaxRiskEquityPerPosPercent
    注意 此功能仅能在信号中,并且搭配 Portfolio Backtester 使用。

    # 示例:

    Portfolio_MaxRiskEquityPerPosPercent 将会返回使用者设定的
    单个部位最大曝险率:%。

    # 说明

      取得使用者在 Portfolio Backtester 的投资组合设置页面设定 的单个部位最大曝险率:%。

    3.4 Portfolio_TotalMaxRiskEquityPercent

    # 语法:

    语法 Portfolio_TotalMaxRiskEquityPercent
    注意 此功能仅能在信号中,并且搭配 Portfolio Backtester 使用。

    # 示例:

    Portfolio_TotalMaxRiskEquityPercent将会返回使用者设定的总
    部位曝险率:%。

    # 说明

      取得使用者在 Portfolio Backtester 的投资组合设置页面设定 的总部位曝险率:%。

    3.5 PortfolioEntriesPriority

    # 语法:

    语法 PortfolioEntriesPriority=Priority
    参数 Priority——数值表达式,指定进场委托单执行的优先权;数值越大,优先权越高。
    注意 此功能仅能在信号中,并且搭配 Portfolio Backtester 使用。

    # 示例:

    将低价股设定较高的优先级:
    PortfolioEntriesPriority=(-Close);

    # 说明

      对投资组合内的进场委托单执行的优先权。 若投资组合资金无法满足所有委托,则有较高优先权的委托 会先被执行,优先权最低的委托会被舍弃。 若没有特别设定优先权,则委托执行的优先顺序是依 Portfolio Backtester 内商品表的先后顺序。

    =================================================

    之前的文章感谢大家的转载,希望转载时请注明出处,本人转自其它网站的图表一并感谢,谢谢~!

    https://www.cnblogs.com/noah0532/

  • 相关阅读:
    C# 对MongoDB 进行增删改查的简单操作 (转)
    MongoDB 查询 (转) 仅限于C++开发
    STL 中 string 的使用
    360应用上传所需的准备
    HTML5应用 转 Android、Windows Phone 应用
    Cocos2d-x项目编译为Android应用——命令行方式
    Coding 初级教程(二)——上传已有项目
    【5】Android Service 与 AIDL
    使用类的成员函数来实现回调函数
    JavaScript 学习笔记
  • 原文地址:https://www.cnblogs.com/noah0532/p/13703192.html
Copyright © 2020-2023  润新知