2305929561 发表于 2020-3-18 21:11:31

自动画线指标

//+------------------------------------------------------------------+
//|                                                      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;
         sxy+=n*Close;
         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-lr;
         dl=Low-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*(i-ai_2)/(ai_1-ai_2)+High*(i-ai_1)/(ai_2-ai_1);
if (i==0 || i==p/2) dhm=0.0;
if (High-hai>dhm && i<p/2) {ai_1=i; f1=1;}
if (High-hai>dhm && i>=p/2) {ai_2=i; f1=1;} }
if (f==0) break;}
//----------------------------
for (i=0; i<=p; i++) {hai=High*(i-ai_2)/(ai_1-ai_2)+High*(i-ai_1)/(ai_2-ai_1);
dli=Low-hai;
if (i==0) dlm=0.0; if (dli<dlm) dlm=dli;}
ha0=High*(0-ai_2)/(ai_1-ai_2)+High*(0-ai_1)/(ai_2-ai_1);
hap=High*(p-ai_2)/(ai_1-ai_2)+High*(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*(i-bi_2)/(bi_1-bi_2)+Low*(i-bi_1)/(bi_2-bi_1);
if (i==0 || i==p/2) dlm=0.0;
if (Low-lai<dlm && i<p/2) {bi_1=i; f1=1;}
if (Low-lai<dlm && i>=p/2) {bi_2=i; f1=1;}}
if (f==0) break;}
//----------------------------
for (i=0; i<=p; i++) {lai=Low*(i-bi_2)/(bi_1-bi_2)+Low*(i-bi_1)/(bi_2-bi_1);
dhi=High-lai;
if (i==0) dhm=0.0; if (dhi>dhm) dhm=dhi;}
la0=Low*(0-bi_2)/(bi_1-bi_2)+Low*(0-bi_1)/(bi_2-bi_1);
lap=Low*(p-bi_2)/(bi_1-bi_2)+Low*(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,price_p1,Time,price_01);
ObjectCreate("0"+sName,2, 0,Time,price_p0,Time,price_00);
ObjectCreate("2"+sName,2, 0,Time,price_p2,Time,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);
ObjectSet("1"+sName,OBJPROP_PRICE1,price_p1);
ObjectSet("1"+sName,OBJPROP_TIME2,Time);
ObjectSet("1"+sName,OBJPROP_PRICE2,price_01);
ObjectSet("0"+sName,OBJPROP_TIME1,Time);
ObjectSet("0"+sName,OBJPROP_PRICE1,price_p0);
ObjectSet("0"+sName,OBJPROP_TIME2,Time);
ObjectSet("0"+sName,OBJPROP_PRICE2,price_00);
ObjectSet("2"+sName,OBJPROP_TIME1,Time);
ObjectSet("2"+sName,OBJPROP_PRICE1,price_p2);
ObjectSet("2"+sName,OBJPROP_TIME2,Time);
ObjectSet("2"+sName,OBJPROP_PRICE2,price_02);

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

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


yaurk 发表于 2020-6-17 11:28:21

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

越夜越有机 发表于 2020-6-29 19:37:57

谢谢楼主,共同发展

Iris-chen 发表于 2020-8-6 16:20:53

谢谢楼主分享

人生delete 发表于 2020-8-14 11:43:09

学习了,不错

igsnefek 发表于 2020-11-10 10:00:54

谢谢

提篮桥衡山路 发表于 2020-12-2 12:24:18

支持下

贾末舟 发表于 2020-12-5 13:36:23

{:1_181:}

cmx 发表于 2020-12-5 13:52:09

谢谢楼主分享

yahaba88 发表于 2020-12-5 17:47:53

{:1_179:}
页: [1] 2 3 4
查看完整版本: 自动画线指标