|
Главная | Правила | Регистрация | Дневники | Справка | Пользователи | Календарь | Поиск | Сообщения за день | Все разделы прочитаны |
|
Опции темы | Опции просмотра |
16.10.2011, 04:48 | #1 (permalink) |
Новичок
Регистрация: 16.10.2011
Сообщений: 7
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 444
|
Как посчитать все итерации в циклах?
-Конечно, язык MQL4 отличается от C++, но в целом синтаксис и базовая часть идентичны, и поскольку не было подходящей ветки, я запостился именно здесь. Вопрос не простой: есть несколько циклов - это число постоянное один цикл вложен в другой и так далее по цепочке для каждого из этих циклов известны: минимальное значение, максимальное значение, шаг, значение, с которого следует продолжить цикл (т.е. оно срабатывает только один раз при старте программы с этими циклами) i=0; for (c4=min[4]; c4<=lev[4]; c4+=st[4]) //L4 { for (c3=min[3]; c3<=lev[3]; c3+=st[3]) //L3 { for (c2=min[2]; c2<=lev[2]; c2+=st[2]) //L2 { for (c1=min[1]; c1<=lev[1]; c1+=st[1]) i++; //L1 } } } - чему будет равняться переменная i, если при старте первый раз каждый цикл будет начинаться не с начала, а с некоторого значения, входящего в диапазон работы цикла вот кусок рабочего кода (переменные с префиксом _con 0 -это указатель начала работы цикла только первый раз!): * * * начало фрагмента кода * * * i=0; Print (""); Print (" * * * THE START OF TRACE * * *"); Print (""); if (AUTOCALC==1 && time_point<1) Print ("Ждите значения времени проведения тестирования для одной точки входа в тренд..."); //^^^^^^^^^^^^^^^^^^^^^^^^^^^^ НАЧАЛО ПЕРЕБОРА ЗНАЧЕНИЙ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ for (TRADE_LAG=TRADE_LAG_MIN; TRADE_LAG<=TRADE_LAG_MAX; TRADE_LAG+=TRADE_LAG_STEP) {if (TRADE_LAG_con>TRADE_LAG_MIN) {TRADE_LAG=TRADE_LAG_con; TRADE_LAG_con=-2000;} for (SILENCE_TCK=SILENCE_TCK_MIN; SILENCE_TCK<=SILENCE_TCK_MAX; SILENCE_TCK+=SILENCE_TCK_STEP) {if (SILENCE_TCK_con>SILENCE_TCK_MIN) {SILENCE_TCK=SILENCE_TCK_con; SILENCE_TCK_con=-2000;} for (BASE_METRIC_LENGTH=BASE_METRIC_LENGTH_MIN; BASE_METRIC_LENGTH<=BASE_METRIC_LENGTH_MAX; BASE_METRIC_LENGTH+=BASE_METRIC_LENGTH_STEP) {if (BASE_METRIC_LENGTH_con>BASE_METRIC_LENGTH_MIN) {BASE_METRIC_LENGTH=BASE_METRIC_LENGTH_con; BASE_METRIC_LENGTH_con=-2000;} if (TRADE_LAG==2 && BASE_METRIC_LENGTH>SILENCE_TCK) {OLD_BML=BASE_METRIC_LENGTH; BASE_METRIC_LENGTH=SILENCE_TCK;} else OLD_BML=-1; for (UMDC_USE=UMDC_USE_MIN; UMDC_USE<=UMDC_USE_MAX; UMDC_USE++) {if (UMDC_USE_con>UMDC_USE_MIN) {UMDC_USE=UMDC_USE_con; UMDC_USE_con=-2000;} for (USE_FM=USE_FM_MIN; USE_FM<=USE_FM_MAX; USE_FM++) {if (USE_FM_con>USE_FM_MIN) {USE_FM=USE_FM_con; USE_FM_con=-2000;} if (USE_FM==1) {WALL_INACCURACY_MAX0=WALL_INACCURACY_MAX; MINIMAL_PROFIT_METRIC_PIPS_MAX0=MINIMAL_PROFIT_MET RIC_PIPS_MAX; METRIC_INACCURACY_MAX0=METRIC_INACCURACY_MAX;} else {WALL_INACCURACY_MAX0=WALL_INACCURACY_MIN; MINIMAL_PROFIT_METRIC_PIPS_MAX0=MINIMAL_PROFIT_MET RIC_PIPS_MIN; METRIC_INACCURACY_MAX0=METRIC_INACCURACY_MIN;} for (USE_POINT_METRIC=USE_POINT_METRIC_MIN; USE_POINT_METRIC<=USE_POINT_METRIC_MAX; USE_POINT_METRIC++) {if (USE_POINT_METRIC_con>USE_POINT_METRIC_MIN) {USE_POINT_METRIC=USE_POINT_METRIC_con; USE_POINT_METRIC_con=-2000;} for (MINIMAL_PROFIT=MINIMAL_PROFIT_MIN; MINIMAL_PROFIT<=MINIMAL_PROFIT_MAX; MINIMAL_PROFIT+=MINIMAL_PROFIT_STEP) {if (MINIMAL_PROFIT_con>MINIMAL_PROFIT_MIN) {MINIMAL_PROFIT=MINIMAL_PROFIT_con; MINIMAL_PROFIT_con=-2000;} //----------------------------- возможно следующие 3 цикла будут пропущены при USE_FM==0 ------------------------------------------------ for (WALL_INACCURACY=WALL_INACCURACY_MIN; WALL_INACCURACY<=WALL_INACCURACY_MAX0; WALL_INACCURACY+=WALL_INACCURACY_STEP) {if (WALL_INACCURACY_con>WALL_INACCURACY_MIN) {WALL_INACCURACY=WALL_INACCURACY_con; WALL_INACCURACY_con=-2000;} for (MPP=MINIMAL_PROFIT_METRIC_PIPS_MIN; MPP<=MINIMAL_PROFIT_METRIC_PIPS_MAX0; MPP+=MINIMAL_PROFIT_METRIC_PIPS_STEP) {if (MINIMAL_PROFIT_METRIC_PIPS_con>MINIMAL_PROFIT_MET RIC_PIPS_MIN) {MPP=MINIMAL_PROFIT_METRIC_PIPS_con; MINIMAL_PROFIT_METRIC_PIPS_con=-2000;} for (METRIC_INACCURACY=METRIC_INACCURACY_MIN; METRIC_INACCURACY<=METRIC_INACCURACY_MAX0; METRIC_INACCURACY+=METRIC_INACCURACY_STEP) {if (METRIC_INACCURACY_con>METRIC_INACCURACY_MIN) {METRIC_INACCURACY=METRIC_INACCURACY_con; METRIC_INACCURACY_con=-2000;} //----------------------------- конец возможного пропуска ------------------------------------------------------------------------------- for (ORDER_FILTER=ORDER_FILTER_MIN; ORDER_FILTER<=ORDER_FILTER_MAX; ORDER_FILTER+=ORDER_FILTER_STEP) {if (ORDER_FILTER_con>ORDER_FILTER_MIN) {ORDER_FILTER=ORDER_FILTER_con; ORDER_FILTER_con=-2000;} if ((!FILTER_OFF && ORDER_FILTER==-1) || ORDER_FILTER_MAX==-1) {ORDER_FILTER=-20; FILTER_OFF=true;} else if (FILTER_OFF) {ORDER_FILTER=0; FILTER_OFF=false;} for (REVERSE_USE=REVERSE_USE_MIN; REVERSE_USE<=REVERSE_USE_MAX; REVERSE_USE++) {if (REVERSE_USE_con>REVERSE_USE_MIN) {REVERSE_USE=REVERSE_USE_con; REVERSE_USE_con=-2000;} for (TCZ=TCZ_MIN; TCZ<=TCZ_MAX; TCZ+=TCZ_STEP) {if (TCZ_con>TCZ_MIN) {TCZ=TCZ_con; TCZ_con=-2000;} for (MINIMAL_TRADE_SPEED=MINIMAL_TRADE_SPEED_MIN; MINIMAL_TRADE_SPEED<=MINIMAL_TRADE_SPEED_MAX; MINIMAL_TRADE_SPEED+=MINIMAL_TRADE_SPEED_STEP) {if (MINIMAL_TRADE_SPEED_con>MINIMAL_TRADE_SPEED_MIN) {MINIMAL_TRADE_SPEED=MINIMAL_TRADE_SPEED_con; MINIMAL_TRADE_SPEED_con=-2000;} for (MAXIMAL_TRADE_SPEED=MAXIMAL_TRADE_SPEED_MIN; MAXIMAL_TRADE_SPEED<=MAXIMAL_TRADE_SPEED_MAX; MAXIMAL_TRADE_SPEED+=MAXIMAL_TRADE_SPEED_STEP) {if (MAXIMAL_TRADE_SPEED_con>MAXIMAL_TRADE_SPEED_MIN) {MAXIMAL_TRADE_SPEED=MAXIMAL_TRADE_SPEED_con; MAXIMAL_TRADE_SPEED_con=-2000;} for (TRAILING_STOP_FIRST=TRAILING_STOP_FIRST_MIN; TRAILING_STOP_FIRST<=TRAILING_STOP_FIRST_MAX; TRAILING_STOP_FIRST+=TRAILING_STOP_FIRST_STEP) {if (TRAILING_STOP_FIRST_con>TRAILING_STOP_FIRST_MIN) {TRAILING_STOP_FIRST=TRAILING_STOP_FIRST_con; TRAILING_STOP_FIRST_con=-2000;} T_SFW=TRAILING_STOP_FIRST*(1+FIVE_DIGITS*9); for (TRAILING_STOP=TRAILING_STOP_MIN; TRAILING_STOP<=TRAILING_STOP_MAX; TRAILING_STOP+=TRAILING_STOP_STEP) {if (TRAILING_STOP_con>TRAILING_STOP_MIN) {TRAILING_STOP=TRAILING_STOP_con; TRAILING_STOP_con=-2000;} T_SFT=TRAILING_STOP*(1+FIVE_DIGITS*9); for (MAX_LOSS0=MAX_LOSS_MIN; MAX_LOSS0<=MAX_LOSS_MAX; MAX_LOSS0+=MAX_LOSS_STEP) {if (MAX_LOSS_con>MAX_LOSS_MIN) {MAX_LOSS0=MAX_LOSS_con; MAX_LOSS_con=-2000;} if (FIVE_DIGITS==1) MAX_LOSS=MAX_LOSS0*10; else MAX_LOSS=MAX_LOSS0; for (ZOOM_OF_LAG=ZOOM_OF_LAG_MIN; ZOOM_OF_LAG<=ZOOM_OF_LAG_MAX; ZOOM_OF_LAG+=ZOOM_OF_LAG_STEP) {if (ZOOM_OF_LAG_con>ZOOM_OF_LAG_MIN) {ZOOM_OF_LAG=ZOOM_OF_LAG_con; ZOOM_OF_LAG_con=-2000;} for (ORDERLIFE=ORDERLIFE_MIN; ORDERLIFE<=ORDERLIFE_MAX; ORDERLIFE+=ORDERLIFE_STEP) {if (ORDERLIFE_con>ORDERLIFE_MIN) {ORDERLIFE=ORDERLIFE_con; ORDERLIFE_con=-2000;} for (TRADE_SHIFT=TRADE_SHIFT_MIN; TRADE_SHIFT<=TRADE_SHIFT_MAX; TRADE_SHIFT+=TRADE_SHIFT_STEP) {if (TRADE_SHIFT_con>TRADE_SHIFT_MIN) {TRADE_SHIFT=TRADE_SHIFT_con; TRADE_SHIFT_con=-2000;} if (TRADE_SHIFT==0) TRADE_SHIFT++; i++; }}}}}}}}}}} * * * конец фрагмента кода * * * - если учесть, что преднамеренного первого сдвига значений в цикле не происходит, то высчитать общее конечное число итераций для самого нижнего из циклов могу и я а вот, как сделать, чтобы можно было подсчитать с точностью до +/- 1 цикла всё это, учитывая возможный первый неправильный старт каждого из циклов ? |
16.10.2011, 04:48 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
С уверенностью могу сказать, что данные темы будут очень полезны Помогите посчитать резистор для светодиода Посчитать количество букв k в последнем слове строки. Как посчитать количество цифр 5 в числе? Посчитать количество различных цифр в записи. Паскаль, программа почти написана. Посчитать кол-во сложенных символов Метод простой итерации. QBasic |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
Опции темы | |
Опции просмотра | |
|
|