Ошибка расчетов на живм рынке, кто из спецов подскажет!!!!

 

Всем притного дня.

 Итак  написал простенький алгоритм вычислений уровней который не включает расчет 0 бара, при каждом обращении к расчету все данные имеют значение 0.

Проблема такая расчет в тестере работает на 100% верно и исправно, но на живом рынке  дает сбои.

Сделал запись данных которые он выводит и получил вот такую картину за 3 секунды.


0   22:10:49.621    Выявление моделей GBPUSD,M5: b = 1.253                           ВЕРНЫЙ РАСЧЕТ
0    22:10:49.621    Выявление моделей GBPUSD,M5: s = 1.2423

0    22:10:49.628    Выявление моделей GBPUSD,M5: b = 1.253
0    22:10:49.629    Выявление моделей GBPUSD,M5: s = 1.2497                         ОШИБКА непонятно почему он взял данные 0 бара


0    22:10:49.843    Выявление моделей GBPUSD,M5: b = 1.253
0    22:10:49.843    Выявление моделей GBPUSD,M5: s = 0.0                             исход ОШИБКА


0    22:10:50.243    Выявление моделей GBPUSD,M5: b = 1.253
0    22:10:50.243    Выявление моделей GBPUSD,M5: s = 0.0

0    22:10:50.415    Выявление моделей GBPUSD,M5: b = 1.253
0    22:10:50.415    Выявление моделей GBPUSD,M5: s = 0.0

0    22:10:50.475    Выявление моделей GBPUSD,M5: b = 1.253
0    22:10:50.475    Выявление моделей GBPUSD,M5: s = 0.0

0    22:10:52.106    Выявление моделей GBPUSD,M5: b = 1.253
0    22:10:52.106    Выявление моделей GBPUSD,M5: s = 0.0

 
Igor Bogdanov:

Всем притного дня.

 Итак  написал простенький алгоритм вычислений уровней который не включает расчет 0 бара, при каждом обращении к расчету все данные имеют значение 0.

Проблема такая расчет в тестере работает на 100% верно и исправно, но на живом рынке  дает сбои.

Сделал запись данных которые он выводит и получил вот такую картину за 3 секунды.


0   22:10:49.621    Выявление моделей GBPUSD,M5: b = 1.253                           ВЕРНЫЙ РАСЧЕТ
0    22:10:49.621    Выявление моделей GBPUSD,M5: s = 1.2423

0    22:10:49.628    Выявление моделей GBPUSD,M5: b = 1.253
0    22:10:49.629    Выявление моделей GBPUSD,M5: s = 1.2497                         ОШИБКА непонятно почему он взял данные 0 бара


0    22:10:49.843    Выявление моделей GBPUSD,M5: b = 1.253
0    22:10:49.843    Выявление моделей GBPUSD,M5: s = 0.0                             исход ОШИБКА


0    22:10:50.243    Выявление моделей GBPUSD,M5: b = 1.253
0    22:10:50.243    Выявление моделей GBPUSD,M5: s = 0.0

0    22:10:50.415    Выявление моделей GBPUSD,M5: b = 1.253
0    22:10:50.415    Выявление моделей GBPUSD,M5: s = 0.0

0    22:10:50.475    Выявление моделей GBPUSD,M5: b = 1.253
0    22:10:50.475    Выявление моделей GBPUSD,M5: s = 0.0

0    22:10:52.106    Выявление моделей GBPUSD,M5: b = 1.253
0    22:10:52.106    Выявление моделей GBPUSD,M5: s = 0.0

За кодом ехать к вам домой, чтоб его посмотреть и выявить ошибку? Тут не телепатов, и без кода никто и ничего не скажет
 
Vitaly Muzichenko:
За кодом ехать к вам домой, чтоб его посмотреть и выявить ошибку? Тут не телепатов, и без кода никто и ничего не скажет

 Вот если не трудно  посмотрите. Это весь рассчет.


void istKor(bool up,datetime startt,int fin)
{

  int      startBar;
 // bool up;

 startBar=iBarShift(NULL, 0, startt);
 // if(napr==true){up=true;}
 // if(napr==false){up=false;}

int N_bar=1;
int iN_bar=1;
int bufminBar [950];int bufmaxBar [950];

double H,L;
int Hb,Lb;
H=NormalizeDouble(iHigh(NULL,0,startBar)-pont,DIGITS);
L=NormalizeDouble(iLow(NULL,0,startBar)-pont,DIGITS);
Hb=startBar; Lb=startBar;
bufmaxBar[N_bar]=Hb;bufminBar[N_bar]=Lb;
bool dwnd=false;bool dwnd_time=false;
for( i =startBar ; i > fin; i--)
{
// ------------сигмент Восхождения------------
if(up==true)
{
//+---------Обновление  экстримума направленного движения ( >= )---------------+
  if (NormalizeDouble(iHigh(NULL,0,i)-pont,DIGITS)>H&&dwnd_time==false){H=NormalizeDouble(iHigh(NULL,0,i)-pont,DIGITS);Hb=i;dwnd=false;}
//+----------------------------------------------------------------------------+
//
//+-------------Определяем не сменилось ли направленное движение---------------+
  if (dwnd==false&&H>NormalizeDouble(iHigh(NULL,0,i)-pont,DIGITS)&&NormalizeDouble(iLow(NULL,0,Hb)-pont,DIGITS)>NormalizeDouble(iLow(NULL,0,i)-pont,DIGITS)&&NormalizeDouble(iLow(NULL,0,iLowest(NULL,0,MODE_LOW,Hb-i,i))-pont,DIGITS)==NormalizeDouble(iLow(NULL,0,i)-pont,DIGITS))
    {
      dwnd=true;          
    }
//+----------------------------------------------------------------------------+
//

//-----------Пробой коррекции---------------------------+
  if (NormalizeDouble(iHigh(NULL,0,i)-pont,DIGITS)>H&&dwnd==true&&dwnd_time==true)
    {
      if(NormalizeDouble(iClose(NULL,0,Lb)-pont,DIGITS)<NormalizeDouble(iOpen(NULL,0,Lb)-pont,DIGITS))
      {
       L= NormalizeDouble(iLow(NULL,0,iLowest(NULL,0,MODE_LOW,Hb-i+1,i))-pont,DIGITS);
       Lb=iLowest(NULL,0,MODE_LOW,Hb-i+1,i);
      }
      if(NormalizeDouble(iClose(NULL,0,Lb)-pont,DIGITS)>NormalizeDouble(iOpen(NULL,0,Lb)-pont,DIGITS))
      {
       L= NormalizeDouble(iLow(NULL,0,iLowest(NULL,0,MODE_LOW,Hb-i,i))-pont,DIGITS);
       Lb=iLowest(NULL,0,MODE_LOW,Hb-i,i);
      }          

       H=NormalizeDouble(iHigh(NULL,0,i)-pont,DIGITS);Hb=i;
       N_bar++;
       bufminBar[N_bar]=Lb;
       dwnd=false;dwnd_time=false;
    }
//-----------------------------------------------------------------------------+
//
//----------------Пробой уровня поддержки---------------------------------+.
  while (NormalizeDouble(iLow(NULL,0,i)-pont,DIGITS)<NormalizeDouble(iLow(NULL,0,bufminBar[N_bar])-pont,DIGITS)&&N_bar>0)
    {
       bufminBar[N_bar]=0;
       N_bar--;
       iN_bar=N_bar;
    }
       L= NormalizeDouble(iLow(NULL,0,bufminBar[N_bar])-pont,DIGITS);
       Lb=bufminBar[N_bar];    
//-----------------------------------------------------------------------------+
}
// ------------сигмент Нисхождения------------
if(up==false)
{
//+---------Обновление  экстримума направленного движения ( >= )---------------+
  if (NormalizeDouble(iLow(NULL,0,i)-pont,DIGITS)<L&&dwnd_time==false){L=NormalizeDouble(iLow(NULL,0,i)-pont,DIGITS);Lb=i;dwnd=false;}
//+----------------------------------------------------------------------------+
//
//+-------------Определяем не сменилось ли направленное движение---------------+
  if (dwnd==false&&L<NormalizeDouble(iLow(NULL,0,i)-pont,DIGITS)&&NormalizeDouble(iHigh(NULL,0,Lb)-pont,DIGITS)<NormalizeDouble(iHigh(NULL,0,i)-pont,DIGITS)&&NormalizeDouble(iHigh(NULL,0,iHighest(NULL,0,MODE_HIGH,Lb-i,i))-pont,DIGITS)==NormalizeDouble(iHigh(NULL,0,i)-pont,DIGITS))
    {
      dwnd=true;          
    }
//+----------------------------------------------------------------------------+
//

//
//----------------------Пробой коррекции---------------------------+
  if (NormalizeDouble(iLow(NULL,0,i)-pont,DIGITS)<L&&dwnd==true&&dwnd_time==true)
    {
      if(NormalizeDouble(iClose(NULL,0,Lb)-pont,DIGITS)<NormalizeDouble(iOpen(NULL,0,Lb)-pont,DIGITS))
      {
       H= NormalizeDouble(iHigh(NULL,0,iHighest(NULL,0,MODE_HIGH,Lb-i,i))-pont,DIGITS);
       Hb=iHighest(NULL,0,MODE_HIGH,Lb-i,i);
      }
      if(NormalizeDouble(iClose(NULL,0,Lb)-pont,DIGITS)>NormalizeDouble(iOpen(NULL,0,Lb)-pont,DIGITS))
      {
       H= NormalizeDouble(iHigh(NULL,0,iHighest(NULL,0,MODE_HIGH,Lb-i+1,i))-pont,DIGITS);
       Hb=iHighest(NULL,0,MODE_HIGH,Lb-i+1,i);
      }      
       L=NormalizeDouble(iLow(NULL,0,i)-pont,DIGITS);Lb=i;
       N_bar++;
       bufmaxBar[N_bar]=Hb;
       dwnd=false;dwnd_time=false;
    }
//-----------------------------------------------------------------------------+
//
//--------------------Пробой сопротивления--------------------------------+
  while (NormalizeDouble(iHigh(NULL,0,i)-pont,DIGITS)>NormalizeDouble(iHigh(NULL,0,bufmaxBar[N_bar])-pont,DIGITS)&&N_bar>0)
    {
       bufmaxBar[N_bar]=0;
       N_bar--;
       iN_bar=N_bar;
    }
       H= NormalizeDouble(iHigh(NULL,0,bufmaxBar[N_bar])-pont,DIGITS);
       Hb=bufmaxBar[N_bar];    
//-----------------------------------------------------------------------------+

}
}

//======================================================================
}
//+-----------------------------------------------------------------------+
//+-----------------------------------------------------------------------+
 
Большое спасибо всем. проблема решена. ему можно закрывать.
Причина обращения: