Сброс переменных в полночь
Страница 1 из 812 12 ПоследняяПоследняя
Results 1 to 10 of 11

Thread: Сброс переменных в полночь

  1. #1
    Как я могу сбросить var в полночь? Я имею в виду, если в течение минуты не будет никаких тиков, то var не будет сброшен.

    Я знаю, что это не право делать, но это единственный способ, о котором мой мозг может думать сейчас. Должен быть более простой способ сделать это?

    Введенный код double DayHigh = 0; double Day2ndHigh = 0; double DayLow = 0; double Day2ndLow = 0; string time_hours = TimeHour (TimeCurrent ()); string time_minutes = TimeMinute (TimeCurrent ()); string time_seconds = TimeSeconds (TimeCurrent ()); if ((time_hours == 00) (time_minutes == 00) (time_seconds == 00)) {//Сброс максимумовминимумов double DayHigh = 0; double Day2ndHigh = 0; double DayLow = 0; double Day2ndLow = 0; }
    Можно ли сделать это, не полагаясь на клещи?

  2. #2

    Quote Originally Posted by ;
    Как я могу сбросить var в полночь? Я имею в виду, если в течение минуты не будет никаких тиков, то var не будет сброшен. Я знаю, что это не право делать, но это единственный способ, о котором мой мозг может думать сейчас. Должен быть более простой способ сделать это? double DayHigh = 0; double Day2ndHigh = 0; double DayLow = 0; double Day2ndLow = 0; string time_hours = TimeHour (TimeCurrent ()); string time_minutes = TimeMinute (TimeCurrent ()); string time_seconds = TimeSeconds (TimeCurrent ()); if ((time_hours == 00) (time_minutes == 00) (time_seconds == 00)) {...
    Да, вам нужно использовать функцию OnTimer (). Также вы захотите избежать абсолютов; например, если секунды равны нулю, потому что вы можете пропустить окно, где вторая точно равна нулю, а затем ваш код не будет работать. Введенный код int OnInit () {//--- создать таймер EventSetTimer (1);/--- return (INIT_SUCCEEDED); }/ ---------------------------------------------- -------------------- /| Экспертная деинициализация |/ ----------------------------------------------- ------------------- void OnDeinit (const int reason) {//--- уничтожить таймер EventKillTimer (); }/ ---------------------------------------------- -------------------- /| Функция экспертного тика |/ ----------------------------------------------- ------------------- void OnTick () {//---}/ ---------------- -------------------------------------------------- /| Функция таймера |/ ----------------------------------------------- ------------------- void OnTimer () {//--- ResetVarsAtMidnight (); }/ ---------------------------------------------- -------------------- double DayHigh = 0; double Day2ndHigh = 0; double DayLow = 0; double Day2ndLow = 0; void ResetVarsAtMidnight () {static datetime last_reset = 0; MqlDateTime last_reset_struct; if (last_reset == 0 || TimeCurrent () gt; = last_reset PeriodSeconds (PERIOD_D1)) {//Сброс максимумовминимумов DayHigh = 0; Day2ndHigh = 0; DayLow = 0; Day2ndLow = 0; TimeCurrent (last_reset_struct); last_reset_struct.hour = 0; last_reset_struct.min = 0; last_reset_struct.sec = 0; last_reset = StructToTime (last_reset_struct); вернуть; }}

  3. #3

    Quote Originally Posted by ;
    {quote} Да, вам нужно использовать функцию OnTimer (). Также вы захотите избежать абсолютов; например, если секунды равны нулю, потому что вы можете пропустить окно, где вторая точно равна нулю, а затем ваш код не будет работать. int OnInit () {//--- создать таймер EventSetTimer (1);/--- return (INIT_SUCCEEDED); }/ ---------------------------------------------- -------------------- /| Экспертная деинициализация |/ ----------------------------------------------- ------------------- void OnDeinit (const int reason) {//--- уничтожить таймер ...
    Спасибо за пример кода! Если я не смогу проверить его, установите его: last_reset_struct.hour = 20; last_reset_struct.min = 40; last_reset_struct.sec = 00; Если это так, он не устанавливает значение vars равным 0.

  4. #4
    Это должно перезагружаться каждый день @ 20:40

  5. #5

    Quote Originally Posted by ;
    Это должно перезагружаться каждый день @ 20:40
    Да, но это не сбрасывает var

  6. #6

    Quote Originally Posted by ;
    {quote} Да, но это не сбрасывает var
    Потому что он не сбрасывается до следующего дня после инициализации. Если вы хотите, чтобы это было возможно, вам нужно это сделать, тогда вам нужно добавить логику инициализации и инициализировать ее до предыдущего дня. Введенный код int OnInit () {//--- создать таймер EventSetTimer (1);/--- return (INIT_SUCCEEDED); }/ ---------------------------------------------- -------------------- /| Экспертная деинициализация |/ ----------------------------------------------- ------------------- void OnDeinit (const int reason) {//--- уничтожить таймер EventKillTimer (); }/ ---------------------------------------------- -------------------- /| Функция экспертного тика |/ ----------------------------------------------- ------------------- void OnTick () {//---}/ ---------------- -------------------------------------------------- /| Функция таймера |/ ----------------------------------------------- ------------------- void OnTimer () {//--- ResetVarsAtMidnight (); }/ ---------------------------------------------- -------------------- double DayHigh = 0; double Day2ndHigh = 0; double DayLow = 0; double Day2ndLow = 0; void ResetVarsAtMidnight () {MqlDateTime last_reset_struct; static datetime last_reset = TimeCurrent (); static bool is_init = false; int hour = 0; int min = 0; int sec = 0; if (! is_init) {last_reset- = PeriodSeconds (PERIOD_D1); TimeToStruct (last_reset, last_reset_struct); last_reset_struct.hour = час; last_reset_struct.min = min; last_reset_struct.sec = sec; last_reset = StructToTime (last_reset_struct); is_init = true; } if (TimeCurrent () gt; = last_reset PeriodSeconds (PERIOD_D1)) {//Сброс максимумовминимумов DayHigh = 0; Day2ndHigh = 0; DayLow = 0; Day2ndLow = 0; TimeCurrent (last_reset_struct); last_reset_struct.hour = час; last_reset_struct.min = min; last_reset_struct.sec = sec; last_reset = StructToTime (last_reset_struct); вернуть; }}

  7. #7

    Quote Originally Posted by ;
    {quote} Потому что он не сбрасывается до следующего дня после инициализации. Если вы хотите, чтобы это было возможно, вам нужно это сделать, тогда вам нужно добавить логику инициализации и инициализировать ее до предыдущего дня. int OnInit () {//--- создать таймер EventSetTimer (1);/--- return (INIT_SUCCEEDED); }/ ---------------------------------------------- -------------------- /| Экспертная деинициализация |/ ----------------------------------------------- ------------------- void OnDeinit (const int reason) {//--- уничтожить таймер EventKillTimer (); ...
    Я пытаюсь это увидеть, если это работает, но я не вижу, чтобы var был установлен на ноль, например. 21:10:00, почему? Введенный код/ --------------------------------------------- --------------------- /| Test.mq4 |/| Copyright 2017, MetaQuotes Software Corp. |/| https://www.mql5.com |/ ----------------------------------------------- ------------------- #property copyright Copyright 2017, MetaQuotes Software Corp. #property link https://www.mql5.com #property version 1.00 #property strict int OnInit () {//--- создать таймер EventSetTimer (1);/--- return (INIT_SUCCEEDED); }/ ---------------------------------------------- -------------------- /| Экспертная деинициализация |/ ----------------------------------------------- ------------------- void OnDeinit (const int reason) {//--- уничтожить таймер EventKillTimer (); }/ ---------------------------------------------- -------------------- /| Функция экспертного тика |/ ----------------------------------------------- ------------------- void OnTick () {DayHigh = High # 91; 1 # 93 ;; Day2ndHigh = High # 91; 2 # 93 ;; DayLow = Low # 91; 1 # 93 ;; Day2ndLow = Low # 91; 2 # 93 ;; Комментарий (High_1: DayHigh High_2: Day2ndHigh Low_1: DayLow Low_2: Day2ndLow); }/ ---------------------------------------------- -------------------- /| Функция таймера |/ ----------------------------------------------- ------------------- void OnTimer () {//--- ResetVarsAtMidnight (); }/ ---------------------------------------------- -------------------- double DayHigh = 0; double Day2ndHigh = 0; double DayLow = 0; double Day2ndLow = 0; void ResetVarsAtMidnight () {MqlDateTime last_reset_struct; static datetime last_reset = TimeCurrent (); static bool is_init = false; int hour = 21; int min = 10; int sec = 0; if (! is_init) {last_reset- = PeriodSeconds (PERIOD_D1); TimeToStruct (last_reset, last_reset_struct); last_reset_struct.hour = час; last_reset_struct.min = min; last_reset_struct.sec = sec; last_reset = StructToTime (last_reset_struct); is_init = true; } if (TimeCurrent () gt; = last_reset PeriodSeconds (PERIOD_D1)) {//Сброс максимумовминимумов DayHigh = 0; Day2ndHigh = 0; DayLow = 0; Day2ndLow = 0; TimeCurrent (last_reset_struct); last_reset_struct.hour = час; last_reset_struct.min = min; last_reset_struct.sec = sec; last_reset = StructToTime (last_reset_struct); вернуть; }}

  8. #8

    Quote Originally Posted by ;
    {quote} Я пытаюсь это посмотреть, работает ли это, но я не вижу, чтобы var был установлен на ноль, например. 21:10:00, почему?/ ----------------------------------------------- ------------------- /| Test.mq4 |/| Copyright 2017, MetaQuotes Software Corp. |/|
    https://www.mql5.com|/ ----------------------------------------------- ------------------- #property copyright Copyright 2017, MetaQuotes Software Corp. #property link https://www.mql5.com #property version 1.00 #property strict int OnInit () {//--- создать таймер EventSetTimer (1);/--- return (INIT_SUCCEEDED); ...
    Оно работает. Ваш код никогда не покажет вам. Попробуй это. Введенный код/ --------------------------------------------- --------------------- /| DailyVarReset.mq4 |/| Copyright 2017, nicholishen |/| https://www.russiaforex.ru.com/nicholishen |/ ----------------------------------------------- ------------------- #property copyright Copyright 2017, nicholishen #property link https://www.russiaforex.ru.com/nicholishen/ ------ -------------------------------------------------- ---------- /| Test.mq4 |/| Copyright 2017, MetaQuotes Software Corp. |/| https://www.mql5.com |/ ----------------------------------------------- ------------------- #property copyright Copyright 2017, MetaQuotes Software Corp. #property link https://www.mql5.com #property version 1.00 #property strict int OnInit () {//--- создать таймер EventSetTimer (1);/--- return (INIT_SUCCEEDED); }/ ---------------------------------------------- -------------------- /| Экспертная деинициализация |/ ----------------------------------------------- ------------------- void OnDeinit (const int reason) {//--- уничтожить таймер EventKillTimer (); }/ ---------------------------------------------- -------------------- /| Функция экспертного тика |/ ----------------------------------------------- ------------------- void OnTick () {//DayHigh = High # 91; 1 # 93 ;;/Day2ndHigh = High # 91; 2 # 93 ;;/DayLow = Low # 91; 1 # 93 ;;/Day2ndLow = Low # 91; 2 # 93 ;;/Комментарий (High_1: DayHigh High_2: Day2ndHigh Low_1: DayLow Low_2: Day2ndLow); }/ ---------------------------------------------- -------------------- /| Функция таймера |/ ----------------------------------------------- ------------------- void OnTimer () {//--- ResetVarsAtMidnight (); }/ ---------------------------------------------- -------------------- double DayHigh = 0; double Day2ndHigh = 0; double DayLow = 0; double Day2ndLow = 0; void ResetVarsAtMidnight () {MqlDateTime last_reset_struct; static datetime last_reset = TimeCurrent (); static bool is_init = false; int hour = 18; int min = 56; int sec = 0; if (! is_init) {last_reset- = PeriodSeconds (PERIOD_D1); TimeToStruct (last_reset, last_reset_struct); last_reset_struct.hour = час; last_reset_struct.min = min; last_reset_struct.sec = sec; last_reset = StructToTime (last_reset_struct); is_init = true; } if (TimeCurrent () gt; = last_reset PeriodSeconds (PERIOD_D1)) {//Сброс максимумовминимумов DayHigh = 0; Day2ndHigh = 0; DayLow = 0; Day2ndLow = 0; Alert (Resting vars!);**********TimeCurrent (last_reset_struct); last_reset_struct.hour = час; last_reset_struct.min = min; last_reset_struct.sec = sec; last_reset = StructToTime (last_reset_struct); вернуть; }}

  9. #9

    Quote Originally Posted by ;
    {quote} Это работает. Ваш код никогда не покажет вам. Попробуй это./ ----------------------------------------------- ------------------- /| DailyVarReset.mq4 |/| Copyright 2017, nicholishen |/|
    https://www.russia-forex.ru/forex-ma...e-journal.html|/ ----------------------------------------------- ------------------- #property copyright Copyright 2017, nicholishen #property link https://www.russiaforex.ru.com/nicholishen/ ------ -------------------------------------------------- ---------- /| Test.mq4 |/| Copyright 2017, MetaQuotes Software Corp ....
    Он работает очень хорошо. Спасибо за код и вашу помощь! Мне просто интересно, можете ли вы нанять, если мне нужен хороший кодер?

  10. #10

    Quote Originally Posted by ;
    {quote} Это работает очень хорошо. Спасибо за код и вашу помощь! Мне просто интересно, можете ли вы нанять, если мне нужен хороший кодер?
    да

Действующие разрешения

  • Вы не можете создавать новые темы
  • Вы не можете размещать ответы
  • Вы не можете использовать вложения
  • Вы не можете редактировать ваши записи
  •  
  • BB-код - Вкл.
  • Смайлики - Вкл.
  • Код [IMG] - Вкл.
  • Код [VIDEO] - Вкл.
  • HTML-код - Выкл.
Веб-сайт использует cookies
Веб-сайт использует cookies, в настоящее время некоторые из них уже установлены. Вы можете ознакомиться с более подробной информацией об использовании нами cookies здесь. Чтобы принять условия использования cookies, пожалуйста, нажмите на кнопку справа. Если вы продолжаете пользоваться веб-сайтом, вы по умолчанию принимаете условия использования cookies.