顺水外汇EA交易网MT4

标题: 希望万能版主和编程高手解析一下这个指标 [打印本页]

作者: 冷眼观局_笑而不    时间: 2018-1-11 16:39
标题: 希望万能版主和编程高手解析一下这个指标
我自学编程一段时间了   一些简单的指标   都能看懂  而且会编一些简单的工具。 但是菜鸟碰到老鸟写的指标就一头雾水了。希望高手给这个指标做一些注解。这个指标代码比较复杂。
#property indicator_chart_window
#property indicator_buffers 8
#property indicator_color1 Fuchsia
#property indicator_color2 Fuchsia
#property indicator_color3 Fuchsia
#property indicator_color4 Fuchsia
#property indicator_color5 Fuchsia
#property indicator_color6 Fuchsia
#property indicator_color7 Fuchsia
#property indicator_color8 Fuchsia
extern int FindLen = 100;
extern int RSIPeriod = 14;
extern int ibars=1000;
extern bool AlertFlag = TRUE;
double G_ibuf_84[];
double G_ibuf_88[];
double G_ibuf_92[];
double G_ibuf_96[];
double G_ibuf_100[];
double G_ibuf_104[];
double G_ibuf_108[];
double G_ibuf_112[];
int Gia_116[];
int Gi_120 = 0;
int Gia_124[];
int Gi_128 = 0;
int Gia_132[];
int Gia_136[];
int Gi_140 = 0;
int Gia_144[];
int Gia_148[];
int Gi_152 = 0;
int ii = 0;
int iii = 0;
int init()
{
   IndicatorBuffers(8);
   SetIndexStyle(0, DRAW_LINE);
   SetIndexBuffer(0, G_ibuf_84);
   SetIndexStyle(1, DRAW_LINE);
   SetIndexBuffer(1, G_ibuf_88);
   SetIndexStyle(2, DRAW_LINE);
   SetIndexBuffer(2, G_ibuf_92);
   SetIndexStyle(3, DRAW_LINE);
   SetIndexBuffer(3, G_ibuf_96);
   SetIndexStyle(4, DRAW_LINE);
   SetIndexBuffer(4, G_ibuf_100);
   SetIndexStyle(5, DRAW_LINE);
   SetIndexBuffer(5, G_ibuf_104);
   SetIndexStyle(6, DRAW_ARROW);
   SetIndexBuffer(6, G_ibuf_108);
   SetIndexArrow(6, 218);
   SetIndexStyle(7, DRAW_ARROW);
   SetIndexBuffer(7, G_ibuf_112);
   SetIndexArrow(7, 217);
   SetIndexEmptyValue(0, 0.0);
   SetIndexEmptyValue(1, 0.0);
   SetIndexEmptyValue(2, 0.0);
   SetIndexEmptyValue(3, 0.0);
   SetIndexEmptyValue(4, 0.0);
   SetIndexEmptyValue(5, 0.0);
   SetIndexEmptyValue(6, 0.0);
   SetIndexEmptyValue(7, 0.0);
   return (0);
}
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
int start()
{
   int Li_4;
   int Li_8;
   int Li_12;
   double Ld_20;
   CalculateData();
   ArrayInitialize(G_ibuf_84, 0.0);
   ArrayInitialize(G_ibuf_88, 0.0);
   ArrayInitialize(G_ibuf_92, 0.0);
   ArrayInitialize(G_ibuf_96, 0.0);
   ArrayInitialize(G_ibuf_100, 0.0);
   ArrayInitialize(G_ibuf_104, 0.0);
   ArrayInitialize(G_ibuf_108, 0.0);
   ArrayInitialize(G_ibuf_112, 0.0);
   for (int index_0 = 0; index_0 = Li_8; Li_16--)
      {
         if (Li_12 == 1 && G_ibuf_84[Li_16] != 0.0) Li_12 = 2;
         if (Li_12 == 2 && G_ibuf_88[Li_16] != 0.0) Li_12 = 3;
         if (Li_12 == 3 && G_ibuf_92[Li_16] != 0.0) Li_12 = 4;
         if (Li_12 == 4 && G_ibuf_96[Li_16] != 0.0) Li_12 = 5;
         if (Li_12 == 5 && G_ibuf_100[Li_16] != 0.0) Li_12 = 6;
         if (Li_12 == 6 && G_ibuf_104[Li_16] != 0.0) Li_12 = -1;
      }
      Ld_20 = (High[Li_8] - High[Li_4]) / (Li_4 - Li_8);
      switch (Li_12)
       {
      case 1:
         for (Li_16 = Li_4; Li_16 >= Li_8; Li_16--)
         G_ibuf_84[Li_16] = High[Li_4] + (Li_4 - Li_16) * Ld_20;
         break;
      case 2:
         for (Li_16 = Li_4; Li_16 >= Li_8; Li_16--)
         G_ibuf_88[Li_16] = High[Li_4] + (Li_4 - Li_16) * Ld_20;
         break;
      case 3:
         for (Li_16 = Li_4; Li_16 >= Li_8; Li_16--)
         G_ibuf_92[Li_16] = High[Li_4] + (Li_4 - Li_16) * Ld_20;
         break;
      case 4:
         for (Li_16 = Li_4; Li_16 >= Li_8; Li_16--)
         G_ibuf_96[Li_16] = High[Li_4] + (Li_4 - Li_16) * Ld_20;
         break;
      case 5:
         for (Li_16 = Li_4; Li_16 >= Li_8; Li_16--)
         G_ibuf_100[Li_16] = High[Li_4] + (Li_4 - Li_16) * Ld_20;
         break;
      case 6:
         for (Li_16 = Li_4; Li_16 >= Li_8; Li_16--)
         G_ibuf_104[Li_16] = High[Li_4] + (Li_4 - Li_16) * Ld_20;
      }
      G_ibuf_108[Li_8] = High[Li_8];
      if (AlertFlag)
         {
            if(Li_16 == 0 && ii == FALSE)
            {
               Alert(Symbol() + " " + Period() + " RSI背离"  "!" );
               ii = TRUE;
               iii = FALSE;
            }
         }
   }
   for (index_0 = 0; index_0 = Li_8; Li_16--)
       {
         if (Li_12 == 1 && G_ibuf_84[Li_16] != 0.0) Li_12 = 2;
         if (Li_12 == 2 && G_ibuf_88[Li_16] != 0.0) Li_12 = 3;
         if (Li_12 == 3 && G_ibuf_92[Li_16] != 0.0) Li_12 = 4;
         if (Li_12 == 4 && G_ibuf_96[Li_16] != 0.0) Li_12 = 5;
         if (Li_12 == 5 && G_ibuf_100[Li_16] != 0.0) Li_12 = 6;
         if (Li_12 == 6 && G_ibuf_104[Li_16] != 0.0) Li_12 = -1;
      }
      Ld_20 = (Low[Li_8] - Low[Li_4]) / (Li_4 - Li_8);
      switch (Li_12)
      {
      case 1:
         for (Li_16 = Li_4; Li_16 >= Li_8; Li_16--)
         G_ibuf_84[Li_16] = Low[Li_4] + (Li_4 - Li_16) * Ld_20;
         break;
      case 2:
         for (Li_16 = Li_4; Li_16 >= Li_8; Li_16--)
         G_ibuf_88[Li_16] = Low[Li_4] + (Li_4 - Li_16) * Ld_20;
         break;
      case 3:
         for (Li_16 = Li_4; Li_16 >= Li_8; Li_16--)
         G_ibuf_92[Li_16] = Low[Li_4] + (Li_4 - Li_16) * Ld_20;
         break;
      case 4:
         for (Li_16 = Li_4; Li_16 >= Li_8; Li_16--)
         G_ibuf_96[Li_16] = Low[Li_4] + (Li_4 - Li_16) * Ld_20;
         break;
      case 5:
         for (Li_16 = Li_4; Li_16 >= Li_8; Li_16--)
         G_ibuf_100[Li_16] = Low[Li_4] + (Li_4 - Li_16) * Ld_20;
         break;
      case 6:
         for (Li_16 = Li_4; Li_16 >= Li_8; Li_16--)
         G_ibuf_104[Li_16] = Low[Li_4] + (Li_4 - Li_16) * Ld_20;
      }
      G_ibuf_112[Li_8] = Low[Li_8];
      if (AlertFlag)
         {
            if(Li_16== 0 && iii == FALSE)
            {
               Alert(Symbol() + " " + Period() + " RSI背离"  "!" );
               iii = TRUE;
               ii = FALSE;
            }
         }
   }
   return (0);
}
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
void CalculateData()
{
   int count_4;
   int Lia_20[10];
   int Lia_24[10];
   bool Li_28;
   double Ld_32;
   double Ld_40;
   double Ld_48;
//  int Li_16 = 2;
   bool Li_56 = FALSE;
   Gi_120 = 0;
   Gi_128 = 0;
   Gi_140 = 0;
   Gi_152 = 0;
   for (int Li_0 = ibars- 1; Li_0 >= -1; Li_0--)
    {
      Ld_40 = (iRSI(NULL, 0, RSIPeriod, PRICE_CLOSE, Li_0) - 50.0) / 100.0;
      if (Ld_32 * Ld_40 = 2 * 2 + 1 || Li_0 == -1) Li_56 = TRUE;
         if (Li_56 == TRUE)
         {
            if (Ld_32 > 0.0)
            {
               for (int Li_8 = Li_0 + count_4 + 1; Li_8 > Li_0; Li_8--)
               {
                  for (int Li_12 = 0; Li_12 = Li_8 - 2; Li_12--)
                     if (Ld_48  Li_0; Li_8--)
                  {
                     for (Li_12 = 0; Li_12 = (iRSI(NULL, 0, RSIPeriod, PRICE_CLOSE, Li_12) - 50.0) / 100.0)
                        Lia_20[Li_12 - Li_8 - 1] = 0;
                     for (Li_12 = Li_8 - 1; Li_12 >= Li_8 - 2; Li_12--)
                        if (Ld_48 >= (iRSI(NULL, 0, RSIPeriod, PRICE_CLOSE, Li_12) - 50.0) / 100.0)
                        Lia_24[StrToInteger(DoubleToStr(MathAbs(Li_12 - Li_8 + 1), 0))] = 0;
                     for (Li_12 = 0; Li_12  High[Li_16] && (iRSI(NULL, 0, RSIPeriod, PRICE_CLOSE, Li_20) - 50.0) / 100.0 = Li_20 + 1; Li_12--)
            {
               Ld_32 = (iRSI(NULL, 0, RSIPeriod, PRICE_CLOSE, Li_16) - 50.0) / 100.0 + (Li_16 - Li_12) * Ld_24;
               if (Ld_32 + 0.018  (iRSI(NULL, 0, RSIPeriod, PRICE_CLOSE, Li_16) - 50.0) / 100.0)
         {
            Ld_24 = ((iRSI(NULL, 0, RSIPeriod, PRICE_CLOSE, Li_20) - 50.0) / 100.0 - (iRSI(NULL, 0, RSIPeriod, PRICE_CLOSE, Li_16) - 50.0) / 100.0) / (Li_16 - Li_20);
            Ld_40 = 1;
            for (Li_12 = Li_16 - 1; Li_12 >= Li_20 + 1; Li_12--)
             {
               Ld_32 = (iRSI(NULL, 0, RSIPeriod, PRICE_CLOSE, Li_16) - 50.0) / 100.0 + (Li_16 - Li_12) * Ld_24;
               if (Ld_32 - 0.018 > (iRSI(NULL, 0, RSIPeriod, PRICE_CLOSE, Li_12) - 50.0) / 100.0) Ld_40 = 0;
            }
            if (Ld_40 == 1.0)
            {
               Gi_152++;
               ArrayResize(Gia_144, Gi_152);
               ArrayResize(Gia_148, Gi_152);
               Gia_144[Gi_152 - 1] = Li_16;
               Gia_148[Gi_152 - 1] = Li_20;
            }
         }
      }
   }
}

作者: 冷眼观局_笑而不    时间: 2018-1-11 17:39
注解越详细越好。  这个框架我能看懂  但是里面处理 问题的哪些方法逻辑  不懂。  还有就是我对 ArrayResize(Gia_144, Gi_152);和 ArrayInitialize(G_ibuf_84, 0.0); 这两句话  不太懂   看了命令帮助文件了  也不懂 上面说的太专业。

作者: 熙羽    时间: 2018-1-11 19:15
苦力活!我想没多少人愿意,你还是自己一步一个脚印的来吧。
作者: 冷眼观局_笑而不    时间: 2018-1-11 20:14

[attach]22251[/attach]
                 for (Li_12 = Li_8 + 1; Li_12 = (iRSI(NULL, 0, RSIPeriod, PRICE_CLOSE, Li_12) - 50.0) / 100.0)
                        Lia_20[Li_12 - Li_8 - 1] = 0;
                     for (Li_12 = Li_8 - 1; Li_12 >= Li_8 - 2; Li_12--)
                        if (Ld_48 >= (iRSI(NULL, 0, RSIPeriod, PRICE_CLOSE, Li_12) - 50.0) / 100.0)
                        Lia_24[StrToInteger(DoubleToStr(MathAbs(Li_12 - Li_8 + 1), 0))] = 0;
为什么这两个for语句后面 连个大括号都没有  而且还不能屏蔽?  有什么作用?

作者: yangsluo    时间: 2018-1-11 20:47
一看就是**文件。。
作者: digit    时间: 2018-1-11 21:54

而且还是反编译的...
[attach]22252[/attach]

作者: digit    时间: 2018-1-11 22:58

谁说 for 语句一定要大括号


作者: 冷眼观局_笑而不    时间: 2018-1-12 00:17

那有什么作用?   10天学会mql4 上没讲呀。

作者: ayng    时间: 2018-1-12 00:49
闲来无事看看
作者: 暘光bingosy    时间: 2018-1-12 01:18
支持楼主 顶


作者: 暘光bingosy    时间: 2018-1-12 02:54
再订  为了金币 为了金币呀

作者: 153083486    时间: 2018-1-12 03:36
谢谢分享
作者: seismic    时间: 2018-1-12 04:54
学习 后排坐起
作者: 宋俊廷    时间: 2018-1-12 06:01
实在太深奥了

作者: 小飞鱼常春    时间: 2018-1-12 07:35

实在太深奥了




欢迎光临 顺水外汇EA交易网MT4 (http://www.waterforex.com/) Powered by Discuz! X3.2