由于我目前的策略是调用历史数据,用历史数据进行分析趋势,所以会用到for循环处理,当我用for循环时,想把满足条件的K线连起来,我怎样编程?
比如:我想把第1、10、14...K线连起来,并在主图上输出来。
请老师赐教!多谢!
为了我们更好的为你服务,请回帖详细描述 我想把第1、10、14...K线连起来 这句话该怎么理解?
老师,我的意思是把满足条件的K线连起来(满足条件每根K线High值连接起来),并且在主图上输出来
请老师指教!
谢谢老师,我试试,另外在for循环中是否可以用画线函数?
可以,但是没有效果的,画线只会画循环的最后一个数字
首先非常感谢老师的回答,我试了下,还是没有达到我想要的,请老师再次指教:
我的策略思路是这样的:
第一步: 从历史数据中找到满足条件的K线,然后把这些k线对应的数据分别存储到几个数组中(具体存放k线的HIGH,LOW,TIME)
第二步: 利用上一步的数组数据,在for循环中再次判断符合条件的K线数据,让后把相邻两个符合条件的K线HIGH用线连接起来
这个就是我想要实现的,目前存在的问题如下:
1. 在第二步中找到的K线如果用线连起来的话,怎样跟具体的K线时间对应起来,因为画线函数中没有体现K线的时间
如果上述方式是不对的,是否还有别的方法来实现我策略,请老师赐教!
再次感谢!
lionel_fu,您以上的描述过于抽象,请再具体些,给出个具体的实例,工作人员好本地调试您的问题.
老师,以下是我写的范例,具体不用太关注这个公式的意义,只是我的策略中打算这样来实现画线(把满条件的K线依次连接起来)
请老师看一下,是否可以这样来实现
用1分钟的k线图
{定义数组全局变量}
variable:gHighBuffer[10000]=0.0;
variable:gLowBuffer[10000]=0.0;
variable:gTimeBuffer[10000]=0;
MyHigh:=HIGH;
MyLow:=LOW;
MyTime:=TIME;
i:=0;
j:=1;
tempcount:=datacount;
{存储历史数据到对应的数组中}
for i=tempcount downto 1 do
begin
if((mod(i,2)=1)
begin
gHighBuffer[j]:=MyHigh[i]; {存贮K线最高值}
gLowBuffer[j]:=MyLow[i]; {存贮K线最低值}
gTimeBuffer[j]:=MyTime[i]; {存贮K线时间}
j:=j+1;
end;
end;
{在上述生成的数组中,按照规则将相邻的2跟K线高低依次相连,然后再主图上输出}
{我的目的是把上面新的数组里面的相邻2个K线的high值、low值依次连接起来;也就是第j跟k线的High值和第二根k线的low值相连,第j-1根k线的low值和第三根k线的high值相连,依次类推,直到第一根}
j:=j-1;
bFlag:=0;
fTemp:=gHighBuffer[j];
for i=j downto 2 do
begin
if(bFlag=0)
begin
drawline(1,fTemp,1,gLowBuffer[i-1],0,colorred,1,VTDASH); {这样是否正确?我不知怎样写这些条件?怎样跟主图上的K线时间对应?}
bFlag:=1;
fTemp:=gLowBuffer[i-1];
end;
else
begin
drawline(1,fTemp,1,gHighBuffer[i-1],0,colorwhite,1,VTDASH); {这样是否正确?我不知怎样写这些条件?怎样跟主图上的K线时间对应?}
bFlag:=0;
fTemp:=gHighBuffer[i-1];
end;
end;