655 行
24 KiB
Text
655 行
24 KiB
Text
|
|
//+------------------------------------------------------------------+
|
||
|
|
//| ArrayPrinter.mq4 |
|
||
|
|
//| Copyright 2020, MetaQuotes Software Corp. |
|
||
|
|
//| https://www.mql5.com |
|
||
|
|
//+------------------------------------------------------------------+
|
||
|
|
#property copyright "Yevheniy Kopanitskyy"
|
||
|
|
#property link ""
|
||
|
|
#property version "1.00"
|
||
|
|
#property strict
|
||
|
|
double BodyHorizont_Bin[7210,2000];
|
||
|
|
double BodyHorizont_Price[7210,2000];
|
||
|
|
datetime BodyHorizont_Time[7210];
|
||
|
|
double MBodyHorizont_Bin[36050,2000];
|
||
|
|
double MBodyHorizont_Price[36050,2000];
|
||
|
|
datetime MBodyHorizont_Time[36050];
|
||
|
|
double PArticles_Bin[36050,500];
|
||
|
|
double PArticles_BinTemp[36050,500];
|
||
|
|
double PArticles_Price[36050,500];
|
||
|
|
double PArticles_PriceTemp[36050,500];
|
||
|
|
datetime PArticles_Time[36050,2];
|
||
|
|
string SYmbol=Symbol();
|
||
|
|
string FileName21=SYmbol+"BodyHorizont_Bin.bin";
|
||
|
|
string FileName22=SYmbol+"BodyHorizont_Price.bin";
|
||
|
|
string FileName23=SYmbol+"BodyHorizont_Time.bin";
|
||
|
|
string FileName24=SYmbol+"МBodyHorizont_Bin.bin";
|
||
|
|
string FileName25=SYmbol+"МBodyHorizont_Price.bin";
|
||
|
|
string FileName26=SYmbol+"МBodyHorizont_Time.bin";
|
||
|
|
string FileName27=SYmbol+"PArticles_Bin.bin";
|
||
|
|
string FileName28=SYmbol+"PArticles_Price.bin";
|
||
|
|
string FileName29=SYmbol+"PArticles_Time.bin";
|
||
|
|
extern bool automaticprinte=false;
|
||
|
|
extern bool AddToMBody=false;
|
||
|
|
extern bool Particles=true;
|
||
|
|
extern bool chek=false;
|
||
|
|
extern bool chek1=false;
|
||
|
|
//+------------------------------------------------------------------+
|
||
|
|
//| Expert initialization function |
|
||
|
|
//+------------------------------------------------------------------+
|
||
|
|
int OnInit()
|
||
|
|
{
|
||
|
|
//---
|
||
|
|
ArrayInitialize(MBodyHorizont_Bin,10);
|
||
|
|
ArrayInitialize(MBodyHorizont_Price,10);
|
||
|
|
ArrayInitialize(MBodyHorizont_Time,10);
|
||
|
|
ArrayInitialize(PArticles_Bin,10);
|
||
|
|
ArrayInitialize(PArticles_Price,10);
|
||
|
|
ArrayInitialize(PArticles_Time,10);
|
||
|
|
ArrayInitialize(PArticles_BinTemp,10);
|
||
|
|
//Загрузка массива при запуске
|
||
|
|
//-----------------------------------------------------------------------------------
|
||
|
|
|
||
|
|
int file_handle17=FileOpen(FileName21,FILE_READ|FILE_WRITE|FILE_BIN);//Загрузка
|
||
|
|
if(file_handle17>0)
|
||
|
|
{
|
||
|
|
|
||
|
|
FileSeek(file_handle17,0,SEEK_CUR);
|
||
|
|
|
||
|
|
uint test=FileReadArray(file_handle17,BodyHorizont_Bin,0,WHOLE_ARRAY);
|
||
|
|
FileClose(file_handle17);
|
||
|
|
}
|
||
|
|
//-----------------------------------------------------------------------------------
|
||
|
|
|
||
|
|
int file_handle18=FileOpen(FileName22,FILE_READ|FILE_WRITE|FILE_BIN);//Загрузка
|
||
|
|
if(file_handle18>0)
|
||
|
|
{
|
||
|
|
|
||
|
|
FileSeek(file_handle18,0,SEEK_CUR);
|
||
|
|
|
||
|
|
uint test=FileReadArray(file_handle18,BodyHorizont_Price,0,WHOLE_ARRAY);
|
||
|
|
FileClose(file_handle18);
|
||
|
|
}
|
||
|
|
//-----------------------------------------------------------------------------------
|
||
|
|
|
||
|
|
int file_handle19=FileOpen(FileName23,FILE_READ|FILE_WRITE|FILE_BIN);//Загрузка
|
||
|
|
if(file_handle19>0)
|
||
|
|
{
|
||
|
|
|
||
|
|
FileSeek(file_handle19,0,SEEK_CUR);
|
||
|
|
|
||
|
|
uint test=FileReadArray(file_handle19,BodyHorizont_Time,0,WHOLE_ARRAY);
|
||
|
|
FileClose(file_handle19);
|
||
|
|
}
|
||
|
|
//-----------------------------------------------------------------------------------
|
||
|
|
|
||
|
|
int file_handle20=FileOpen(FileName24,FILE_READ|FILE_WRITE|FILE_BIN);//Загрузка
|
||
|
|
if(file_handle20>0)
|
||
|
|
{
|
||
|
|
|
||
|
|
FileSeek(file_handle20,0,SEEK_CUR);
|
||
|
|
|
||
|
|
uint test=FileReadArray(file_handle20,MBodyHorizont_Bin,0,WHOLE_ARRAY);
|
||
|
|
FileClose(file_handle20);
|
||
|
|
}
|
||
|
|
//-----------------------------------------------------------------------------------
|
||
|
|
|
||
|
|
int file_handle21=FileOpen(FileName25,FILE_READ|FILE_WRITE|FILE_BIN);//Загрузка
|
||
|
|
if(file_handle21>0)
|
||
|
|
{
|
||
|
|
|
||
|
|
FileSeek(file_handle21,0,SEEK_CUR);
|
||
|
|
|
||
|
|
uint test=FileReadArray(file_handle21,MBodyHorizont_Price,0,WHOLE_ARRAY);
|
||
|
|
FileClose(file_handle21);
|
||
|
|
}
|
||
|
|
//-----------------------------------------------------------------------------------
|
||
|
|
|
||
|
|
int file_handle22=FileOpen(FileName26,FILE_READ|FILE_WRITE|FILE_BIN);//Загрузка
|
||
|
|
if(file_handle22>0)
|
||
|
|
{
|
||
|
|
|
||
|
|
FileSeek(file_handle22,0,SEEK_CUR);
|
||
|
|
|
||
|
|
uint test=FileReadArray(file_handle22,MBodyHorizont_Time,0,WHOLE_ARRAY);
|
||
|
|
FileClose(file_handle22);
|
||
|
|
}
|
||
|
|
//---
|
||
|
|
//-----------------------------------------------------------------------------------
|
||
|
|
|
||
|
|
int file_handle23=FileOpen(FileName27,FILE_READ|FILE_WRITE|FILE_BIN);//Загрузка
|
||
|
|
if(file_handle23>0)
|
||
|
|
{
|
||
|
|
|
||
|
|
FileSeek(file_handle23,0,SEEK_CUR);
|
||
|
|
|
||
|
|
uint test=FileReadArray(file_handle23,PArticles_Bin,0,WHOLE_ARRAY);
|
||
|
|
FileClose(file_handle23);
|
||
|
|
}
|
||
|
|
//-----------------------------------------------------------------------------------
|
||
|
|
|
||
|
|
int file_handle24=FileOpen(FileName28,FILE_READ|FILE_WRITE|FILE_BIN);//Загрузка
|
||
|
|
if(file_handle24>0)
|
||
|
|
{
|
||
|
|
|
||
|
|
FileSeek(file_handle24,0,SEEK_CUR);
|
||
|
|
|
||
|
|
uint test=FileReadArray(file_handle24,PArticles_Price,0,WHOLE_ARRAY);
|
||
|
|
FileClose(file_handle24);
|
||
|
|
}
|
||
|
|
//-----------------------------------------------------------------------------------
|
||
|
|
|
||
|
|
int file_handle25=FileOpen(FileName29,FILE_READ|FILE_WRITE|FILE_BIN);//Загрузка
|
||
|
|
if(file_handle25>0)
|
||
|
|
{
|
||
|
|
|
||
|
|
FileSeek(file_handle25,0,SEEK_CUR);
|
||
|
|
|
||
|
|
uint test=FileReadArray(file_handle25,PArticles_Time,0,WHOLE_ARRAY);
|
||
|
|
FileClose(file_handle25);
|
||
|
|
}
|
||
|
|
//Print("Ar test ",MBodyHorizont_Bin[152,20]);
|
||
|
|
//---Печать массивов в фаил
|
||
|
|
//-Определить с какой ячейки заполняется массив BodyHorizont_Bin с 0 или 1
|
||
|
|
if(automaticprinte==true)
|
||
|
|
{
|
||
|
|
for(int in=1; in<7210; in++)//Печатаю все данные в фаил по строкам
|
||
|
|
{
|
||
|
|
Sleep(500);
|
||
|
|
int ina;
|
||
|
|
for(ina=1; ina<2000; ina++) //Определяю конец строки
|
||
|
|
{
|
||
|
|
if(BodyHorizont_Bin[in,ina]==10)
|
||
|
|
{
|
||
|
|
|
||
|
|
break;//Конец строки
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
int inb;
|
||
|
|
//Print(ina);
|
||
|
|
Print(BodyHorizont_Time[in]);
|
||
|
|
for(inb=1; inb<ina; inb++)
|
||
|
|
{
|
||
|
|
Print("Bin Secuency ",BodyHorizont_Bin[in,inb]);
|
||
|
|
}
|
||
|
|
for(inb=1; inb<ina; inb++)
|
||
|
|
{
|
||
|
|
Print("Price Secuency ",BodyHorizont_Price[in,inb]);
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if(automaticprinte==false)
|
||
|
|
{
|
||
|
|
int in=1;//Номер строки в массиве
|
||
|
|
int ina;
|
||
|
|
int inb;
|
||
|
|
for(ina=1; ina<2000; ina++) //Определяю конец строки
|
||
|
|
{
|
||
|
|
if(BodyHorizont_Bin[in,ina]==10)
|
||
|
|
{
|
||
|
|
|
||
|
|
break;//Конец строки
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
Print(ina);
|
||
|
|
Print(BodyHorizont_Time[in]);
|
||
|
|
for(inb=1; inb<ina; inb++)
|
||
|
|
{
|
||
|
|
Print("Bin Secuency ",BodyHorizont_Bin[in,inb]);
|
||
|
|
}
|
||
|
|
for(inb=1; inb<ina; inb++)
|
||
|
|
{
|
||
|
|
Print("Price Secuency ",BodyHorizont_Price[in,inb]);
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
//Выбрать глубину массива для дозаписи и вывести на экран
|
||
|
|
int inc;
|
||
|
|
for(inc=1; inc<36050; inc++)
|
||
|
|
{
|
||
|
|
if(MBodyHorizont_Bin[inc,1]==10)//Индекс заполненности месячного массива
|
||
|
|
{
|
||
|
|
Print("START ADD MBODY INDEX - Max 36050 ",inc);
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
int ind;
|
||
|
|
for(ind=1; ind<7210; ind++)
|
||
|
|
{
|
||
|
|
if(BodyHorizont_Bin[ind,1]==10)//Индекс загружаемого массива для обьеденения
|
||
|
|
{
|
||
|
|
Print(" Start ADD BODY INDEX - Max 7210 ",ind);
|
||
|
|
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
}
|
||
|
|
int ControlInc=inc;
|
||
|
|
|
||
|
|
if(BodyHorizont_Bin[7209,1]!=10)
|
||
|
|
{
|
||
|
|
ind=7210;
|
||
|
|
Print(" Array BodyHorizont_Bin Full Loaded");
|
||
|
|
|
||
|
|
}
|
||
|
|
//int swi=0;
|
||
|
|
//if(inc-ind<=0)//Правило. Если колличество записываемых элементов меньше 0 то не писать в массив а вывести на печать оповещение
|
||
|
|
// {
|
||
|
|
// Print(" Small Array Manth SIZE FOR ADD NEW DATA ",inc-ind);
|
||
|
|
// swi=1;
|
||
|
|
// }
|
||
|
|
if(AddToMBody==true)
|
||
|
|
{
|
||
|
|
//Определение Конца текущего массива
|
||
|
|
//Дозагруска данных в массивы
|
||
|
|
|
||
|
|
int ini;
|
||
|
|
int inf=0;
|
||
|
|
|
||
|
|
|
||
|
|
for(ini=inc; ini<ind; ini++)//inc индекс старта записи в массив месяца. inc+ind Индекс массива месяц + колличество элементов к заполнению
|
||
|
|
{
|
||
|
|
|
||
|
|
inf++;//Увеличиваю строку массива для перезаписи
|
||
|
|
//Print(" ini ",ini," inf ",inf);
|
||
|
|
int ine;
|
||
|
|
for(ine=1; ine<2000; ine++) //дозапись собранных элементов в месячный массив
|
||
|
|
{
|
||
|
|
MBodyHorizont_Bin[ini,ine]=BodyHorizont_Bin[inf,ine];
|
||
|
|
MBodyHorizont_Price[ini,ine]=BodyHorizont_Price[inf,ine];
|
||
|
|
MBodyHorizont_Time[ini]=BodyHorizont_Time[inf];
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
for(inc=1; inc<36050; inc++)
|
||
|
|
{
|
||
|
|
if(MBodyHorizont_Bin[inc,1]==10)//Индекс заполненности месячного массива
|
||
|
|
{
|
||
|
|
Print("END ADD MBODY INDEX - Max 36050 ",inc);
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
if(inc>ControlInc)
|
||
|
|
{
|
||
|
|
FileDelete(SYmbol+"BodyHorizont_Bin.bin",0);
|
||
|
|
FileDelete(SYmbol+"BodyHorizont_Price.bin",0);
|
||
|
|
FileDelete(SYmbol+"BodyHorizont_Time.bin",0);
|
||
|
|
Print(" Files BodyHorizont_XXX Delited");
|
||
|
|
}
|
||
|
|
//-----------------------------------------------------------------------------------
|
||
|
|
|
||
|
|
file_handle20=FileOpen(FileName24,FILE_READ|FILE_WRITE|FILE_BIN);//Загрузка
|
||
|
|
if(file_handle20>0)
|
||
|
|
{
|
||
|
|
|
||
|
|
FileSeek(file_handle20,0,SEEK_CUR);
|
||
|
|
|
||
|
|
uint test=FileWriteArray(file_handle20,MBodyHorizont_Bin,0,WHOLE_ARRAY);
|
||
|
|
FileClose(file_handle20);
|
||
|
|
}
|
||
|
|
//-----------------------------------------------------------------------------------
|
||
|
|
|
||
|
|
file_handle21=FileOpen(FileName25,FILE_READ|FILE_WRITE|FILE_BIN);//Загрузка
|
||
|
|
if(file_handle21>0)
|
||
|
|
{
|
||
|
|
|
||
|
|
FileSeek(file_handle21,0,SEEK_CUR);
|
||
|
|
|
||
|
|
uint test=FileWriteArray(file_handle21,MBodyHorizont_Price,0,WHOLE_ARRAY);
|
||
|
|
FileClose(file_handle21);
|
||
|
|
}
|
||
|
|
//-----------------------------------------------------------------------------------
|
||
|
|
|
||
|
|
file_handle22=FileOpen(FileName26,FILE_READ|FILE_WRITE|FILE_BIN);//Загрузка
|
||
|
|
if(file_handle22>0)
|
||
|
|
{
|
||
|
|
|
||
|
|
FileSeek(file_handle22,0,SEEK_CUR);
|
||
|
|
|
||
|
|
uint test=FileWriteArray(file_handle22,MBodyHorizont_Time,0,WHOLE_ARRAY);
|
||
|
|
FileClose(file_handle22);
|
||
|
|
}
|
||
|
|
//---
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
if(Particles==true)
|
||
|
|
{
|
||
|
|
//Разбор собранных данных на частицы.Точка разделения Бинарный синапс. где синапс цены выражается 01 при тойже цене.
|
||
|
|
//Класификация и отбор дублей в отдельный массив.
|
||
|
|
//Перебераем массив и определяем координаты синапса.Есть два варианта. Последовательный перебор или перебор с предварительным выделением синапсов с записью в массив
|
||
|
|
//Последавательный варриант.
|
||
|
|
//загрузка базы данных в массив для проведения анализа
|
||
|
|
//загрузка базы данных отсортированных элементов. Нужно знать время свечи с которой была взята частица.Максимальная длинна частицы 200 элементов
|
||
|
|
//Цикл определения синапса
|
||
|
|
int ing;
|
||
|
|
int inh;
|
||
|
|
//Проверяю заполненность массива
|
||
|
|
for(ing=1; ing<36050; ing++)
|
||
|
|
{
|
||
|
|
if(MBodyHorizont_Bin[ing,1]==10)
|
||
|
|
{
|
||
|
|
break;//inh содержит индекс конца массива
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
int inl;
|
||
|
|
int inm=1;//строка для записи
|
||
|
|
int inn=-1;//ячейка в записи
|
||
|
|
for(inh=1; inh<ing; inh++) //Перебираю построчно Массив хранящий собранные данные MBodyHorizont_Bin массив содержит данные одного месяца
|
||
|
|
{
|
||
|
|
//перебераю строку в поиске синапса.Пришла идея слаживать все синапсы во временный массив а после сортиравать на дубли
|
||
|
|
int ink;
|
||
|
|
for(ink=1; ink<2000; ink++)
|
||
|
|
{
|
||
|
|
if(MBodyHorizont_Bin[inh,ink]==10)//Конец строки
|
||
|
|
{
|
||
|
|
|
||
|
|
break;//ink содержит конец строки
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
bool permwr;//переключатель для разешения записи в массив
|
||
|
|
for(inl=1; inl<ink; inl++)//перебор подаваемой строки
|
||
|
|
{
|
||
|
|
//Print("TEST ",inl);
|
||
|
|
permwr=true;
|
||
|
|
inn++;//увеличиваю число ячейки для записи
|
||
|
|
if(inn==500)
|
||
|
|
{
|
||
|
|
|
||
|
|
Print("inn 500 true");
|
||
|
|
}
|
||
|
|
if(MBodyHorizont_Bin[inh,inl]==0 && MBodyHorizont_Bin[inh,inl+1]==1 && MBodyHorizont_Price[inh,inl]==MBodyHorizont_Price[inh,inl+1])//Условие по которому определяется синапс
|
||
|
|
{
|
||
|
|
//Print(" 0 ",MBodyHorizont_Bin[inh,inl]);
|
||
|
|
//Print(" 1 ",MBodyHorizont_Bin[inh,inl+1]);
|
||
|
|
//Print(" Price1 ",MBodyHorizont_Price[inh,inl]);
|
||
|
|
//Print(" Price2 ",MBodyHorizont_Price[inh,inl+1]);
|
||
|
|
//Print(" coordenada de sinaps " ," Line ",inh," Bin Position ",inl+1);//Печатаю координату в массиве где определён синапс
|
||
|
|
//Print(" Coordenada de tiempo " ,MBodyHorizont_Time[inh]);//Печатаю время в массиве где определён синапс
|
||
|
|
PArticles_BinTemp[inm,inn]=MBodyHorizont_Bin[inh,inl];//Записываю 0 по индексу inl
|
||
|
|
PArticles_PriceTemp[inm,inn]=MBodyHorizont_Price[inh,inl];//Записываю цену по индексу inl
|
||
|
|
permwr=false;
|
||
|
|
inm++;// устанавливаю номер строки +1
|
||
|
|
inn=0;// устанавливаю номер ячейки на 0
|
||
|
|
//Print("sw");
|
||
|
|
//inl=inl+1;
|
||
|
|
if(inm==99999)
|
||
|
|
{
|
||
|
|
Print("file PArticles_BinTemp.bin is ful");
|
||
|
|
Alert("file PArticles_BinTemp.bin is ful");
|
||
|
|
break;//Выход из цикла по заполненности массива
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
//Print("str1 ",inh," yach ",inl);
|
||
|
|
//Print("str2 ",inm," yach ",inn);
|
||
|
|
if(permwr==true)//Коррекция записи в массивы
|
||
|
|
{
|
||
|
|
PArticles_BinTemp[inm,inn]=MBodyHorizont_Bin[inh,inl];//присваиваю параметр бинарного кода
|
||
|
|
PArticles_PriceTemp[inm,inn]=MBodyHorizont_Price[inh,inl];//присваиваю параметр цены
|
||
|
|
}
|
||
|
|
//Print(PArticles_BinTemp[inm,inn]);
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
}
|
||
|
|
if(chek==true)
|
||
|
|
{
|
||
|
|
int ino;
|
||
|
|
int inp;
|
||
|
|
int inq;
|
||
|
|
int inr;
|
||
|
|
for(inq=1; inq<36050; inq++)
|
||
|
|
{
|
||
|
|
if(PArticles_BinTemp[inq,1]==10)
|
||
|
|
{
|
||
|
|
// Print("glubina massiva Proverka ",inq);
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
for(ino=1; ino<inq; ino++)//перебор подаваемой строки
|
||
|
|
{
|
||
|
|
for(inr=1; inr<500; inr++)
|
||
|
|
{
|
||
|
|
if(PArticles_BinTemp[ino,inr]==10)
|
||
|
|
{
|
||
|
|
// Print("dlinnaa massiva Proverka ",inr);
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
Print("inr ",inr);
|
||
|
|
for(inp=1; inp<inr; inp++)//перебор подаваемой ячейки
|
||
|
|
{
|
||
|
|
|
||
|
|
Print("stroka ",ino," Znacheni ",PArticles_BinTemp[ino,inp]);
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
}
|
||
|
|
}//проверка
|
||
|
|
//-----------Сортировка собранных значений на дубли с использаванием цены и времени.Запись данных в фаил для вывидения на индикатор---------------
|
||
|
|
int ins;//Строка
|
||
|
|
int iny;//Ячейкa
|
||
|
|
int inv;//Проверка глубены
|
||
|
|
int inw;//Проверка длинны строки
|
||
|
|
int ias=0;//щётчик
|
||
|
|
int iad;
|
||
|
|
double temArr[500];
|
||
|
|
|
||
|
|
for(inv=1; inv<36050; inv++)
|
||
|
|
{
|
||
|
|
ArrayInitialize(temArr,10);
|
||
|
|
Print("Control array write PArticles_BinTemp[inv,0] ", PArticles_BinTemp[inv,0]," ",PArticles_BinTemp[inv,1]);
|
||
|
|
if(PArticles_BinTemp[inv,1]!=10)
|
||
|
|
{
|
||
|
|
for(ins=0; ins<500; ins++) //Заполняю временный массив
|
||
|
|
{
|
||
|
|
temArr[ins]=PArticles_BinTemp[inv,ins];//Присваиваю значения во временный массив для сравнения с основным массивом.
|
||
|
|
|
||
|
|
}
|
||
|
|
}
|
||
|
|
//Перебираю массив в посках дубля
|
||
|
|
for(iny=inv+1; iny<36050; ins++) // строка
|
||
|
|
{
|
||
|
|
ias=0;
|
||
|
|
for(inw=0; inw<500; inw++) //Ячейки
|
||
|
|
{
|
||
|
|
if(PArticles_BinTemp[iny,inw]==temArr[inw])//Если соответствуют элементы. Должен получить число 499
|
||
|
|
{
|
||
|
|
ias++;
|
||
|
|
|
||
|
|
}
|
||
|
|
}
|
||
|
|
//Если ias равен 499 то значения нужно удалить так как это дубль. Если не равен то пропустить
|
||
|
|
if(ias==499)
|
||
|
|
{
|
||
|
|
for(iad=0; iad<500; iad++) //Ячейки
|
||
|
|
{
|
||
|
|
PArticles_BinTemp[iny,ind]=10;//Заполняю массив числом 10
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
}//end
|
||
|
|
|
||
|
|
|
||
|
|
}//end
|
||
|
|
//--------------------------------------------------------
|
||
|
|
for(ins=1; ins<inv; ins++) //Перебераю строки в массиве
|
||
|
|
{
|
||
|
|
|
||
|
|
}
|
||
|
|
// int inaa;//длинна строки
|
||
|
|
// for(inaa=1; inaa<500; inaa++)
|
||
|
|
// {
|
||
|
|
// if(PArticles_BinTemp[ins,inaa]==10)
|
||
|
|
// {
|
||
|
|
// break;//Конец строки
|
||
|
|
// }
|
||
|
|
// }
|
||
|
|
|
||
|
|
//--------------Вариант отфильтровки массива PArticles_BinTemp на дубли с заполнением числом 10 строки дубля-----------------------------------------
|
||
|
|
|
||
|
|
|
||
|
|
//-------------------------------------------------------
|
||
|
|
// if(inw==inaa)//Если колличество элементов 2 строк равны то сравнивать на не соответствие и записыать если нет соответствия
|
||
|
|
// {
|
||
|
|
// for(iny=1; iny<inw; iny++)
|
||
|
|
// {
|
||
|
|
|
||
|
|
// if(PArticles_BinTemp[ins,iny]!=PArticles_Bin[ins,iny])//нужно найти дубли в исходном массиве//есть два типа филтрации по бинарному коду и с использаванием цены
|
||
|
|
// {
|
||
|
|
// если нет соответсвия в базе значит дописать
|
||
|
|
// int inx;//Строка
|
||
|
|
// int inz;//Ячейкa
|
||
|
|
// for(inx=1; inx<36050; inx++)
|
||
|
|
// {
|
||
|
|
// if(PArticles_Bin[inx,1]==10)
|
||
|
|
// {
|
||
|
|
// break;//глубина заполненности
|
||
|
|
// }
|
||
|
|
// }
|
||
|
|
|
||
|
|
// for(inz=0; inz<500; inz++)//дозаписываю элемент
|
||
|
|
// {
|
||
|
|
// PArticles_Bin[inx,inz]=PArticles_BinTemp[ins,inz];//дописал не существующий элемен в массиве
|
||
|
|
// PArticles_Price[inx,inz]=PArticles_PriceTemp[ins,inz];//дописал не существующий элемен в массиве
|
||
|
|
// }
|
||
|
|
// for(inz=0; inz<500; inz++)//удаляю элементы числом 10
|
||
|
|
// {
|
||
|
|
// PArticles_BinTemp[ins,inz]=10;//дописал не существующий элемен в массиве
|
||
|
|
// }
|
||
|
|
// }
|
||
|
|
// }
|
||
|
|
// }
|
||
|
|
|
||
|
|
|
||
|
|
//По завершению отбора на не соответствие в строке и одинаковом колличестве елементов в массиве остатки дозаписать
|
||
|
|
//int inab;//строка
|
||
|
|
//int inac;//ячейка
|
||
|
|
//int inad;//ячейка
|
||
|
|
//for(inab=1; inab<36050; inab++)//удаляю элементы числом 10
|
||
|
|
// {
|
||
|
|
// if(PArticles_BinTemp[inab,1]!=10)//Если не заполнена 10 ячейка в массиве то пишем
|
||
|
|
// {
|
||
|
|
// for(inac=1; inac<36050; inac++)//удаляю элементы числом 10
|
||
|
|
// {
|
||
|
|
// if(PArticles_Bin[inac,1]==10)
|
||
|
|
// {
|
||
|
|
// break;
|
||
|
|
// }
|
||
|
|
// }
|
||
|
|
|
||
|
|
// if(inac==36049)
|
||
|
|
// {
|
||
|
|
// Print(" PArticles_Bin LOADED FULL");
|
||
|
|
// Alert(" PArticles_Bin LOADED FULL");
|
||
|
|
// break;
|
||
|
|
// }
|
||
|
|
//for(inad=0; inad<500; inad++)//удаляю элементы числом 10
|
||
|
|
// {
|
||
|
|
// PArticles_Bin[inac,inad]=PArticles_BinTemp[inab,inad];
|
||
|
|
// PArticles_Price[inac,inad]=PArticles_PriceTemp[inab,inad];
|
||
|
|
|
||
|
|
// }
|
||
|
|
|
||
|
|
// }
|
||
|
|
|
||
|
|
// }
|
||
|
|
//запись данных в фаил
|
||
|
|
//-----------------------------------------------------------------------------------
|
||
|
|
|
||
|
|
file_handle23=FileOpen(FileName27,FILE_READ|FILE_WRITE|FILE_BIN);//Загрузка
|
||
|
|
if(file_handle23>0)
|
||
|
|
{
|
||
|
|
|
||
|
|
FileSeek(file_handle23,0,SEEK_CUR);
|
||
|
|
|
||
|
|
uint test=FileWriteArray(file_handle23,PArticles_Bin,0,WHOLE_ARRAY);
|
||
|
|
FileClose(file_handle23);
|
||
|
|
}
|
||
|
|
file_handle24=FileOpen(FileName28,FILE_READ|FILE_WRITE|FILE_BIN);//Загрузка
|
||
|
|
if(file_handle24>0)
|
||
|
|
{
|
||
|
|
|
||
|
|
FileSeek(file_handle24,0,SEEK_CUR);
|
||
|
|
|
||
|
|
uint test=FileWriteArray(file_handle24,PArticles_Price,0,WHOLE_ARRAY);
|
||
|
|
FileClose(file_handle24);
|
||
|
|
}
|
||
|
|
//---
|
||
|
|
}//end
|
||
|
|
|
||
|
|
//Проверка заполненности и запись в фаил,последний этап отслеживания появление элемента в нутри рынка
|
||
|
|
if(chek1==true)
|
||
|
|
{
|
||
|
|
int ino;
|
||
|
|
int inp;
|
||
|
|
int inq;
|
||
|
|
int inr;
|
||
|
|
for(inq=1; inq<36050; inq++)
|
||
|
|
{
|
||
|
|
if(PArticles_Bin[inq,1]==10)
|
||
|
|
{
|
||
|
|
Print("glubina massiva BEZ DUBLEI ",inq);
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
for(ino=1; ino<inq; ino++)//перебор подаваемой строки
|
||
|
|
{
|
||
|
|
for(inr=1; inr<500; inr++)
|
||
|
|
{
|
||
|
|
if(PArticles_Bin[ino,inr]==10)
|
||
|
|
{
|
||
|
|
// Print("dlinnaa massiva Proverka ",inr);
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
Print("inr ",inr);
|
||
|
|
for(inp=1; inp<inr; inp++)//перебор подаваемой ячейки
|
||
|
|
{
|
||
|
|
|
||
|
|
Print("stroka ",ino," Znacheni ",PArticles_Bin[ino,inp]);
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
}
|
||
|
|
}//проверка
|
||
|
|
//---
|
||
|
|
return(INIT_SUCCEEDED);
|
||
|
|
}
|
||
|
|
//+------------------------------------------------------------------+
|
||
|
|
//| Expert deinitialization function |
|
||
|
|
//+------------------------------------------------------------------+
|
||
|
|
void OnDeinit(const int reason)
|
||
|
|
{
|
||
|
|
//---
|
||
|
|
|
||
|
|
}
|
||
|
|
//+------------------------------------------------------------------+
|
||
|
|
//| Expert tick function |
|
||
|
|
//+------------------------------------------------------------------+
|
||
|
|
void OnTick()
|
||
|
|
{
|
||
|
|
//---Обьеденение в годовой массив
|
||
|
|
}
|
||
|
|
//+------------------------------------------------------------------+
|
||
|
|
|
||
|
|
|
||
|
|
//+------------------------------------------------------------------+
|