Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Оператор for эквивалентен следующей последовательности операторов:
выражение1;
while(выражение2)
{
оператор;
выражение3;
};
Штатный выход из цикла и фо и вайл всегда происходит по условию выражения 2. Т.е. в фо сперва будет выражение 3 увеличения / уменьшения счетчика и только потом условия окончания цикла. Континью в фо уйдет на выражение 3 - счетчик и потом на условие окончания, поэтому ДА, всегда после континью и штатному выходу из цикла по условию выражения 2 счетчик будет изменен.
В вайл нет счетчика, там просто условие истина продолжаем цикл, ложь выходим из цикла. Но если в условие выражения 2 поставить сравнение по счетчику итераций, и в теле цикла поставить счетчик итераций то это будет примерно тоже что и цикл фо. И Да, если выражение 2 в вайл всегда будет Истина, то будет вечный цикл.
И для выхода из цикла есть еще брейк - не штатное окончание цикла. Вот после брейк цикл сразу заканчивается и переходит к ближайшему после цикла оператору.
Да, Игорь, Вы правы.
Я почитал, увеличение i происходит в конце цикла (условно сказать на закрывающей скобке цикла).
И переход continue делает в конец цикла, а не в начало.
Результат моих прежних рассуждений и новых знаний будет одинаковый, но ход мыслей был неправильный. Каюсь. Спасибо, друг.
continue это просто переход. Вечный цикл будет, если условие цикла выполняется вечно.
нет не эквивалентен, в for выражение3 исполнится в любом случае, потому что continue оборвёт этот текущий проход и направит как раз к Выражению3
Вот описание из этого источника:
Респект.
О, и Вам Сергей тоже спасибо. Благодаря этой теме выведал у Игоря ценную информацию . Игорь, спасибо!
пожалуйста
но это не ценная информация а внимательность и практика, ну может быть привычка писать тестовые скрипты если есть сомнения
Подскажите, такая часть кода является корректной? Это вот уже рабочий вариант. Компилируется, на графике запускается и вроде даже делает то, для чего задумывался.
void OnTimer() { work(); alarm(); } void alarm() { if(error==1) { SendNotification(err); // отправляем сообщениe } if(error>0) // таймер задержки времени error++; if(error>300) // 30 секунд (300 циклов void OnTimer() по 100 мс) error=0; }Надо бы проверять минимально возможные расстояния от текущей цены до стопа и тейка.
i--; зачем?
continue; - зачем? Он и так стоит в конце цикла
Надо бы проверять минимально возможные расстояния от текущей цены до стопа и тейка.
Переменную error вы сначала сравниваете с 0, а потом присваиваете строку. Если её тип строка тогда сравнивайте с "".
i--; зачем?
continue; - зачем? Он и так стоит в конеце цикла
continue лишнее согласен, a i-- чтобы сделать вторую попытку
Лучше убрать. Если ордер не модифицировался, нужно запомнить это и на следующем тике произвести следующую попытку. А то Вы в цикле забомбите сервер.