Название скрипта: Genom_V_01 Краткое описание: Настоящий скрипт создается с целью получения статистических данных о структуре движения цены внутри временного периода (день, неделя, месяц). Для решения задачи за временной период будет строится сетка по определенному алгоритму, каждое деление сетки - уровень. При пересечении ценой уровня происходит фиксация данного факта. Уровень фиксируется только если до этого был зафиксирован любой иной уровень. Если на одном баре больше чем одно касание, то берется ближайший уровень к цене закрытия. Данные собираются в файл в виде чисел - получается некий геном. После сбора данных происходит их анализ по определенным критериям и новые полученные данные сохраняются уже в другой файл. Настройки: extern string text1 = "1.0 Настройка индикатора"; TF=1440; // по какому тайм фрейму будем строить структуру индикатора Use_iDeltaPrice=1;// 0 - не использовать индикатор для расчета верхней и нижней точки; 1 - испольховать индикатор для расчета верхней и нижней точки High_Point=1000;// если Use_iDeltaPrice!=0, то берем указанное отклонения для расчета точек по формуле Low_Point=1000;// если Use_iDeltaPrice!=0, то берем указанное отклонения для расчета точек по формуле Center_Time=50; // Задаем процент смещения разделителя времени в структуре extern string text2 = "1.1 Настройка уровней индикатора Up"; Procent_01_Up=23,6 ;//Задаем процент от расчетной структуры Procent_02_Up=38,2 ;//Задаем процент от расчетной структуры Procent_03_Up=50 ;//Задаем процент от расчетной структуры Procent_04_Up=61,8 ;//Задаем процент от расчетной структуры Procent_05_Up=76,4 ;//Задаем процент от расчетной структуры Procent_06_Up=100 ;//Задаем процент от расчетной структуры Procent_07_Up=123,6 ;//Задаем процент от расчетной структуры Procent_08_Up=138,2 ;//Задаем процент от расчетной структуры Procent_09_Up=150 ;//Задаем процент от расчетной структуры Procent_10_Up=161,8 ;//Задаем процент от расчетной структуры extern string text3 = "1.1 Настройка уровней индикатора Down"; Procent_01_Down=23,6 ;//Задаем процент от расчетной структуры Procent_02_Down=38,2 ;//Задаем процент от расчетной структуры Procent_03_Down=50 ;//Задаем процент от расчетной структуры Procent_04_Down=61,8 ;//Задаем процент от расчетной структуры Procent_05_Down=76,4 ;//Задаем процент от расчетной структуры Procent_06_Down=100 ;//Задаем процент от расчетной структуры Procent_07_Down=123,6 ;//Задаем процент от расчетной структуры Procent_08_Down=138,2 ;//Задаем процент от расчетной структуры Procent_09_Down=150 ;//Задаем процент от расчетной структуры Procent_10_Down=161,8 ;//Задаем процент от расчетной структуры extern string text3 = "2.0 Настройка периода обработки данных"; TF_Chart=15;// С этого чарта будем брать даные для аанализа касания Time_Start=ДД.ММ.ГГГГ;// Начало вычисления Time_Stop=ДД.ММ.ГГГГ;// Окончание вычисления extern string text4 = "3.0 Настройка работы с обработанными данными"; extern int Tree="";// указываем путь, где будет создана папка с файлами, если не заполнить, то в папке по умолчанию extern int Analiz=1;// если 1, то производим анализ, если 0, то не производим extern int Clear=1;// если 1, то удаляем все вспомогательные файлы Логика: Для построения временных отрезков необходимо расчитать точки начала и окончания тайм фрейма по которому будем строить структуру индикатора, на тайм фрейме на котором будет отображаться индикатор, тайм фрейм построения всегда больше тайм врейма отображения, но именно на тайм фрейме отображения происходят расчеты относительно тайм фрейма для построения. Этап 1 Center_Line_Point - запрашиваем цену открытия бара выбранного тайм фрейма Center_Time - 50% значение времени между Start_Point и Stop_Point (12:00 если расчитываем по дню) Start_Point - запрашиваем время начала построения для выбранного тайм фрейма (текущего дня 00:00 - для дневки) Stop_Point - запрашиваем время окончания построения для выбранного тайм фрейма (следующего за текущем днем 00:00 - для дневки) Если Use_iDeltaPrice==0, то DeltaPrice_High_Point=Center_Line_Point+High_Point*Point, DeltaPrice_Low_Point=Center_Line_Point-Low_Point*Point Если Use_iDeltaPrice==1, то запрашиваем DeltaPrice с индикатора, DeltaPrice_High_Point=Center_Line_Point+DeltaPrice*Point, DeltaPrice_Low_Point=Center_Line_Point-DeltaPrice*Point DeltaPrice = iCustom(); - простую логику индикатора нужно будет интегрировать в скрипт. Этап 2 Делем верхнюю и нижнюю область на проценыты - проценты могут задаватся пользователем. Procent - 1% Procent=DeltaPrice*Point/100 Level_01_Up=Center_Line_Point+Procent_01_Up*Procent Level_02_Up=Center_Line_Point+Procent_02_Up*Procent Level_03_Up=Center_Line_Point+Procent_03_Up*Procent Level_04_Up=Center_Line_Point+Procent_04_Up*Procent Level_05_Up=Center_Line_Point+Procent_05_Up*Procent Level_06_Up=Center_Line_Point+Procent_06_Up*Procent Level_07_Up=Center_Line_Point+Procent_07_Up*Procent Level_08_Up=Center_Line_Point+Procent_08_Up*Procent Level_09_Up=Center_Line_Point+Procent_09_Up*Procent Level_10_Up=Center_Line_Point+Procent_10_Up*Procent Level_01_Down=Center_Line_Point-Procent_01_Down*Procent Level_02_Down=Center_Line_Point-Procent_02_Down*Procent Level_03_Down=Center_Line_Point-Procent_03_Down*Procent Level_04_Down=Center_Line_Point-Procent_04_Down*Procent Level_05_Down=Center_Line_Point-Procent_05_Down*Procent Level_06_Down=Center_Line_Point-Procent_06_Down*Procent Level_07_Down=Center_Line_Point-Procent_07_Down*Procent Level_08_Down=Center_Line_Point-Procent_08_Down*Procent Level_09_Down=Center_Line_Point-Procent_09_Down*Procent Level_10_Down=Center_Line_Point-Procent_10_Down*Procent Этап 3 Формируем папку по указанному пути из внешней переменной Tree, название папки имеет следующий вид Genom_НАЗВАНИЕВАЛЮТНОЙПАРЫ_TF_TF_Chart_НомерПоПорядку (перед формированием папки необходимо проверить на наличие похожей, и если она есть до добавить следующий порядковый номер к названию папки, начать следует с _00) После построения структуры фиксируем касание каждого уровня ценой, при этом касание фиксируется только если прошлое касание происходило не на уровне текущего касания (не могут идти подряд два уровня). Если на одном баре больше чем одно касание, то берется ближайший уровень к цене закрытия. Производим статистический анализ полученых данных Статистические данные по следующим условиям (первый уровень после 0), если первая часть условия верно то ставится "1", если вторая часть верна "1": - Data_01: Если первый уровень "+", то второй "-" - Data_02: Если первый уровень "-", то второй "+" - Data_03: Если первый уровень "+", то последний "-" - Data_04: Если первый уровень "-", то последний "+" - Data_05: Если первый уровень "0", то второй "-" - Data_06: Если первый уровень "0", то второй "+" - Data_07: Если до Center_Time последний уровень "-", то после Center_Time был "+" - Data_08: Если до Center_Time последний уровень "+", то после Center_Time был "-" - Data_09: Если до Center_Time последний уровень "-", то после Center_Time последний "+" - Data_10: Если до Center_Time последний уровень "+", то после Center_Time последний "-" Результаты вычисления (геном) сохраняем в файл csv, структура файла: Первая строка содержит информацию:НАЗВАНИЕВАЛЮТНОЙПАРЫ_TF_TF_Chart_НомерПоПорядку Time_Start Time_Stop Вторая строка является заголовком: Time;"Data_01"-"Data_10"; "Геном" Пример 3 и последующих строк: ДД.ММ.ГГГГ; |; 1;0; |; 0;1; |; 1;0; |; 1;0; |; 1;1; |; 1;0; |; 0;1; |; 1;0; |; 1;0; |; 1;1; |; 0;Level_[n];Level_[n]; | ; 0;Level_[n];[Center_Time];Level_[n] Следующая строка суммирует показатели столбцов "Data_01"-"Data_10" Название файла: Genom_НАЗВАНИЕВАЛЮТНОЙПАРЫ_TF_TF_Chart_НомерПоПорядку_Statistics Этап 4 Анализируем собранные данные на этапе 3. 1. Записываем в файл построчно итоговые статистические данные "Data_01"-"Data_10", при этом вычисляем и процент от всех и от первой части условия, которые записываем через ";" 2. Ищем идеальное совпадение - вычисляем, сколько и каких геномов имеют полное совпадение и их процент от всех. Структурируем геномы по убыванию совпадений, при этом записываем сам геном и через "|;" его количество "|;" и процент от всех. Первая строка содержит информацию:НАЗВАНИЕВАЛЮТНОЙПАРЫ_TF_TF_Chart_НомерПоПорядку Time_Start Time_Stop Название файла: Genom_НАЗВАНИЕВАЛЮТНОЙПАРЫ_TF_TF_Chart_НомерПоПорядку_Analiz Этап 5 Информируем пользователя о завершении работы.