第二十五章:投资组合
第一节:投资组合策略绩效
投资组合回测即 MultiCharts Portfolio Backtester,可将多个信号 组合在一个策略中或将多个商品的策略组合,而无需打开图表窗口即 可回测绩效。
投资组合的策略绩效可从绩效报告中看到,当然如果需要根据策 略的盈亏状况进一步调整策略逻辑,可使用本章提供的绩效关键字。 包括毛利、毛损、净利、最大策略回测、总亏损次数、总盈利次数、 获利百分比、总交易次数等。
1.1 Portfolio_GrossLoss
# 语法:
语法 Portfolio_GrossLoss
注意 此功能仅能在信号中,并且搭配 Portfolio Backtester 使用。
# 示例:
若投资组合中共有四笔亏损交易,值分别为 10,5,20 及 15, 则 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 使用。
# 示例:
若投资组合中有获利交易 25 和 10,亏损交易 5 和 10,则 Portfolio_NetProfit 将返回 20。 若投资组合中有获利交易 10 和 5,亏损交易 20 和 10,则 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/