"Помогите мне бесплатно"

 
              В силу сложившейся  ситуации я не могу перечислить деньги за работу.  В долгу не останусь . Мне надо запустить этот индикатор. В строке 226  вместо  P3Buffer[ii]=P1+P2;  должно быть P3Buffer[ii]=((P1-P2)/(Р1+Р2))*100;   и  исправить что бы не появлялись зеленые стрелки когда нет объема.  Люди ---------Помогите!!!!!!  
Файлы:
 
//+------------------------------------------------------------------+
//|                                                Waddah_ExVolv2_01 |
//|  нач. 21/09/2019                                                 |
//+------------------------------------------------------------------+
#property copyright "Inkov Evgeni"
#property link      "ew123@mail.ru"
//+------------------------------------------------------------------+
#property version   "1.00"
#property strict
//----
#property indicator_separate_window
#property indicator_buffers 6
#property  indicator_color1  clrNONE
#property  indicator_color2  clrNONE
#property  indicator_color3  clrYellow
#property  indicator_color4  clrBlack
#property  indicator_color5  clrBlue
#property  indicator_color6  clrRed
#property  indicator_maximum 1
#property  indicator_minimum -1
//=================================
extern int     ExPeriod       = 0;
extern int     Normalize      = 1;
extern int     MaxBars        = 100;
extern color   clr_arrow_UP   = clrLime;
extern color   clr_arrow_DW   = clrRed;
extern int     widh_arrow     = 3;
extern int     shift_arrow    = 0;
//---- buffers
double P1;
double P2;
double P1Buffer[];
double P2Buffer[];
double P3Buffer[];
//----
datetime Time_Alert=0;
double pos;
double VolBuffer[];
double PosBuffer[];
double NegBuffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   IndicatorBuffers(6);

   SetIndexBuffer(0, P1Buffer);
   SetIndexBuffer(1, P2Buffer);
   SetIndexBuffer(2, P3Buffer);
//----
   SetIndexStyle(0, DRAW_HISTOGRAM, STYLE_SOLID, 1);
   SetIndexStyle(1, DRAW_HISTOGRAM, STYLE_SOLID, 1);
   SetIndexStyle(2, DRAW_HISTOGRAM, STYLE_SOLID,20);
//=====================================================
   SetIndexStyle(3, DRAW_NONE);
   SetIndexBuffer(3, VolBuffer);
   SetIndexStyle(4, DRAW_HISTOGRAM, STYLE_SOLID, 4);
   SetIndexBuffer(4, PosBuffer);
   SetIndexStyle(5, DRAW_HISTOGRAM, STYLE_SOLID, 4);
   SetIndexBuffer(5, NegBuffer);
   SetIndexDrawBegin(3, ExPeriod);
   SetIndexDrawBegin(4, ExPeriod);
   SetIndexDrawBegin(5, ExPeriod);
   SetIndexLabel(4, NULL);
   SetIndexLabel(5, NULL);
   
   IndicatorDigits(0);
   return(0);
  }
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
{
   ObjectsDeleteAll(0,"up");
   ObjectsDeleteAll(0,"dw");
   return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int i,ii;
            // waddah
   static int pii=-1;

   
   int n=iBars(Symbol(),PERIOD_M1);
   if (MaxBars>0)n=iBarShift(NULL,PERIOD_M1,iTime(NULL,0,MaxBars));
   
   for(i = 0; i <iBars(Symbol(),PERIOD_M1) && i<n; i++)
//   for(i = 0; i <iBars(Symbol(),PERIOD_M1) ; i++)
     {
       ii = iBarShift(Symbol(), Period(), iTime(Symbol(),PERIOD_M1,i), true);
       if (ii>=Bars || ii<0)continue;
       //----
       if (pii!=ii)
       {
         P1=0;
         P2=0;
         P1Buffer[ii]=0;
         P2Buffer[ii]=0;
         P3Buffer[ii]=0;
       }
       
       if (ii != -1)
       {
         if (iClose(Symbol(),PERIOD_M1,i)>iClose(Symbol(),PERIOD_M1,i+1))
         {
           P1 = P1+(iVolume(Symbol(),PERIOD_M1,i));
         }
         if (iClose(Symbol(),PERIOD_M1,i)<iClose(Symbol(),PERIOD_M1,i+1))
         {
           P2 = P2-(iVolume(Symbol(),PERIOD_M1,i));
         }
         if (iClose(Symbol(),PERIOD_M1,i)==iClose(Symbol(),PERIOD_M1,i+1))
         {
           P1 = P1+(iVolume(Symbol(),PERIOD_M1,i)/2);
           P2 = P2-(iVolume(Symbol(),PERIOD_M1,i)/2);
         }
       }
       
       double tmp_p3 = 0;
       
       if((P1+P2) != 0){tmp_p3 = ((P1-P2)/(P1+P2))*100.0;}
       
       P1Buffer[ii]=P1;
       P2Buffer[ii]=P2;
       P3Buffer[ii]=tmp_p3;
       
       pii=ii;
    }
//=======================================
         // ExVolv2
   int    counted_bars = IndicatorCounted();
   double negative = 0, positive = 0;
   //----
   if(Bars <= ExPeriod) return(0);
       
   if(counted_bars < 1)
       for(i = 1; i <= ExPeriod; i++) VolBuffer[Bars-i] = 0.0;
   //----
   i = Bars - ExPeriod - 1;
   if(counted_bars >= ExPeriod) i = Bars -counted_bars - 1;
   i=MathMin(MaxBars,Bars -ExPeriod - 1);
   while(i >= 0)
   {
       i--;
       if (i>=Bars-1)continue;
       if (i<0)break;
       
       PosBuffer[i]= 0;
       NegBuffer[i]= 0;
       
       negative = 0;
       positive = 0;
       if(i < Bars - ExPeriod - 1)
         {
           int k = i + ExPeriod;
           while(k >= i)
             {
               if(Open[k] < Close[k]) 
                   positive += (Close[k] - Open[k]);
               if(Open[k] > Close[k]) 
                   negative += (Open[k] - Close[k]);
               if(Open[k] == Close[k]) 
                   {
                     negative += 0;
                     positive += 0;
                   }
               k--;
             }
         }
       double poss = 0;
       if(Normalize < 1) Normalize = 1;
           
       if(Normalize > 1000) Normalize = 1000;
           
       for(int j = 1; j != Normalize; j++)poss += VolBuffer[i+j];  

       pos = (poss + ((positive - negative)*3000)) / Normalize;
       if(VolBuffer[i+1] < pos)
       {
          PosBuffer[i] = pos;
          if (pos>0 && pos< 1) PosBuffer[i]= 1;
          if (pos<0 && pos>-1) PosBuffer[i]=-1;
          form_strel(i,PosBuffer[i],P3Buffer[i]);
       } 
       if(VolBuffer[i+1] > pos)
       {
           NegBuffer[i]=pos;
          if (pos>0 && pos< 1) NegBuffer[i]= 1;
          if (pos<0 && pos>-1) NegBuffer[i]=-1;
          form_strel(i,NegBuffer[i],P3Buffer[i]);
       }
       VolBuffer[i]=pos;
   }
   return(0);
  }
//----------------------------
void form_strel(int i,double Ex,double Wad)
{
      if (Wad>0 && Ex<0)
      {
         if (i>0)strel_up(225,i);
         if (i==1 && Time_Alert!=Time[0])
         {
            Alert(Symbol()+" "+str_TF(Period())+" UP");
            Time_Alert=Time[0];
         }
      }
      else
         if (Wad<0 && Ex>0)
         {
            if (i>0)strel_dw(226,i); 
            if (i==1 && Time_Alert!=Time[0])
            {
               Alert(Symbol()+" "+str_TF(Period())+" DW");
               Time_Alert=Time[0];
            }
         }
}
//-----------------------
void strel_up(int kod, int i)
{
   string name="up_"+TimeToStr(Time[i]);
   if (ObjectFind(name)<0)ObjectCreate(name,OBJ_ARROW,0,Time[i],Low[i]-shift_arrow*Point);
   
   ObjectSetInteger(0,name,OBJPROP_ANCHOR,ANCHOR_TOP);
   ObjectSet(name,OBJPROP_TIME1,Time[i]);
   ObjectSet(name,OBJPROP_PRICE1,Low[i]-shift_arrow*Point);
   ObjectSet(name,OBJPROP_ARROWCODE,kod);
   ObjectSet(name,OBJPROP_COLOR,clr_arrow_UP);
   ObjectSet(name,OBJPROP_WIDTH,widh_arrow);
}
//-------------------------
void strel_dw(int kod, int i)
{
   string name="dw_"+TimeToStr(Time[i]);
   if (ObjectFind(name)<0)ObjectCreate(name,OBJ_ARROW,0,Time[i],High[i]+shift_arrow*Point);
   
   ObjectSetInteger(0,name,OBJPROP_ANCHOR,ANCHOR_BOTTOM);
   ObjectSet(name,OBJPROP_TIME1,Time[i]);
   ObjectSet(name,OBJPROP_PRICE1,High[i]+shift_arrow*Point);
   ObjectSet(name,OBJPROP_ARROWCODE,kod);
   ObjectSet(name,OBJPROP_COLOR,clr_arrow_DW);
   ObjectSet(name,OBJPROP_WIDTH,widh_arrow);
}
//-------------------------
string str_TF(int n)
{
   if (n==0)n=Period();
   switch(n)
   {
      case PERIOD_M1:  return ("M1");
      case PERIOD_M5:  return ("M5");
      case PERIOD_M15: return ("M15");  
      case PERIOD_M30: return ("M30");
      case PERIOD_H1:  return ("H1");
      case PERIOD_H4:  return ("H4");
      case PERIOD_D1:  return ("D1");
      case PERIOD_W1:  return ("W1");
      case PERIOD_MN1: return ("MN1");
   }
   return("TF?");
}
//----------------------------

Iosebi Tavadze:
              В силу сложившейся  ситуации я не могу перечислить деньги за работу.  В долгу не останусь . Мне надо запустить этот индикатор. В строке 226  вместо  P3Buffer[ii]=P1+P2;  должно быть P3Buffer[ii]=((P1-P2)/(Р1+Р2))*100;   и  исправить что бы не появлялись зеленые стрелки когда нет объема.  Люди ---------Помогите!!!!!!  


Желтым сделано, про стрелки пока не смотрел. Сформулируйте условие по объёмам конкретно.

 
Evgeniy Chumakov #:


желтым сделано, про стрелки пока не смотрел.

 Преогромное спасибо!!!!!!! Как быстро.Погоняю. Ты СУПЕР!!!!!!!!!!!!!!!!  Стрелками не заморачивайся.

 
Evgeniy Chumakov #:


Желтым сделано, про стрелки пока не смотрел. Сформулируйте условие по объёмам конкретно.

"Сформулируйте условие по объёмам конкретно" Они в формуле  ( Р1+Р2)/Р1-Р2)*100%  индикатор показывает объем в % и стрелочки появляются если объем и свеча в противофазе. Этот индикатор написан по моей идее.В нем есть ошибки. Их можно будет подправить когда определюсь с Т.С.Тот кто писал (не бесплатно) не смог мне сделать так что бы индюк не считал текуший бар.Дело в том что при сильных движениях он тормозит терминал.А текущие события не несут ни какой информации о тренде.Если это возможно это исправить подскажите что поправить в коде.

 
Iosebi Tavadze #:

"Сформулируйте условие по объёмам конкретно" Они в формуле  ( Р1+Р2)/Р1-Р2)*100%  индикатор показывает объем в % и стрелочки появляются если объем и свеча в противофазе. Этот индикатор написан по моей идее.В нем есть ошибки. Их можно будет подправить когда определюсь с Т.С.Тот кто писал (не бесплатно) не смог мне сделать так что бы индюк не считал текуший бар.Дело в том что при сильных движениях он тормозит терминал.А текущие события не несут ни какой информации о тренде.Если это возможно это исправить подскажите что поправить в коде.


Попробуйте для начала вот это:

  
   for(i = 0; i <iBars(Symbol(),PERIOD_M1) && i<n; i++)
//   for(i = 0; i <iBars(Symbol(),PERIOD_M1) ; i++)


Поменять на это:

  
   for(i = 1; i <iBars(Symbol(),PERIOD_M1) && i<n; i++)
//   for(i = 0; i <iBars(Symbol(),PERIOD_M1) ; i++)
 
Evgeniy Chumakov #:


Попробуйте для начала вот это:


Поменять на это:

     Ура!!!!!!!!!!! Работает!!!!!!!! Текущий бар не рисует!!!!!!! Супер!