以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  我一直在用你们的金子塔软件,目前想自己编程,遇到以下的问题:  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=68514)

--  作者:大灰狼
--  发布时间:2014/8/8 11:27:47
--  我一直在用你们的金子塔软件,目前想自己编程,遇到以下的问题:
 由于我目前的策略是调用历史数据,用历史数据进行分析趋势,所以会用到for循环处理,当我用for循环时,想把满足条件的K线连起来,我怎样编程?
     比如:我想把第1、10、14...K线连起来,并在主图上输出来。

     请老师赐教!多谢!

--  作者:王锋
--  发布时间:2014/8/8 11:28:50
--  
为了我们更好的为你服务,请回帖详细描述 我想把第1、10、14...K线连起来 这句话该怎么理解?
--  作者:lionel_fu
--  发布时间:2014/8/8 11:49:54
--  
老师,我的意思是把满足条件的K线连起来(满足条件每根K线High值连接起来),并且在主图上输出来
请老师指教!

--  作者:jinzhe
--  发布时间:2014/8/8 13:26:25
--  

把满足的条件连成一个线段:

参考画折线的函数polyline


--  作者:lionel_fu
--  发布时间:2014/8/8 14:33:35
--  
谢谢老师,我试试,另外在for循环中是否可以用画线函数?
--  作者:jinzhe
--  发布时间:2014/8/8 14:39:06
--  
可以,但是没有效果的,画线只会画循环的最后一个数字
--  作者:lionel_fu
--  发布时间:2014/8/9 10:17:47
--  
首先非常感谢老师的回答,我试了下,还是没有达到我想要的,请老师再次指教:
我的策略思路是这样的:
第一步: 从历史数据中找到满足条件的K线,然后把这些k线对应的数据分别存储到几个数组中(具体存放k线的HIGH,LOW,TIME)
第二步: 利用上一步的数组数据,在for循环中再次判断符合条件的K线数据,让后把相邻两个符合条件的K线HIGH用线连接起来
这个就是我想要实现的,目前存在的问题如下:
1. 在第二步中找到的K线如果用线连起来的话,怎样跟具体的K线时间对应起来,因为画线函数中没有体现K线的时间

如果上述方式是不对的,是否还有别的方法来实现我策略,请老师赐教!
再次感谢!


--  作者:fly
--  发布时间:2014/8/11 9:21:44
--  

lionel_fu,您以上的描述过于抽象,请再具体些,给出个具体的实例,工作人员好本地调试您的问题.


--  作者:lionel_fu
--  发布时间:2014/8/11 18:23:50
--  
老师,以下是我写的范例,具体不用太关注这个公式的意义,只是我的策略中打算这样来实现画线(把满条件的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;



--  作者:fly
--  发布时间:2014/8/14 9:35:35
--  

在看,请您耐心等待回复