量化投资_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/

posted @ 2020-09-15 22:33  时海涛|Thomas  阅读(744)  评论(0编辑  收藏  举报