量化投资_EasyLanguage/PowerLanguage教学课程__【第一篇基础】__【第二十四章策略交易_策略绩效】

第二十四章:策略绩效

第一节:介绍

 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,2015,则 GrossLoss 会
返回-50
若在整个交易期间内没有亏损交易,则 GrossLoss 会返回 0

# 说明

  返回目前亏损交易总金额(毛损)。

2.8 GrossProfit

# 语法:

语法 GrossProfit
注意 此功能只能用于信号

# 示例:

若有四笔盈利交易,分别盈利 10,5,2015,则 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,170200,
则 i_AvgEntryPrice_at_Broker 返回值为 170。
如果当前有 4 笔未平仓交易,进场价分别为 54,48,6050,
则 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
注意 此功能只能用于信号或函数中。

# 示例:

若有两笔获利交易,分别获利 2510,有两笔亏损交易,
分别亏损 510,则 NetProfit 会返回 20
若有两笔交易,分别获利 105,有两笔亏损交易,分别亏
损 2015,则 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,34 根 K 棒。则TotalBarsEvenTrades 会返回 14。
若无损益两平交易,则 TotalBarsEvenTrades 会返回 0

# 说明

  返回损益两平交易的总持仓时间(以 K 棒数量表示)。

2.27 TotalBarsLosTrades/TotalBarsLosTrade

# 语法:

语法
TotalBarsLosTrades
或:
TotalBarsLosTrade
注意 此功能只能用于信号或函数中。

# 示例:

若有 4 笔亏损交易,持仓时间各为 2,5,34 根 K 棒。则
TotalBarsLosTrades 会返回 14。
若无亏损交易,则 TotalBarsLosTrades 会返回 0

# 说明

  返回亏损交易的总持仓时间(以 K 棒数量表示)。

2.28 TotalBarsWinTrades/TotalBarsWinTrade

# 语法:

语法
TotalBarsWinTrades
或:
TotalBarsWinTrade
注意 此功能只能用于信号或函数中。

# 示例:

若有 4 笔盈利交易,持仓时间各为 2,5,34 根 K 棒。则
TotalBarsWinTrades 会返回 14。
若无盈利交易,则 TotalBarsWinTrades 会返回 0

# 说明

  返回盈利交易的总持仓时间(以 K 棒数量表示)。

2.29 TotalTrades

# 语法:

语法 TotalTrades
注意 此功能只能用于信号或函数中。 

# 示例:

若总共交易 5 笔,则 TotalTrades 会返回 5
若无交易记录,则 TotalTrades 会返回 0

# 说明

  返回目前交易总笔数。

 【小结】做为前面 i_做为前缀的表示与indicator(指标)有关的函数

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

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

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

原文地址:https://www.cnblogs.com/noah0532/p/13703172.html