This indicator is called FXBS2. It is very useful on XAUUSD. Please look at the two pictures bellow,i want it to run like the "target" one,not the "now" one. please help me correct it!

 
//+------------------------------------------------------------------+
//|                                                        FXBS2.mq4 |
//|                        Copyright 2021, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
#property indicator_separate_window
#property indicator_buffers 3
#property indicator_plots   3
//--- plot FXBS_d
#property indicator_label1  "FXBS_d"
#property indicator_type1   DRAW_HISTOGRAM
#property indicator_color1  clrRed
#property indicator_style1  STYLE_SOLID
#property indicator_width1  2
//--- plot FXBS_x
#property indicator_label2  "FXBS_x"
#property indicator_type2   DRAW_HISTOGRAM
#property indicator_color2  clrGreen
#property indicator_style2  STYLE_SOLID
#property indicator_width2  2
//--- plot 生命线
#property indicator_label3  "生命线"
#property indicator_type3   DRAW_LINE
#property indicator_color3  clrYellow
#property indicator_style3  STYLE_SOLID
#property indicator_width3  1
input int InpPeriod_1=9; //
input int InpPeriod_2=60; //
input int InpPeriod_3=34; //
//--- indicator buffers
double         FXBS_dBuffer[];
double         FXBS_xBuffer[];
double         生命线Buffer[];
double   VAR1Buffer[];
double   VAR2Buffer[];
double   VAR3Buffer[];
double   VAR4Buffer[];
double   VAR5Buffer[];
double   VAR6Buffer[];
double   VAR7Buffer[];
double   VAR8Buffer[];
double   VAR9Buffer[];
double   VAR10Buffer[];
double   VAR11Buffer[];
double   VAR12Buffer[];
double   VAR13Buffer[];
double   VAR14Buffer[];
double   VAR15Buffer[];
double   VAR16Buffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
   string short_name;
   IndicatorBuffers(18);
//--- indicator buffers mapping
// SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,2,Red);
// SetIndexStyle(1,DRAW_HISTOGRAM,STYLE_SOLID,2,Green);
   SetIndexBuffer(0,VAR12Buffer);
   SetIndexBuffer(1,VAR13Buffer);
// SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,1,Yellow);//  SetIndexStyle(1,DRAW_NONE);
   SetIndexBuffer(2,生命线Buffer);
   SetIndexStyle(3,DRAW_NONE);   //  SetIndexStyle(2,DRAW_LINE,STYLE_SOLID,1,White);
   SetIndexBuffer(3,VAR1Buffer);
   SetIndexStyle(4,DRAW_NONE);     // SetIndexStyle(3,DRAW_LINE,STYLE_SOLID,1,White);
   SetIndexBuffer(4,VAR2Buffer);
   SetIndexStyle(5,DRAW_NONE);          //   SetIndexStyle(4,DRAW_LINE,STYLE_SOLID,1,White);
   SetIndexBuffer(5,VAR3Buffer);
   SetIndexStyle(6,DRAW_NONE);      //  SetIndexStyle(5,DRAW_LINE,STYLE_SOLID,1,White);
   SetIndexBuffer(6,VAR4Buffer);
   SetIndexStyle(7,DRAW_NONE);     // SetIndexStyle(6,DRAW_LINE,STYLE_SOLID,1,Red);
   SetIndexBuffer(7,VAR5Buffer);
   SetIndexStyle(8,DRAW_NONE); //  SetIndexStyle(7,DRAW_LINE,STYLE_SOLID,1,White);
   SetIndexBuffer(8,VAR6Buffer);
   SetIndexStyle(9,DRAW_NONE);    // SetIndexStyle(8,DRAW_LINE,STYLE_SOLID,1,Red);
   SetIndexBuffer(9,VAR7Buffer);
   SetIndexStyle(10,DRAW_NONE);  //SetIndexStyle(9,DRAW_LINE,STYLE_SOLID,1,White);
   SetIndexBuffer(10,VAR8Buffer);
   SetIndexStyle(11,DRAW_NONE);  //SetIndexStyle(10,DRAW_LINE,STYLE_SOLID,1,White);
   SetIndexBuffer(11,VAR9Buffer);
   SetIndexStyle(12,DRAW_NONE);// SetIndexStyle(11,DRAW_LINE,STYLE_SOLID,1,White);
   SetIndexBuffer(12,VAR10Buffer);
   SetIndexStyle(13,DRAW_NONE);            // SetIndexStyle(12,DRAW_LINE,STYLE_SOLID,1,White);
   SetIndexBuffer(13,VAR11Buffer);
   SetIndexStyle(14,DRAW_NONE); // SetIndexStyle(15,DRAW_LINE,STYLE_SOLID,1,Red);
   SetIndexBuffer(14,VAR14Buffer);
   SetIndexStyle(15,DRAW_NONE); //SetIndexStyle(16,DRAW_LINE,STYLE_SOLID,1,Red);
   SetIndexBuffer(15,VAR15Buffer);
   SetIndexStyle(16,DRAW_NONE); // SetIndexStyle(17,DRAW_LINE,STYLE_SOLID,1,White);
   SetIndexBuffer(16,VAR16Buffer);
   short_name="FXBS2("+IntegerToString(InpPeriod_1)+","+IntegerToString(InpPeriod_2)+","+IntegerToString(InpPeriod_3)+")";
   IndicatorShortName(short_name);
   SetIndexLabel(0,short_name);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   int i,limit;
//---
   if(rates_total<InpPeriod_2)
      return(0);
//--- last counted bar will be recounted
   limit=rates_total-prev_calculated;
   if(prev_calculated>0)
      limit++;
//--- macd counted in the 1-st buffer
   for(i=0; i<limit; i++)
     {
      VAR1Buffer[i]=  High[iHighest(NULL,0,MODE_HIGH,InpPeriod_1,i)]  -Low[iLowest(NULL,0,MODE_LOW,InpPeriod_1,i)];
      VAR2Buffer[i]=  High[iHighest(NULL,0,MODE_HIGH,InpPeriod_1,i)]-close[i];
      VAR3Buffer[i]=  close[i]-Low[iLowest(NULL,0,MODE_LOW,InpPeriod_1,i)];
      if(VAR1Buffer[i] !=0)
         VAR4Buffer[i] =VAR2Buffer[i]/VAR1Buffer[i]*100-70;
      if((High[iHighest(NULL,0,MODE_HIGH,InpPeriod_2,i)]-Low[iLowest(NULL,0,MODE_LOW,InpPeriod_2,i)])>0)
         VAR5Buffer[i]=(close[i]-Low[iLowest(NULL,0,MODE_LOW,InpPeriod_2,i)])/(High[iHighest(NULL,0,MODE_HIGH,InpPeriod_2,i)]-Low[iLowest(NULL,0,MODE_LOW,InpPeriod_2,i)])*100;
      VAR6Buffer[i]=(2*close[i]+high[i]+low[i])/4;
      if(VAR1Buffer[i] !=0)
         VAR14Buffer[i]=VAR3Buffer[i]/VAR1Buffer[i]*100;
     }
   for(i=0; i<limit; i++)
     {
      // VAR7Buffer[i]=SimpleMA(i,3,VAR14Buffer);
      VAR7Buffer[i]=iMAOnArray(VAR14Buffer,0,3,0,MODE_SMA,i);
      VAR8Buffer[i]=Low[iLowest(NULL,0,MODE_LOW,InpPeriod_3,i)];
     }
   for(i=0; i<limit; i++)
     {
      //VAR9Buffer[i]=SimpleMA(i,3,VAR7Buffer)-SimpleMA(i,9,VAR4Buffer);
      VAR9Buffer[i]=iMAOnArray(VAR7Buffer,0,3,0,MODE_SMA,i)-iMAOnArray(VAR4Buffer,0,9,0,MODE_SMA,i);
     }
   for(i=0; i<limit; i++)
     {
      VAR10Buffer[i]=0;
      if(VAR9Buffer[i]>100)
         VAR10Buffer[i]=VAR9Buffer[i]-100;
      else
         VAR10Buffer[i]=0;
      VAR11Buffer[i]=High[iHighest(NULL,0,MODE_HIGH,InpPeriod_3,i)];
      if((VAR11Buffer[i]-VAR8Buffer[i])!=0)
         VAR15Buffer[i]=(VAR6Buffer[i]-VAR8Buffer[i])/(VAR11Buffer[i]-VAR8Buffer[i])*100;
     }
   for(i=0; i<limit; i++)
     {
      //VAR12Buffer[i]=ExponentialMA(i,13,0,VAR15Buffer);
      VAR12Buffer[i]=iMAOnArray(VAR15Buffer,0,13,0,MODE_EMA,i);
     }
   for(i=0; i<limit; i++)
     {
      if(prev_calculated==0 && i==limit-1)
         VAR16Buffer[i]=0.667*VAR12Buffer[i]+0.333*VAR12Buffer[i];
      else
         VAR16Buffer[i]=0.667*VAR12Buffer[i+1]+0.333*VAR12Buffer[i];
     }
   for(i=0; i<limit; i++)
     {
      //VAR13Buffer[i]=ExponentialMA(i,2,0,VAR16Buffer);
      VAR13Buffer[i]=iMAOnArray(VAR16Buffer,0,2,0,MODE_EMA,i);
     }
   for(i=0; i<limit; i++)
     {
      // 生命线Buffer[i]=ExponentialMA(i,5,0,VAR13Buffer);
      生命线Buffer[i]=iMAOnArray(VAR13Buffer,0,5,0,MODE_EMA,i);
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
Файлы:
now.png  123 kb
target.png  55 kb
 
问题是他们在这里不与被盗程序一起工作
 

phykirk:

This indicator is called FXBS2. It is very useful on XAUUSD. Please look at the two pictures bellow,i want it to run like the "target" one,not the "now" one. please help me correct it!

Ok i will help you


Файлы:
FXBS3.mq4  13 kb