Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > C/C++/С#


Ответ
 
Опции темы Опции просмотра
Старый 16.10.2011, 04:48   #1 (permalink)
Anton_uz
Новичок
 
Регистрация: 16.10.2011
Сообщений: 7
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 444
Angry Как посчитать все итерации в циклах?

Привет !

-Конечно, язык 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 цикла всё это, учитывая возможный первый неправильный старт каждого из циклов ?
Anton_uz вне форума   Ответить с цитированием

Старый 16.10.2011, 04:48
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

С уверенностью могу сказать, что данные темы будут очень полезны

Помогите посчитать резистор для светодиода
Посчитать количество букв k в последнем слове строки.
Как посчитать количество цифр 5 в числе?
Посчитать количество различных цифр в записи. Паскаль, программа почти написана.
Посчитать кол-во сложенных символов
Метод простой итерации. QBasic

Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 07:37.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.