> 做自动交易,数据最后都要集中到最新的时间这一点上,也即只要最后的数据,而做技术分析着重的是整个历史数据和对应的分析数据. 你若是做自动交易,应当使用数据库, 你若是做技术分析,应当用扩展数据通道.当然你也可用数据库做分析,这时每条数据记录对应各个时间点. 万事没绝对的东西,你想怎么用就怎么用,对程序来讲,一切皆是数据容器,程序就是用来倒腾这些数据的工具,就连委托指令这么重要的东西,也只是一组数据而已.
> 若是各种指标在一个对象的程序中运算,你想保存每一点的指标数据,大可不必用上面的这些方法,你可用动态数组. 比如你有3个指标,想输出一个总的指标,也即一个点上4个数据,可用动态浮点数组 每计算一个点增加4个动态数组单元 //程序开始时清动态数组 DblArray_RemoveAll(); ................................ .............................. //在某一点index(点序号)上计算出指标1,2,3,记为zb001,zb002,zb003(在前面定义好,计算好) //这里将他们存入动态数组 DblArray_Add(zb001);//位置为index*4 DblArray_Add(zb002);//位置为index*4+1 DblArray_Add(zb003);//位置为index*4+2 DblArray_Add(0);//这个是总的指标,位置为index*4+3 .............. ............... //计算总的指标zb0004 //计算总指标时取前面指标数据可用DblArray_GetAt(index1*4+..); .................. //存入 DblArray_SetAt(index*4+3,zb0004); ................. //下一个点 //index++; //
Re: >回天海星空.. 永清兄请看看我的这个程序怎么就不行? dobj.execstep=1000 ; OpenLsLib("580002",17,1,0);//日线数据接口 var m_data_size=GetLsLibDataSize();//获取日线总数 var m_end_dir=m_data_size-1;//最后读取指针 for(var i=0;i<=m_end_dir;i++) { var m_zuig=GetLsLibData(5,i);//最高价 var m_zuid=GetLsLibData(6,i);//最低价 var zb1=(m_zuig+m_zuid)*0.618;//指标1********** for(var j1=i;j1>=0;j1--) { var m_hsl=GetLsLibData(30,j1);//换手率 var m_hsl_lh1+=m_hsl;//换手率 if(m_hsl_lh1<=1) { } else break; } var m_hssj=j1;//指标2*********** //指标2 for(var k1=m_hssj;k1<=i;k1++) { var zb1+=zb1; var zb1pj=zb1/(i-m_hssj+1);//指标3******** } //指标3 } //指标1 CloseLsLib() ;//关闭历史数据库
> 变量定义有问题 一定要注意变量的作用范围,只能在本花扩号中起作用 for(var i=0;i<=m_end_dir;i++) { var m_zuig=GetLsLibData(5,i);//最高价 var m_zuid=GetLsLibData(6,i);//最低价 var zb1=(m_zuig+m_zuid)*0.618;//指标1********** // var m_hsl_lh1=0; var m_hssj=0;//指标2*********** // for(var j1=i;j1>=0;j1--) { m_hsl_lh1+=GetLsLibData(30,j1);//换手率 if(m_hsl_lh1>1) { m_hssj=j1; break; } } //指标2 for(var k1=m_hssj;k1<=i;k1++) { ??????var zb1+=zb1; ??????var zb1pj=zb1/(i-m_hssj+1);//指标3******** } //指标3 } //指标1
Re: > 呵呵! 指标1是costn 。 for(var i=0;i<=m_end_dir;i++) { var m_zuig=GetLsLibData(5,i);//最高价 var m_zuid=GetLsLibData(6,i);//最低价 var m_hsl=GetLsLibData(30,i);//换手率 var m_hsl_lh+=m_hsl;//换手率 if(m_hsl_lh>1) m_hsl_lh=1; var n1=10; var costm1=m_hsl/m_hsl_lh*(m_zuid+n1*(m_zuig-m_zuid)/100); if(i==0) cost10=costm1; var cost10*=1-m_hsl/m_hsl_lh;//获利N的成本价 cost10+=costm1; }
Re: > 飞狐里面是这样表达的: x1:=cost(10);//10%获利的成本价 x2:=SUMBARS(vol ,CAPITAL);//完全换手的周期 x3:=sum(x1,x2)/x2;//完全换手周期内 x1 的平均值
> 对不起啊,俺还没习惯随便为用户编程. 只有这种情况俺才会替人编:就是你的指标着实牛B,有道理,上个星期遇到一个N人,他的策略俺认可,俺就不怕劳苦帮他实现了,连测试一起搞完. 天海星空:你做的东西,不客气地讲,俺看不出有任何意义,但俺是心软的,在最新版中还是增加了修改流动盘的函数,就是善意的希望你编一点有意义的东西.千万不要指望俺去为你实现什么其他软件的函数,俺一点兴趣都没有
Re: > 我写出飞狐的表达式是为了准确表达我要编写的程序的意思。不是想要里面的那些函数。在本软件中,每个单项我知道怎么表达了,但是要糅合到一起,永清兄看到了,我现在确实想不出办法了才请教! 如果能用普通函数编,永清兄提示一下也行!
Re: > 有没有哪位会使用JavaScript编程的,看看我下面的意思,应该用哪些语句实现?不胜感激!!! x1:=cost(10);//10%获利的成本价 x2:=SUMBARS(换手率 ,1);//换手率向前累加到100%的周期 x3:sum(x1,x2)/x2;//完全换手周期内 x1 的平均值 说明: := 赋值 : 输出 SUM(X,N),统计N周期中X的总和 要编的程序就是上面的意思!输出X3 。