【同花顺公式编辑教程】第3章 获取数据

目录

3.1、同花顺程序执行原理

3.1.1、示例背景

3.1.2、执行过程

3.1.3、执行周期

3.2、获取量价数据

3.3、获取财务数据

3.3.1、资产负债表

3.3.2、利润表

3.3.3、现金流量表

3.3.4、财务报表附注

3.3.5、财务指标

【提示】下期内容


3.1、同花顺程序执行原理

3.1.1、示例背景

        此处以一个演示程序为例,图1为示例指标的程序源码,图2为示例指标在个股的执行结果。

图1:示例指标
图2:示例指标执行结果

         示例指标源码为:

IF\space (CLOSE>=OPEN) \space \{V:VOL;\} \space ELSE \space \{V:-VOL;\}

        CLOSE:即当日的收盘价

        OPEN:即当日的开盘价

        VOL:即当日成交量

        V:VOL:即简写的输出语句且输出VOL

        V:-VOL:也即简写的输出语句且输出-VOL

        即上述指标实现的是,若当日收盘价≥当日开盘价(即当日股价上涨),则绘出图像,数值为当日的成交量;若当日收盘价<当日开盘价(即当日股价下跌),则绘出图像,数值为负的当日的成交量。

        若不熟悉此处语法,请参考【同花顺公式编辑教程】第二章 基础语法_学金融的廖哥的博客-CSDN博客


3.1.2、执行过程

        (1)、指标的程序从屏幕可见的最左边第一根k线开始执行,直至到最后边最后一根k线结束执行。

        如下图3,屏幕可见的第一根k线2023年3月30日,当日股价下跌,当日成交量53.45万,则在副坐标输出数值-53.45万。

图3:程序执行过程示例

         (2)、缩放时间轴,会使得屏幕可见的k线数目变化。指标的程序会在每次缩放后,重新从屏幕可见的最左边第一根k线开始执行。如下图4。

图4:缩放时间轴,程序刷新执行


3.1.3、执行周期

        在示例背景中有:        

        CLOSE:即当日的收盘价

        OPEN:即当日的开盘价

        VOL:即当日成交量

        实质上,以上数据无周期区别。如CLOSE可以代表:当周的收盘价,当月的收盘价,当季度的收盘价......,在编程中无需对CL

很长时间没有用D7,但是小应用原生代码还是要转回到D7.这两天在看同花顺和通达信,下载后的盘后数据下载想直接导入EXCEL。参考网上的同花顺数据格式介绍,下面的代码用于在TMEMO控件中显示文件头和文件内容。长时间不用D7,生殊处请见谅。 procedure TForm1.btOpenClick(Sender: TObject); var TM:TMemoryStream; FHard:TDayRec; PColDef:PByte; s,i:integer; tmp:Dword; begin if OpenDialog1.Execute then begin FName:=OpenDialog1.FileName; tm:=TMemorystream.Create; try tm.LoadFromFile(FName); tm.Read(FHard,sizeof(TDayRec)); Memo1.Lines.Add(format(&#39;数据记录总数:%x / %d &#39;,[fhard.rows,fhard.rows])); memo1.Lines.add(format(&#39;数据记录内容开始地址:%x / %d &#39;,[Fhard.StartAdd,Fhard.StartAdd])); memo1.lines.add(format(&#39;每条记录的长度:%x / %d &#39;,[FHard.RecordLenght,FHard.RecordLenght])); memo1.lines.add(format(&#39;每个记录的列数:%x / %d &#39;,[Fhard.ColNum,Fhard.ColNum])); fhard.StartAdd:=sizeof(TDayRec)+fHard.ColNum*4; memo1.Lines.add(format(&#39;数据记录内容真实开始地址:%x / %d &#39;,[Fhard.StartAdd,Fhard.StartAdd])); s:=FHard.ColNum*sizeof(TRecordDefine); GetMem(PColDef,s);; try tm.Read(PColDef^,s); for i:=0 to Fhard.ColNum-1 do begin tmp:=PDWordArray(PcolDef)[i]; //tmp:=PDword(integer(pcoldef)+i*4)^; memo1.Lines.add(format(&#39;列 %d: %x , 列长度:%x&#39;,[i,tmp,TColdef(tmp).ColLength])); end; finally freemem(PColDef); end; finally tm.Free; end; end; end;
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值