智能交易网,程序化交易,自动交易,量化交易

 找回密码
 注册

QQ登录

只需一步,快速开始

手机短信登录

参加MT4智能交易编程培训,7课免费在线试听MT4指标,EA代写,或EA指标加密账户远程验证服务 最完善商业MT4跟单系统(0.1秒极速响应不漏单)
为论坛做贡献有奖学金,奖学金可直接换真钱 扫本站微信公 众号部分视频课程指标EA免费得智能交易网MT4操盘神器,扫公众号免费得
查看: 4330|回复: 5

关于画线功能的时间定义

[复制链接]
发表于 2012-2-14 12:19:35 | 显示全部楼层 |阅读模式
赵老师好:
各位师兄们好:
今天碰到一个问题,请教大家。
首先,datetime kaishitime=0;
然后,取20天每天的最高价-最低价的平均值
R20pinj=20天每天最高价减去最低价的平均值
然后,取当天的最高价
double  high0=iHigh(Symbol(),PERIOD_D1,0);
然后,定义每天的买单止损=当天的最高价-20天每天最高价减去最低价的平均值
double buysun=(high0-R20pinj);

我想把这个止损线画出来,但是又不要每个价格波动都画一次,只需要每根K线开始的时候画一次即可,
然后, if (kaishitime!=Time[0])
然后,ObjectCreate("dreurzcx",OBJ_HLINE,0,Time[10],buysun);
然后, kaishitime=Time[0];
然后,Comment("buysun",buysun);
问题来了,现在,显示的buysun是1.3040,但是,画出来的线的位置确在1.3142
然后,把MT4关掉,然后再打开一次,画的线的位置又对了

回复

使用道具 举报

 楼主| 发表于 2012-2-14 12:23:12 | 显示全部楼层
回复 肖其 的帖子

原代码如下
#property link      "http://www.metaquotes.net"
extern double Lots=0.1;
datetime      kaishitime=0;

int init()
  {

   return(0);
  }

int deinit()
  {

   return(0);
  }

int start()
  {
   
     double  R1=iHigh(Symbol(),PERIOD_D1,1)-iLow(Symbol(),PERIOD_D1,1);
     double  R2=iHigh(Symbol(),PERIOD_D1,2)-iLow(Symbol(),PERIOD_D1,2);
     double  R3=iHigh(Symbol(),PERIOD_D1,3)-iLow(Symbol(),PERIOD_D1,3);
     double  R4=iHigh(Symbol(),PERIOD_D1,4)-iLow(Symbol(),PERIOD_D1,4);
     double  R5=iHigh(Symbol(),PERIOD_D1,5)-iLow(Symbol(),PERIOD_D1,5);
     double  R6=iHigh(Symbol(),PERIOD_D1,6)-iLow(Symbol(),PERIOD_D1,6);
     double  R7=iHigh(Symbol(),PERIOD_D1,7)-iLow(Symbol(),PERIOD_D1,7);
     double  R8=iHigh(Symbol(),PERIOD_D1,8)-iLow(Symbol(),PERIOD_D1,8);
     double  R9=iHigh(Symbol(),PERIOD_D1,9)-iLow(Symbol(),PERIOD_D1,9);
     double  R10=iHigh(Symbol(),PERIOD_D1,10)-iLow(Symbol(),PERIOD_D1,10);
     double  R11=iHigh(Symbol(),PERIOD_D1,11)-iLow(Symbol(),PERIOD_D1,11);
     double  R12=iHigh(Symbol(),PERIOD_D1,12)-iLow(Symbol(),PERIOD_D1,12);
     double  R13=iHigh(Symbol(),PERIOD_D1,13)-iLow(Symbol(),PERIOD_D1,13);
     double  R14=iHigh(Symbol(),PERIOD_D1,14)-iLow(Symbol(),PERIOD_D1,14);
     double  R15=iHigh(Symbol(),PERIOD_D1,15)-iLow(Symbol(),PERIOD_D1,15);
     double  R16=iHigh(Symbol(),PERIOD_D1,16)-iLow(Symbol(),PERIOD_D1,16);
     double  R17=iHigh(Symbol(),PERIOD_D1,17)-iLow(Symbol(),PERIOD_D1,17);
     double  R18=iHigh(Symbol(),PERIOD_D1,18)-iLow(Symbol(),PERIOD_D1,18);
     double  R19=iHigh(Symbol(),PERIOD_D1,19)-iLow(Symbol(),PERIOD_D1,19);
     double  R20=iHigh(Symbol(),PERIOD_D1,20)-iLow(Symbol(),PERIOD_D1,20);
     double  R20pinj=(R1+R2+R3+R4+R5+R6+R7+R8+R9+R10+R11+R12+R13+R14+R15+R16+R17+R18+R19+R20)/20;
     double  high0=iHigh(Symbol(),PERIOD_D1,0);
     double  low0=iLow(Symbol(),PERIOD_D1,0);
     double  high1=iHigh(Symbol(),PERIOD_D1,1);
     double  low1=iLow(Symbol(),PERIOD_D1,1);
     double  sellsun=(low0+R20pinj);
     double  buysun=(high0-R20pinj);
     double  sellsun1=(low1+R20pinj);
     double  buysun1=(high1-R20pinj);
     double  driup=(sellsun-Bid)/MarketInfo(Symbol(),MODE_POINT);
     double  dridown=(Ask-buysun)/MarketInfo(Symbol(),MODE_POINT);
     
      if (kaishitime!=Time[0])
      {
        ObjectCreate("dreurylx",OBJ_HLINE,0,Time[10],sellsun);
        ObjectCreate("dreurylx1",OBJ_HLINE,0,Time[10],sellsun1);
        ObjectSet("dreurylx",OBJPROP_COLOR,Yellow);
        ObjectSet("dreurylx1",OBJPROP_COLOR,Yellow);
        ObjectSet("dreurylx",OBJPROP_WIDTH,2);
        ObjectSet("dreurylx1",OBJPROP_WIDTH,1);
        ObjectCreate("dreurzcx",OBJ_HLINE,0,Time[10],buysun);
        ObjectCreate("dreurzcx1",OBJ_HLINE,0,Time[10],buysun1);
        ObjectSet("dreurzcx",OBJPROP_COLOR,Blue);
        ObjectSet("dreurzcx1",OBJPROP_COLOR,Blue);
        ObjectSet("dreurzcx",OBJPROP_WIDTH,2);
        ObjectSet("dreurzcx1",OBJPROP_WIDTH,1);   
        Comment("R20pinj",R20pinj/MarketInfo(Symbol(),MODE_POINT),"sellsun",sellsun,"buysun",buysun,"driup",driup,"dridown",dridown);
        kaishitime=Time[0];
      }
回复 支持 反对

使用道具 举报

发表于 2012-2-14 17:24:41 | 显示全部楼层
你这个程序 为什么不会随着K线的运行 而画出新的对应水平线呢。就是因为 你只做了画线部分,但是如果画线的水平价格变了,你还应该做一个修改画线价格的部分,你没做。
下面是争取的代码:
if(ObjectFind(...)<0) 用这个来判断,你要画的水平线是否已经画了,如果没画你就用objectcreate ,如果画了 就用objectset来修改画线价格。
#property link      "http://www.metaquotes.net"
extern double Lots=0.1;
datetime      kaishitime=0;

int init()
  {

   return(0);
  }

int deinit()
  {

   return(0);
  }

int start()
  {
   
     double  R1=iHigh(Symbol(),PERIOD_D1,1)-iLow(Symbol(),PERIOD_D1,1);
     double  R2=iHigh(Symbol(),PERIOD_D1,2)-iLow(Symbol(),PERIOD_D1,2);
     double  R3=iHigh(Symbol(),PERIOD_D1,3)-iLow(Symbol(),PERIOD_D1,3);
     double  R4=iHigh(Symbol(),PERIOD_D1,4)-iLow(Symbol(),PERIOD_D1,4);
     double  R5=iHigh(Symbol(),PERIOD_D1,5)-iLow(Symbol(),PERIOD_D1,5);
     double  R6=iHigh(Symbol(),PERIOD_D1,6)-iLow(Symbol(),PERIOD_D1,6);
     double  R7=iHigh(Symbol(),PERIOD_D1,7)-iLow(Symbol(),PERIOD_D1,7);
     double  R8=iHigh(Symbol(),PERIOD_D1,8)-iLow(Symbol(),PERIOD_D1,8);
     double  R9=iHigh(Symbol(),PERIOD_D1,9)-iLow(Symbol(),PERIOD_D1,9);
     double  R10=iHigh(Symbol(),PERIOD_D1,10)-iLow(Symbol(),PERIOD_D1,10);
     double  R11=iHigh(Symbol(),PERIOD_D1,11)-iLow(Symbol(),PERIOD_D1,11);
     double  R12=iHigh(Symbol(),PERIOD_D1,12)-iLow(Symbol(),PERIOD_D1,12);
     double  R13=iHigh(Symbol(),PERIOD_D1,13)-iLow(Symbol(),PERIOD_D1,13);
     double  R14=iHigh(Symbol(),PERIOD_D1,14)-iLow(Symbol(),PERIOD_D1,14);
     double  R15=iHigh(Symbol(),PERIOD_D1,15)-iLow(Symbol(),PERIOD_D1,15);
     double  R16=iHigh(Symbol(),PERIOD_D1,16)-iLow(Symbol(),PERIOD_D1,16);
     double  R17=iHigh(Symbol(),PERIOD_D1,17)-iLow(Symbol(),PERIOD_D1,17);
     double  R18=iHigh(Symbol(),PERIOD_D1,18)-iLow(Symbol(),PERIOD_D1,18);
     double  R19=iHigh(Symbol(),PERIOD_D1,19)-iLow(Symbol(),PERIOD_D1,19);
     double  R20=iHigh(Symbol(),PERIOD_D1,20)-iLow(Symbol(),PERIOD_D1,20);
     double  R20pinj=(R1+R2+R3+R4+R5+R6+R7+R8+R9+R10+R11+R12+R13+R14+R15+R16+R17+R18+R19+R20)/20;
     double  high0=iHigh(Symbol(),PERIOD_D1,0);
     double  low0=iLow(Symbol(),PERIOD_D1,0);
     double  high1=iHigh(Symbol(),PERIOD_D1,1);
     double  low1=iLow(Symbol(),PERIOD_D1,1);
     double  sellsun=(low0+R20pinj);
     double  buysun=(high0-R20pinj);
     double  sellsun1=(low1+R20pinj);
     double  buysun1=(high1-R20pinj);
     double  driup=(sellsun-Bid)/MarketInfo(Symbol(),MODE_POINT);
     double  dridown=(Ask-buysun)/MarketInfo(Symbol(),MODE_POINT);
      if (kaishitime!=Time[0])
      {
        if(ObjectFind("dreurylx")<0)
         {
            ObjectCreate("dreurylx",OBJ_HLINE,0,Time[10],sellsun);
            ObjectSet("dreurylx",OBJPROP_COLOR,Yellow);
            ObjectSet("dreurylx",OBJPROP_WIDTH,2);
         }
        else
         {
            ObjectSet("dreurylx",OBJPROP_PRICE1,sellsun);
         }
        if(ObjectFind("dreurylx1")<0)
         {
            ObjectCreate("dreurylx1",OBJ_HLINE,0,Time[10],sellsun1);
            ObjectSet("dreurylx1",OBJPROP_COLOR,Yellow);
            ObjectSet("dreurylx1",OBJPROP_WIDTH,1);
         }
        else
         {
            ObjectSet("dreurylx1",OBJPROP_PRICE1,sellsun1);
         }
        if(ObjectFind("dreurzcx")<0)
         {
            ObjectCreate("dreurzcx",OBJ_HLINE,0,Time[10],buysun);
            ObjectSet("dreurzcx",OBJPROP_COLOR,Blue);
            ObjectSet("dreurzcx",OBJPROP_WIDTH,2);
         }
        else
         {
            ObjectSet("dreurzcx",OBJPROP_PRICE1,buysun);
         }
        if(ObjectFind("dreurzcx1")<0)
         {
            ObjectCreate("dreurzcx1",OBJ_HLINE,0,Time[10],buysun1);
            ObjectSet("dreurzcx1",OBJPROP_COLOR,Blue);
            ObjectSet("dreurzcx1",OBJPROP_WIDTH,1);
         }   
        else
         {
            ObjectSet("dreurzcx",OBJPROP_PRICE1,buysun1);
         }
        Comment("R20pinj",R20pinj/MarketInfo(Symbol(),MODE_POINT),"sellsun",sellsun,"buysun",buysun,"driup",driup,"dridown",dridown);
        kaishitime=Time[0];
      }
}
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-2-14 21:27:50 | 显示全部楼层
太棒了,怎么老师就这么聪明呢?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|sitemap|智能交易网,程序化交易,自动交易,量化交易 ( 苏ICP备08108698号,苏州智德金网络科技股份有限公司版权所有 )

GMT+8, 2019-11-18 04:02 , Processed in 0.075581 second(s), 15 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表