Easy_language

 

 http://www.guosen.com.cn/gxzq/tradestation/help/operate/operate06.html

 

power language

https://seekingalpha-tainan.blogspot.com/2016/10/ifthen.html

 

KOREA

http://www.fntec.com/xe/ts/8739

 

Adaptrade自动策略生成器

http://www.0762jr.com/index.php

 

 Ralph Nelson Elliott 

艾略特波浪理论

 

 

想法1 

1.整体上涨=  60日 平均和 20日平均上涨

2.     1次 跌以后 上涨的概率

    连续2尺跌以后上涨的概率

    概率高的话买入

 

 

 

Close > highest(close[1],10)
buyPoint = Highest(High,lookBackDays);// 可用于唐启安通道


if(args.Order<>null)then


DateTime.Now.ToString()
numtostr(num,digit)
strtonum(str)

换手率
rate =( volume/getfunddata("CLAS",0))*10000;
plot1(rate," 换手率 %");

函数
Method string AskP(int level)
vars:string nu;
Begin
nu = "";
try
nu = numtostr(xxx);
catch(elsystem.Exception ex)
print(ex.Message); //处理异常,打印出异常的消息提示
End;
return nu;
End;


plot1(MyMACD,!( "MACD" ),red);
plot4("加载中","状态",white);
plot3(0,"zeroLine")
print("Test"+newline+"Test");

aa=IFF( bb,cc,dd );//相当无?: 表达式 如果


布林带

MACD 
inputs:FastLength(12),SlowLength(26),MACDLength(9);
vars:m_MACD(0),m_MACDAvg(0),m_MACDDiff(0);
m_MACD=MACD(close,FastLength,SlowLength);
m_MACDAvg=XAverage(m_MACD,MACDLength);
m_MACDDiff=m_MACD-m_MACDAvg;


RSI
var_RSI = RSI( close, RSI_Length ) ;


KDJ=》Stochastic Slow

inputs:Length(14),OverSold(20) ;

vars:Fast_K(0),Fast_D(0),Slow_K(0),Slow_D(0);

Value1 = Stochastic( H,L,C,Length,3,3,1,Fast_K,Fast_D,Slow_K,Slow_D) ;
condition1 = CurrentBar > 2 and Slow_K crosses over Slow_D and Slow_K < OverSold ;
if condition1 then 
Buy ( "StochLE" ) next bar at market ;

 

 1 //引用命名空间
 2 using tsdata.marketdata;
 3 using elsystem;
 4 //变量声明
 5 vars:tsdata.marketdata.PriceSeriesProvider PSP(null);
 6 //引用命名空间
 7 method void AnalysisTechnique_Initialized( elsystem.Object sender, elsystem.InitializedEventArgs args ) 
 8 Begin
 9     PSP = new PriceSeriesProvider;
10     PSP.Load = False;   //修改属性之前关闭数据连接
11     PSP.RealTime = True;    //设置为True以接收行情数据,设置为False为获取历史数据
12     PSP.TimeZone = tsdata.common.TimeZone.Local;
13     PSP.Symbol = "002413.SZ";   //设置代码.
14     PSP.Interval.ChartType = tsdata.marketdata.DataChartType.Bars;  //设置图形为K线图.
15     PSP.Interval.IntervalType = tsdata.marketdata.DataIntervalType.Ticks;   //设置周期类型为Ticks.
16     PSP.Interval.IntervalSpan = 1;  //设置周期为1Ticks.
17     PSP.Range.Type = tsdata.marketdata.DataRangeType.Bars;  //按照Bars数目设置区间.
18     PSP.Range.Bars = 10;    //设置数据区间的Bars数目共计10.
19     PSP.IncludeVolumeInfo = True;   //设置为True 则包含Volume信息.
20     PSP.IncludeTicksInfo = True;    //设置为True 则包含Ticks信息.
21     PSP.UseNaturalHours = True; //设置为True 则尝试使用自然时间.
22     PSP.StateChanged += PSP_StateChanged ;  // 为PSP绑定状态变化事件PSP_StateChanged.
23     PSP.Updated += PSP_Updated ; // 为PSP绑定更新事件PSP_Updated.
24     PSP.Load = True;    //打开数据连接,只是打开动作,不堵塞进程,异步载入数据
25 End;
26 //PSP状态变化事件
27 method void PSP_StateChanged(elsystem.Object sender,tsdata.common.StateChangedEventArgs args)
28 Begin
29     print("PSP.State: "+PSP.State.ToString() );
30     if(PSP.State = tsdata.common.DataState.Loaded) then     //如果加载状态为已加载(Loaded)
31     Begin
32         //Sample code:
33         print("PSP loaded.");
34     End;
35 End;
36 
37 //PSP更新事件
38 method void PSP_Updated(elsystem.Object sender,tsdata.marketdata.PriceSeriesUpdatedEventArgs args)
39 Begin
40     //使用FileAppend(或StreamWriter)将行情高开低收(HOLC)和成交量(Volume),
41     //写入到文件C:\Users\<<username>>\Documents\Quotes.csv中}
42     FileAppend(Environment.GetFolderPath(9) + "..\Quotes.csv", 
43         DateTime.Now.ToString()+", "+
44         PSP.Time[0].toString()+", "+
45         numtostr(PSP.High[0],2) + ", " +
46         numtostr(PSP.Open[0],2) + ", " +
47         numtostr(PSP.Low[0],2)+ ", " +
48         numtostr(PSP.Close[0],2)+ ", " +
49         numtostr(PSP.Volume[0],2) + newline) ;
50 End;
51 
52 if(PSP.State = DataState.loading)then //正在读取数据
53 if(PSP.State = DataState.failed)then  //读取失败 
54 if(PSP.State = DataState.Loaded)then  //读取完

abs->AbsValue
vol->Volume
Max-Maxlist

1.If…Then…
If average(close,5) cross over average(close,20) and marketposition<>1 then 
buy next bar at market;//动作有分号”;”

2.If…Then Begin…End...
if Close > Average(Close, 20) then 
begin
SetPlotColor(1, Red); //动作有分号”;”
Alert; //动作有分号”;”
End; //End有分号”;”

3.If…Then…Else…
if Close > Average(Close, 20) then
SetPlotColor(1, Red) //动作无分号”;”
Else //Else后面没有分号”;”
SetPlotColor(1, Green); //有分号”;”作为语法结尾

4.If…Then Begin…End Else Begin…End
if Close > Average(Close, 20) then 
begin
SetPlotColor(1, Red);
Alert("Close Above Average");
End //无分号”;”
Else 
begin //没有分号”;”
SetPlotColor(1, Green);
Alert(“Close Below Average”);
end; //有分号”;”

 

 


For Counter=IValue To FValue 
Begin
I1;
I2;
End;

For Counter=IValue DownTo FValue 
Begin
I1;
I2;
End;


If UpTrend = True Then Begin
Buy Next Bar Market;
End // end无";"
Else Begin
SellShort Next Bar Market;
End;


if Close > EMA then begin
Print("Close is above the EMA");
end else if (Close < EMA) then begin
Print("Close is below the EMA");
end else

Print("Close is equal to the EMA");

 

 

If E Then Begin 
I1;
I2;
End
Else Begin
I3;
I4;
End;

 

仓位
EntryPrice(num) 
返回制定仓位的开仓价,Num标示当前第几个仓位(最多为10) 
EntryPrice(2)返回值101.19,标示第2个仓位的建仓价

EntryTime(num)
返回制定仓位的建仓时间,Num标示当前第几个仓位(最多为10) 
EntryTime(2)返回16000,标示第2个建仓时间为下午4点

EntryDate(num)
返回制定仓位的建仓日期,Num标示当前第几个仓位(最多为10) 
EntryDate(2)返回981005,标示第2个建仓日期1998年10月5日


MarketPosition 只能显示多单 无单 和空单 没办法显示现况内有几口
MarketPosition =1 有多单
MarketPosition =0 无单
MarketPosition =-1 有空单
CurrentContracts 只能显示有几口单,没办法显示多单还是空单
CurrentContracts =10 表示有10口单.但不知道是多单憨是空单

取得目前仓位进场后的K棒数量,并存于变数 Value1 :
Value1=BarsSinceEntry;

 

周期判断
BarType:返回 价格数据的周期(0=Tick线,1=分钟线,2=日线,3=周线,4=月线)
BarInterval:返回 周期数值

if(BarType=1 and BarInterval=5) then //假如5分钟图表的话

 

CommentaryCL("<font color='blue'>高値</font>=", High:0:0);
spaces(2) //空两格

Date:7:0 //日期小数点前有7位小数点后没有
年从1900年开始计算
如:1030611标示2003年6月11日
Time:4:0 //时间 小数点前4位 小数点后没有
如:1530 //标示下午3点30分


#Region //大纲开始
#EndRegion //大纲结束

PlotPB(High, Low, “DnBar“, RED);//
SetPlotColor (1, RGB (0,255,255)); // Cyan


Int=Integer(整数)
Double=Double Float(双精度浮点型)
Bool = Boolean(布尔型)
String Text(文本)

 

Highest(hight,3) lowest(low,3) 3根bar当中最大值,最小值
Maxlist(val1,val2,val3);取最大值
Minlist(val1,val2,val3);取最小值
CloseD(n);//n天前的收盘价 n=0标示今天
HighW(n);//n周的最高价 n=0标示本周
LowM(n); //前n个月最低价,n=0标示当月
OpenY(n); //前n年的开盘价,n=0标示当年

Floor(num) //向下取整,Floor(4.5) 返回4 / Floor(-1.72)返回-2 
Ceiling(num) //向上取整 Ceiling(4.5) 返回5 /Ceiling(-1.72) 返回-1
Round(num,prec)//四舍五入 Prec为保留的小数点位数, Round(142.3215,2) 返回142.32 /Round(9.5687,3) 返回9.569
IntPortion(num) //返回整数部分 IntPortion(4.5) 返回4 / IntPortion(-1.72) 返回-1
FracPortion(num) //返回小数部分 FracPortion(4.5) 返回0.5 / FracPortion(-1.72) 返回-0.72

 

 

 

 

 

 

 

 1 https://seekingalpha-tainan.blogspot.com/2019/03/linearregslopelinearregangle.html
 2 https://xshelp.xq.com.tw/lists.aspx?a=TRENDFUNC
 3 https://books.google.co.kr/books?id=g-XyYW7f5kYC&pg=PA401&lpg=PA401&dq=tradestation+LinearRegValue&source=bl&ots=G2mETsN8b4&sig=ACfU3U3iwGZF48SKqf3UHGKuLl4MCqCZ8w&hl=zh-CN&sa=X&ved=2ahUKEwi0mIqvwobkAhWMzIsBHaugCXsQ6AEwEnoECAkQAQ#v=onepage&q=tradestation%20LinearRegValue&f=false
 4 https://kabuist.hatenablog.com/
 5 LinearReg
 6 计算线性迴归的斜率与角度,以及预测资料投影点的位置。
 7 回传数值=LinearReg(数列,期数,预测值的相对K棒位置,输出斜率,输出弧度,输出X轴截距,输出预测值)
 8 传入七个参数:
 9 - 第一个参数是数列,通常是开高低收的价格数列。
10 - 第二个参数是期数。
11 - 第三个参数是预测值的相对K棒位置,和序列引用定义相同,0表当期、1表前一期、-1表后一期。
12 - 第四个参数是输出计算完的线性回归线斜率。
13 - 第五个参数是输出计算完的线性回归线弧度。
14 - 第六个参数是输出计算完的线性回归线X轴截距。
15 - 第七个参数是输出计算完的线性回归线预测值。
16 value1 = linearreg(close,20,-1,value2,value3,value4,value5); //计算收盘价20期的线性迴归
17 plot1(value5);                                               //绘製明天的收盘价线性迴归预测值连线
18 
19 
20 LinearRegAngle
21 计算线性迴归的弧度。
22 回传数值=LinearRegAngle(数列,期数)
23 传入二个参数:
24 - 第一个参数是数列,通常是开高低收的价格数列。
25 - 第二个参数是期数。
26 value1 = LinearRegAngle(close,20); //计算收盘价20期的线性迴归线弧度
27 
28 LinearRegSlope
29 计算线性迴归的斜率。
30 回传数值=LinearRegSlope(数列,期数)
31 传入二个参数:
32 - 第一个参数是数列,通常是开高低收的价格数列。
33 - 第二个参数是期数。
34 value1 = LinearRegSlope(close,20); //计算收盘价20期的线性迴归线斜率
35 
36 LinearRegValue
37 LinRegAngleArray
38 LinRegArray
39 LinRegArray2
40 LinRegForecastArray
41 LinRegForecastArray2
42 LinRegInterceptArray
43 LinRegIntercepArray2
44 LinRegSlopeArray
45 LinRegSlopeArray2

 

 

中级1

 

Inputs: Price( Close ), Length( 9 ), Displace( 0 );
Variables: Avg( 0 ) ;
Avg = AverageFC( Price, Length ) ; 
if Displace >= 0 or CurrentBar > AbsValue( Displace ) then 
begin 
Plot1[Displace]( Avg, "Avg" ) ; 
{ alert criteria } 
if AlertEnabled and Displace <= 0 then 
begin 
if Price crosses over Avg then 
Alert("Price crossing over average" ) 
else if Price crosses under Avg then 
Alert( "Price crossing under average" ) ; 
end ; 
end ;

用户在声明变量时,Var、Vars、Variable、 Variables都是可行的,效果是一样的
EL不区分大小写

非执行单词: the of at //注释1 {注释2} 
" " 双引号,定义字符串、文本、标签
{ } 大括号,多行注释,大括号中间的语句不执行

数值型:int整型 float单精度浮点型 double双精度型
Var: double NetChange(0); 
NetChange = Close[0];

布尔型:True False
Var: UpBar (false); 
UpBar = Close > Close[1];

字符型:string (“内容 ”)
:Var: string text(“1234”); 
text = "申购价格不得为0."

数学运算符:
+ 加 Entryprice + 0.5 (开仓价+0.5) 
- 减 Entryprice + 0.5 (开仓价-0.5) 
* 乘 Entryprice+PriceScale*2 
/ 除法 Entryprice+(H+L)/2 
Mod(n,d) 取余 n mod d 
Power(a,b) 乘方 a^b
*的运算速度高于/ ,在不损失运算精度的情况下,除法最好转换成乘法


关系运算符:=(等于) <>(不等于) > (大于) <(小于) >=(大于等于) <=(小于等于) 
Cross Over = Crosses Over= Cross Above = Crosses Above 
Cross Under = Crosses Under = Cross Below = Crosses Below


Input:输入值名称(默认值); 
例: Input:Facetor(1.005); 
Var: double NetChange(0); //变量声明语句 
NetChange = Close – Close[0]; //变量赋值语句

Once条件语句(满足条件后只执行一次)
Once True/False(逻辑表达式) 
Begin 
Action to be taken(执行的动作); 
Action to be taken(执行的动作); 
… 
End; 
例: Var: Counter(0); 
once ( CurrentBar = 1 ) and ( Counter = 0 ) 
begin 
Counter = 1000;
end;

IF条件语句
1.If…Then…
If average(close,5) cross over average(close,20) and marketposition<>1 then 
buy next bar at market;

2.If…Then…Else…
if Close > Average(Close, 20) then
SetPlotColor(1, Red) //動作A後面沒有分號”;”
Else //Else後面沒有分號”;”
SetPlotColor(1, Green); //動作B後面有分號”;”作為語法結尾

3.If…Then Begin…End(如果符合條件就去執行A、B、C…等動作)
if Close > Average(Close, 20) then begin
SetPlotColor(1, Red); //動作A後面有分號”;”
Alert; //動作B後面有分號”;”
End; //End後面有分號”;”

4.If…Then Begin…End Else Begin…End
if Close > Average(Close, 20) then begin
SetPlotColor(1, Red);
Alert("Close Above Average");
End //沒有分號”;”
Else begin //沒有分號”;”
SetPlotColor(1, Green);
Alert(“Close Below Average”);
end;

For循环语句
For value = value1 to value2 
Begin 
Action to be taken(执行的动作); 
Action to be taken(执行的动作); 
… 
End 
例: Var: int loop(0),int sum(0); 
For loop = 0 to 10 
Begin sum = sum + loop; 
End;

While循环语句
While 逻辑表达式 
Begin 
Action to be taken(执行的动作); 
Action to be taken(执行的动作); 
… 
End; 
例: Var:int sum(0),int loop(1); 
While loop <= 10 
Begin 
sum = sum + loop ; 
loop= loop + 1; 
End;

Plot绘图语句
PlotN(数据表达式, " 图形名称" );其中,N=1,2,…,99
例:Plot1(Open, " 开盘价" );

Plot1[3](Value1); 
将它绘制在图表的之前(左) 3 条柱状线上。使用负数在当前柱状线之后(右) 3 条的柱状线上绘制

想要指定绘图颜色和宽度,不能省略绘图名称, 
例如:Plot1(Volume, "V", Black);

Alert预警语句 发出音频或电子通知
例:If Close > Highest(High,10) then 
Alert ("NewHigh");


Print语句
格式:Print(“标签”, 数值, “标签”, 数值,…); 
例:Print(“Time”,time:4:0,“Value1”,Value1); 
注:time:4:0表示输出时间的数值,小数点前4位,小数点后0位。

Commentary语句
注释语句,适用于图形分析、雷达屏 
格式: Commentary (“标签”, 数值, “标签”, 数值,…); 
例:Commentary(“Date”,Date,“Value1”,Value1);

 


NumToStr(Num, Dec);//数值转化为字符串
如:NumToStr(1170.5, 2)//返回 "1170.50".


vectorname=New vector;

vectorname.push_back(25.50);//集合最后添加一个元素
vector.Pop_Back();//集合最后移除元素
vectorname.Insert(Index,25.50);//添加元素
vectorname.Erase(Index);//删除
vectorname.Erase(iStart,iEnd);
vectorname.Clear();//删除全部数据
val1=vectorname[index];//访问元素
val2=Highest(vectorname,vectorname.count);//获取最高值

if Close>Highest(High,10) then
Alert("newHigh");

 

 

If DayOfWeek(Date) = 3 then // 当今天是 星期3的时候 0是周日
If Date<>Date[1] then //隔日 新的一天开始的时候
If Time>1545 then //下午3点45分以后
If Time<1015 then //上午10点15分之前
Highest(High,8)//突破前8个高点

 

HighestBar(close,Length)//返回 Length内 最高价到 现在的数量
LowestBar(close,Length)//返回 Length内 低价到 现在的数量

data1~data50//数据集 即 data1为默认股票,在同一个图表添加第二个股票为Data2
plot1(ticks,"volume") //添加成交额

 

MRO,求最近1个满足条件的K到当前K的距离(同文华里的BARSLAST)
MRO(con,100,1),过去100根bar里,最近1个满足条件(con)的bar,到当前bar的距离。
MRO(con,200,2),过去200根bar里,倒数第2个满足条件con的bar,到当前bar的距离。
LRO(con,100,1),过去100根bar里,最早一个满足con的bar,到当前bar的距离。
比如,MRO(time=901,300,1),过去300根bar里,最近1个时间等于9点01分的K线(也就是开盘后的第1根K线),到当前K线的距离。

 

Average(Price,Length)//计算平均值
Value1 = Average(Close,9);
Plot1(Value1, "AvgClose");

Xaverage(Price, Length)//加权移动平均值
Value1 = XAverage(Close,9);
Plot1(Value1, "XAvgClose");

AvgTrueRange(Length)//计算平均真实区间。
If marketposition=1 then //0.5倍ATR点数停损
sell next bar at entryprice- AvgTrueRange(20)*0.5 stop;


ADX(Length)//ADX指标
BollingerBand(Price, Length, NumDevs)//布林通道指标
MACD(Price, FastLength, SlowLength)//MACD指标
Parabolic(AfStep)//SAR指标
Stochastic(PriceH, PriceL, PriceC, StochLength, Length1, Length2, SmoothingType, oFastK, oFastD, oSlowK, oSlowD)//KD指标
Correlation(Indep,Dep,Length)//计算相关係数
StdDev(Price, Length)//计算标准差


Summation(Price, Length)//累加 相当于EXCEL的SUM函式
Value1=Summation(Ticks,5);//累加最近5根K棒的成交量

Highest(High, length);//最高价
Lowest(Low, length);//最低价

CloseD(PeriodsAgo)//抓日线的收盘价
CloseD(1);//获取当天收盘价
尚有CloseW(PeriodsAgo)、CloseM(PeriodsAgo)、CloseY(PeriodsAgo)等内建函式可用运。


CountIF(Test,Length)//累计过去一定K棒中,符合特定条件的次数
Value1 = CountIF(Close > Open, 12);//计算过去12根K棒中,收盘大于开盘(红K)总数。

LastBarOnChart//判断程式执行K棒是否是最近一根K棒。传回True或False。
If LastBarOnChart Then
Condition1 = PlaySound("C:\window\ding.wav");

Crosses Under
Crosses Above

 

 

 

 

 

输出内容到 TXT 文本

 1 FileAppend("D:\123.txt", "This symbol gapped up on " + NumToStr(Date, 0) + NewLine);  

 

输出内容到 txt文件

1 If lastbaronchart then
2 Begin
3     Print(File("d:\mydata.txt"), Date, Time, Close);
4     print(Date, Time, Close);
5 end;

 

读取txt 文件内容  先 创建文件

 1 using guosen;
 2 using elsystem;
 3 using tsdata.common; 
 4 using tsdata.marketdata;
 5 using elsystem.collections;
 6 using elsystem.io;
 7 
 8 //初始化的时候只执行1遍
 9 method void AnalysisTechnique_Initialized( elsystem.Object sender, elsystem.InitializedEventArgs args ) 
10 begin
11 ReadFile("D:\test1.txt"); //要读取的文件 路径
12 end;
13 
14 
15 Method void ReadFile(string path)
16 vars:StreamReader sr,string line;
17 Begin
18     Try
19         sr = StreamReader.Create(path); //创建读入流
20         while(true)
21         Begin
22             line = sr.ReadLine(); //读取一行
23             if(line.Trim().Equals(""))then
24             Begin
25                 print("读取完");//读取完 打印
26                 break;
27             End
28             Else
29             Begin
30                 Print(line); //一行一行读取 并打印
31             End;
32         End;
33     catch(elsystem.Exception ex)
34         print("File read exception. Not found or locked.");
35     End;
36 End;

 

读写TXT文件 

 1 using guosen;
 2 using elsystem;
 3 using tsdata.common; 
 4 using tsdata.marketdata;
 5 using elsystem.collections;
 6 using elsystem.io;
 7 
 8 //Push_Back – 向 Vector 集合最末端添加一个元素 
 9 //vectorname.Push_Back( 25.50); 
10  
11 //Insert - 在 Vector 集合的指定位置添加元素,将其他元素的序数向后推一位。 
12 //vectorname.Insert(Index, 25.50); 
13 
14 //Pop_Back – 将Vector集合最末端元素移除 
15 //vectorname.Pop_Back(); 
16 
17 //Erase – 移除指定位置元素并将其他元素向前移一位 vectorname.Erase(Index);  
18 //vectorname.Erase(iStart, iEnd);  
19  
20 //Clear - 将 Vector 内全部数据元素删除  
21 //vectorname.Clear(); 
22  
23 //从 Vector 访问数据元素: 
24 //Value1 = vectorname[index]; 
25  
26 //在函数内使用 Vectors: 
27 //Value1 = Highest(vectorname, vectorname.count); 
28 
29 vars:string Path("");//要保存的路径
30 method void AnalysisTechnique_Initialized( elsystem.Object sender, elsystem.InitializedEventArgs args ) 
31 vars:int loop,Vector vec,string line;
32 begin
33   //Path = elsystem.Environment.GetMyWorkDirectory()+"configure_test.txt"; //程序路径
34   
35   Path="D:\test1.txt";
36   vec=my_ReadLine(path);//读取数据
37   print(vec[0].ToString());//显示第0个数据
38   line="789"; //要写入的数据
39   my_WriteLine(path,line);//写入数据
40 end;
41 
42 //读取文件 不能 用String返回
43 Method vector my_ReadLine(string path)
44 vars:StreamReader sr,string line,vector vec;
45  Begin
46      vec = new Vector;
47     Try
48         sr = StreamReader.Create(path); //创建读入流
49         line = sr.ReadLine(); //读取一行
50         if(line.Trim().Equals("")) then Begin
51             print("File content is empty");//读取的文本为空字符串
52             return null;
53         End
54         Else Begin
55             vec.push_back(line); //
56         end;
57         return vec;
58      catch(elsystem.Exception ex) 
59          print("File read exception. Not found or locked."); //不存在
60          return null;
61      End;
62  End;  
63 
64 
65 //保存配置信息到path
66 Method void my_WriteLine(string path,string line)
67 vars:StreamWriter sw;
68 Begin
69     Try
70         sw = StreamWriter.Create(path);//创建写入流
71         sw.Write(line); //写入数据
72         if(sw<>null)then //空的话
73         Begin
74             sw.Close();//关闭写入流
75         End;
76     catch(elsystem.Exception ex)
77         print("Configure save failed."); //写入失败
78     End;
79 End;

 

读写配置信息(官方例子)

 1 using guosen;
 2 using elsystem.io;
 3 using elsystem.collections;
 4 
 5 vars:string ConfigPath("");
 6 method void AnalysisTechnique_Initialized( elsystem.Object sender, elsystem.InitializedEventArgs args ) 
 7 vars:int loop,Vector vec;
 8 begin
 9     ConfigPath = elsystem.Environment.GetMyWorkDirectory()+"configure_test.txt";
10     print("ConfigPath is: "+ ConfigPath);
11     vec = ReadConfig(ConfigPath); //
12     if(vec=null)then
13     Begin
14         print("Read configure error.");
15     End
16     Else
17     Begin
18         for loop = 0 to vec.Count-1
19         Begin
20             print("Config"+numtostr(loop+1,0)+":"+vec[loop].ToString());
21         End;
22     End;    
23 end;
24 
25 
26 method void AnalysisTechnique_UnInitialized( elsystem.Object sender, elsystem.UnInitializedEventArgs args ) 
27 begin
28     SaveConfig(ConfigPath);
29 end;
30 
31 //从path读取配置文件
32 Method vector ReadConfig(string path)
33 vars:StreamReader sr,string line,vector vec_config;
34 Begin
35     vec_config = new Vector;
36     Try
37         sr = StreamReader.Create(path); //创建读入流
38         line = sr.ReadLine(); //读取一行
39         if(line.Trim().Equals(""))then
40         Begin
41             print("File content is empty");//读取的文本为空字符串
42             return null;
43         End
44         Else
45             vec_config = line.Split(","); //以逗号为分隔拆分
46         Return vec_config;
47     catch(elsystem.Exception ex)
48         print("File read exception. Not found or locked.");
49         Return null;
50     End;
51 End;
52 
53 //保存配置信息到path
54 Method void SaveConfig(string path)
55 vars:StreamWriter sw,string configure;
56 Begin
57     configure = "I'm configure.," + elsystem.DateTime.Now.ToString(); //自定义的配置文件: config,DateTime
58     Try
59         sw = StreamWriter.Create(path);//创建写入流
60         sw.Write(configure);
61         if(sw<>null)then
62         Begin
63             sw.Close();//关闭写入流
64         End;
65     catch(elsystem.Exception ex)
66         print("Configure save failed.");
67     End;
68 End;
69 //打印语句输出栏结果示例
70 //2016/12/6 13:22:53 Config saved.
71 //ConfigPath is: C:\Program Files (x86)\TradeStation 9.5\MyWork\configure_test.txt
72 //Config1:I'm configure.
73 //Config2:2016/12/6 13:22:53

 

发邮件

view-》Message center-》messages(tap)

 

1 Inputs: SendEmail(True), #允许发邮件开关
2         email("kingboy100@naver.com"); //邮件地址 可以写很多
3         
4 Vars:content("");//邮件内容
5 
6 //邮件内容 填写
7 content="Date:"+Numtostr(Date,0)+"Time:"+Numtostr(time,2)+newline+"symbol_"+
8         "Open:"+Numtostr(open,0)+"Close:"+Numtostr(close,0)+"High:"+Numtostr(high,0)+"Low:"+Numtostr(low,0);
9 If SendEmail then print(Pager_send(email,content)); //发邮件并 打印,要是返回不是TRUE 可以再发一次

 

转载于:https://www.cnblogs.com/kingboy100/p/11338993.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值