龙听期货论坛's Archiver

龙听 发表于 2018-10-22 13:47

Easylanguage的五种输出方式

Easylanguage 的五种输出方式

(Author:杨晓 Email: [url=mailto:yangxiao5002@126.com]yangxiao5002@126.com[/url] QQ:493202788 Date:2010-08-14 )

当 Easylanguage 识别出某种信号后,可以有五种方式向你传递消息,请选择自己喜欢的:

一、控制台 output

二、图表 chart

三、文件 file

四、提示音 wav “嘟嘟嘟…..来信号了!来信号了! ”

五、信息视窗 alert window

我们将逐一介绍…

一、控制台 output Print

发送一个或多个特定表达式到 PowerLanguage 编辑器的输出控制台(Output)或者到其他输 出目标。该表达式可以指定为任何组合的字符串,真/假,数值序列,或数学表达式。
例如:建一个系统信号,代码如下:

把该信号插入到某个 chart 中,编译后输出结果如下:

解释一下

if(BarNumber=1)then//满足条件的时候才输出,为了节约资源,这次仅在BarNumber=1的那个Bar执行下面的命令 begin print("-----print instances------");//输出一个简单的字符串 print("I ","love ","easylanguage","!"); //输出多个表达式(当前是多个字符串)。注意:当输出多个表达式时,要用逗号分割开,不是加号(只 有当表达式全部都是字符串时,才可用加号) print("Today is ",Date,",and current time is ",Time,",and currentbar's open price is ",Open);//输出多个表达式。每个表达 式都可以是任何的类型,当前实例包含字符串,日期(数字),变量(数字),另外还可为真假 数学表达式等 print(False); //输出真假,输出结果为大写字符串FALSE,不会用0或1取代 print(23); //输出数字。默认输出包含四个整数位和两个小数位,对于小数部分,至少输出两位,不足两位用0代替,超过两位的,仅输出前两位;对于 整数部分,其实默认是没有直接限制的,但另外有个数字整体(包含整数 小数和小数点)最小7位的要求,当小数2位时,整数最低就四位显示,不足四个整数 的,前面用空格代替,超过四位的,有几位输出几位 print(.1);// 输出数字。 .1表示0.1,当整数部份为0时,可以忽略整数部份来简写,但小数点不能忽略 print(23:2:1);//按照特定格式输出数字。用:设置输出格式,当前23:2:1表示输出数字23,并按照整数位至少2位,小数位为1位的格式 print(1,3,5,7,9);//输出多个表达式(当前是多个数字) print(2+3*5-1); //输出数学表达式的值 print(Close);//输出数字(当前是变量序列中的当前bar的对应值),close为内置的变量,同样可以输出自定义的变量的值。 print((High+Low+Close)/3);

print(Power(Close,2),"=",Square(Close),"=",Close*Close);//输出数学表达式的值(当前是可返回数值的函数) print("-----end------------------"); end;

另外 print 在输出多个表达式的时候,并非只能用逗号,其实在某些情况下可以用加号,这 里的某些情况专指字符串连接, 也就是说几个表达式都是字符串, 他们连在一起才可以用加 号,如果有一个是数字,对不起,不行!当然你可以把数字转变为字符串 就可以用加号了。

MessageLog
发送一个或多个特定表达式到 PowerLanguage 编辑器的输出控制台(Output) 。该表达式可 以指定为任何组合的字符串,真/假,数值序列,或数学表达式。 其功能和用法与 print 基本一样。 唯一的区别是,MessageLog 只能输出到输出控制台 Output, 而 print 还可以输出到文件,具体 print 输出到文件的方法可以参考后续的内容。

ClearDebug
清空 PowerLanguage 编辑器的输出控制台(Output) 。 默认情况下,当执行 print 或 messagelog 时,其内容追加在了输出控制台的尾部,如果没有 手动清除或使用 ClearDebug 清除或者重新打开 PowerLanguage 编辑器,那么输出控制台的 内容是越来越多的,特别是输出内容很多的情况下,会损耗机器的资源。如果我们只希望显 示最近一次执行信号的结果,那么可以在第一个 print/messagelog 前执行 ClearDebug。 实例如下:



二、图表 chart Buy/SellShort/Sell/BuyToCover

买卖信号,默认是在 chart 中自动显示出来的,比如在语句中设置“breakoutLow” :

则在图表中显示 breakoutLow:

Text_New
在指定的 bar 的指定价位,显示指定的提示信息,格式为: Text_New (BarDate, BarTime, PriceValue,"Text"); 第一个参数指定 bar 的日期, 第二个参数指定 bar 的时间, 这两个参数相当于告诉 chart 要在 哪个 bar 上显示,即确定了 x 轴位置;第三个参数指定在哪个价格点上显示信息,即 y 轴位 置,该参数可以是当前 bar 的 open 位置或者 high/low/close 位置,或者其他的位置;第四个 参数为提示信息的内容。 实例

效果: (提示信息以指定的 bar 和价格作为中间位置,根据信息长度自动调整)

三、文件 file FileAppend

写入字符串到指定文件的尾部,字符串以 ASCII 编码格式写入,如果指定的文件不存在,这 个文件将会被自动创建。 实例如下:

该函数必须两个参数,第一个为指定文件的路径,第二个为要写入的字符串,注意:第二个 参数必须是字符串,如果想写入数字,必须用 text 函数转换,可参考上面的实例 输出到文件如下:

如果想输出多个表达式,也可以使用一个 FileAppend 语句,中间用加号连接(多个字符串 的连接方式) ,如上述的代码可以等价于:

Print
Print 函数除了向输出控制台 output 发送消息外,还可以输出消息到文件,主要方式是在原 来语句基础上添加一个指定文件的参数,并将该参数放在第一个参数位置:

输出结果:

两种文件输出方式的对比: 1> Print 要比 FileAppend 灵活强大,比如我目前没有找到 FileAppend 可以换行的方式 (已找 到:NewLine) !FileAppend 的输出内容只能放在一个参数里,而 print 参数可多个,只需用

逗号隔开 2> Print 也有缺陷,似乎在向文件输出的时候是锁定文件的,其他程序就无法修改了;还有 就是当 print 到一个文件的时候,是把文件原来的内容清空再开始当前信号的所有 print,无 法象 FileAppend 那样保留原来内容然后在文件结尾追加;当多个信号同时 print 到同一个文 件的时候,只有其中一个有效(应该是最后启用的那个信号) 。

四、提示音 wav PlaySound

[size=12px]如果你采用半自动交易,却无法占用 100%时间去盯盘,那你可以在 chart 指标视觉显示之 外增加一个声音提示,然后就可以去旁边和同事讨论问题,这很简单但很有效(my love)[/size]

要求 c:/wen.wav 为 wav 格式的音乐文件(只支持 wav 格式) ,当达到买入或卖出或其他你设 置的条件时,音乐就会响起。

五、信息视窗 alert window Alert(外部扩展)

请参考 Max 的大作: 原创 HACK! EASYLANGUAGE 跳出提醒信息视窗 [url]http://www.aboutels.com/forum.php?mod=viewthread&amp[/url];tid=84&extra=page%3D1 Ps:内置 Alert 命令只能用于指标,不能用于信号

页: [1]