第二十四章:策略绩效
第一节:介绍
1.1 按照资金百分比进行资金管理,设定进场手数设置
Input: initialcap(1000000),entrypercent(0.5),marginpercent(0.15); Var: totalequity(0),entrysize(0),marginpercontract(0);
Totalequity=initialcap+netprofit+openpositionprofit; Marginpercontract= close*bigpointvalue*marginpercent; Entrysize=IntPortion(totalequity*entrypercent/Marginpercontract);
If h>h[1] and condition1 then Buy("LE") entrysize contracts next bar at market;
其中,condition1 是其他的买入进场条件,entrypercent 是进场的百分比,marginpercent 是保证金比例,totalequity 是目前账户总权益,marginpercontract 是每手合约所占用的保证金,entrysize 是可进 场的总手数。
1.2
使用者可以根据资金状况和策略思想,结合本章提供的关键字, 来构建有效的资金管理模型。 本章的关键字,凡注明“此功能只能用于信号和函数”,表示: (1)该关键字可直接写入信号中使用。(2)该关键字可写入函数中, 再被信号调用,而对应函数不可以被指标调用。
第二节:相关函数
2.1 AvgBarsEvenTrade
# 语法:
语法 AvgBarsEvenTrade
注意 此功能只能用于信号。
# 示例:
如果有 4 笔损益两平交易,分别持仓时间为 2,5,3,4 根 K 棒, 则 AvgBarsEvenTrade 将返回数值 3.5。
# 说明:
返回一个数值,表示损益两平交易的平均持仓时间(以 K 棒 数量表示)。
2.2 AvgBarsLosTrade
# 语法:
语法 AvgBarsLosTrade
注意 此功能只能用于信号。
# 示例:
若有四笔亏损交易,分别持仓时间为 2,5,3,4 根 K 棒,则 AvgBarsLosTrade 将返回数值 3.5。
# 说明:
返回一个数值,表示亏损交易的平均持仓时间(以 K 棒数量表示)。
2.3 AvgBarsWinTrade
# 语法:
语法 AvgBarsWinTrade
注意 此功能只能用于信号。
# 示例:
若有四笔盈利交易,分别持仓时间为 2,5,3,4 根 K 棒,则 AvgBarsWinTrade 将返回数值 3.5。
# 说明:
返回一个数值,表示获利交易的平均持仓时间(以 K 棒数量 表示)。
2.4 AvgEntryPrice/i_AvgEntryPrice
# 语法:
语法 信号:AvgEntryPrice
函数或指标:i_AvgEntryPrice
# 示例:
若有三笔未平仓交易,进场价各为 95,105,103,则 AvgEntryPrice 返回数值 101。
# 说明:
返回目前未平仓部位的平均成本。
2.5 AvgEntryPrice_at_Broker
# 语法:
语法 AvgEntryPrice_at_Broker 注意 *此功能只能用于信号和函数。 *此功能只能用于 Interactive Brokers, Patsystems 和 Zen-Fire 经 纪商。
重要 如果用户手动关闭自动交易,关键字返回值不再改变,有可能保持非 0 值。
# 示例:
如果某交易的商品当前在经纪商处有一笔未平仓交易,进场 价 102,则 AvgEntryPrice_at_Broker 返回值为 102。
# 说明:
返回目前商品在经纪商处未平仓部位的平均价格。 返回正值表示多头持仓,返回负值表示空头持仓。 当持仓平掉或自动交易关闭时,返回数值”0”。
2.6 AvgEntryPrice_at_Broker_for_The_Strategy
# 语法:
语法 AvgEntryPrice_at_Broker_for_The_Strategy 注意 *此功能只能用于信号和函数。 *需开启自动交易才可取到值。 *计算未平仓的平均价依据交易追踪器的委托中的「已成 交」栏位的价格。 重要提 示 如果用户手动关闭自动交易,关键字返回值不在改变,有 可能保持非 0 值。
# 示例:
若当前策略在经纪商处有两笔未平仓多头交易,分别为一 手进场价为 98,一手进场价为 102,则 AvgEntryPrice_at_Broker_for_The_Strategy 返回值为 100。
# 说明:
返回目前经纪商处此策略的未平仓部位的平均价格。 返回正值表示多头持仓,返回负值表示空头持仓。 当持仓平掉或自动交易关闭时,返回数值”0”。
2.7 GrossLoss
# 语法:
语法 GrossLoss
注意 此功能只能用于信号。
# 示例:
若有四笔亏损交易,分别亏损 10,5,20 及 15,则 GrossLoss 会 返回-50 若在整个交易期间内没有亏损交易,则 GrossLoss 会返回 0
# 说明:
返回目前亏损交易总金额(毛损)。
2.8 GrossProfit
# 语法:
语法 GrossProfit
注意 此功能只能用于信号
# 示例:
若有四笔盈利交易,分别盈利 10,5,20 及 15,则 GrossProfit 会返回 50 若在整个交易期间内没有盈利交易,则 GrossProfit 会返回 0
# 说明:
返回目前盈利交易总金额(毛利)。
2.9 i_AvgEntryPrice_at_Broker
# 语法:
语法 i_AvgEntryPrice_at_Broker 注意 *i_AvgEntryPrice_at_Broker 只返回未平仓部位的平均进场 价。 *i_AvgEntryPrice_at_Broker 只能用在指标中。 *i_AvgEntryPrice_at_Broker 只在有信号的数据中才有返回 值。 *测试结果:无论是否开启自动交易,在有未平仓的持仓时,返回值都是 0。不建议使用。
# 示例:
如果当前有 3 笔未平仓交易,进场价分别为 140,170 及 200, 则 i_AvgEntryPrice_at_Broker 返回值为 170。 如果当前有 4 笔未平仓交易,进场价分别为 54,48,60 及 50, 则 i_AvgEntryPrice_at_Broker 返回值为 53。
# 说明:
返回目前经纪商处未平仓部位的平均价格。
2.10 i_AvgEntryPrice_at_Broker_for_The_Strategy
# 说明:用来在指标中提取信号信息。 返回值与 AvgEntryPrice_at_Broker_for_The_Strategy 一致。
2.11 i_ClosedEquity
# 语法:
语法 i_ClosedEquity
注意 测试结果:该关键字可用于函数、信号、指标中任何一个。
# 示例:
若已平仓部位的获利为 100 元,则 i_ClosedEquity 会返回 100
# 说明:
返回目前已实现的损益(已平仓的总净利)。
2.12 i_CurrentContracts/i_CurrentShares
# 语法:
与 CurrentContracts/CurrentShares 功能相同,用于函数脚本中。
# 示例:
测试结果:该关键字可用于函数、信号、指标中任何一个。
2.13 i_MarketPosition/MarketPosition
# 语法:
语法 信号或函数或指标中:i_MarketPosition 信号或函数中:MarketPosition(PosBack) 参数 PosBack——数值表达式,用来指定部位: 0——未平仓部位; 1——上一个平仓部位(最后一个平仓部位); 2——上二个平仓部位,依次类推。 若 PosBack 未指定,则预设为未平仓部位。 返回 1——多头部位 0——无持仓 -1——空头部位 注意 i_MarketPosition 没有参数,只能用在当前部位情况。
# 示例:
若目前无持仓,则 MarketPosition 将会返回 0 若目前部位为多头,则 MarketPosition 或 i_MarketPosition 返 回 1 若上一个平仓部位为空头,则 MarketPosition(1)会返回-1
# 说明:
返回代表指定部位多空状态的数值。
2.14 i_OpenEquity
# 语法:
语法 i_OpenEquity
注意 此功能可用于函数、信号、指标中。
i_OpenEquity=netprofit+openpositionprofit
# 示例:
若当前未实现的获利为 100 元,则 i_OpenEquity 会返回 100 若当前未实现的亏损为 100 元,则 i_OpenEquity 会返回-100
# 说明:
返回目前未实现的损益(净利+未平仓损益)。
2.15 LargestLosTrade
# 语法:
语法 LargestLosTrade
注意 此功能只能用于信号或函数中。
# 示例:
若四笔亏损交易,分别亏损 10,5,20,15,则 LargestLosTrade 会 返回-20 若无亏损交易,则 LargestLosTrade 会返回 0
# 说明:
返回亏损交易中的最大亏损金额(单笔最大亏损交易)。
2.16 LargestWinTrade
# 语法:
语法 LargestWinTrade
注意 此功能只能用于信号或函数中。
# 示例:
若四笔获利交易,分别亏损 10,5,20,15,则 LargestWinTrade 会返回 20 若无获利交易,则 LargestWinTrade 会返回 0
# 说明:
返回获利交易中的最大获利金额(单笔最大盈利交易)。
2.17 MaxConsecLosers
# 语法:
语法 MaxConsecLosers
注意 此功能只能用于信号或函数中。
# 示例:
若交易最多曾连续 3 笔亏损,则 MaxConsecLosers 会返回 3 若无任何交易,则 MaxConsecLosers 会返回 0
# 说明:
返回最大连续亏损交易次数。
2.18 MaxConsecWinners
# 语法:
语法 MaxConsecWinners
注意 此功能只能用于信号或函数中。
# 示例:
若交易最多曾连续 3 笔盈利,则 MaxConsecWinners 会返回 3 若无任何交易,则 MaxConsecWinners 会返回 0
# 说明:
返回最大连续盈利交易次数。
2.19 MaxContractsHeld/MaxSharesHeld
# 语法:
语法
MaxContractsHeld
或
MaxSharesHeld
注意 此功能只能用于信号或函数中。
# 示例:
若未平仓部位最大有 10 手,则 MaxSharesHeld 会返回 10
# 说明:
返回曾经同时持有的最大未平仓手数(最大持有合约数量)。
2.20 MaxIDDrawDown
# 语法:
语法 MaxIDDrawDown
注意 此功能只能用于信号或函数中。
# 示例:
若整个交易期间,权益资金最大减损为 500,则 MaxIDDrawDown 会返回-500
# 说明:
返回在交易期间内出现的最大权益资金减损金额,返回负值。 即策略最大潜在亏损。
2.21 NetProfit
# 语法:
语法 NetProfit
注意 此功能只能用于信号或函数中。
# 示例:
若有两笔获利交易,分别获利 25 及 10,有两笔亏损交易, 分别亏损 5 及 10,则 NetProfit 会返回 20 若有两笔交易,分别获利 10 及 5,有两笔亏损交易,分别亏 损 20 及 15,则 NetProfit 会返回-15 若未进行任何交易,则 NetProfit 会返回 0
# 说明:
返回交易净利总金额(总净利)。
2.22 NumEvenTrades
# 语法:
语法 NumEvenTrades
注意 此功能只能用于信号或函数中。
# 示例:
若有 10 笔损益两平交易,则 NumEvenTrades 会返回 10 若无损益两平交易,则 NumEvenTrades 会返回 0
# 说明:
返回损益两平交易的总笔数。
2.23 NumLosTrades
# 语法:
语法 NumLosTrades
注意 此功能只能用于信号或函数中。
# 示例:
若投资组合有 5 笔亏损交易,则 NumLosTrades 会返回 5 若投资组合无任何交易,则 NumLosTrades 会返回 0
# 说明:
返回亏损交易的总笔数。
2.24 NumWinTrades
# 语法:
语法 NumWinTrades
注意 此功能只能用于信号或函数中。
# 示例:
若投资组合有 5 笔盈利交易,则 NumWinTrades 会返回 5 若投资组合无任何交易,则 NumWinTrades 会返回 0
# 说明:
返回盈利交易的总笔数。
2.25 PercentProfit
# 语法:
语法 PercentProfit
注意 此功能只能用于信号或函数中。
# 示例:
若总交易笔数为 10 笔,其中 7 笔为获利交易,则 PercentProfit 会返回 70
# 说明:
返回获利交易次数的比例。
2.26 TotalBarsEvenTrades
# 语法:
语法 TotalBarsEvenTrades
注意 此功能只能用于信号或函数中。
# 示例:
若有 4 笔损益两平交易,持仓时间各为 2,5,3 及 4 根 K 棒。则TotalBarsEvenTrades 会返回 14。 若无损益两平交易,则 TotalBarsEvenTrades 会返回 0。
# 说明:
返回损益两平交易的总持仓时间(以 K 棒数量表示)。
2.27 TotalBarsLosTrades/TotalBarsLosTrade
# 语法:
语法
TotalBarsLosTrades
或:
TotalBarsLosTrade
注意 此功能只能用于信号或函数中。
# 示例:
若有 4 笔亏损交易,持仓时间各为 2,5,3 及 4 根 K 棒。则 TotalBarsLosTrades 会返回 14。 若无亏损交易,则 TotalBarsLosTrades 会返回 0。
# 说明:
返回亏损交易的总持仓时间(以 K 棒数量表示)。
2.28 TotalBarsWinTrades/TotalBarsWinTrade
# 语法:
语法
TotalBarsWinTrades
或:
TotalBarsWinTrade
注意 此功能只能用于信号或函数中。
# 示例:
若有 4 笔盈利交易,持仓时间各为 2,5,3 及 4 根 K 棒。则 TotalBarsWinTrades 会返回 14。 若无盈利交易,则 TotalBarsWinTrades 会返回 0。
# 说明:
返回盈利交易的总持仓时间(以 K 棒数量表示)。
2.29 TotalTrades
# 语法:
语法 TotalTrades
注意 此功能只能用于信号或函数中。
# 示例:
若总共交易 5 笔,则 TotalTrades 会返回 5 若无交易记录,则 TotalTrades 会返回 0
# 说明:
返回目前交易总笔数。
【小结】做为前面 i_做为前缀的表示与indicator(指标)有关的函数
=================================================
之前的文章感谢大家的转载,希望转载时请注明出处,本人转自其它网站的图表一并感谢,谢谢~!
https://www.cnblogs.com/noah0532/