找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
首页论坛EAHub 外汇论坛
查看: 20|回复: 0

NB_SHI_Channel

[复制链接]

4万

主题

54

回帖

4万

积分

管理员

积分
45954
发表于 2026-8-22 03:55:00 | 显示全部楼层 |阅读模式
#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 Red
//#property indicator_color2 Green
//#property indicator_color3 Green
//#property indicator_color4 Green
double buf1[];
double buf2[];
double buf3[];
double ExtMapBuffer1[];
//---- input parameters
extern int       AllBars=240;
extern int       BarsForFract=0;
int CurrentBar=0;
double Step=0;
int B1=-1,B2=-1;
int UpDown=0;
double P1=0,P2=0,PP=0;
int i=0,AB=300,BFF=0;
int ishift=0;
double iprice=0;
datetime T1,T2;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_ARROW);
   SetIndexArrow(0,164);
   SetIndexBuffer(0,ExtMapBuffer1);
   SetIndexEmptyValue(0,0.0);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1,buf1);
   SetIndexStyle(2,DRAW_LINE);
   SetIndexBuffer(2,buf2);
   SetIndexStyle(3,DRAW_LINE);
   SetIndexBuffer(3,buf3);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
//----
   return(0);
  }

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void DelObj()
  {
   ObjectDelete("TL1");
   ObjectDelete("TL2");
   ObjectDelete("MIDL");
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   //  if( Time[0]>= StrToTime("2005.8.19 06:00")) return(0);
   int    counted_bars=IndicatorCounted();
//----
   if ((AllBars==0) || (Bars<AllBars)) AB=Bars; else AB=AllBars;
   if (BarsForFract>0)
      BFF=BarsForFract;
   else
     {
      switch(Period())
        {
         case 1: BFF=12; break;
         case 5: BFF=48; break;
         case 15: BFF=24; break;
         case 30: BFF=24; break;
         case 60: BFF=12; break;
         case 240: BFF=15; break;
         case 1440: BFF=10; break;
         case 10080: BFF=6; break;
         default: DelObj(); return(-1); break;
        }
     }
   CurrentBar=2;
   B1=-1; B2=-1; UpDown=0;
   while(((B1==-1) || (B2==-1)) && (CurrentBar<AB))
     {

      if((UpDown<1) && (CurrentBar==Lowest(Symbol(),Period(),MODE_LOW,BFF*2+1,CurrentBar-BFF)))
        {
         if(UpDown==0) { UpDown=-1; B1=CurrentBar; P1=Low[B1]; }
         else { B2=CurrentBar; P2=Low[B2];}
        }
      if((UpDown>-1) && (CurrentBar==Highest(Symbol(),Period(),MODE_HIGH,BFF*2+1,CurrentBar-BFF)))
        {
         if(UpDown==0) { UpDown=1; B1=CurrentBar; P1=High[B1]; }
         else { B2=CurrentBar; P2=High[B2]; }
        }
      CurrentBar++;
     }
   if((B1==-1) || (B2==-1)) {DelObj(); return(-1);}
   Step=(P2-P1)/(B2-B1);
   P1=P1-B1*Step; B1=0;
   ishift=0; iprice=0;
   if(UpDown==1)
     {
      PP=Low[2]-2*Step;
      for(i=3;i<=B2;i++)
        {
         if(Low<P+Step*i) { PP=Low-i*Step; }
        }
      if(Low[0]<P) {ishift=0; iprice=PP;}
      if(Low[1]<P+Step) {ishift=1; iprice=PP+Step;}
      if(High[0]>1) {ishift=0; iprice=P1;}
      if(High[1]>1+Step) {ishift=1; iprice=P1+Step;}
     }
   else
     {
      PP=High[2]-2*Step;
      for(i=3;i<=B2;i++)
        {
         if(High>P+Step*i) { PP=High-i*Step;}
        }
      if(Low[0]<1) {ishift=0; iprice=P1;}
      if(Low[1]<1+Step) {ishift=1; iprice=P1+Step;}
      if(High[0]>P) {ishift=0; iprice=PP;}
      if(High[1]>P+Step) {ishift=1; iprice=PP+Step;}
     }
   P2=P1+AB*Step;
   T1=Time[B1]; T2=Time[AB];
//----
   if(iprice!=0) ExtMapBuffer1[ishift]=iprice;
   DelObj();
   ObjectCreate("TL1",OBJ_TREND,0,T2,PP+Step*AB,T1,PP);
   ObjectSet("TL1",OBJPROP_COLOR,Lime);
   ObjectSet("TL1",OBJPROP_WIDTH,2);
   ObjectSet("TL1",OBJPROP_STYLE,STYLE_SOLID);
   ObjectCreate("TL2",OBJ_TREND,0,T2,P2,T1,P1);
   ObjectSet("TL2",OBJPROP_COLOR,Lime);
   ObjectSet("TL2",OBJPROP_WIDTH,2);
   ObjectSet("TL2",OBJPROP_STYLE,STYLE_SOLID);
   ObjectCreate("MIDL",OBJ_TREND,0,T2,(P2+PP+Step*AB)/2,T1,(P1+PP)/2);
   ObjectSet("MIDL",OBJPROP_COLOR,Lime);
   ObjectSet("MIDL",OBJPROP_WIDTH,1);
   ObjectSet("MIDL",OBJPROP_STYLE,STYLE_DOT);
//----
   double cbars=AB-B1;
   double startPP=PP+Step*AB, endPP=PP;
   double startP1=P2, endP1=P1;
   double startP2=(P2+PP+Step*AB)/2, endP2=(P1+PP)/2;
   double deltaPP=(startPP-endPP)/cbars;
   double deltaP1=(startP1-endP1)/cbars;
   double deltaP2=(startP2-endP2)/cbars;
   buf1[AB]=startPP;
   buf2[AB]=startP1;
   buf3[AB]=startP2;
     for(int i=AB-1; i>=0; i--)
     {
      buf1=buf1[i+1]-deltaPP;
      buf2=buf2[i+1]-deltaP1;
      buf3=buf3[i+1]-deltaP2;
     }
//----
   return(0);
  }复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|EAHub外汇论坛

GMT+8, 2026-10-11 19:21 , Processed in 0.186437 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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