extern string text1 = "1.0 Настройка средней скользящей"; extern string text2 = "1.1 Настройка тайм фрейма"; extern int TF_MA=1440; // по какому тайм фрейму будем строить MA extern string text3 = "1.2 Настройка периода усреднения"; extern int Start_Period=1;//период MA начала перебора extern int Stop_Period=128;//период MA окончания перебора extern string text4 = "1.3 Настройка цены усреднения"; extern int Start_Price=0;//цена начала перебора для расчета MA extern int Stop_Price=6;//цена окончания перебора для расчета MA extern string text5 = "1.4 Настройка метода усреднения"; extern int Start_Metod=0;//метод усреднения начала перебора для расчета MA extern int Stop_Metod=3;//метод усреднения окончания перебора для расчета MA extern string text5 = "1.5 Настройка уровня отклонения от МА"; extern int Levl_Start=-500; отклонение от средней скользящей вверх extern int Levl_Stop=500; отклонение от средней скользящей вниз extern int Levl_Step=100; шаг перебора extern string text6 = "1.6 Настройка сдвига во врмени скользящей средней"; extern int Shift_Start=0;//начальное значение сдвига средней extern int Shift_Stop=0;//окончательное значение сдвига средней extern string text6 = "2.0 Настройка периода обработки данных"; extern int TF_Chart=0;// с какого тайм фрейма будем выгружать котировки extern int Pips=10;// переменная используемая в формулах, задается в целых числах умножается на Point extern int Time_Start=0;// время начала за которое будут обработаны данные с точностью до дня extern int Time_Stop=0;// время начала за которое будут обработаны данные с точностью до дня extern int ShowMA=0;// если 1, то накладывает на график все МА за проход, если 0, то не работает. (Если обязательно надо накладывать визуально, то параметр можно не использовать) extern int Tree="";// указываем путь, где будет создана папка с файлами, если не заполнить, то в папке по умолчанию extern int Analiz=1;// если 1, то производим анализ, если 0, то не производим extern int Clear=1;// если 1, то удаляем все вспомогательные файлы Этап 1 Формируем папку по указанному пути из внешней переменной Tree, название папки имеет следующий вид НАЗВАНИЕВАЛЮТНОЙПАРЫ_TF_Chart_TF_MA Создаем опорный файл - куда сбрасываем информацию о настройках скрипта название Setup.txt Выгружаем котировки с TF_Chart за период с Time_Start по Time_Stop - НАЗВАНИЕВАЛЮТНОЙПАРЫ_TF_Chart.cvs Этап 2 Определяем текущее значение iMA: Period_MA - период MA, который вычисляется по порядку Price_MA - цена усреднения MA, которая вычисляется по порядку Metod_MA - метод усреднения MA, который вычисляется по порядку Levl_MA - уровень отклонения от MA, который вычисляется по порядку Shift_MA - смещение МА Расчет Levl_MA iMA+|Levl_MA*Point| Накладываем на график среднюю скользящую с выбранными параметрами Записываем данные индикатора MA на каждом баре TF_Chart в файл Period_MA_Price_MA_Metod_MA_Levl_MA_Shift_MA.cvs , в котором количество строк такое же как и в файле НАЗВАНИЕВАЛЮТНОЙПАРЫ_TF_Chart.cvs Переходим к следующему значению и повторяем наложение МА и формирование файла. Этап 3 Если Analiz=1, то Производим анализ полученных данных для каждого прохода, полученные данные записываем через ";" Последнии строки в файле содержат итоговые показатели, и рассчитывается отдельно Формулы для первой и последующих строк: Z_all Z_+1 + Z_-1 + Z_0 Z_+1 If (L>MA) 1 Z_-1 IF (H=MA>=L) 1 Y_+1 IF (O>MA>=L) 1 Y_-1 IF (OMA>=L && C>=MA) 1 Y_+1_Л IF (O>MA>=L && CMA) 1 Y_+1_И_А_Pips_1 IF (O>MA>=L && C>=MA && (L+Pips>=MA) 1 Y_+1_И_У_Pips_1 IF (O>MA>=L && C>=MA && (L+PipsMA)) 1 Z_+1_П_Pips_2 IF (L>MAC && H+Pips>=MA) 1 значение Pips надо перевести в пункты, умножив на Point Формулы предпоследней строки: Z_all Сумма столбцов Z_+1 Сумма столбцов Z_-1 Сумма столбцов Z_0 Сумма столбцов Y_+1 Сумма столбцов Y_-1 Сумма столбцов Y_+1_И Сумма столбцов Y_+1_Л Сумма столбцов Y_-1_И Сумма столбцов Y_-1_Л Сумма столбцов Y_+1_И_А_Pips_1 Сумма столбцов Y_+1_И_У_Pips_1 Сумма столбцов Y_-1_И_А_Pips_1 Сумма столбцов Y_-1_И_У_Pips_1 Сумма столбцов Z_+1_П_Pips_2 Сумма столбцов Z_-1_П_Pips_2 Сумма столбцов Формулы последней строки: Z_all =Z_all Z_+1_%_от_Z_ALL =Z_+1/Z_All*100 Z_-1_%_от_Z_ALL =Z_-1/Z_All*100 Z_0_%_от_Z_ALL =Z_0/Z_All*100 Y_+1_%_от_Z_0 =Y_+1/Z_0*100 Y_-1_%_от_Z_0 =Y_-1/Z_0*100 Y_+1_И_%_от_Y+1 =Y_+1_И/Y_+1*100 Y_+1_Л_%_от_Y+1 =Y_+1_Л/Y_+1*100 Y_-1_И_%_от_Y-1 =Y_-1_И/Y_-1*100 Y_-1_Л_%_от_Y+1 =Y_-1_Л/Y_-1*100 Y_+1_И_А_Pips_1_%_от_Y_+1_И =Y_+1_И_А_Pips_1/Y_+1_И*100 Y_+1_И_У_Pips_1_%_от_Y_+1_И =Y_+1_И_У_Pips_1/Y_+1_И*100 Y_-1_И_А_Pips_1_%_от_Y_-1_И =Y_-1_И_А_Pips_1/Y_-1_И*100 Y_-1_И_У_Pips_1_%_от_Y_-1_И =Y_-1_И_У_Pips_1/Y_-1_И*100 Y_+1_И_%_от_Z_0 =Y_+1_И/Z_0*100 Y_+1_Л_%_от_Z_0 =Y_+1_Л/Z_0*100 Y_-1_И_%_от_Z_0 =Y_-1_И/Z_0*100 Y_-1_Л_%_от_Z_0 =Y_-1_Л/Z_0*100 Y_+1_И_А_Pips_1_%_от_Z_0 =Y_+1_И_А_Pips_1/Z_0*100 Y_+1_И_У_Pips_1_%_от_Z_0 =Y_+1_И_У_Pips_1/Z_0*100 Y_-1_И_А_Pips_1_%_от_Z_ 0 =Y_-1_И_А_Pips_1/Z_0*100 Y_-1_И_У_Pips_1_%_от_Z_0 =Y_-1_И_У_Pips_1/Z_0*100 Z_+1_П_Pips_2_%_от_Z_+1 =Z_+1_П_Pips_2/Z_+1*100 Z_-1_П_Pips_2_%_от_Z_-1 =Z_-1_П_Pips_2/Z_-1*100 Корреляция_Сопр_Z_+1_П_Pips_2_И_Z_-1_П_Pips_2 =Z_+1_П_Pips_2/Z_-1_П_Pips_2 СОПР_ALL =(Z_+1_П_Pips_2+Z_-1_П_Pips_2+Y_+1_И+Y_-1_И)/Z_ALL*100 Корреляция_ALL =(Z_+1_П_Pips_2+Y_+1_И)/(Y_-1_И+Z_-1_П_Pips_2) СОПР_+АП =(Z_+1_П_Pips_2+Y_+1_И_A_Pips_1)/(Z_+1+Y_+1)*100 СОПР_-АП =(Z_-1_П_Pips_2+Y_-1_И_A_Pips_1)/(Z_-1+Y_-1)*100 СОПР_+АП_-АП_Корреляция =СОПР_+АП/СОПР_-АП СУММА(Y_+1_И_и_Y_-1_И) =Y_+1_И+Y_-1_И СУММА(Y_+1_И_А_Pips_1_и_Y_-1_И_А_Pips_1) =Y_+1_И_А_Pips_1+Y_-1_И_А_Pips_1 СУММА(Y_+1_И_и_Y_-1_И)_%_от_Z_0 =СУММА(Y_+1_И_и_Y_-1_И)/Z_0*100 СУММА(Y_+1_И_А_Pips_1_и_Y_-1_И_А_Pips_1)_%_от_Z_0 =СУММА(Y_+1_И_А_Pips_1_и_Y_-1_И_А_Pips_1)/Z_0*100 Сопр_Y_+1_И =Y_+1_И/(Z_+1+Y_+1)*100 Сопр_Y_-1_И =Y_+1_И/(Z_-1+Y_-1)*100 Корреляция_Сопр_Y_+1_И_и_Y_-1_И =Сопр_Y_+1_И/Сопр_Y_-1_И Сопр_Y_+1_И_A_Pips_1 =Y_+1_И_A_Pips_1/(Z_+1+Y_+1)*100 Сопр_Y_-1_И_A_Pips_1 =Y_+1_И_A_Pips_1/(Z_-1+Y_-1)*100 Корреляция_Сопр_Y_+1_И_A_Pips_1_и_Y_-1_И_A_Pips_1 =Сопр_Y_+1_И_A_Pips_1/Сопр_Y_-1_И_A_Pips_1 СУММА(Z_+1_П_Pips_2_и_Z_+1_П_Pips_2) =Z_+1_П_Pips_2_+_Z_+1_П_Pips_2 СУММА(Z_+1_П_Pips_2_и_Z_+1_П_Pips_2)_%_от_Z_+1_и_Z_-1 =СУММА(Z_+1_П_Pips_2_и_Z_+1_П_Pips_2)/(Z_+1_+_Z_-1)*100 СУММА(Z_+1_П_Pips_2_и_Z_+1_П_Pips_2_и_Y_+1_И_и_Y_-1_И) =СУММА(Z_+1_П_Pips_2_и_Z_+1_П_Pips_2)+СУММА(Y_+1_И_и_Y_-1_И) СУММА(Z_+1_П_Pips_2_и_Z_+1_П_Pips_2_и_Y_+1_И_и_Y_-1_И)_%_от_Z_all =(СУММА(Z_+1_П_Pips_2_и_Z_+1_П_Pips_2)+СУММА(Y_+1_И_и_Y_-1_И))/Z_all*100 СУММА(Z_+1_П_Pips_2_и_Z_+1_П_Pips_2_и_Y_+1_И_A_Pips_1_и_Y_-1_И_A_Pips_1) =СУММА(Z_+1_П_Pips_2_и_Z_+1_П_Pips_2)+СУММА(Y_+1_И_А_Pips_1_и_Y_-1_И_А_Pips_1) СУММА(Z_+1_П_Pips_2_и_Z_+1_П_Pips_2_и_Y_+1_И_A_Pips_1_и_Y_-1_И_A_Pips_1)_%_от_Z_all =(СУММА(Z_+1_П_Pips_2_и_Z_+1_П_Pips_2)+СУММА(Y_+1_И_А_Pips_1_и_Y_-1_И_А_Pips_1))/Z_all*100 Сопр_Z_+1_П_Pips_2 =(Z_+1_П_Pips_2+Y_+1)/(Z_+1+Y_+1)*100 Сопр_Z_-1_П_Pips_2 =(Z_-1_П_Pips_2+Y_-1)/(Z_-1+Y_-1)*100 Сопр_Z_+1_П_Pips_2_и_Сопр_Y_+1_И =(Z_+1_П_Pips_2+Y_+1_И)/(Z_+1+Y_+1)*100 Сопр_Z_-1_П_Pips_2_и_Сопр_Y_-1_И =(Z_-1_П_Pips_2+Y_-1_И)/(Z_-1+Y_-1)*100 K_1 =1-Сопр_Y_+1_И/Сопр_Y_-1_И K_2 =1-Сопр_Y_+1_И_A_Pips_1/Сопр_Y_-1_И_A_Pips_1 K_3 =1-Сопр_Z_+1_П_Pips_2/Сопр_Z_-1_П_Pips_2 К_4 =1-Сопр_Z_+1_П_Pips_2_и_Сопр_Y_+1_И/Сопр_Z_-1_П_Pips_2_и_Сопр_Y_-1_И К_5 =1-Сопр_Z_+1_П_Pips_2_и_Сопр_Y_+1_И_A_Pips_1/Сопр_Z_-1_П_Pips_2_и_Сопр_Y_-1_И_A_Pips_1 Создаем файл результатов анализа - Analiz_Period_MA_Price_MA_Metod_MA_Levl_MA_Shift_MA.cvs переходим к следующем текстовому файлу (количество файлов можно взять из файлы Setup.txt) Этап 4 Считываем данные из последних строк всех файлов Analiz_Period_MA_Price_MA_Metod_MA_Levl_MA_Shift_MA.cvs и создаем сводный файл: Первая строка содержит информацию о настройках из файла Setup.txt Вторая строка содержит название переменной, а последующие строки показатели переменных из файлов Analiz_Period_MA_Price_MA_Metod_MA_Levl_MA_Shift_MA.cvs № П.П.; Period_MA; Price_MA; Metod_MA; Levl_MA; Shift_MA Z_all; Z_+1_%_от_Z_ALL; Z_-1_%_от_Z_ALL; Z_0_%_от_Z_ALL; Y_+1_%_от_Z_0; Y_-1_%_от_Z_0; Y_+1_И_%_от_Y+1; Y_+1_Л_%_от_Y+1; Y_-1_И_%_от_Y-1; Y_-1_Л_%_от_Y+1; Y_+1_И_А_Pips_1_%_от_Y_+1_И; Y_+1_И_У_Pips_1_%_от_Y_+1_И; Y_-1_И_А_Pips_1_%_от_Y_-1_И; Y_-1_И_У_Pips_1_%_от_Y_-1_И; Y_+1_И_%_от_Z_0; Y_+1_Л_%_от_Z_0; Y_-1_И_%_от_Z_0; Y_-1_Л_%_от_Z_0; Y_+1_И_А_Pips_1_%_от_Z_0; Y_+1_И_У_Pips_1_%_от_Z_0; Y_-1_И_А_Pips_1_%_от_Z_0; Y_-1_И_У_Pips_1_%_от_Z_0; Z_+1_П_Pips_2_%_от_Z_+1; Z_-1_П_Pips_2_%_от_Z_-1; Корреляция_Сопр_Z_+1_П_Pips_2_И_Z_-1_П_Pips_2; СОПР_ALL; Корреляция_ALL; СОПР_+АП; СОПР_-АП; СОПР_+АП_-АП_Корреляция; СУММА(Y_+1_И_и_Y_-1_И); СУММА(Y_+1_И_А_Pips_1_и_Y_-1_И_А_Pips_1); СУММА(Y_+1_И_и_Y_-1_И)_%_от_Z_0; СУММА(Y_+1_И_А_Pips_1_и_Y_-1_И_А_Pips_1)_%_от_Z_0; Сопр_Y_+1_И; Сопр_Y_-1_И; Корреляция_Сопр_Y_+1_И_и_Y_-1_И; Сопр_Y_+1_И_A_Pips_1; Сопр_Y_-1_И_A_Pips_1; Корреляция_Сопр_Y_+1_И_A_Pips_1_и_Y_-1_И_A_Pips_1; СУММА(Z_+1_П_Pips_2_и_Z_+1_П_Pips_2); СУММА(Z_+1_П_Pips_2_и_Z_+1_П_Pips_2)_%_от_Z_+1_и_Z_-1; СУММА(Z_+1_П_Pips_2_и_Z_+1_П_Pips_2_и_Y_+1_И_и_Y_-1_И); СУММА(Z_+1_П_Pips_2_и_Z_+1_П_Pips_2_и_Y_+1_И_и_Y_-1_И)_%_от_Z_all; СУММА(Z_+1_П_Pips_2_и_Z_+1_П_Pips_2_и_Y_+1_И_A_Pips_1_и_Y_-1_И_A_Pips_1); СУММА(Z_+1_П_Pips_2_и_Z_+1_П_Pips_2_и_Y_+1_И_A_Pips_1_и_Y_-1_И_A_Pips_1)_%_от_Z_all; Сопр_Z_+1_П_Pips_2; Сопр_Z_-1_П_Pips_2; Сопр_Z_+1_П_Pips_2_и_Сопр_Y_+1_И; Сопр_Z_-1_П_Pips_2_и_Сопр_Y_-1_И; K_1; K_2; K_3; К_4; К_5; результаты записываем в Analiz_НАЗВАНИЕВАЛЮТНОЙПАРЫ_TF_Chart_TF_All.cvs Этап 5 Уведомляем пользователя о проделанной работе Если extern int Clear=1, то удаляем все вспомогательные файлы, кроме Analiz_НАЗВАНИЕВАЛЮТНОЙПАРЫ_TF_Chart_TF_All.cvs