вот такое неприятное открытие получилось у меня.
я попытался построить линейный график фунтобакса в процентах. в екселе форма движения идентична, а вот в МТ не. Господа программисты, в чем ошибка в коде?
P.S. на основе этого алгоритма и строится Cluster analiser. Получается неверно?
#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;
double USD[];
double EUR[];
double GBP[];
double CHF[];
double JPY[];
double CAD[];
double AUD[];
double
GBPUSD,EURUSD,USDCHF,USDJPY,AUDUSD,USDCAD;
int init()
{
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);
}
int deinit()
{
return(0);
}
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);
}