量化投资_EasyLanguage/PowerLanguage教学课程__【第一篇基础】__【第三章输出及调试】
第三章:输出
第一节:作用
在进行代码编写的时候,发现在公式编辑器的下方有“建立”、“输出”、“帮助”三个标签选项。其中“建立”是在你编写代码后进行编译,关于代码当中的相关编译信息会在上面显示,比如是否成功,错误,错误的话在第几行。“输出”标签就是用于调试代码中某一部分内容,用于输出的内容,来检测程序的准确性和逻辑的完整性。我们可以在整个标签的最左侧隐藏的向左箭头位置通过拖拽的方式,拉出整个窗口,让其显示输出的内容更加清晰。关于调试功能的代码会在下面说明。
第二节:清空
清空的命令共有两个,他们的作用是一样的。
# 语法:
清除目前显示在编辑器输出面板的信息:
ClearDebug;
ClearPrintlog;
# 示例:
ClearPrintlog; print(time," ","Thomas");
第三节:文件输出操作
文件输出操作命令共有三个
3.1 File
# 语法:
File(“PathFilename”)
PathFilename——指定文件路径及名称
# 说明:
在指定的文件中输出,必须在所要输出的表达式前面输出, 后面写一个逗号,若指定的文件不存在,会自动新增文件。指定文件路径,最常用的是要求print命令,输出到指定的文件下面。但是在MC12版本中,这个名好像不能用,可能是为了数据保护。
# 示例:将调试输出的内容保存到桌面文件
Print(File(“C:\test.txt”),Currentdate,Currenttime);
3.2 FileAppend
# 语法:
FileDelete(“PathFilename”,” StringExpression”)
PathFilename——指定文件路径及名称 StringExpression——要新增在文件末端的字符串
# 说明:
在文件的末端新增加字符串内容,若指定的文件不存在,会自动新增文件,同File命令一样,在MC12版本中也是不能用。
# 示例:
会在 C 盘下面的 test.txt 末端增加”Appended Text”字符串:
FileAppend(“C:\test.txt”, ”Appended Text”);
3.3 FileDelete
# 语法:
FileDelete(“PathFilename”)
PathFilename ——指定文件路径及名称
# 说明:
删除指定文件。
# 示例:
删除 C 盘下面的 test.txt 文件:
FileDelete(“C:\test.txt”);
第四节:命令台输出命令
我们最常用的输出命令就是print,其实还有一个功能与之类似的叫做MessageLog。命令的语法和使用几乎一样。
4.1 MessageLog
# 语法:
MessageLog(表达式 1,表达式 2,...) 字符串表达式——字符串前后需要加引号:"String Expression" 布林表达式——True 或 False 数值表达式——可以指定输出数值的最小长度及小数位数, 格式如下: 数值表达式:C:D,C 是最少输出字符数,D 是小数位数。 数值输出的预设长度为 7 个字符,含 2 位小数。 若数值的小数位数比输出的指定位数长,会四舍五入。 若数值长度比指定长度短,会在前方补上空白字符。 若有多个表达式需要以逗号隔开。
# 说明:
输出一个或多个指定的消息到编辑器的输出面版。输出内容可以是字符串,布林值,序列数值或数值表达式。其中数值表达式不太常用,但是要知道它的用法。
# 示例:
MessageLog(.1); 将会输出 0.10(前方有三个空白字符) MessageLog(1.555555:6:3); 将会在编辑器的输出面板输出 1.556(前方有一个空白字符) MessageLog(“Current Time is:”,CurrentTime:5:0);
将会显示”Current Time is:”后面带上电脑时间,时间前方会有一个空 白字符,如 Current Time is: 1031
4.2 Print
# 语法:
Print([输出目标],表达式 1,表达式 2,etc.) 在方括号内的参数是可选的 输出目标——可选参数,指定非公式编辑器的输出面板的输 出目标,参数需要用逗号与表达式分隔。 有两个可选的输出目标: Printer——输出到打印机 File(“PathFilename”)——输出到文件,PathFilename 文件路 径及名称,如果文件不存在将会被创建。 如果输出目标未指定,将会输出到公式编辑器的输出面板中。 表达式——字符串,布林值,序列数值或数值表达式: 字符串表达式——字符串前后需要加引号:"String Expression" 布林表达式——True 或 False 数值表达式——可以指定输出数值的最小长度及小数位 数,格式如下: 数值表达式:C:D,其中,C 是最少输出字符 数,D 是小数位数。 数值输出的预设长度为 7 个字符,含 2 位小数。 若数值的小数位数比输出的指定位数长,会四舍五入。 若数值长度比指定长度短,会在前方补上空白字符。 若有多个表达式需要以逗号隔开。
# 说明:
其中File指定路径的方式前面举例了。可能在MC12中不能使用。
# 示例:
Print(.1);将会输出 0.10(前方有三个空白字符) Print(1.555555:6:3);将会在编辑器的输出面板输出 1.556(前 方有一个空白字符) Print(Printer,”Print Test”);将会送出”Print Test”到默认打印机 Print(File(“C:\test.txt”),Currentdate,Currenttime);将会在 C 盘下 面的 test.txt 文件输出并保存当前日期和当前时间
第五节:声音播放
# 语法:
PlaySound(“PathFilename”)
PathFilename——指定要播放的 Wav 格式音效文件(包含完整
的路径)
# 说明:
播放指定的音效文件(格式 WAV)
# 示例:
播放在 C 盘下面的 ding.wav 音乐:
PlaySound(“C:\ding.wav”);
第六节:报警及发送邮件
在多商品或多策略同时交易时,如果有提示信息,将会更方便我 们对不同策略的跟踪并及时作出反应。MultiCharts 为用户提供了方便 的 Alert 警报提示功能,如下图在设置指标时,可启用警报。在设置指标或者信号位置,我们可以设置报警选项:
分有音频、弹出框、电子邮件,警报条件根据需要可选每根 bar 收盘时或每笔成交资料(即依 Tick 计算)发出警报。在选择每笔成 交资料到来发出警报时,为保证信号的计算和指标一致,实时资料下 建议信号开启 bar 内交易(在回测状态下,另需使用精细逐笔 tick)。 其中电子邮件警报设置中的SMTP服务器名称或IP为发送者的名 称、SMTP 服务器授权验证为发送者的授权邮箱和密码。
6.1 AlertEnabled
# 语法:
AlertEnabled *警报只在最后一根 Bar 产生。 *AlertEnabled 和 CheckAlert 的不同: AlertEnabled 在每一个 Bar 都会执行,CheckAlert 只会在最后一根 Bar 执行。 *若启用警报,则 AlertEnabled 返回 True。
# 说明:
如果启用警报则 AlertEnabled 返回值为 True。此信息可以让程
式代码运算执行更加高效。
此功能也可用来在用户忘记开启警报时发出通知。
# 示例:下例说明了如何在用户忘记开启警报时发出通知
Variable: ID(-1); If AlertEnabled=False And LastBarOnChart_S=True Then ID = Text_New_S(Date, Time_S, Low, "Alerts are disabled. See Format Study > Properties >Alerts");
6.1 Alert
# 语法:
Alert *如果 Alert 中不设文本,则弹出包含来源、商品、周期和价 格的警报窗口。 *Alerts 只在最后一根 Bar 显示。
# 说明:
弹出一个包含必要文本的警示窗口。文本可以是动态的、静态的或空文本。
# 示例:
弹出一个没有文本信息的警报窗口: Alert; 弹出一个包含动态文本的警报窗口并显示星期日期: Alert(Text("Day of week is ", DayOfWeek(Date))); 当收盘价大于前根 K 线的收盘价时,弹出包含静态文本的警 报窗口: If Close > Close[1] Then Alert(Text("Price turning up"));
6.3 CancelAlert
# 语法:
Cancel Alert
Alerts 只在最后一根 Bar 产生
# 说明:
取消警报。用于脚本中警报过多时在某些条件下关闭一些警
报。
# 示例:
下例说明了如何根据时间关闭所有警报。在 10:00pm 之后, 警报不会显示: If Close > Close[1] Then Alert("Price is going up"); If Volume > Volume[1] Then Alert("Volume is increasing"); If Volatility(5) > Volatility(5)[1] Then Alert("Volatility is rising"); If OpenInt > OpenInt[1] Then Alert("Open interest is growing"); If Time >= 2200 Then Cancel Alert;
6.4 CheckAlert
# 语法:
CheckAlert *AlertEnabled 和 CheckAlert 的不同:AlertEnabled 在每一个 Bar 都会执行,CheckAlert 只会在最后一根 Bar 执行。 *警报只在最后一根 Bar 产生。
# 说明:
如果在设置指标》警报中设置启用警报,则 CheckAlert 返回 true。 True/false 只在最后一根 Bar 返回。
# 示例:
下例表示当警报未开启时,避免历史数据计算冗余。 当警报启用时,对警报条件进行计算: If CheckAlert Then Begin If Volume >= 2 * Average(Volume, 10) Then Alert ("Volume is going up"); End;
=================================================
之前的文章感谢大家的转载,希望转载时请注明出处,本人转自其它网站的图表一并感谢,谢谢~!
https://www.cnblogs.com/noah0532/
本博客所有文章仅用于学习、研究和交流目的,欢迎非商业性质转载。