jax1000

вот такое неприятное открытие получилось у меня.
http://s50.radikal.ru/i130/0812/ca/67b5a3e67bbc.jpg
Кластерные индикаторы скачать

я попытался построить линейный график фунтобакса в процентах. в екселе форма движения идентична, а вот в МТ не. Господа программисты, в чем ошибка в коде?

P.S. на основе этого алгоритма и строится Cluster analiser. Получается неверно?
Код
//+------------------------------------------------------------------+
//|                                            Clusters_analyser.mq4 |
//|                                                         AndreiFX |
//|                                                 AndreiFX@mail.ru |
//+------------------------------------------------------------------+
#property copyright "AndreiFX"
#property link      "AndreiFX@mail.ru"

#property indicator_separate_window
#property indicator_buffers 7
#property indicator_color1 Red
#property indicator_color2 DarkGreen
#property indicator_color3 DarkBlue
#property indicator_color4 Orange
#property indicator_color5 Coral
#property indicator_color6 SeaGreen
#property indicator_color7 MediumSlateBlue

//Входные параметры
extern bool ОтображатьUSD=true;
extern bool ОтображатьEUR=true;
extern bool ОтображатьGBP=true;
extern bool ОтображатьCHF=true;
extern bool ОтображатьJPY=true;
extern bool ОтображатьCAD=true;
extern bool ОтображатьAUD=true;


//---- buffers
double USD[];
double EUR[];
double GBP[];
double CHF[];
double JPY[];
double CAD[];
double AUD[];

//Вычисляемые кроссы
double
GBPUSD,EURUSD,USDCHF,USDJPY,AUDUSD,USDCAD;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,USD);
   SetIndexLabel(0,"USD");
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1,EUR);
   SetIndexLabel(1,"EUR");
   SetIndexStyle(2,DRAW_LINE);
   SetIndexBuffer(2,GBP);
   SetIndexLabel(2,"GBP");
   SetIndexStyle(3,DRAW_LINE);
   SetIndexBuffer(3,CHF);
   SetIndexLabel(3,"CHF");
   SetIndexStyle(4,DRAW_LINE);
   SetIndexBuffer(4,JPY);
   SetIndexLabel(4,"JPY");
   SetIndexStyle(5,DRAW_LINE);
   SetIndexBuffer(5,CAD);
   SetIndexLabel(5,"CAD");
   SetIndexStyle(6,DRAW_LINE);
   SetIndexBuffer(6,AUD);
   SetIndexLabel(6,"AUD");
   SetIndexStyle(7,DRAW_LINE);
   
   
   SetIndexEmptyValue(0,0);SetIndexEmptyValue(1,0);SetIndexEmptyValue(2,0);SetIndexEmptyValue(3,0);SetIndexEmptyValue(4,0);SetIndexEmptyValue(5,0);SetIndexEmptyValue(6,0);

//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int limit;
     int counted_bars=IndicatorCounted();
  //---- последний посчитанный бар будет пересчитан
     if(counted_bars>0) counted_bars--;
     limit=Bars-counted_bars;
  //---- основной цикл
     for(int i=limit; i>=0; i--)
       {
//Защита от деления на ноль///////
if(iClose("GBPUSD",Period(),i)==0||iClose("AUDUSD",Period(),i)==0||iClose("EURUSD",Period(),i)==0||
iClose("USDCHF",Period(),i)==0||iClose("USDJPY",Period(),i)==0) continue;
if(iClose("GBPUSD",Period(),i+1)==0||iClose("AUDUSD",Period(),i+1)==0||iClose("EURUSD",Period(),i+1)==0||
iClose("USDCHF",Period(),i+1)==0||iClose("USDJPY",Period(),i+1)==0) continue;
       /////////////////////////////////Вычисляем накопления кроссов для текущего бара////////////////////////////////////////////////////





GBPUSD=100*(iClose("GBPUSD",Period(),i)-iClose("GBPUSD",Period(),i+1))/iClose("GBPUSD",Period(),i+1);
EURUSD=100*(iClose("EURUSD",Period(),i)-iClose("EURUSD",Period(),i+1))/iClose("EURUSD",Period(),i+1);
USDCHF=100*(iClose("USDCHF",Period(),i)-iClose("USDCHF",Period(),i+1))/iClose("USDCHF",Period(),i+1);
USDJPY=100*(iClose("USDJPY",Period(),i)-iClose("USDJPY",Period(),i+1))/iClose("USDJPY",Period(),i+1);
AUDUSD=100*(iClose("AUDUSD",Period(),i)-iClose("AUDUSD",Period(),i+1))/iClose("AUDUSD",Period(),i+1);

USDCAD=100*(iClose("USDCAD",Period(),i)-iClose("USDCAD",Period(),i+1))/iClose("USDCAD",Period(),i+1);

/////////////////////////////////Конец вычисления накоплений////////////////////////////////////////////////////

////////////////////////////////Вычислим индексы валют, на основе накоплений////////////////////////////////////
if(ОтображатьGBP)GBP[i]=GBP[i+1]+GBPUSD;

       }
//----
   return(0);
  }
//+------------------------------------------------------------------+

 

Отметьте интересные вам фрагменты текста и они станут доступны по уникальной ссылке в адресной строке браузера.