var dzhpath =

"D:\dzh2\data\"f = io.open(dzhpath ++ "sh\day.dat","rb")

f.seek("set",0x0c)

stknum = f.read({INT stknum}).stknum //保存的证券数量dataindex = {

byte code[10];

int daylinenum;

WORD recordindex[25];

}var codeoffset //代码index偏移量setcode

= function(code){for(i=1;stknum;1){

f.seek("set",0x18 + (i - 1) * 0x40)if(f.read({byte

code[10]}).code == code){

codeoffset = ibreak

}

}

}

code = function(){

f.seek("set",0x18 + (codeoffset - 1) * 0x40)return f.read(dataindex).code

}

daylinenum = function(){

//该证券的日线数量f.seek("set",0x18 + (codeoffset -

1) * 0x40 + 10)return

f.read({int daylinenum}).daylinenum

}

recordindex = function(){

//该证券的日线索引f.seek("set",0x18 + (codeoffset -

1) * 0x40 + 14)return

f.read({WORD

recordindex[25]}).recordindex

}

dayline = { //日线数据结构int

date;

float open;

float high;

float low;

float close;

float volume;

float amount;

word rise; //rise和fall只对大盘有效word

fall;

}

setday = function(dayoffset){ //dayoffset为0显示最后一根K线数据,-n代表前n天f.seek("set",(0x41000 +

recordindex()[math.floor((daylinenum() + dayoffset - 1) / 256) +

1] * 8192 + (daylinenum() + dayoffset

- 1) % 256 *

32))return f.read(dayline)

}

setcode(600033) //可以输入任意正确的代码,本例支持沪市,未做容错处理var CLOSE = {}

//收盘价数组,从最后一根K线向前排序for(i=0;1-daylinenum();-1){

table.push(CLOSE,setday(i).close)

}

MA = function(n){ //计算n日均线var

ma = {}for(i=0;daylinenum()-n;1){var sum =

0for(j=i+1;i+n;1){

sum += CLOSE[j] / n

}

table.push(ma,sum)

}return ma

}

CROSS =function(a,b){ //向上穿越函数var

crossday = {}for(i=1;math.min(#a,#b);1){try{if(a[ i ] > b[ i ] and a[i + 1]

<= b[i + 1])

table.push(crossday,i)

}

}return crossday

}

s = setday(0)

io.open()

io.print("保存的沪市证券数量:",stknum)

io.print("查询的证券代码:",code())

io.print("日线数量:",daylinenum())

io.print("")

io.print("查询的数据日期:",time(s.date - 28800))

io.print("开盘价:",s.open)

io.print("最高价:",s.high)

io.print("最低价:",s.low)

io.print("收盘价:",s.close)

io.print("成交量:",s.volume)

io.print("成交额:",s.amount)

io.print(code() == 000001 ? "上涨家数:" :

"上涨家数只对大盘有效!",code() == 000001 ? s.rise : "")

io.print(code() == 000001 ? "下跌家数:" :

"下跌家数只对大盘有效!",code() == 000001 ? s.fall : "")

io.print("")

io.print("收盘价数组当日值:",CLOSE[1])

io.print("5日均线当日值:",MA(5)[1])

io.print("")

io.print("下面列出最近10个满足5日均线上穿10日均线的日期:")for(i=1;math.min(10,#CROSS(MA(5),MA(10)));1){

//列出至多10个满足条件的日期t = setday(1 - CROSS(MA(5),MA(10))[ i ]).date

io.print(time(t - 28800))

}execute("pause")

io.close()

f.close()

http://www.aau.cn/thread-1900-1-1.html

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐