比特币通信协议 - 币圈消息

比特币通信协议篇11、二、TURN简介。在典型的情况下,TURN客户端连接到内网中,并且通过一个或者多个NAT到 详细

求编程高手,帮我看看哪里出了问题?

  [复制链接]
288 8
vic2222200388 发表于 2018-1-11 14:50:56 | 只看该作者 |阅读模式 打印 上一主题 下一主题
//[i]J_TPO
// 这个是双向震荡器 使用 J_TPO.
// 它使用两个明显的时间量程. If both are positive that is a trend buy,
// if both are negative a trend sell, and mixed, neutral.
#property indicator_separate_window
#property indicator_buffers 4
#property indicator_color1 Green
#property indicator_color2 Yellow
#property indicator_color3 Blue
#property indicator_color4 Red
#property indicator_maximum 100
#property indicator_minimum -100
extern int LenShort =  23;                                        //空长度
extern int LenLong =  39;                                         //多长度
double ExtMapBuffer1[];                                              //数组1
double ExtMapBuffer2[];                                              //数组2
double ExtMapBuffer3[];                                              //数组3
double ExtMapBuffer4[];                                              //数组4
//+------------------------初始化------------------------------------+
int init()
  {
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0, ExtMapBuffer1);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1, ExtMapBuffer2);
   SetIndexStyle(2,DRAW_HISTOGRAM);
   SetIndexBuffer(2, ExtMapBuffer3);
   SetIndexStyle(3,DRAW_HISTOGRAM);
   SetIndexBuffer(3, ExtMapBuffer4);
   return(0);
  }
//+--------------------------主函数----------------------------------+
int start()
  {
   int limit;
   int counted_bars= IndicatorCounted();
   if(counted_bars
      return(-1);
   if(counted_bars>0)
      counted_bars--;
   limit= MathMin(Bars-counted_bars+1,Bars-LenLong-1);
   if((LenLong
      Print("J_TPO_CD:  长度至少为3");
      return(0);                              
     }
   double sqrtLenShort= MathSqrt(LenShort+0.0);                       //空开方(空长度)
   double sqrtLenLong= MathSqrt(LenLong+0.0);                         //多开方(多长度)
   for(int i= limit; i>= 0; i--){
      double J1, J2, diff;
      J1= J_TPO_value(Close, LenShort,i);                             //J1为 调用子函数值
      J2= J_TPO_value(Close, LenLong,i);
      ExtMapBuffer1[i]=  J1*100.0;                                    //数组1为
      ExtMapBuffer2[i]=  J2*100.0;
      if(J1*J2 >=  0.0){
         // same sign.
         if(J1 > 0.0){                                            //若
            ExtMapBuffer3[i]= 50.0;                                  //数组3为50
            ExtMapBuffer4[i]= 0.0;
            }
         else
         if(J1
            ExtMapBuffer3[i]= 0.0;                                //数组3为 0
            ExtMapBuffer4[i]= -50.0;
           }
        }
      else{                                                      //否则
         ExtMapBuffer3[i]= 0.0;                                      //数组3和4都 为0
         ExtMapBuffer4[i]= 0.0;
        }
     }
   return(0);
  }
//+------------------------------------------------------------------+
double J_TPO_value(double 用价[], int 指定跨期, int shift)
  {
   double 指标值;
   double 因子;
   double Lenp1half;
   double accum;
   double 临时容器;
   double 最大值;
   int    j;
   int    最大时;
   double 数组1[];
   double 数组2[];
   double 数组3[];
   bool   flag;
   accum= 0;
   //--
   ArrayResize(数组1,指定跨期+1);
   ArrayResize(数组2,指定跨期+1);
   ArrayResize(数组3,指定跨期+1);
   //--
   for(int m=1; m
      数组2[m]= m;
      数组3[m]= m;
      数组1[m]= 用价[shift+指定跨期-m];
     }
   // sort 数组1[] in ascending order, 数组2[] is the permutation index
   // Note, this is a poor quadratic search, and will not scale well with 指定跨期
   for(m= 1; m
      // find max 指标值 & its location in 数组1 [m..m+指定跨期]
      最大值= 数组1[m];
      最大时= m;
      for(j= m+1; j
         if(数组1[j]
            最大值= 数组1[j];
            最大时= j;
           }
        }
      //--交换最大值
      临时容器= 数组1[m];
      数组1[m]= 数组1[最大时];
      数组1[最大时]= 临时容器;
      临时容器= 数组2[m];
      数组2[m]= 数组2[最大时];
      数组2[最大时]= 临时容器;
     }
   // 数组3[1..指定跨期] is nominally 1..m, but this here adjusts for
   // ties.
   m= 1;
   while(m
      //--查找重复值
      j= m+1;
      flag= true;
      accum= 数组3[m];
      while(flag) {
         if(数组1[m]!= 数组1[j]){
            if(j-m>1){
               // a streak of repeated values was found
               // and so replace 数组3[] for those with
               // its average
               accum= accum/(j - m);
               for(int n=m; n
                  数组3[n]= accum;
              }
            flag= false;
            }
          else{
            accum += 数组3[j];
            j++;
           }
        }
      m= j;
     }
   //--
   因子= 12.0/(指定跨期*(指定跨期-1)*(指定跨期+1));
   Lenp1half= (指定跨期 + 1) * 0.5;
   for(accum= 0,m= 1; m
      // Print("m= "+m+"Arr2[m] = "+数组2[m]+" 数组3[m]= "+数组3[m]);
      accum+= (数组3[m] - Lenp1half) *(数组2[m] - Lenp1half);
     }
   指标值= 因子 * accum;
   // Print("JTPO_B:  accum =  "+accum+" norm =  "+因子);
   return(指标值);
  }
//--------试译者:  hance66.blog.163.com/blog/  --------+
收藏
收藏0
转播
转播
分享
分享
分享
淘帖0

精彩评论8

跳转到指定楼层
沙发
fia02024242 发表于 2018-1-11 16:29:49 | 只看该作者
2222222222222222222222222
板凳
abear 发表于 2018-1-11 17:41:50 | 只看该作者
很明顯的
ExtMapBuffer1/2/3/4 都是陣列 但在start()裡  卻都將其當成變數使用
地板
stvyeap 发表于 2018-1-11 18:13:55 | 只看该作者
return 不是在最下面
5#
stvyeap 发表于 2018-1-11 19:38:00 | 只看该作者
最好名词也改英文,有时华语它看不懂
6#
daxiaomaomao9 发表于 2018-1-11 21:11:19 | 只看该作者
呵呵,很不错的指标。
7#
bzy7090848 发表于 2018-1-11 21:51:21 | 只看该作者
不会哦???????、
8#
EUR168 发表于 2018-1-11 22:14:39 | 只看该作者
感谢师傅分享啦
9#
kuangren90 发表于 2018-1-11 23:27:44 | 只看该作者
谢谢分享,学编程,学交易,实现程序化交易。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

发布主题
阅读排行更多+

Powered by 顺水鱼MT4外汇EA网! X3.2© 2001-2017 顺水MT4外汇EA公司.( 陕ICP备17014341号-1