龙听期货论坛's Archiver

龙听 发表于 2018-5-8 17:22

MultiCharts编程-PowerLanguage-Alert警报

在多商品或多策略同时交易时,如果有提示信息,将会更方便我们对策略的跟踪并及时作出反应。MultiCharts为用户提供了方便的Alert警报提示功能,如下图在设置指标时,可启用警报。[img]http://p.qhlt.cn/filestores/2018/05/08/8e4b6ab400a8244e9bb7529bfa821b39.png[/img]


图2.1 Alert警报设定
分有音频、弹出框、电子邮件,警报条件根据需要可选每根bar收盘时或每笔成交资料(即依Tick计算)发出警报。在选择每笔成交资料到来发出警报时,为保证信号的计算和指标一致,实时资料下建议信号开启bar内交易(在回测状态下,另需使用精细逐笔tick)。
MC7版本只针对指标提供警报功能,后续的MC8.5版将会对信号策略也提供相同的Alert功能。


[table=98%]
[tr][td=2,1]  Alert
  [/td][/tr]
[tr][td=1,1,10%]  [p=30, 2, left][font=宋体]说明[/font][/p]  [/td][td=1,1,89%]  [p=30, 2, left][font=宋体]弹出一个包含必要文本的警示窗口。文本可以是动态的,静态的或无文本。[/font][/p]  [/td][/tr]
[tr][td=1,1,10%]  [p=30, 2, left][font=宋体]语法[/font][/p]  [/td][td=1,1,89%]  [p=30, 2, left]Alert[/p]  [/td][/tr]
[tr][td=1,1,10%]  [p=30, 2, left][font=宋体]注意[/font][/p]  [/td][td=1,1,89%]  [p=30, 2, left]*[font=宋体]如果[/font]Alert[font=宋体]中不设文本,则弹出包含来源,商品,周期,价格的警报窗口。[/font][/p]  [p=30, 2, left]*Alerts [font=宋体]只在最后一根[/font]Bar[font=宋体]显示。[/font][/p]  [p=30, 2, left]*Alerts [font=宋体]设定的详细信息参考[b][color=blue]设置指标[/color][/b][b][color=blue]》警报[/color][/b][/font][/p]  [/td][/tr]
[tr][td=1,1,10%]  [p=30, 2, left][font=宋体]范例[/font][/p]  [/td][td=1,1,89%]  [p=30, 2, left][font=宋体]弹出一个没有文本信息的警报窗口:[/font][/p]  [p=30, 2, left]Alert;[/p]  [p=30, 2, left][font=宋体]弹出一个包含动态文本的警报窗口并显示星期日期:[/font][/p]  [p=30, 2, left]Alert(Text("Day of week  is ", DayOfWeek(Date)));[/p]  [p=30, 2, left][font=宋体]当收盘价大于前根[/font]K[font=宋体]线的收盘价时,弹出包含静态文本的警报窗口:[/font][/p]  [p=30, 2, left]If Close > Close[1] Then  Alert(Text("Price turning up"));[/p]  [p=30, 2, left][img]http://p.qhlt.cn/filestores/2018/05/08/a96924fb92f779a648565ea1b8d3e054.png[/img][/p]  [/td][/tr]
[/table]
[table=98%]
[tr][td=2,1]  AlertEnabled  [/td][/tr]
[tr][td=1,1,10%]  [p=30, 2, left][font=宋体]说明[/font][/p]  [/td][td=1,1,89%]  [p=30, 2, left][font=宋体]如果启用警报则[/font]AlertEnabled[font=宋体]返回值为[/font]True[font=宋体]。此信息可以让程式代码运算执行更加高效。[/font][/p]  [p=30, 2, left][font=宋体]此功能也可用来在用户忘记开启警报时发出通知。[/font][/p]  [/td][/tr]
[tr][td=1,1,10%]  [p=30, 2, left][font=宋体]语法[/font][/p]  [/td][td=1,1,89%]  [p=30, 2, left]AlertEnabled[/p]  [/td][/tr]
[tr][td=1,1,10%]  [p=30, 2, left][font=宋体]注意[/font][/p]  [/td][td=1,1,89%]  [p=30, 2, left]*[font=宋体]警报只在最后一根[/font]Bar[font=宋体]产生。[/font][/p]  [p=30, 2, left]*AlertEnabled [font=宋体]和[/font] CheckAlert[font=宋体]的不同:[/font] AlertEnabled[font=宋体]在每一个[/font]Bar[font=宋体]都会执行,[/font]CheckAlert[font=宋体]只会在最最后一根[/font]Bar[font=宋体]执行。[/font][/p]  [p=30, 2, left]*[font=宋体]若启用警报,则[/font]AlertEnabled[font=宋体]返回[/font]True[font=宋体]。[/font][/p]  [/td][/tr]
[tr][td=1,1,10%]  [p=30, 2, left][font=宋体]范例[/font][/p]  [/td][td=1,1,89%]  [p=30, 2, left][font=宋体]下例说明了如何在用户忘记开启警报时发出通知:[/font][/p]  [p=30, 2, left]Variable: ID(-1);[/p]  [p=30, 2, left]If AlertEnabled=False  And LastBarOnChart_S=True Then[/p]  [p=30, 2, left]ID = Text_New_S(Date,  Time_S, Low, "Alerts are disabled. See Format Study > Properties  >Alerts");[/p]  [/td][/tr]
[/table]

龙听 发表于 2018-5-8 17:25

[table=98%]
[tr]  [td=2,1]  Cancel Alert  [/td] [/tr]
[tr]  [td=1,1,10%]  [p=30, 2, left][font=宋体]说明[/font][/p]  [/td]  [td=1,1,89%]  [p=30, 2, left][font=宋体]取消警报。用于脚本中警报过多时在某些条件下关闭一些警报。[/font][/p]  [/td] [/tr]
[tr]  [td=1,1,10%]  [p=30, 2, left][font=宋体]语法[/font][/p]  [/td]  [td=1,1,89%]  [p=30, 2, left]Cancel Alert[/p]  [/td] [/tr]
[tr]  [td=1,1,10%]  [p=30, 2, left][font=宋体]注意[/font][/p]  [/td]  [td=1,1,89%]  [p=30, 2, left]Alerts[font=宋体]只在最后一根[/font]Bar[font=宋体]产生。[/font][/p]  [/td] [/tr]
[tr]  [td=1,1,10%]  [p=30, 2, left][font=宋体]范例[/font][/p]  [/td]  [td=1,1,89%]  [p=30, 2, left][font=宋体]下例说明了如何根据时间关闭所有警报。在[/font]10:00pm[font=宋体]之后,警报不会显示:[/font][/p]  [p=30, 2, left]If Close > Close[1] Then Alert("Price  is going up");[/p]  [p=30, 2, left]If Volume > Volume[1] Then Alert("Volume is increasing");[/p]  [p=30, 2, left]If Volatility(5)  > Volatility(5)[1] Then Alert("Volatility is rising");[/p]  [p=30, 2, left]If OpenInt > OpenInt[1] Then Alert("Open  interest is growing");[/p]  [p=30, 2, left]If Time >= 2200  Then Cancel Alert;[/p]  [/td] [/tr]
[/table][p=30, 2, left]
[/p][table=98%]
[tr]  [td=2,1]  CheckAlert  [/td] [/tr]
[tr]  [td=1,1,10%]  [p=30, 2, left][font=宋体]说明[/font][/p]  [/td]  [td=1,1,89%]  [p=30, 2, left][font=宋体]如果在[b][color=blue]设置指标[/color][/b][b][color=blue]》警报[/color][/b]中设置启用警报,则[/font]CheckAlert[font=宋体]返回[/font]true[font=宋体]。[/font][/p]  [p=30, 2, left]True/false [font=宋体]只在最后一根[/font]Bar[font=宋体]返回。[/font][/p]  [/td] [/tr]
[tr]  [td=1,1,10%]  [p=30, 2, left][font=宋体]语法[/font][/p]  [/td]  [td=1,1,89%]  [p=30, 2, left]CheckAlert[/p]  [/td] [/tr]
[tr]  [td=1,1,10%]  [p=30, 2, left][font=宋体]注意[/font][/p]  [/td]  [td=1,1,89%]  [p=30, 2, left]*AlertEnabled [font=宋体]和[/font] CheckAlert[font=宋体]的不同:[/font]AlertEnabled[font=宋体]在每一个[/font]Bar[font=宋体]都会执行,[/font]CheckAlert[font=宋体]只会在最后一根[/font]Bar[font=宋体]执行。[/font][/p]  [p=30, 2, left]*[font=宋体]警报只在最后一根[/font]Bar[font=宋体]产生。[/font][/p]  [/td] [/tr]
[tr]  [td=1,1,10%]  [p=30, 2, left][font=宋体]范例[/font][/p]  [/td]  [td=1,1,89%]  [p=30, 2, left][font=宋体]下例表示当警报未开启时,避免历史数据计算冗余。[/font][/p]  [p=30, 2, left][font=宋体]当警报启用时,对警报条件进行计算:[/font][/p]  [p=30, 2, left]If CheckAlert Then  Begin[/p]  [p=30, 2, left]If Volume >= 2  * Average(Volume, 10) Then Alert  ("Volume is going up");[/p]  [p=30, 2, left]End;[/p]  [/td] [/tr]
[/table]

页: [1]