首页 > 其他 > 详细

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

时间:2020-09-21 00:01:31      阅读:58      评论:0      收藏:0      [点我收藏+]

第二十二章:策略交易_策略部位

第一节:介绍

  策略部位信息包括:进出场名称、进出场日期时间(可锁定图表 的横坐标)、进场场点位(锁定图表的纵坐标)、进出场后至今的 K 线数目、持仓方向(marketposition)和大小(currentcontracts)、最大的 盈亏金额、图表策略的指定部位的盈亏状况等。 策略部位的信息是指某信号策略插入到图表后,图表上对应的部 位信息,并不对应任何实盘或模拟账号。策略部位和经纪商部位可能 不一致(因保证金不足或滑价等原因导致),一种方法是,可以结合实盘账户资金和部位的函数,当策略部位和经纪商账户 部位不一致时,进行仓位调整或加入更严谨的策略逻辑。另外一种方 法:结合本章的 MarketPosiont_at_Broker_for_The_Strategy 关键字, 取得自动交易对应的策略所在图表的经纪商部位(实际取得是交易追 踪器目前已成交后的部位情况)。 本章节的关键字多是针对单进单出的策略,对于有加仓或分批出 场的策略,无法取到更详细的策略部位信息。。

 

第二节:相关函数

2.1 BarsSinceEntry

# 语法

语法 BarsSinceEntry(PosBack)
参数
PosBack——数值表达式,用来指定部位:
0——未平仓部位;
1——上一个平仓部位(最后一个平仓部位);
2——上二个平仓部位,依次类推。
若 PosBack 未指定,则预设为未平仓部位。

注意 此功能只能用于信号或函数中。无法取加仓的信息

# 示例

取得目前仓位进场后的 K 棒数量,并存于变量 Value1:
Value1= BarsSinceEntry;
取得最近一笔未平仓部位距今多少根 K 棒数量的,并存入变量
Value1:
Value1= BarsSinceEntry(1);

# 说明

  说明 返回指定部位进场至今的 k 棒数量的数值。

 

2.2 BarsSinceExit

# 语法

语法 BarsSinceExit(PosBack)
参数
PosBack——数值表达式,用来指定部位:
0——未平仓部位;
1——上一个平仓部位(最后一个平仓部位);
2——上二个平仓部位,依次类推。
若 PosBack 未指定,则预设为未平仓部位。
注意 此功能只能用于信号或函数中。无法取加仓的信息。

# 示例

取得最近一笔平仓部位距今多少根 K 棒数量的,并存入变量Value1:
Value1= BarsSinceExit(1);

# 说明

  返回指定部位出场至今的 k 棒数量的数值。特别主要,一般应用为最近平仓部位的状态,因此需要在括号内加入1,这点非常重要

 

2.3 ContractProfit

# 语法

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

# 示例

计算目前未平仓部位每手平均损益,并存入变量 Value1:
Value1= ContractProfit;

# 说明:  

  返回指定部位的每手平均损益。

 

2.4 CurrentContracts/CurrentShares

# 语法

函数或信号脚本:CurrentContracts 或 CurrentShares
函数或信号或指标脚本:i_CurrentContracts 或 i_CurrentShares

# 示例

CurrentContracts 在部位为多头 1 手时,返回 1
CurrentContracts 在部位为空头 3 手时,返回 3

# 说明

  返回目前部位手数数值。

 

2.5 CurrentEntries

# 语法

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

# 示例

取的目前部位的进场笔数,并存于变量 Value1:
Value1= CurrentEntries;

# 说明

  返回目前部位的进场笔数。

 

2.6 EntryDate

# 语法

语法 EntryDate(PosBack)
参数
PosBack——数值表达式,用来指定部位:
0——未平仓部位;
1——上一个平仓部位(最后一个平仓部位);
2——上二个平仓部位,依次类推。
若 PosBack 未指定,则预设为未平仓部位。
注意 此功能只能用于信号或函数中。无法取加仓的信息。

# 示例

将目前部位第一笔进场日期存入变量 Value1;若进场日期为
200810 月,则 Value1=1081030:
Value1= EntryDate;
将最后一个平仓部位第一笔进场的日期存入变量 Value1;若
进场日期为 199942 日,则 Value1=990402:
Value1= EntryDate(1);

# 说明

  返回指定部位第一笔进场的日期。

 

2.7 EntryName

# 语法

语法 EntryName(PosBack)
参数
PosBack——数值表达式,用来指定部位:
0——未平仓部位;
1——上一个平仓部位(最后一个平仓部位);
2——上二个平仓部位,依次类推。
若 PosBack 未指定,则预设为未平仓部位。
注意 此功能只能用于信号或函数中。无法取加仓的信息。

# 示例

将目前部位第一笔进场信号名称存入变量 Value1;若进场信
号名称为 Buy1,则 Value1=”Buy1”:
Value1= EntryName;

将最后一个平仓部位第一笔进场的信号名称存入变量 Value1;
若进场信号名称为 Buy1,则 Value1=”Buy1”:
Value1= EntryName(1);

# 说明

  返回指定部位第一笔进场的信号名称。

 

2.8 EntryPrice

# 语法

语法 EntryPrice(PosBack)
参数
PosBack——数值表达式,用来指定部位:
0——未平仓部位;
1——上一个平仓部位(最后一个平仓部位);
2——上二个平仓部位,依次类推。
若 PosBack 未指定,则预设为未平仓部位。
注意 此功能只能用于信号或函数中。无法取加仓的信息。

# 示例

将目前部位第一笔进场价格存入变量 Value1:
Value1= EntryPrice;

将最后一个平仓部位第一笔进场的价格存入变量 Value1:
Value1= EntryPrice(1);

# 说明

  返回指定部位第一笔进场的价格。这个函数最为常用。

 

 

2.9 EntryTime

# 语法

语法 EntryTime(PosBack)
参数
PosBack——数值表达式,用来指定部位:
0——未平仓部位;
1——上一个平仓部位(最后一个平仓部位);
2——上二个平仓部位,依次类推。
若 PosBack 未指定,则预设为未平仓部位。
注意 此功能只能用于信号或函数中。无法取加仓的信息。

# 示例

将目前部位第一笔进场时间存入变量 Value1;若进场时间为
上午 10:15,则 Value1=1015:
Value1= EntryTime;
将最后一个平仓部位第一笔进场的时间存入变量 Value1;若
进场日期为下午 2:45,则 Value1=1445:
Value1= EntryTime(1);

# 说明

  返回指定部位第一笔进场的时间。

 

2.10 ExitDate

# 语法

语法 ExitDate(PosBack)
参数
PosBack——数值表达式,用来指定部位:
1——上一个平仓部位(最后一个平仓部位);
2——上二个平仓部位,依次类推。
注意 此功能只能用于信号或函数中。无法取加仓的信息。

# 示例

将上一个平仓部位最后一笔出场日期存入变量 Value1:
Value1= ExitDate(1);
若出场日期为 200810 月,则 Value1=1081030

# 说明

  返回指定部位最后一笔出场的日期。

 

2.11 ExitName

# 语法

语法 ExitName(PosBack)
参数
PosBack——数值表达式,用来指定部位:
1——上一个平仓部位(最后一个平仓部位);
2——上二个平仓部位,依次类推。
注意 此功能只能用于信号或函数中。无法取加仓的信息。

# 示例

将最后一个平仓部位最后一笔出场的信号名称存入变量
Value1:
Value1= ExitName(1);
若出场信号名称为 Sell1,则 Value1=”Sell1”

# 说明

  返回指定部位最后一笔出场的信号名称。

 

2.12 ExitPrice

# 语法

语法 ExitPrice(PosBack)
参数
PosBack——数值表达式,用来指定部位:
1——上一个平仓部位(最后一个平仓部位);
2——上二个平仓部位,依次类推。
注意 此功能只能用于信号或函数中。无法取加仓的信息。

# 示例

将上一个平仓部位最后一笔出场的价格存入变量 Value1:
Value1= ExitPrice(1);

# 说明

  返回指定部位最后一笔出场的价格。

 

2.13 ExitTime

# 语法

语法 ExitTime(PosBack)
参数
PosBack——数值表达式,用来指定部位:
1——上一个平仓部位(最后一个平仓部位);
2——上二个平仓部位,依次类推。
注意 此功能只能用于信号或函数中。无法取加仓的信息。

# 示例

将最后一个平仓部位最后一笔出场的时间存入变量 Value1:
Value1= ExitTime(1);
若出场时间为下午 2:45,则 Value1=1445

# 说明

  返回指定部位最后一笔出场的时间。

 

2.14 MarketPosition

# 语法

语法 
信号或函数中:MarketPosition(PosBack)
参数
PosBack——数值表达式,用来指定部位:
0——未平仓部位;
1——上一个平仓部位(最后一个平仓部位);
2——上二个平仓部位,依次类推。
若 PosBack 未指定,则预设为未平仓部位。
返回
1——多头部位
0——无持仓
-1——空头部位

# 示例

若目前无持仓,则 MarketPosition 将会返回 0
若目前部位为多头,则 MarketPosition 或 i_MarketPosition 返
回 1

# 说明

  返回代表指定部位多空状态的数值。

 

2.15 i_MarketPosition_at_Broker MarketPosition_at_Broker

# 语法

语法 
信号脚本:MarketPosition _at_Broker 函数及指标脚本:i_MarketPosition_at_Broker
注意
*此功能和 MarketPosition 不同,仅能获取的目前最新的状态, 无法透过参数取得历史交易资料。 *此功能只能用于 Interactive Brokers, Patsystems 和 Zen-Fire 经纪商。

# 示例

目前部位为多头 3 手,则 MarketPosition_at_Broker 会返回 3
目前部位为空头 3 手,则 i_MarketPosition_at_Broker 会返回
-3
目前部位为空手,则 MarketPosition_at_Broker 会返回 0

# 说明

  返回目前商品在经纪商的部位数量及状态。 返回正值表示多头持仓,返回负值表示空头持仓。当持仓平掉或自动交易关闭时,返回数值”0”。

 

2.16 i_MarketPosition_at_Broker_for_The_Strategy MarketPosition_at_Broker_for_The_Strategy

# 语法

语法 
信号脚本:MarketPosition_at_Broker_for_The_Strategy 函数及指标:i_MarketPosition_at_Broker_for_The_Strategy
注意 此功能和 MarketPosition 不同,仅能获取的目前最新的状态, 无法透过参数取得历史交易资料。
重要提示 如果用户手动关闭自动交易,关键字返回值不再改变,有可 能保持非
0 值。

# 示例

MarketPosition _at_Broker_for_The_Strategy 当部位为多头 3手时,将会返回 3
MarketPosition _at_Broker_for_The_Strategy 当部位为空头 3手时,将会返回-3
MarketPosition _at_Broker_for_ The_Strategy 当无持仓或自动交易未开启时,将会返回 0

# 说明

  返回目前商品在经纪商的部位数量及状态。 返回正值表示多头持仓,返回负值表示空头持仓。 当持仓平掉或自动交易关闭时,返回数值”0”。

 

2.17 MaxContractProfit

# 语法

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

# 示例

计算目前未平仓部位曾获得的每手最大获利,并存于变量Value1:
Value1= MaxContractProfit;

# 说明

  返回目前部位曾获得的每手最大获利。

 

2.18 MaxContracts/MaxShares

# 语法

语法 MaxContracts(PosBack)
参数
PosBack——数值表达式,用来指定部位:
0——未平仓部位;
1——上一个平仓部位(最后一个平仓部位);
2——上二个平仓部位,依次类推。
若 PosBack 未指定,则预设为未平仓部位。
注意 此功能只能用于信号或函数中。

# 示例

若目前无持仓,则 MaxContracts 会返回 0
若最后一次平仓的部位最大曾有 10 手多头或空头,则 MaxContracts(1) 会返回 10

# 说明

  返回指定部位最大手数的绝对值。

 

2.19 MaxEntries

# 语法

语法 MaxEntries(PosBack)
参数
PosBack——数值表达式,用来指定部位:
0——未平仓部位;
1——上一个平仓部位(最后一个平仓部位);
2——上二个平仓部位,依次类推。
若 PosBack 未指定,则预设为未平仓部位。
注意 此功能只能用于信号或函数中。

# 示例

若最后一次平仓的部位是分 2 笔进场,则 MaxEntries(1)会返回 2

# 说明

  返回指定部位总共进场的笔数。

 

2.20 MaxPositionAgo

# 语法

语法 MaxPositionAgo
注意 测试 MaxPositionAgo 无法编译成功,可用关键字
MaxPositionsAgo。

# 示例

若策略过去总共交易过 2 次,则 MaxPositionsAgo 会返回 2

# 说明

  返回过去曾经交易过的次数。

 

2.21 MaxPositionLoss

# 语法

语法 MaxPositionLoss(PosBack)
参数
PosBack——数值表达式,用来指定部位:
0——未平仓部位;
1——上一个平仓部位(最后一个平仓部位);
2——上二个平仓部位,依次类推。
若 PosBack 未指定,则预设为未平仓部位。
注意 此功能只能用于信号或函数中。

# 示例

若最后一次平仓的部位持有期间的最大亏损为 20,则 MaxPositionLoss(1)会返回-20

# 说明

  返回指定部位持有期间内出现的最大亏损数值。

 

2.22 MaxPositionProfit

# 语法

语法 MaxPositionProfit(PosBack)
参数
PosBack——数值表达式,用来指定部位:
0——未平仓部位;
1——上一个平仓部位(最后一个平仓部位);
2——上二个平仓部位,依次类推。
若 PosBack 未指定,则预设为未平仓部位。
注意 此功能只能用于信号或函数中

# 示例

若最后一次平仓的部位持有期间的最大获利为 20,则 MaxPositionProfit(1)会返回 20

# 说明

  返回指定部位持有期间内出现的最大获利数值。

 

2.23 OpenPositionProfit

# 语法

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

# 示例

若目前无持仓,即 OpenPositionProfit 会返回 0
若目前部位获利 5,即 OpenPositionProfit 会返回 5
若目前部位亏损 10,即 OpenPositionProfit 会返回 -10

# 说明

  返回目前未平仓部位的获利(亏损)金额。

 

2.24 PositionProfit

# 语法

语法 PositionProfit(PosBack)
参数
PosBack——数值表达式,用来指定部位:
0——未平仓部位;
1——上一个平仓部位(最后一个平仓部位);
2——上二个平仓部位,依次类推。
若 PosBack 未指定,则预设为未平仓部位。
注意 此功能只能用于信号或函数中。

# 示例

若目前无持仓,则 PositionProfit 会返回 0
若目前未平仓部位获利 5,则 PositionProfit(0)会返回 5
若最后一个已平仓部位亏损 5,则 PositionProfit(-1)会返回 -5

# 说明

  返回指定部位的获利(亏损)金额。

 

第三节:策略部位同步

  策略部位同步主要针对交易插件或者交易所不支持市价单的情况,使用TOUCHANGE交易到内盘交易所都支持市价单,这两个功能可不选用。大多数情况下,我们在策略交易设置中选择即可。英文文档可参照:http://www.multicharts.com/pm/viewissue.php?issue_no=MC-14

 

3.1 ChangeMarketPosition

# 语法

语法 ChangeMarketPosition(Delta,Price, Name)
参数
Delta——指定要标注在图上的信号手数
Price——指定价格
Name——指定信号名称
注意
*可以用来同步策略部位和经纪商部位。
*经过测试,ChangeMarketPosition 只会在图上标出信号,不
会发委托单到达钱。

# 示例:

If MarketPosition = 2 Then ChangeMarketPosition(-2,100,"LX")
如果当前持仓为 2(实际不可以这样写),则在图上标出买平
仓指令信号,信号名称为"LX",价格为 100
If MarketPosition = 0 Then ChangeMarketPosition (-2,100,"SE")
如果当前没有持仓,则在图上标出卖开仓指令,信号名称为
"SE",价格为 100
更多例子,可以参考内置信号"!From Strategy To Broker MPSynchronizer!"

# 说明

  在图表上标注一个指定名称和价格的指令信号。 无论是否开启自动交易,此关键字产生的指令信号不会发到 经纪商。

 

3.2 PlaceMarketOrder

# 语法

语法 PlaceMarketOrder(IsBuy, IsEntry, Contracts)
参数
IsBuy——用来指定委托是买或卖,True 为买,False 为卖。
IsEntry——指定委托为新仓或平仓,True 为新仓,False 为平
仓(MultiCharts 实际发的是自动单)。
Contracts——指定委托的手数。
注意
*在自动交易关闭时使用。
*可以用来同步策略部位和经纪商部位。
*经测试,开启自动交易,PlaceMarketOrder 会实际发单到达
钱,MultiCharts 图上不会产生信号。

# 示例:

If MarketPosition = 2 and MarketPosition_at_Broker = 4 then
PlaceMarketOrder(false, false, 2);
当前图上部位为多头 2 手(实际应该用
MarketPosition*CurrentContracts = 2),经纪商部位为多头4手,
MultiCharts 将会发出 2 手市价卖单到经纪商。
更多例子,可以参考内置信号"!From Strategy To Broker MP
Synchronizer!"

# 说明

  不改变图表上的部位(图上不会有信号产生),发市价单到经纪商。

 

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

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

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

取得最近一笔平仓部位距今多少根 K 棒数量的,并存入变量 Value1: Value1= BarsSinceExit(1);

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

原文:https://www.cnblogs.com/noah0532/p/13702957.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!