这里的C语言指的是在《投资家》公式平台上直接用C书写公式,并不是指用C开发成DLL在连接到系统中。
开发成DLL的方法《投资家》很多年前就有了。我们设计C编译器也是几年前的事情。原来的编译器并不是用在《投资家》上。只不过我们最近将这个技术储备,应用到了《投资家》上而已,我们后面还有源源不断地将技术储备用到《投资家》上来。
《投资家》平台支持C语言,大大方便了二次开发者。原则上讲,他们可以书写非常复杂的公式了。再加上《投资家》数据详尽,有精细统计理论的支持,二次开发者真正可以展开想象的翅膀了。
我们来举个简单的例子,比如,我们原来的平台,不可能写出筹码分布这样的指标。因为,我们不能自己控制循环。不能获取鼠标的位置,不能使用分支语句。有了C的支持,这一切就变得简单多了。
下面我们给出简单的筹码分布的源代码,抛砖引玉。
line(close, 0); //画一根收盘线。
float p[110]; //声明一个浮点数组,存储价位。
float v[110]; //声明一个浮点数组,存储量。
float GB = ltgb(光标位置); //得到流通盘
if(GB<100) GB = 100000000; //没有流通盘的情况处理。
float TotalVol = 0; //临时变量。总的成交量
float maxv = high[光标位置]; //取光标位置的最高最低值
float minv = low[光标位置];
/*向前计算一个流通盘,找到起始位置*/
for(int i=光标位置;i>=0; i--)
{
TotalVol += 成交量[i];
if(TotalVol >= GB) break;
if(high[i] > maxv) maxv = high[i];
if(low[i] < minv) minv = low[i];
}
/*清除存储空间*/
int pos;
float delta = (maxv-minv)/100;
for(i=0; i<100; i++)
{
p[i] = minv+delta*i;
v[i] = 0;
}
/*统计分布*/
if(delta > 0.001)
{
TotalVol=0;
for(i=光标位置;i>=0; i--)
{
TotalVol += 成交量[i];
if(TotalVol >= GB) break;
pos = (close[i]-minv)/delta;
if((pos >= 0)&&( pos < 100))
{
v[pos] += 成交量[i];
}
}
}
//求得比例
if(TotalVol > 0)
{
for(i=0; i<100; i++)
{
v[i]/=TotalVol;
v[i] *= 100;
}
}
//画线输出结果。
int a = -2;
纵轴粗色棒组(a,p,v,100);
纵轴色棒(a,10,50);
纵轴粗色棒(a,10.5,80);
注意:这个公式是一个典型的自控制循环的公式,代码输入后,请一定在“自控制循环”上打对号,切切。当然,《投资家》平台支持的只是一个C的子集,并不是所有。比如,现在还不支持指针数据类型、宏定义等等。