Params
//此处添加参数
Numeric choosedate(20200102);//选股日期
Numeric begintime(20190101.090000);//开始时间
String dicname1("F1010010006"); //板块节点(科创板)
string base1("stocktrade"); //股票池存储标志的块名
string name1("choosecode");//键名;
string freq1("1d");//选股周期
string freq2("5m");//交易周期
numeric hllen(20); //波段参数
Vars
//此处添加变量
Global string myfreq; //数据周期
global integer i(0); //循环变量
global Integer n; //股票池个数
global array<string>myarray;//股票池代码
global array<string>subarray;//子股票池代码
global array<numeric>zdf;//涨跌幅
Global array<integer>id1;//数组下标
Global array<Integer>id2;//数据下标
Series<Numeric>highline;//高点通道
Series<Numeric>lowline;//低点通道
global string choosecode;//选股时间
global string dicsymbol;//基础数据关联表的
global string dicname;//基础数据的键名
Defs
//此处添加公式函数
Integer LogFile(String str)
{
FileAppend("d://"+FormulaName()+".tbf","["+Text(SystemDateTime())+"] "+ str);
Return 0;
}
Events
//初始化事件函数,策略运行期间,首先运行且只有一次,应用在订阅数据等操作
OnInit()
{
//从数据库读取子股票池是否有选好的标志,无效值则没有选好
choosecode=GetTBProfileString(base1,name1);
LogFile("begin...choosecode="+choosecode);
//根据股票池是否确立,确定行情订阅
if (choosecode==InvalidString)
{
LogFile("begin...choosecode="+choosecode);
myfreq=freq1;
dicsymbol=dicname1;
dicname="TB_INDUSTRY";
}
Else
{
myfreq=freq2;
dicsymbol="myindustry";
dicname="001";
}
GetDicValue(dicname,dicsymbol,SystemDateTime(),myArray);
n=GetArraySize(myArray);
LogFile("myArray="+TextArray(myArray));
//订阅行情
For i=0 To n-1
{ //加载所有成分合约到图层
SubscribeBar(myArray[i],myfreq,beginTime);
}
SetBackBarMaxCount(1);
//SetInitCapital(20000000);
}
OnBar(ArrayRef<Integer> indexs)
{
//选股
if(choosecode==InvalidString)
{
//涨跌幅排序筛选股票
if(date==choosedate)
{
//涨跌幅排序选取跌幅前三名作为股票池
Range[i=0:n-1]
{
zdf[i]=Close/Open-1;
id1[i]=i;
id2[i]=i;
}
SortIds(zdf,id1,id2,0,n-1,True);
for i=0 to 2
{
subarray[i]=myArray[id1[i]];
}
LogFile("subarray="+TextArray(subarray));
SetDicValue("001","myindustry",SystemDateTime(),subarray,True);
LogFile("subarray write done!");
SetTBProfileString(base1,name1,"choosedone!");
ReStart;
}
}
else //波段交易
{
Range[0:n-1]
{
highline=highest(High[1],hllen);
lowline=Lowest(Low[1],hllen);
PlotNumeric("highline",highline);
PlotNumeric("lowline",lowline);
if(MarketPosition<>1 and High>=highline)
Buy(200,Max(Open,highline));
If(MarketPosition==1 and DateDiff(entrydate,Date)>0 and Low<=lowline)
Sell(0,Min(Open,lowline));
}
}
}
谢谢老师,我也查不出来,我的代码都是抄的tb文件里的:)
编译没有错误只有警告
这个问题视频区有专题课介绍 关键词 序列类型使用指南