以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  交易策略发布专区  (http://weistock.com/bbs/list.asp?boardid=10)
----  [技术指标]排序模板  (http://weistock.com/bbs/dispbbs.asp?boardid=10&id=9834)

--  作者:z7c9
--  发布时间:2012/2/5 10:31:16
--  [技术指标]排序模板

 

序列排序:

runmode:1;

bkname:=\'连续合约\';
stks:=stkcount(bkname);

variable:stklabels[stks]=0;
variable:stktrades[stks]=0;

for i=1 to stks do begin
code:=stkfromblk(bkname,i);
stklabels[i]:=strremove(code,0,2);
stktrades[i]:=(callstock(stklabels[i],vthigh,-1,0)-callstock(stklabels[i],vtlow,-1,0))/callstock(stklabels[i],vtopen,-1,0)*100;
end

p:=sortpos(stktrades,1,1,stks);

for i=1 to stks do begin
if stricmp(stklabel,stklabels[stktrades[i]])=0 then
mypos:=i;
end

序列位置:mypos,linethick0;

 

逐K排序

 

runmode:0;

bkname:=\'连续合约\';
stks:=stkcount(bkname);

variable:stklabels[stks]=0;
variable:stktrades[stks]=0;
variable:stkposes[stks]=0;

for i=1 to stks do begin
code:=stkfromblk(bkname,i);
stklabels[i]:=strremove(code,0,2);
stktrades[i]:=(callstock(stklabels[i],vthigh,-1,0)-callstock(stklabels[i],vtlow,-1,0))/callstock(stklabels[i],vtopen,-1,0)*100;

if stktrades[i]>0 then
stktrades[i]:=stktrades[i];
else
stktrades[i]:=0;

stkposes[i]:=i;
end

for i=1 to stks do begin
for j=1 to stks-i do begin
if stktrades[j] then begin

t1:=stktrades[j];
stktrades[j]:=stktrades[j+1];
stktrades[j+1]:=t1;

t2:=stkposes[j];
stkposes[j]:=stkposes[j+1];
stkposes[j+1]:=t2;
end
end
end

for i=1 to stks do begin
if stricmp(stklabel,stklabels[stkposes[i]])=0 then
mypos:=i;
end

逐K位置:mypos,linethick0;


--  作者:rushtaotao
--  发布时间:2012/3/12 15:44:26
--  
图片点击可在新窗口打开查看
--  作者:日落沧江静
--  发布时间:2012/10/18 13:26:32
--  

版主在吗    逐K模式中     if stktrades[j]       --------此处缺少 then  语句    具体条件是什么 ??

 

t1:=stktrades[j];
stktrades[j]:=stktrades[j+1];
stktrades[j+1]:=t1;


--  作者:日落沧江静
--  发布时间:2012/10/18 13:29:52
--  
for i=1 to stks do begin
for j=1 to stks-i do begin
if stktrades[j] t1:=stktrades[j];
stktrades[j]:=stktrades[j+1];
stktrades[j+1]:=t1;

t2:=stkposes[j];
stkposes[j]:=stkposes[j+1];
stkposes[j+1]:=t2;
end
end
end



--  作者:Q1304230834
--  发布时间:2012/10/31 17:45:50
--  
强呀
--  作者:zsjwhy
--  发布时间:2012/11/10 17:02:28
--  

--  作者:manbutianya
--  发布时间:2012/11/19 9:28:23
--  
请版主或楼主尽快把逐kM模板错误修正下!
--  作者:董小球
--  发布时间:2012/11/19 10:13:16
--  
已经修正了!多谢楼上各位提醒~
--  作者:manbutianya
--  发布时间:2012/11/19 10:38:18
--  

还是错,没有按照大小排序啊


--  作者:manbutianya
--  发布时间:2012/11/19 13:30:24
--  

代码如下,怎么没按大小排序啊

RUNMODE:0;
bkname:=\'自动交易\';
stks:=stkcount(bkname)+1;

variable:stklabels[stks]=0;
variable:stktrades[stks]=0;
variable:stkposes[stks]=0;

for i=1 to stks do begin
code:=stkfromblk(bkname,i);
stklabels[i]:=strremove(code,0,2);
stktrades[i]:=stkindi(stklabel,\'maxlb.liangbi\',2,1,0);

if stktrades[i]>0 then
stktrades[i]:=stktrades[i];
else
stktrades[i]:=0;
stkposes[i]:=i;
end

for i=1 to stks do begin
for j=1 to stks-i do begin
if stktrades[j]>stktrades[j+1] then begin

t1:=stktrades[j];
 t2:=stkposes[j];
stktrades[j]:=stktrades[j+1];
stkposes[j]:=stkposes[j+1];
stktrades[j+1]:=t1;
stkposes[j+1]:=t2;
end
 
end
end

for i=1 to stks do begin
if stricmp(stklabel,stklabels[stkposes[i]])=0 then
mypos:=i;
end
liangx:mypos;