欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → k线合并问题求解

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有2995人关注过本帖树形打印复制链接

主题:k线合并问题求解

帅哥哟,离线,有人找我吗?
pzwang2014
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:16 积分:0 威望:0 精华:0 注册:2014/1/15 11:14:03
k线合并问题求解  发帖心情 Post By:2014/1/15 12:26:18    Post IP:115.236.182.203[只看该作者]

请问:
     我在考虑k线合并,让系统自己在原来k线基础上将k线标准化,把包含关系的k线处理成统一标准化k线;
   
函数逻辑:
     1、K线包含关系:指一K线的高低点全在另一K线的范围里;
   
   2、K线包含关系的处理:在向上时,把两K线的最高点当高点,而两K线低点中的较高者当成低点,这样就把两K线合并成一新的K线;反之,当向下时,把两K线的最低点当低点,而两K线高点中的较低者当成高点,这样就把两K线合并成一新的K线。

   3、K线合并方向:假设,第nK线满足第n根与第n+1根的包含关系,而第n根与第n-1根不是包含关系,那么,如果第nK线的高点大于第n-1K线的高点,则称第n-1nn+1K线是向上的;如果第nK线的低点小于第n-1K线的低点,则称第n-1nn+1K线是向下的。

K线包含关系的顺序原则:先用第12K线的包含关系确认新的K线,然后用新的K线去和第3根比,如果有包含关系,继续用包含关系的法则结合成新的K线;如果没有,就按正常K线去处理。

    程序代码:



runmode:1;//序列模式;

i:=BARPOS;


variable:up1=0;//定义一个数组用来存放向上包含的k线高点;

variable:up2=0;//定义一个数组用来存放向上包含的k线低点;

variable:dn1=0;//定义一个数组用来存放向下包含的k线高点;

variable:dn2=0;//定义一个数组用来存放向下包含的k线低点;



beforehigh:=high[2];

beforelow:=low[2];

thishigh:=high[3];  

thislow:=low[3];

upordn:=BARPOS;


aa:=setlbound(high,2);//设置序列变量high的下界为2,起始有效变量从第2根k线开始;

bb:=setlbound(low,2);//设置序列变量low的下界为2,起始有效变量从第2根k线开始;


for i=3 to BARPOS do//循环开始

begin

    upordn:=i;

   

    if up1[i-1]>0 then 

      begin

            beforehigh=up1[i-1];

            beforelow=up2[i-1];

            upordn=1;

             end


    if dn1[i-1]>0 then

      begin

            beforehigh=dn1[i-1]; 

            beforelow=dn2[i-1];

            upordn=-1;

              end

    else begin

            beforehigh=high[i-1];

            beforelow=low[i-1];

              end                 //通过该循环对向上/向下数组循环赋值(将最近的up和dn数组值赋值给前一k线的高低点以便于和最新的k线高低点进行比较)


         

         thishigh=high[i];

         thislow=low[i];



   if ((ThisHigh>=BeforeHigh) AND (ThisLow<=BeforeLow)) OR ((ThisHigh<=BeforeHigh) AND (ThisLow>=BeforeLow)) //循环开始,开始判断包含关系;

      then begin 

        if upordn=1 then //向上包含

          Up1[i] = MAX(ThisHigh, BeforeHigh);

          Up2[i] = MAX(ThisLow, BeforeLow);

          up1[i-1]=up1[i];

          up2[i-1]=up2[i];

            

        if upordn=-1 then //向下包含

           dn1[i]=MIN(thishigh,beforehigh);

           dn2[i]=MIN(thislow,beforelow);

           dn1[i-1]=dn1[i];

           dn2[i-1]=dn2[i];

      end;

      

     else  //没有包含关系

          if thishigh>beforehigh  then  begin//向上

             up1[i]=thishigh;

             up2[i]=thislow;            end;

          if thislow<beforelow then begin//向下

               dn1[i]=thishigh;

               dn2[i]=thislow;         end;

               

                 

cc:=stickline(up1[i]>up2[i],up1[i],up2[i],8,1,colorblue);  //该语句参数需要调整确认

dd:=stickline(dn1[i]<dn2[i],dn1[i],dn2[i],8,1,colorred);  //该语句参数需要调整确认

        

     

 end;

    


系统在刚进入循环,if up1[i-1]>0 then  语句处,提醒说 数组越界操作; 盼请各位大拿开药方诊断~!!!


 回到顶部
帅哥哟,离线,有人找我吗?
jinzhe
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:罗宾汉 帖子:46311 积分:50819 威望:0 精华:2 注册:2011/3/23 8:50:25
  发帖心情 Post By:2014/1/15 13:14:41    Post IP:58.246.57.26[只看该作者]

技术咨询中


金字塔—专业程序化交易量化投资平台

客户服务部

----------------------------------------------------------- 欢迎您参加我公司的技术培训,具体培训需求请发邮件到service@weistock.com

您的宝贵建议或者投诉,请发往邮箱:weiwei@weistock.com

 回到顶部
帅哥哟,离线,有人找我吗?
pzwang2014
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:16 积分:0 威望:0 精华:0 注册:2014/1/15 11:14:03
  发帖心情 Post By:2014/1/15 13:38:53    Post IP:115.236.182.203[只看该作者]

多谢图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
pzwang2014
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:16 积分:0 威望:0 精华:0 注册:2014/1/15 11:14:03
  发帖心情 Post By:2014/1/16 14:49:16    Post IP:115.236.182.203[只看该作者]

老师,有结果了么? 急盼~~~工作停顿中~~~~

 回到顶部
帅哥哟,离线,有人找我吗?
jinzhe
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:罗宾汉 帖子:46311 积分:50819 威望:0 精华:2 注册:2011/3/23 8:50:25
  发帖心情 Post By:2014/1/16 14:53:46    Post IP:58.246.57.26[只看该作者]

这个很难,不一定能处理出来,再等等


金字塔—专业程序化交易量化投资平台

客户服务部

----------------------------------------------------------- 欢迎您参加我公司的技术培训,具体培训需求请发邮件到service@weistock.com

您的宝贵建议或者投诉,请发往邮箱:weiwei@weistock.com

 回到顶部
帅哥哟,离线,有人找我吗?
pzwang2014
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:16 积分:0 威望:0 精华:0 注册:2014/1/15 11:14:03
  发帖心情 Post By:2014/1/20 10:50:34    Post IP:115.236.182.203[只看该作者]

我在具体代码中已经实现功能(通过编译已经将up1、up2、dn1、dn2数值进行了赋值,
现在的问题是,如何将自定义并赋值的数组 up1、up2、dn1、dn2在金字塔软件中庸stickline函数实现?

 回到顶部
帅哥哟,离线,有人找我吗?
pzwang2014
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:16 积分:0 威望:0 精华:0 注册:2014/1/15 11:14:03
  发帖心情 Post By:2014/1/20 13:54:16    Post IP:115.236.182.203[只看该作者]

循环部分的运算和赋值已经搞定,现在就是最后的问题还请老师帮忙解决,如何将已经赋值的up1、up2和dn1、dn2数组通过stickline函数输出到k线图上来?

cc:=stickline(up1[i]>up2[i],up1[i],up2[i],8,1,colorblue);  //该语句参数需要调整确认

dd:=stickline(dn1[i]<dn2[i],dn1[i],dn2[i],8,1,colorred);  //该语句参数需要调整确认


这个函数用来输出柱状图,但是数组定义这方面不知道是否有误,系统处理的是一根同样高度宽度同样颜色的柱状图的直线~ 求各位大虾指点迷津~!!


 回到顶部