Всем притного дня.
Итак написал простенький алгоритм вычислений уровней который не включает расчет 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
За кодом ехать к вам домой, чтоб его посмотреть и выявить ошибку? Тут не телепатов, и без кода никто и ничего не скажет
Вот если не трудно посмотрите. Это весь рассчет.
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]; //-----------------------------------------------------------------------------+ } } //====================================================================== } //+-----------------------------------------------------------------------+ //+-----------------------------------------------------------------------+

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Всем притного дня.
Итак написал простенький алгоритм вычислений уровней который не включает расчет 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