龙听期货论坛's Archiver

龙听 发表于 2022-11-7 10:22

buy,sell,sellshort,buytocover的用法解析

1. buy

1.1 定义
建立一个多头仓位;进场的点位会在图表上以箭头和价位标示;箭头表示进场时间,价位表示进场价格。 在多头进场箭头的下方,有标签显示进场名称和仓位数量。当一个buy指令成交时,其他持有的空头仓位,将会被平仓。"buy[("EntryLabel")] [TotalSize] EntryType;"是一个完整的买入语句,其中被[ ]括起来的参数是任选的(也可以写成"buy EntryType;"),举例就是"buy("entryname") 3 shares next bar at market;",也可以写成"buy next bar at market;";

1.2 EntryLabel
EntryLabel —— 可选用参数,字符串表达式;给当次进场的信号一个专属名称。若 EntryLabel 未指定,则会依进场语句的先后顺序依序命名为 "Buy" 、"Buy#1" 、 "Buy#2" 、 "Buy#3" ..,见图1和图2,对比代码和图表的区别和联系。

1.3 TradeSize
TradeSize —— 可选用参数,数值表达式;指定买进的数量,必须搭配: Share, Shares, Contract 或 Contracts 任一个使用。若 TradeSize 为0或负值,并不会建立任何多头仓位,但现有的空头仓位会被平仓。 若 TradeSize 未指定,交易数量将会是使用者在策略属性的属性中设定的委托数量。由于buy是平仓反向进场语句,使用buy进场的时候,会将之前的所有空头全部平仓,然后建立指定手数的多头头寸。详细的请看图3,图4和图5,针对代码和图表的对比学习。

1.4 Entrytype
EntryType —— 必需参数;指定进场的时间和价位,一共有五种类型:

This Bar on Close
Next Bar at Open 或 Next Bar at Market
Next Bar at Price  Limit
Next Bar at Price  Stop
next bar at price1 stop price2 limit
这里使用的price代指委托进场价格,at、on是MC跳跃字,可以省略,只是为了方便用户看代码,公式编译的时候会直接跳过。“This Bar on Close”是指定在当根结束的时候以收盘价发送委托单;"Next Bar at Open" 或 "Next Bar at Market"是指定以下一根bar的开盘价发送委托;"Next Bar at Price  Limit"是指定在下一根bar开始时发送限价单;"Next Bar at Price  Stop"是指定在下一根bar开始时发送停损单;还有一种是停损限价单是可以通过停损单和限价单组合的类型,即"next bar at price1 stop price2 limit";除了这五种,其它类型的Entrytype都是禁止的,在公式编译的时候就会报错。

2. sell

2.1 定义
全部或部分平仓特定或全部的多头仓位。出场的价位会在图表上以箭头和价位表示,箭头表示出场时间,价位表示出场价格。在多头出场箭头的上方,有标签显示出场名称及仓位数量。"Sell[("ExitLabel")][From Entry("EntryLabel")][TradeSize[Total]]Exit;"是一个完整的平仓语句,被[ ]括起来的参数都是可以省略的,可以是"sell Exit;",举例为"sell("sellname") from entry("entryname") 3 shares total next bar at market;",也可以是"sell next bar at market;"。

2.2 ExitLabel
ExitLabel —— 可选用参数,字符串表达式;予当次出场信号一个专属名称。信号名称会显示在出场箭头上方。若 ExitLabel 未指定,则会依出场信号语句的先后顺序依序命名为 "Sell"、"Sell#1"、"Sell#2"…… ;ExitLabel的定义可以参考一下1.2 EntryLabel;有一点特别注意一下,在同一个信号脚本中,所有的进场出场名称都要求不一样,进场和出场名称也要求不一样。

2.3 EntryLabel
EntryLabel —— 可选用参数,字符串表达式;表示出场信号是针对特定EntryLabel 名称的进场信号; 进场信号名称须紧连在 "From Entry"之后, "from" 是跳跃字,可省略。一个出场信号仅能指定一个进场信号。若 EntryLabel 未指定进场信号名称,则该sell出场语句是针对当前所有未平仓的进场(第一笔进场,第二笔进场等等),sell出场语句指定进场情况请看图6和图7,sell出场未指定进场情况请看图8和图9。

2.4 TradeSize
TradeSize —— 可选用参数,数值表达式;指定平仓的数量,必须搭配: Share, Shares, Contract 或 Contracts任一个使用,这四个关键字完全一样,没有区别;当tradesize指定的平仓的手数是负数或者0时,不会平仓任何手数;当tradesize指定的平仓的手数是0.5或者其它分数,那么sell会平仓四舍五入后的手数;当然,如果当前没有多头持仓,那么sell不执行任何操作。

2.5 Total
total必须紧跟关键字 Share, Shares, Contract 或 Contracts任一个后面,不能单独使用;tradesize后面未加total的情况下,TradeSize 参数指定的数量会平掉每一个多头进场语句的仓位,详细的请对比图10和图11;如果如果 TradeSize  后加上 Total,只会平仓 TradeSize  参数指定的数量,忽略多头进场数量。指定数量超过多头持仓,则全部平仓。在依进场信号的顺序平仓,即先进先出,详细的见图12和图13。若tradesize未指定,将会平仓全部的多头进场。

2.6 Exit

Exit和1.4 Entrytype完全一样。

3. Sellshort和buytocover

buy和sellshort都是平仓反向语句,也就是先平仓再开仓,这两个关键字的使用除了买卖方向不一样,其它的用法和逻辑完全一样,在此就不再赘述。sell和buytocover都是平仓语句,只是单纯的平仓,这两个关键字的使用除了平仓的方向不一样,其它的用法和逻辑完全一样,在此不再赘述。

[img]http://p.algo2.net/2022/1107/be8731aee7abe.png[/img]
图1 entrylabel_代码

[img]http://p.algo2.net/2022/1107/c739ad45a031d.png[/img]
图2 entrylabel_图表

[img]http://p.algo2.net/2022/1107/ab7c5bb0c3868.png[/img]
图3 tradesize_代码

[img]http://p.algo2.net/2022/1107/08a9e0580c63d.png[/img]
图4 tradesize_图表

[img]http://p.algo2.net/2022/1107/540a62bd0b71c.png[/img]
图5 策略属性

[img]http://p.algo2.net/2022/1107/8455df90e92f4.png[/img]
图6 sell指定进场名称_代码

[img]http://p.algo2.net/2022/1107/870692259071e.png[/img]
图7 sell指定进场名称_图表

[img]http://p.algo2.net/2022/1107/1dc5393986d33.png[/img]
图8 sell未指定进场名称_代码

[img]http://p.algo2.net/2022/1107/67941212457a0.png[/img]
图9 sell未指定进场名称_图表

[img]http://p.algo2.net/2022/1107/d7279972af4e7.png[/img]
图10 tradesize total_代码

[img]http://p.algo2.net/2022/1107/a22f54d3e71a0.png[/img]
图11 tradesize total_图表

[img]http://p.algo2.net/2022/1107/5a0ba4695d6ec.png[/img]
图12 tradesize total_代码(紧跟total)

[img]http://p.algo2.net/2022/1107/0185fd4d7594c.png[/img]+
图13 tradesize total_图表(紧跟total)

[img]http://p.algo2.net/2022/1107/f90f61cbc975e.png[/img]
图14 search

随风风风 发表于 2023-5-21 11:27

学习了

页: [1]