全站导航

当前位置: 首页 > 公式应用 > 内容

飞狐vbs公式编写入门

一、VBS教程:
  请参阅Vbs55.chm,里面已经论述得非常详细了,该文件在飞狐的主页提供了下载。
  提示:在飞狐中使用VBS,大多涉及的是数值运算,先熟悉一些常用语句、基本概念就可以应用了,如循环语句、条件语句,赋值、数组、过程等概念。
  VBS较飞狐的强大之处,在于循环,可以解决飞狐公式系统所无法处理的问题,但也有个致使的弱点,由于是VBS解释性语言,因此运行慢,利用VBS设计公式时,应注意使用高效率的算法。
二、VBS接口:
  VBS与飞狐公式系统之间,必须通过接口才能交换数据,也就是说,公式系统中的数据不能直接被VBS处理,同样VBS中运行的结果,也不能直接被公式系统使用。
  VBS目前提供的接口有:
  1、FFL.VarData("变量名"),传递常量、数组变量数据。
  2、FFL.VarStartIndex("变量名"),传递数组变量有效数值起始位置,若脚本处理过程中不改变变量有效数值起始位,则无须调用。
  3、FFL.MsgBox(strMsg),strMsg为字符串变量或常量。
  4、FFL.Color("变量名"),用于指定指标输出变量的颜色;(可程序实现渐变色)。
  5、FFL.LineThick("变量名"),用于指定指标输出变量的线宽;(可程序实现线宽)。
三、利用VBS设计公式:
  VBS脚本语句,必须使用“<%”和“%>”框起来,以便让公式系统能够识别,在一个指标公式中,可以多次调用VBS脚本,即可以有多组由“<%、%>”框起来的脚本。
  在公式系统中无法实现而需要调用VBS的实例通常较复杂,为了学习VBS,所举的实例从简单开始,大多可以在原公式系统中实现。
  以下通过具体实例,解剖一下VBS设计的公式。
  例一:设计一个公式,计算收盘价对应的涨停价位(设涨停板为10%)
  代码如下:
spj:=close;
<%
vspj=ffl.vardata("spj")
last=ubound(vspj)
for i=0 to last
vspj(i)=vspj(i)*1.1
next
ffl.vardata("spj")=vspj
%>
vspj
  以下详细解释公式代码:
  1、spj:=close--定义一个序列变量spj,其值等于序列收盘价(对日K线而言,等于从上市首日直到最后一天的一系列收盘价,故名为序列变量)。
  接着是一段由“<%”、“%>”框起来的VBS程序代码。
  2、vspj=ffl.vardata("spj")--将序列变量spj传递到VBS中,其数据放入数组vpj中。有关数组概念,可参阅Vbs55.chm。
  这里对数组稍加解释,VBS中的数组,是由一系列元素构成的,本例中为Vspj(0)、vspj(1)......,这里括号中的0、1......等称为数组的下标,VBS数组下标是从0开始的。其中vbs(0)是数组的第一个元素,对应序列变量的第一个值(即首日收盘价),依此类推,直到最后一个。那么,数组vspj的最后一个元素是哪个?767股票学习网 http://www.net767.com收集整理这很重要,因为在涉及相关计算时必须知道。看下一行代码:
  3、last=ubound(vspj)--ubound(vspj)是什么东东?查一下Vbs55.chm中的函数部分,原来是计算数组vspj最大下标。本行语句,是把vspj的最大下标的值赋给变量last,也就是说last此后就等于vspj的最大下标值。
  4、接着的三行语句是VBS的循环,此处的for...... nexe语句的VBS循环语句中的一种(其余几种循环语句,请自查Vbs55.chm文件中的解说)。循环是起什么作用的?我们来看看,要计算从第一天到最后一天的涨停价位,如果逐条语句来写,大致如下:
  vspj(0)=vspj(0)*1.1--把第一天的收盘价vspj(0)乘以1.1,再赋回给vspj(0),运算后vspj(0)就不再等于收盘价,而是原价的涨停价位。
  vspj(1)=vspj(1)*1.1--vspj(1)运算后等于第二天的涨停价位。
  vspj(2)=vspj(2)*1.1
   .
   .
   .
   vspj(last)=vspj(last)*1.1--最后一天的运算。
一共须写last+1条语句,显然效率太低了。这些语句用循环语句来写,只须3条就行了,即
  for i=0 to last
    vspj(i)=vspj(i)*1.1
  next
解释如下:
  for i=0 to last--循环首,让循环变量i从1开始,每次增加递增1循环执行“循环体”,直到i=last时跳出循环。
  vspj(i)=vspj(i)*1.1--循环体,这里只有一条语句,可以有多条语句。当i=0时,执行的是vspj(0)=vspj(0)*1.1,随着i的递增,最后一次执行的是vspj(last)=vspj(last)*1.1,共执行last+1次。
  next--循环尾,与for配套对应,执行到此处时,跳回到对应的循环首for重新执行。当for语句判断i=last+1时,for语句将会跳出循环,即跳过next,到next的下一条语句。

返回目录页: 公式应用

 

图解教程
 
新生300天K线图解教程
看盘绝招图解分析教程

K线从入门到精通图解
MACD入门到精通图解
成交量入门到精通图解
分时图入门到精通图解
均线从入门到精通图解
跟庄从入门到精通图解
选股从入门到精通图解
KDJ从入门到精通图解
股票买卖点技术图解
涨停板战法研究图解
更多技术图解教程

首页
看盘
分时

图解
跟庄
量价

K线
指标
均线

书籍
短线
选股

导航
买入
经验

767股票学习网 | 电脑版联系站长回顶部↑
站唯一微信公众号: 767股票学习网

如不能打开二维码地址请下载图片用微信扫一扫