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 ;
//引用命名空间
using tsdata.marketdata;
using elsystem;
//变量声明
vars:tsdata.marketdata.PriceSeriesProvider PSP(null);
//引用命名空间
method void AnalysisTechnique_Initialized( elsystem.Object sender, elsystem.InitializedEventArgs args )
Begin
PSP = new PriceSeriesProvider;
PSP.Load = False; //修改属性之前关闭数据连接
PSP.RealTime = True; //设置为True以接收行情数据,设置为False为获取历史数据
PSP.TimeZone = tsdata.common.TimeZone.Local;
PSP.Symbol = "002413.SZ"; //设置代码.
PSP.Interval.ChartType = tsdata.marketdata.DataChartType.Bars; //设置图形为K线图.
PSP.Interval.IntervalType = tsdata.marketdata.DataIntervalType.Ticks; //设置周期类型为Ticks.
PSP.Interval.IntervalSpan = ; //设置周期为1Ticks.
PSP.Range.Type = tsdata.marketdata.DataRangeType.Bars; //按照Bars数目设置区间.
PSP.Range.Bars = ; //设置数据区间的Bars数目共计10.
PSP.IncludeVolumeInfo = True; //设置为True 则包含Volume信息.
PSP.IncludeTicksInfo = True; //设置为True 则包含Ticks信息.
PSP.UseNaturalHours = True; //设置为True 则尝试使用自然时间.
PSP.StateChanged += PSP_StateChanged ; // 为PSP绑定状态变化事件PSP_StateChanged.
PSP.Updated += PSP_Updated ; // 为PSP绑定更新事件PSP_Updated.
PSP.Load = True; //打开数据连接,只是打开动作,不堵塞进程,异步载入数据
End;
//PSP状态变化事件
method void PSP_StateChanged(elsystem.Object sender,tsdata.common.StateChangedEventArgs args)
Begin
print("PSP.State: "+PSP.State.ToString() );
if(PSP.State = tsdata.common.DataState.Loaded) then //如果加载状态为已加载(Loaded)
Begin
//Sample code:
print("PSP loaded.");
End;
End; //PSP更新事件
method void PSP_Updated(elsystem.Object sender,tsdata.marketdata.PriceSeriesUpdatedEventArgs args)
Begin
//使用FileAppend(或StreamWriter)将行情高开低收(HOLC)和成交量(Volume),
//写入到文件C:\Users\<<username>>\Documents\Quotes.csv中}
FileAppend(Environment.GetFolderPath() + "..\Quotes.csv",
DateTime.Now.ToString()+", "+
PSP.Time[].toString()+", "+
numtostr(PSP.High[],) + ", " +
numtostr(PSP.Open[],) + ", " +
numtostr(PSP.Low[],)+ ", " +
numtostr(PSP.Close[],)+ ", " +
numtostr(PSP.Volume[],) + newline) ;
End; if(PSP.State = DataState.loading)then //正在读取数据
if(PSP.State = DataState.failed)then //读取失败
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
https://seekingalpha-tainan.blogspot.com/2019/03/linearregslopelinearregangle.html
https://xshelp.xq.com.tw/lists.aspx?a=TRENDFUNC
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
https://kabuist.hatenablog.com/
LinearReg
计算线性迴归的斜率与角度,以及预测资料投影点的位置。
回传数值=LinearReg(数列,期数,预测值的相对K棒位置,输出斜率,输出弧度,输出X轴截距,输出预测值)
传入七个参数:
- 第一个参数是数列,通常是开高低收的价格数列。
- 第二个参数是期数。
- 第三个参数是预测值的相对K棒位置,和序列引用定义相同,0表当期、1表前一期、-1表后一期。
- 第四个参数是输出计算完的线性回归线斜率。
- 第五个参数是输出计算完的线性回归线弧度。
- 第六个参数是输出计算完的线性回归线X轴截距。
- 第七个参数是输出计算完的线性回归线预测值。
value1 = linearreg(close,,-,value2,value3,value4,value5); //计算收盘价20期的线性迴归
plot1(value5); //绘製明天的收盘价线性迴归预测值连线 LinearRegAngle
计算线性迴归的弧度。
回传数值=LinearRegAngle(数列,期数)
传入二个参数:
- 第一个参数是数列,通常是开高低收的价格数列。
- 第二个参数是期数。
value1 = LinearRegAngle(close,); //计算收盘价20期的线性迴归线弧度 LinearRegSlope
计算线性迴归的斜率。
回传数值=LinearRegSlope(数列,期数)
传入二个参数:
- 第一个参数是数列,通常是开高低收的价格数列。
- 第二个参数是期数。
value1 = LinearRegSlope(close,); //计算收盘价20期的线性迴归线斜率 LinearRegValue
LinRegAngleArray
LinRegArray
LinRegArray2
LinRegForecastArray
LinRegForecastArray2
LinRegInterceptArray
LinRegIntercepArray2
LinRegSlopeArray
LinRegSlopeArray2
中级1
Inputs: Price( Close ), Length( 9 ), Displace( 0 ); 用户在声明变量时,Var、Vars、Variable、 Variables都是可行的,效果是一样的 非执行单词: the of at //注释1 {注释2} 数值型:int整型 float单精度浮点型 double双精度型 布尔型:True False 字符型:string (“内容 ”) 数学运算符: 关系运算符:=(等于) <>(不等于) > (大于) <(小于) >=(大于等于) <=(小于等于) Input:输入值名称(默认值); Once条件语句(满足条件后只执行一次) IF条件语句 2.If…Then…Else… 3.If…Then Begin…End(如果符合條件就去執行A、B、C…等動作) 4.If…Then Begin…End Else Begin…End For循环语句 While循环语句 Plot绘图语句 Plot1[3](Value1); 想要指定绘图颜色和宽度,不能省略绘图名称, Alert预警语句 发出音频或电子通知 Print语句 Commentary语句 |
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 文本
FileAppend("D:\123.txt", "This symbol gapped up on " + NumToStr(Date, ) + NewLine);
输出内容到 txt文件
If lastbaronchart then
Begin
Print(File("d:\mydata.txt"), Date, Time, Close);
print(Date, Time, Close);
end;
读取txt 文件内容 先 创建文件
using guosen;
using elsystem;
using tsdata.common;
using tsdata.marketdata;
using elsystem.collections;
using elsystem.io; //初始化的时候只执行1遍
method void AnalysisTechnique_Initialized( elsystem.Object sender, elsystem.InitializedEventArgs args )
begin
ReadFile("D:\test1.txt"); //要读取的文件 路径
end; Method void ReadFile(string path)
vars:StreamReader sr,string line;
Begin
Try
sr = StreamReader.Create(path); //创建读入流
while(true)
Begin
line = sr.ReadLine(); //读取一行
if(line.Trim().Equals(""))then
Begin
print("读取完");//读取完 打印
break;
End
Else
Begin
Print(line); //一行一行读取 并打印
End;
End;
catch(elsystem.Exception ex)
print("File read exception. Not found or locked.");
End;
End;
读写TXT文件
using guosen;
using elsystem;
using tsdata.common;
using tsdata.marketdata;
using elsystem.collections;
using elsystem.io; //Push_Back – 向 Vector 集合最末端添加一个元素
//vectorname.Push_Back( 25.50); //Insert - 在 Vector 集合的指定位置添加元素,将其他元素的序数向后推一位。
//vectorname.Insert(Index, 25.50); //Pop_Back – 将Vector集合最末端元素移除
//vectorname.Pop_Back(); //Erase – 移除指定位置元素并将其他元素向前移一位 vectorname.Erase(Index);
//vectorname.Erase(iStart, iEnd); //Clear - 将 Vector 内全部数据元素删除
//vectorname.Clear(); //从 Vector 访问数据元素:
//Value1 = vectorname[index]; //在函数内使用 Vectors:
//Value1 = Highest(vectorname, vectorname.count); vars:string Path("");//要保存的路径
method void AnalysisTechnique_Initialized( elsystem.Object sender, elsystem.InitializedEventArgs args )
vars:int loop,Vector vec,string line;
begin
//Path = elsystem.Environment.GetMyWorkDirectory()+"configure_test.txt"; //程序路径 Path="D:\test1.txt";
vec=my_ReadLine(path);//读取数据
print(vec[].ToString());//显示第0个数据
line=""; //要写入的数据
my_WriteLine(path,line);//写入数据
end; //读取文件 不能 用String返回
Method vector my_ReadLine(string path)
vars:StreamReader sr,string line,vector vec;
Begin
vec = new Vector;
Try
sr = StreamReader.Create(path); //创建读入流
line = sr.ReadLine(); //读取一行
if(line.Trim().Equals("")) then Begin
print("File content is empty");//读取的文本为空字符串
return null;
End
Else Begin
vec.push_back(line); //
end;
return vec;
catch(elsystem.Exception ex)
print("File read exception. Not found or locked."); //不存在
return null;
End;
End; //保存配置信息到path
Method void my_WriteLine(string path,string line)
vars:StreamWriter sw;
Begin
Try
sw = StreamWriter.Create(path);//创建写入流
sw.Write(line); //写入数据
if(sw<>null)then //空的话
Begin
sw.Close();//关闭写入流
End;
catch(elsystem.Exception ex)
print("Configure save failed."); //写入失败
End;
End;
读写配置信息(官方例子)
using guosen;
using elsystem.io;
using elsystem.collections; vars:string ConfigPath("");
method void AnalysisTechnique_Initialized( elsystem.Object sender, elsystem.InitializedEventArgs args )
vars:int loop,Vector vec;
begin
ConfigPath = elsystem.Environment.GetMyWorkDirectory()+"configure_test.txt";
print("ConfigPath is: "+ ConfigPath);
vec = ReadConfig(ConfigPath); //
if(vec=null)then
Begin
print("Read configure error.");
End
Else
Begin
for loop = to vec.Count-
Begin
print("Config"+numtostr(loop+,)+":"+vec[loop].ToString());
End;
End;
end; method void AnalysisTechnique_UnInitialized( elsystem.Object sender, elsystem.UnInitializedEventArgs args )
begin
SaveConfig(ConfigPath);
end; //从path读取配置文件
Method vector ReadConfig(string path)
vars:StreamReader sr,string line,vector vec_config;
Begin
vec_config = new Vector;
Try
sr = StreamReader.Create(path); //创建读入流
line = sr.ReadLine(); //读取一行
if(line.Trim().Equals(""))then
Begin
print("File content is empty");//读取的文本为空字符串
return null;
End
Else
vec_config = line.Split(","); //以逗号为分隔拆分
Return vec_config;
catch(elsystem.Exception ex)
print("File read exception. Not found or locked.");
Return null;
End;
End; //保存配置信息到path
Method void SaveConfig(string path)
vars:StreamWriter sw,string configure;
Begin
configure = "I'm configure.," + elsystem.DateTime.Now.ToString(); //自定义的配置文件: config,DateTime
Try
sw = StreamWriter.Create(path);//创建写入流
sw.Write(configure);
if(sw<>null)then
Begin
sw.Close();//关闭写入流
End;
catch(elsystem.Exception ex)
print("Configure save failed.");
End;
End;
//打印语句输出栏结果示例
//2016/12/6 13:22:53 Config saved.
//ConfigPath is: C:\Program Files (x86)\TradeStation 9.5\MyWork\configure_test.txt
//Config1:I'm configure.
//Config2:2016/12/6 13:22:53
发邮件
view-》Message center-》messages(tap)
Inputs: SendEmail(True), #允许发邮件开关
email("kingboy100@naver.com"); //邮件地址 可以写很多 Vars:content("");//邮件内容 //邮件内容 填写
content="Date:"+Numtostr(Date,)+"Time:"+Numtostr(time,)+newline+"symbol_"+
"Open:"+Numtostr(open,)+"Close:"+Numtostr(close,)+"High:"+Numtostr(high,)+"Low:"+Numtostr(low,);
If SendEmail then print(Pager_send(email,content)); //发邮件并 打印,要是返回不是TRUE 可以再发一次
策略编程的结构:
第一部分:参数变量
第二部分:条件
第三部分:进场设计
第四部分:出场设计&止盈止损
轻松交易从量化交易开始
第一部分:策略参数&变量
inputs:参数1(?),参数2(?),参数3(?),参数4(?),参数5(?);
variables:var0(0),var1(0),var2(0),var3(0),var4(0),var5(0),var6(0);
注释:inputs策略编辑中的自变量、variables策略编辑中的应变量。
举例:var0=average(close,参数);
Var0是应变量,并根据“参数”这个自变量的改变而改变。
第二部分:条件
均线:
var0=Average(close,周期参数);
均线变量“var0”=以“周期参数”为特定周期的收盘价(close)的算数平均。
var0=Xaverage(close,周期参数);
指数移动平均线“var0”。
布林:
var0=BollingerBand(close,周期参数,标准差参数);
var1=BollingerBand(close,周期参数,-标准差参数);
布林上轨“var0”=布林函数(以“周期参数”为周期,收盘价(close)为样本,“标准差参数”为标准差倍数);
布林下轨“var1”=布林函数(以“周期参数”为周期,收盘价(close)为样本,“标准差参数”为标准差倍数);
RSI:
var0=RSI(close,参数);
RSI变量“var0”=以“参数”为周期,收盘价(close)为样本的RSI值。
DKJ:
Vars:KDJRSV(0), KDJK(0), KDJD(0), KDJJ(0);
If CurrentBar = 1 Then begin
KDJRSV = 0;
KDJK = 50;
KDJD = 50;
KDJJ = 0;
end else begin
KDJRSV = (Close - Lowest(Low, 9)) / iff((Highest(High, 9) - Lowest(Low, 9)) = 0, 1, (Highest(High, 9) - Lowest(Low, 9))) * 100;
KDJK = KDJK[1] * 2/3 + KDJRSV * 1/3;
KDJD = KDJD[1] * 2/3 + KDJK * 1/3;
KDJJ = (3 * KDJK) - (2 * KDJD);
end;
绝对值:absvalue
例句:absvalue(var0-var1);
Var0-var1的绝对值
多周期
var1=rsi(close,ma1);
var2=rsi(close,ma1) of data2;周期2
var3=rsi(close,ma1) of data3;周期3
var4=rsi(close,ma1) of data4;周期4
条件举例
condition1=var0>var1 and var1>var2 and var0>var2;
condition2=var2>var1 and var1>var0 and var2>var0;
condition1=close>average(close,50)
“条件1”=收盘价在均线50线上方
Condition2=average(close,50)>average(close,50)[2]
“条件2”=均线50线值大于前第2天均线50线值(即:均线正在上行)
CountIf(condition1,N)=N
“条件1”持续N个周期
MACD快速线
diff=XAverage(close,12)-XAverage(close,26);
condition3=diff<0 and countif[1](diff>0,tc)=tc;
condition4=diff>0 and countif[1](diff<0,tc)=tc;
“条件3”=现在diff<0 同时上一个周期diff值>0保持“tc”个周期;
“条件4”=现在diff>0 同时上一个周期diff值<0保持“tc”个周期;
线性回归角度
inputs:ma(40),jdj(6),jdc(2);
variables:var0(0),var1(0),var2(0),var3(0),var4(0),var5(0),var6(0),oLRSlope(0), oLRAngle(0), oLRIntercept(0), oLRValueRaw(0),vSize(0);
var3=Average(var2,ma);
var5=LinearReg(var3,3,0,oLRSlope,var4,oLRIntercept,oLRValueRaw);
LinearReg
计算线性回归线的斜率和角度,并允许您确定投影线与未来(或过去)柱状线位置相交的价格。
语法
LinearReg(Price, Length, TgtBar, oLRSlope, oLRAngle, oLRIntercept, oLRValue)
返回(整数)
输出的 oLRSlope、oLRAngle、oLRIntercept 和 oLRValueRaw 参数值返回斜率、角度、截距和回归值。LinearReg 函数本身返回的值为 1。
参数
名称
类型
说明
Price
数值
指定用于计算回归线的柱状线值(价格、函数或公式)。
Length
数值
设置要考虑的柱状线数量。
TgtBar
数值
设置在未来(或过去)的目标柱状线位置。使用负 Integer 表示未来的柱状线,正 Integer 表示过去的柱状线,0 表示当前柱状线。
oLRSlope
数值
输出线性回归线的斜率。
oLRAngle
数值
以度为单位,输出线性回归线的角度。
oLRIntercept
数值
输出线性回归线与当前柱状线位置交叉时的值。
oLRValueRaw
数值
输出线性回归线与 TgtPos 柱状线位置交叉时的回归值。
第三、四部分:进场设计 出场设计&止盈止损
进出场设计
标准进场语序一:
If + 条件 + then buy next bar at market;
如果条件成立,那么在下一根K线开盘时买入;
If + 条件 + then sellshort next bar at market;
如果条件成立,那么在下一根K线开盘时卖出;
标准出场语序一:
If + 条件 + then sell next bar at market;
如果条件成立,那么在下一根K线开盘时卖出平仓;
If + 条件 + then buytocover next bar at market;
如果条件成立,那么在下一根K线开盘时买入平仓;
语序二:
if condition1 and close cross above var0 then begin
buy ("B1") next bar at market;
Var9=currentbar;
end;
如果条件1和收盘价上穿变量0,在下一根bar开盘买入;
Var9=进厂价;
if condition2 and close cross under var0 then begin
sellshort ("S1") next bar at market;
Var9=currentbar;
end;
如果条件2和收盘价下穿变量0,在下一根bar开盘卖出;
Var9=进厂价;
if close>average(close,50) then begin
if close<open then var1=high;
End;
如果收盘价>均线50线(价格在均线上方)的情况下
如果收盘价>开盘价 那么最高价记作变量1;
语序三:
if condition1 and condition2 then Buy next bar at var1 stop;
如果条件1和条件2同时成立,在下一根K线价格触及Var1时做多;
if mp[1]=0 and mp<>0 then var0=currentbar;
if currentbar-var0=5 then sell
进场后第五根K线卖出
Value1 = ParabolicSAR(0.02, 0.2, oParCl, oParOp, var2, oTransition);
if marketposition=1 and var2=-1 then sell ("Lzy") next bar at market;
if marketposition=-1 and var2=1 then buytocover ("Szy") next bar at market;
如果持有多单和SAR指标处于空头在下一根K线做空;
如果持有空单和SRR指标处于多头在下一根K线做多;
mp=marketposition;
if mp<>0 and mp<>mp[1] then var2=
如果持有单和上一根K线持单情况和现在持单情况不同则var2=
if mp[1]=0 and mp<>0 then var0=currentbar;
如果上根K线未持单,现在持单,那么var0=进场价
止损设计
固定百分比止盈止损
value1=(1-止损)*entryprice;
value2=(1+止盈)*entryprice;
value3=(1+止损)*entryprice;
value4=(1-止盈)*entryprice;
if currentbar>varN then begin
sell ("止损平仓") next bar at value1 stop;
sell ("止盈平仓") next bar at value2 limit;
buytocover ("止损平仓") next bar at value3 stop;
buytocover ("止盈平仓") next bar at value4 limit;
end;
if barssinceentry=pm then begin
buytocover("s2") next bar at market;
sell("b2") next bar at market;
end;
进场后PM根K线后平仓出场
进场后N个周期保本平仓
if currentbar>=varN+周期then begin
sell next bar at entryprice limit;
buytocover next bar at entryprice limit;
end;
移动止盈止损
if varN<>currentbar then begin
setpercenttrailing(止盈参数*bigpointvalue,参数);
setstoploss(entryprice*止损参数*bigpointvalue);
end;
倍投:
if positionprofit(1)<0
and positionprofit(2)<0
and positionprofit(3)<0
then n=2 else n=1
Buy n contracts next bar at highest(high,2)stop;
如果上次笔交易盈利小于0,上上笔交易盈利小于0,上上上笔交易盈利小于0,则交易2手在下一根K线,最近2根K线的最高点。
指定交易部位
buy/sellshort(“xxx”)
sell/buytocover from entry(“xxx”)
先给进场的信号取个名字,出场时平仓指定名字的单子
Sell 1 contract from total next bar at entryprice+10 stop;
多单向上跳十跳平仓1手
If condion1 then buy 2 contract next bar at market;
满足条件1买入2手多单
Barsinceentry(0)=15 then
进场后15根K线平单
If barsinceentry(0)=10 then sell next bar at market;
开仓后第十根K线平仓
mp=marketposition;
if mp[1]=0 and mp<>0 then var5=currentbar;
var6=ma+var5-currentbar;
if var6<=ma2 then var6=ma2;
if mp[1]<>0 and mp=0 then var6=ma;
var0=Average(open,var6);
if marketposition=1 then sell next bar at var0 stop;
if marketposition=-1 then buytocover next bar at var0 stop;
自适应均值:进场后,设置自适应移动均值,首日自适应移动均值为过去ma日收盘价均值,即为中轨。之后持仓时间每多一个交易日,计算移动平值的天数减去1。但移动均值的计算天数最小递减到ma2。如果达到了ma2,则不再递减。
if marketposition<>1 当前持单不是多仓
currentcortracts=1 持仓是1
股票买整数手(100股为一手)
inputs: vCapital(10000);
variables: vSize(0);
if 条件 then begin
vSize=intportion(vCapital/close/100)*100;
buy ("B1") vSize contract next bar at market;
end;
once cleardebug;
inputs:Startime(0900),Endtime(0930);
var:vSumVolume(0);
if time=Endtime then begin
vSumVolume=0;
for value1=0 to 50 begin
if time[value1]>=Startime then vSumVolume=ticks[value1]+vSumVolume else break;
end;
end;
if adate=20190606 then
print(adate,"/",time,"/",value1,"/",time[value1],"/",ticks[value1],"/",vSumVolume);
计算9点-9点30的成交量总和
Easy_language的更多相关文章
随机推荐
- CVE-2019-0199:Apache Tomcat DDOS
CVE-2019-0199:Apache Tomcat DDOS 0X00漏洞概述 Apache Tomcat HTTP/2拒绝服务漏洞,该漏洞是由于应用服务允许接收大量的配置流量,并且客户端在没有读 ...
- javascript js获取html元素各种距离方法
//滚动条 scrollLeft//滚动条距左边距离 scrollTop//滚动条距顶部距离 scrollWidth//滚动条元素的宽 scrollHeight//滚动条元素的高 //可视范围 cli ...
- 修改 ssh 远程连接 时间
linux使用的是 红帽旗下 centos. 解释两个文件 /etc/ssh/sshd_config 配置ssh服务器端的 ...
- linux下搭建DHCP服务
一键搭建dhcpd服务脚本 [root@dhcp-server~]# cat auto_install_dhcpd.sh #!/bin/sh . /etc/init.d/functions #安装dh ...
- Waymo-自动驾驶长尾问题挑战(2019)
尽管Waymo已经在开放道路上积累超过10 Million Miles,Waymo的工程师们仍然发现有层出不穷的新自动驾驶场景待解决. 1.自动驾驶长尾场景举例 场景一:一个骑自行车的人手中拿着一个S ...
- 【转载】IPSec-Tools配置
来源:https://blog.csdn.net/zt698/article/details/4811604 1 介绍从Linux 2.6内核开始,内核就自身带有IPSec模块,配合IPS ...
- http各个版本(1/1.1/2)对比
参考的文章: 从理论到实践 全面理解HTTP/2 HTTP协议以及HTTP2.0/1.1/1.0区别 综合阐述http1.0/1.1/2和https 目录: http1.1 长连接 HTTP 1.1支 ...
- 如何利用border书写三角形,建议考虑正方形
网页做三角形图片,你还在拿ps调整吗?out了,老铁,来和我一起脑海畅想一个正方形是由4个等腰直角三角形构成,然后我想保留上边的三角形,那下边.左边.右边的三角形就没了(设置背景色transparen ...
- 14.Android-使用sendMessage线程之间通信
1.Handler介绍 Handler 是一个消息分发对象.handler是Android给我们提供用来更新UI的一套机制,也是一套消息处理机制,通过它可以实现在不同线程之间传递消息 本章Handle ...
- 解决在jsp页面中使用jstl无法遍历request域中list集合的问题
解决在jsp页面中使用jstl无法遍历request域中list集合的问题 1. 前言 最近在写一个很简单的Javaweb项目,里面需要将request域中的list集合加载到jsp页面,我使用e ...