📅 财经日历 📊 实时波动 📈 大盘云图 📶 行情走势 🆚 投机情绪 🚀 今日热点

    自动画线指标

    2020-03-18 · 8339 阅读
    //+------------------------------------------------------------------+
    //|                                                        qsx-2.mq4 |
    //|                        Copyright 2012, MetaQuotes Software Corp. |
    //|                                        http://www.metaquotes.net |
    //+------------------------------------------------------------------+
    #property copyright "Copyright 2012, MetaQuotes Software Corp."
    #property link      "http://www.metaquotes.net"

    #property indicator_chart_window
    extern int Hours=24;
    extern color col=SkyBlue;

    double lr,lr0,lrp;
    double sx,sy,sxy,sx2,aa,bb;

    int p,fs;
    int f,f0,f1;
    double dh,dl,dh_1,dl_1,dh_2,dl_2;
    int ai_1,ai_2,bi_1,bi_2;

    double hai,lai,dhi,dli,dhm,dlm,ha0,hap,la0,lap;
    double price_p1,price_p0,price_p2,price_01,price_00,price_02;
    int p1,p0,p2,fp;
    string sName="ang_autoch_hl";
    //+------------------------------------------------------------------+
    //| Custom indicator initialization function                         |
    //+------------------------------------------------------------------+
    int init()
       {

    return(0);
      }

    //+------------------------------------------------------------------+
    //| Custom indicator deinitialization function                       |
    //+------------------------------------------------------------------+
    int deinit()
      {
       ObjectDelete("1"+sName);
       ObjectDelete("0"+sName);
       ObjectDelete("2"+sName);
       return(0);
      }
    //+------------------------------------------------------------------+
    //| Custom indicator iteration function                              |
    //+------------------------------------------------------------------+
    int start()
      {
        int counted_bars=IndicatorCounted();   
          if (f==1)
            {
              p1=iBarShift(Symbol(),Period(),ObjectGet("1"+sName,OBJPROP_TIME1));
              p0=iBarShift(Symbol(),Period(),ObjectGet("0"+sName,OBJPROP_TIME1));
              p2=iBarShift(Symbol(),Period(),ObjectGet("2"+sName,OBJPROP_TIME1));
              if (fp==0 && p!=p1)
                {
                p=p1;
                fp=1;
                }
              if (fp==0 && p!=p0)
               {
                 p=p0;
                 fp=1;
               }
              if (fp==0 && p!=p2)
               {
                p=p2;
                fp=1;
               }
            }

           sx=0; sy=0; sxy=0; sx2=0;
           for (int n=0; n<=p; n++)
             {
               sx+=n;
               sy+=Close[n];
               sxy+=n*Close[n];
               sx2+=MathPow(n,2);
             }
           aa=(sx*sy-(p+1)*sxy)/(MathPow(sx,2)-(p+1)*sx2); bb=(sy-aa*sx)/(p+1);


           for (int i=0; i<=p; i++)
            {
             lr=bb+aa*i;
             dh=High[i]-lr;
             dl=Low[i]-lr;

             if (i<p/2) {if (i==0)
               {dh_1=0.0;
                dl_1=0.0;
                ai_1=i;
                bi_1=i;
               }
             if (dh>=dh_1)
              {
               dh_1=dh; ai_1=i;
              }
             if (dl<=dl_1)
               {
                 dl_1=dl;
                 bi_1=i;
               }
            }


          if (i>=p/2)
           {
             if (i==p/2)
               {
                 dh_2=0.0;
                 dl_2=0.0;
                 ai_2=i;
                 bi_2=i;
                }
             if (dh>=dh_2)
               {
                 dh_2=dh;
                 ai_2=i;
               }
             if (dl<=dl_2)
               {
                 dl_2=dl;
                 bi_2=i;
               }
             }
           }


    //-------------------------------------
    lr0=bb; lrp=bb+aa*(i+p);
    //===================================================
    if (MathAbs(ai_1-ai_2)>MathAbs(bi_1-bi_2)) f=1;
    if (MathAbs(ai_1-ai_2)<MathAbs(bi_1-bi_2)) f=2;
    if (MathAbs(ai_1-ai_2)==MathAbs(bi_1-bi_2)) {if (MathAbs(dh_1-dh_2)<MathAbs(dl_1-dl_2)) f=1; if (MathAbs(dh_1-dh_2)>=MathAbs(dl_1-dl_2)) f=2;}
    //=================================================
    if (f==1) {
    for (n=0; n<=20; n++) { f1=0;
    for (i=0; i<=p; i++) {hai=High[ai_1]*(i-ai_2)/(ai_1-ai_2)+High[ai_2]*(i-ai_1)/(ai_2-ai_1);
    if (i==0 || i==p/2) dhm=0.0;
    if (High[i]-hai>dhm && i<p/2) {ai_1=i; f1=1;}
    if (High[i]-hai>dhm && i>=p/2) {ai_2=i; f1=1;} }
    if (f==0) break;}
    //----------------------------
    for (i=0; i<=p; i++) {hai=High[ai_1]*(i-ai_2)/(ai_1-ai_2)+High[ai_2]*(i-ai_1)/(ai_2-ai_1);
    dli=Low[i]-hai;
    if (i==0) dlm=0.0; if (dli<dlm) dlm=dli;}
    ha0=High[ai_1]*(0-ai_2)/(ai_1-ai_2)+High[ai_2]*(0-ai_1)/(ai_2-ai_1);
    hap=High[ai_1]*(p-ai_2)/(ai_1-ai_2)+High[ai_2]*(p-ai_1)/(ai_2-ai_1);
    //----------------------------
    price_p1=hap;
    price_p0=hap+dlm/2;
    price_p2=hap+dlm;
    price_01=ha0;
    price_00=ha0+dlm/2;
    price_02=ha0+dlm;
    }
    //=================================================
    if (f==2) {
    for (n=0; n<=20; n++) { f1=0;
    for (i=0; i<=p; i++) {lai=Low[bi_1]*(i-bi_2)/(bi_1-bi_2)+Low[bi_2]*(i-bi_1)/(bi_2-bi_1);
    if (i==0 || i==p/2) dlm=0.0;
    if (Low[i]-lai<dlm && i<p/2) {bi_1=i; f1=1;}
    if (Low[i]-lai<dlm && i>=p/2) {bi_2=i; f1=1;}}
    if (f==0) break;}
    //----------------------------
    for (i=0; i<=p; i++) {lai=Low[bi_1]*(i-bi_2)/(bi_1-bi_2)+Low[bi_2]*(i-bi_1)/(bi_2-bi_1);
    dhi=High[i]-lai;
    if (i==0) dhm=0.0; if (dhi>dhm) dhm=dhi;}
    la0=Low[bi_1]*(0-bi_2)/(bi_1-bi_2)+Low[bi_2]*(0-bi_1)/(bi_2-bi_1);
    lap=Low[bi_1]*(p-bi_2)/(bi_1-bi_2)+Low[bi_2]*(p-bi_1)/(bi_2-bi_1);
    //----------------------------------------------------------------
    price_p1=lap;
    price_p0=lap+dhm/2;
    price_p2=lap+dhm;
    price_01=la0;
    price_00=la0+dhm/2;
    price_02=la0+dhm;
    }

    ObjectCreate("1"+sName,2, 0,Time[p],price_p1,Time[0],price_01);
    ObjectCreate("0"+sName,2, 0,Time[p],price_p0,Time[0],price_00);
    ObjectCreate("2"+sName,2, 0,Time[p],price_p2,Time[0],price_02);

    ObjectSet("1"+sName,OBJPROP_COLOR,col);
    ObjectSet("0"+sName,OBJPROP_COLOR,col);
    ObjectSet("0"+sName,OBJPROP_STYLE,STYLE_DOT);
    ObjectSet("2"+sName,OBJPROP_COLOR,col);
    //---------------------------------------------
    ObjectSet("1"+sName,OBJPROP_TIME1,Time[p]);
    ObjectSet("1"+sName,OBJPROP_PRICE1,price_p1);
    ObjectSet("1"+sName,OBJPROP_TIME2,Time[0]);
    ObjectSet("1"+sName,OBJPROP_PRICE2,price_01);
    ObjectSet("0"+sName,OBJPROP_TIME1,Time[p]);
    ObjectSet("0"+sName,OBJPROP_PRICE1,price_p0);
    ObjectSet("0"+sName,OBJPROP_TIME2,Time[0]);
    ObjectSet("0"+sName,OBJPROP_PRICE2,price_00);
    ObjectSet("2"+sName,OBJPROP_TIME1,Time[p]);
    ObjectSet("2"+sName,OBJPROP_PRICE1,price_p2);
    ObjectSet("2"+sName,OBJPROP_TIME2,Time[0]);
    ObjectSet("2"+sName,OBJPROP_PRICE2,price_02);

    f=1; p1=p; p0=p; p2=p; fp=0;

    return(0);
    }
    //+------------------------------------------------------------------+


    ""
    还没有人打赏,支持一下
    回复

    举报

     

    回答|共 39 个

    yaurk LV3

    发表于 2020-6-17 11:28:21 | 显示全部楼层

    学习了,不错,讲的太有道理了

    越夜越有机 LV3

    发表于 2020-6-29 19:37:57 | 显示全部楼层

    谢谢楼主,共同发展

    Iris-chen LV3

    发表于 2020-8-6 16:20:53 | 显示全部楼层

    谢谢楼主分享

    人生delete LV3

    发表于 2020-8-14 11:43:09 | 显示全部楼层

    学习了,不错

    igsnefek LV3

    发表于 2020-11-10 10:00:54 | 显示全部楼层

    谢谢

    提篮桥衡山路 LV1

    发表于 2020-12-2 12:24:18 | 显示全部楼层

    支持下

    cmx LV6

    发表于 2020-12-5 13:52:09 | 显示全部楼层

    谢谢楼主分享

    顶点虚神 LV3

    发表于 2020-12-10 10:00:35 | 显示全部楼层

    顶下

    王乐 LV1

    发表于 2021-1-7 21:47:11 | 显示全部楼层

    支持下
    1234下一页
    您需要登录后才可以回帖 登录 | 注册

    提醒: 禁止引战、谩骂、灌水内容

    微信二维码

    有问题联系客服