или будет вернее так . Тут вижу загвозду при новом проходе если время ещо гуд то H0 опщть 1 и цикл выполнится снова
H0=1; if(TimeMinute(TimeCurrent())<=00*00*03 && TimeMinute(TimeCurrent())>=00*00*05) // ѕ–»Ќя“»≈ –≈Ў≈Ќ»я ќ —ƒ≈Ћ ≈ { for(H0=H0;H0==1; H0--) { //Выполняю действие.. } }
или будет вернее так . Тут вижу загвозду при новом проходе если время ещо гуд то H0 опщть 1 и цикл выполнится снова
Оба варианта эквивалентны и одинаково бессмысленны. 1. Если тело цикла должно выполняться 1 раз, то цикл то зачем? 2. Предполагаю, что условный оператор расположен в функции OnTick. Тогда выполнение будет происходить на каждый тик, пришедший в заданный промежуток времени.
Представьте, что разносчик пенсии действует по такой инструкции: В течение первой недели месяца (оператор IF), каждый раз, проходя мимо дома, заходить в квартиру НН. Проследить (оператор FOR), чтоб при каждом заходе в квартиру пенсия выдавалась лишь 1 раз.
Очевидно, что последнее предложение бессмысленно, а ограничение по времени слишком широко. Правильнее будет так: В течение заданного времени проверять наличие пенсии к выдаче и при наличии выдавать. Программисты называют это флагом. При получении пенсии разносчик поднимает, включает флаг, после выдачи - выключает, опускает, обнуляет, ... Можно и наоборот. Выдал - флаг поднял. В качестве флага - подпись клиента в ведомости.
if(другое время) флаг=Выдать;if(нужное время и флаг == Выдать)
{
выполнить выдачу;
флаг = УжеВыдали;
}
Оба варианта эквивалентны и одинаково бессмысленны. 1. Если тело цикла должно выполняться 1 раз, то цикл то зачем? 2. Предполагаю, что условный оператор расположен в функции OnTick. Тогда выполнение будет происходить на каждый тик, пришедший в заданный промежуток времени.
Представьте, что разносчик пенсии действует по такой инструкции: В течение первой недели месяца (оператор IF), каждый раз, проходя мимо дома, заходить в квартиру НН. Проследить (оператор FOR), чтоб при каждом заходе в квартиру пенсия выдавалась лишь 1 раз.
Очевидно, что последнее предложение бессмысленно, а ограничение по времени слишком широко. Правильнее будет так: В течение заданного времени проверять наличие пенсии к выдаче и при наличии выдавать. Программисты называют это флагом. При получении пенсии разносчик поднимает, включает флаг, после выдачи - выключает, опускает, обнуляет, ... Можно и наоборот. Выдал - флаг поднял. В качестве флага - подпись клиента в ведомости.
if(другое время) флаг=Выдать;if(нужное время и флаг == Выдать)
{
выполнить выдачу;
флаг = УжеВыдали;
}
Я понял. Нужна функция проверяющая очевидность пенсии. И если значение истинно то вносить изменения.
В общем пишу себе Помогатор для вычислений и решил сделать его очень скурпулезно чтоб не потерять данных никаких и иметь контроль но чтото не вяжется.
В общем что я делаю.
1. Получаю из внешних переменных значения раз в минуту.
Как видно что знчения четко передаются по завершению минуты.
Далее в другом скрипте я обрабатываю полученные данные
void OnTimer() { //--------------------------------------------------------------------------------- Open1 =iOpen(Symbol(),0,1); Close1=iClose(Symbol(),0,1); High1 =iHigh(Symbol(),0,1); Low1 =iLow(Symbol(),0,1); one_BE=GlobalVariableGet(GV_Summa1); zero_BE= GlobalVariableGet(GV_Summa0); one_CH = GlobalVariableGet(GV_Summa1); zero_CH= GlobalVariableGet(GV_Summa0); //--------------------------------------------------------------------------------- Rez_BE=one_BE-zero_BE; //Raznica=Rez_BE/Delitel; Rez_Plus=one_CH+zero_CH; //Summa=Rez_Plus/Rez_BE; //--------------------------------------- Comment(Rez_BE," ",Rez_Plus);
и получаю сумму иразницу при вычислениях в две переменные. То что этот процес происходит точьно у меня нет сомнений так как уже много раз мониторил
Здесь наглядно видно.
Далее я хочу записать в течении часа параметры в переменные при условии если
Rez_BE
<=-1
if(TimeMinute(TimeCurrent())<=23*00*03 && TimeMinute(TimeCurrent())>=23*00*05 && Rez_BE<=-1 ) // ????? 00:01 { H23_min1_summa = Rez_Plus; H23_min1_raznica = Rez_BE; } /*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/ if(TimeMinute(TimeCurrent())<=23*01*03 && TimeMinute(TimeCurrent())>=23*01*05 && Rez_BE<=-1 ) // ????? 00:02 { H23_min2_summa = Rez_Plus; H23_min2_raznica = Rez_BE; }
Вот так это выглядит. и при настулении след часа я делаю вычисления
Суммы часа и Разницы я складываю
if(TimeMinute(TimeCurrent())<=23*00*03 && TimeMinute(TimeCurrent())>=23*00*05) { H23_summaChasa=H23_min1_summa+H23_min2_summa+H23_min3_summa+H23_min4_summa+H23_min5_summa+..... ; H23_raznicaChasa=(H23_min1_raznica)+(H23_min2_raznica)+(H23_min3_raznica)+(H23_min4_raznica)+...; Alert(H23_summaChasa,H23_raznicaChasa); }
До 60 минуты Все переменные double и не повторяются.
Получить должен чтото типа
658 и -98
но получаю 0,0
что значит что в переменные значения не попадают. Хотя в течении часа ониесть.
-1,9 тоже что и -19 . Для индюка/ на 10
В чем моя ошибка
....
В чем моя ошибка
Из Ваших примеров похоже, что условие Res_BE <= -1 никогда не выполняется..
Вместо переменных типа H23_min1_summa заведите массивы H23_min_summa[60]. Тогда вычисления можно будет оформить циклом и в десятки раз сократить код.
Ну и разберитесь со странными проверками. Загадка, что здесь проверяется?
if(TimeMinute(TimeCurrent())<=23*00*03 && TimeMinute(TimeCurrent())>=23*00*05)
А условия типа
if(TimeMinute(TimeCurrent())<=23*01*03 && TimeMinute(TimeCurrent())>=23*01*05 && Rez_BE<=-1 ) // ????? 00:02
и дальше никогда не выполнятся, независимо от значения Res_BE.
if(TimeMinute(TimeCurrent())<=23*01*03 && TimeMinute(TimeCurrent())>=23*01*05 && Rez_BE<=-1 ) // ????? 00:02
здесь я проверяю следующее. Если текущее время больше
<=23*01*03
и текущее время меньше
>=23*01*05
те 2 сикунды для заполнения переменых и данное значение меньше или равно -1
Rez_BE<=-1
Данных минусов в течении часа у меня несколько
вот последний -3
Притом эти -3 лежат целую минуту в переменной
Rez_BE
А значит. что условие должно в какойто момент обязательно выполнится
притом 2 секунд на это достаточьно с моей точьки зрения
...
притом 2 секунд на это достаточьно с моей точьки зрения
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Будет ли такое выражение правельным если я хочу при наступлении времени выполнить тело только 1 раз.