Я сделал небольшие правки, особо не усердствовал!
Ваш вариант можно оптимизировать в оптимизаторе, но опять же 6 вариантов 6*24*60*60 = 518 400 проходов что мало имеет смысла и пользователь зря потратит время
Мой Вариант не может быть оптимизирован.
enum ONOFFTIME { ONOFF_ON = 1, // On ONOFF_OFF = 0, // Off }; sinput string iT_Note = " --== Work Time ==-- "; input ONOFFTIME iWorkTimeIntraday = ONOFF_OFF; // Work Time (On/Off) input string iTradeStart = "hh:mm:ss"; // Stop trading stop at input string iTradeFinish = "hh:mm:ss"; // Renew the trading at //+------------------------------------------------------------------+ //| Work Time function | //+------------------------------------------------------------------+ bool WorkTime() { if(iWorkTimeIntraday == ONOFF_OFF) return true; datetime TimeStart = 0; datetime TimeFinish = 0; datetime Timecurrent = TimeCurrent(); datetime Today = iTime(_Symbol, PERIOD_D1, 0); datetime Yesterday = iTime(_Symbol, PERIOD_D1, 1); string sep = ":"; string StartTimeMass[], FinishTimeMass[]; ushort u_sep = StringGetCharacter(sep, 0); StringSplit(iTradeStart, u_sep, StartTimeMass); StringSplit(iTradeFinish, u_sep, FinishTimeMass); int iHourStart = (int)StringToInteger(StartTimeMass[0]); int iMinuteStart = (int)StringToInteger(StartTimeMass[1]); int iSecondStart = (int)StringToInteger(StartTimeMass[2]); int iHourFinish = (int)StringToInteger(FinishTimeMass[0]); int iMinuteFinish = (int)StringToInteger(FinishTimeMass[1]); int iSecondFinish = (int)StringToInteger(FinishTimeMass[2]); if(iHourStart > 23 || iMinuteStart > 59 || iSecondStart > 59 || iHourFinish > 23 || iMinuteFinish > 59 || iSecondFinish > 59) return false; if(iHourStart * 60 * 60 + iMinuteStart * 60 + iSecondStart < iHourFinish * 60 * 60 + iMinuteFinish * 60 + iSecondFinish) { TimeStart = Today + iHourStart * 60 * 60 + iMinuteStart * 60 + iSecondStart; TimeFinish = Today + iHourFinish * 60 * 60 + iMinuteFinish * 60 + iSecondFinish; } else { TimeStart = Today + iHourStart * 60 * 60 + iMinuteStart * 60 + iSecondStart; TimeFinish = Today + iHourFinish * 60 * 60 + iMinuteFinish * 60 + iSecondFinish; if(Timecurrent < TimeFinish) TimeStart = Yesterday + iHourStart * 60 * 60 + iMinuteStart * 60 + iSecondStart; if(Timecurrent > TimeStart) TimeFinish = Today + (iHourFinish + 24) * 60 * 60 + iMinuteFinish * 60 + iSecondFinish; } if(TimeStart <= Timecurrent && Timecurrent < TimeFinish) return(true); else return(false); return(false); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+
Ваш вариант реализации данной функции уже есть в кодобазе.
Задача состояла в использовании списка значений для настройки времени и в поддержке оптимизации.
Ваш вариант реализации данной функции уже есть в кодобазе.
Задача состояла в использовании списка значений для настройки времени и в поддержке оптимизации.
Ну и хорошо!
Безумно дорого!
Согласен, представьте свой вариант, с удовольствием поучусь..
Согласен, представьте свой вариант, с удовольствием поучусь..
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
fxsaber, 2019.12.08 23:34
Советник
input int inStartHour = 0; input int inCountHours = 23; const int EndHour = inStartHour + inCountHours; bool SystemON() { int CurrentHour = (int)(TimeCurrent() / 3600) % 24; if ((EndHour >= 24) && (CurrentHour < inStartHour)) CurrentHour += 24; return((inStartHour <= CurrentHour) && (CurrentHour <= EndHour)); }
Оптимизация
inStartHour=0||0||1||23||Y inCountHours=23||0||1||23||Y
Ну и BestInterval совсем порвет все решения, если нужна оптимизация.
Ну и BestInterval совсем порвет все решения, если нужна оптимизация.
Вы любите все усложнять, почему нельзя просто приложить код по тому примеру как это сделал я ? Просто код, бес ссылок, бес кучи другого кода ? Просто решение задачи ...
BestInterval я посмотрел, там гора лишнего кода, да и я не слишком высокого уровня программист что бы разобрать весь тот код...
Вы любите все усложнять, почему нельзя просто приложить код по тому примеру как это сделал я ? Просто код, бес ссылок, бес кучи другого кода ? Просто решение задачи ...
BestInterval я посмотрел, там гора лишнего кода, да и я не слишком высокого уровня программист что бы разобрать весь тот код...
Прикалываетесь что ли? Посчитайте количество строк в функции SystemON.
Что касается BestInterval. То он написан так, что любой новичок сможет применить. Нужно только прочитать описание.
Прикалываетесь что ли? Посчитайте количество строк в функции SystemON.
Время только в часах, а минуты и секунды ?
Время только в часах, а минуты и секунды ?
Только в часах. Минуты, а тем более секунды, - пустое занятие для практических задач. Особенно, когда речь идет об Оптимизации.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Work Time:
Функция предназначена для ограничения времени работы эксперта или скрипта.
Автор: Sergej Chukhista