Страница 1 из 1

Проверка даты на соответствие сегодняшнему дню

Добавлено: 20 янв 2022, 16:22
realuse
Доброго дня!
Задача проверять дату, сегодняшняя она или нет. Пробовал так:

Код: Выделить всё

AddGlobalVariable("Local_time", Types.DateTime, DateTime.Today);

Local_time = BarDate().Add(BarTime() - AsTime(0, 3, 0));

if ( Local_time > DateTime.Today) { ... }


Помогите плз верно описать условие.

Re: Проверка даты на соответствие сегодняшнему дню

Добавлено: 20 янв 2022, 18:23
evge

Код: Выделить всё

if (BarDate() == DateTime.Today)
{
//бар сегодня
}


Now-UtcNow-01.jpg
Now-UtcNow-01.jpg (75.45 КБ) 10847 просмотров


Код: Выделить всё

function Initialize()
{
IndicatorName = "now";
PriceStudy = false;
AddInput("Input", Inputs.Candle);
AddSeries("A", DrawAs.Histogram, Color.Green);
}

function Evaluate()
{
if (BarDate() == DateTime.Now.Date) A = DateTime.Now.Hour;
}


Код: Выделить всё

function Initialize()
{
IndicatorName = "nowUTC";
PriceStudy = false;
AddInput("Input", Inputs.Candle);
AddSeries("A", DrawAs.Histogram, Color.Green);
}

function Evaluate()
{
if (BarDate() == DateTime.UtcNow.Date) A = DateTime.UtcNow.Hour;
}

Re: Проверка даты на соответствие сегодняшнему дню

Добавлено: 20 янв 2022, 22:01
realuse
Спасибо :!:

А как сделать, если мне нужно проверить именно значение глобальной переменной на соответствие сегодняшнему дню? Когда текущий бар уже позже нее по времени.

Re: Проверка даты на соответствие сегодняшнему дню

Добавлено: 21 янв 2022, 07:35
BugsDigger
Структура DateTime
https://docs.microsoft.com/ru-ru/dotnet ... ew=net-6.0

Код: Выделить всё

function Initialize()
{
 ...
 AddGlobalVariable("DT", Types.DateTime, new DateTime(2022, 1, 21)); // фиксированная дата
//  AddGlobalVariable("DT", Types.DateTime, DateTime.Now.Date); // текущее реальное время
}

function Evaluate()
{
 ShowMessage(DT.Date.ToShortDateString());
 // с чем хотим сравнивать?
 if(DT.Date==DateTime.Now.Date) { ShowMessage("DT==Сегодня"); } // реальное время
 if(DT.Date==BarDate(0)) { ShowMessage("DT==Bar"); } // текущий бар расчета индикатора
}


Вариант с заданием даты в качестве параметра индикатора
viewtopic.php?f=4&t=1028&start=10#p5947
Неудобство в том, что дату нужно вводить в виде строки полностью (согласно заданному формату Windows), а поле ввода очень узкое и для этого не предназначено.

Re: Проверка даты на соответствие сегодняшнему дню

Добавлено: 21 янв 2022, 08:01
evge
realuse писал(а):А как сделать, если мне нужно проверить именно значение глобальной переменной на соответствие сегодняшнему дню? Когда текущий бар уже позже нее по времени.


Используйте .TimeOfDay для определения времени из DateTime и BarTime() для определении времени бара графика т.к. они TimeSpan и можно будет их между собой сравнить

Код: Выделить всё

function Initialize()
{
IndicatorName = "DTheck";
PriceStudy = false;
AddInput("Input", Inputs.Candle);
AddSeries("A", DrawAs.Histogram, Color.Green, AxisType.ZeroBased);

// https://docs.microsoft.com/ru-ru/dotnet/api/system.datetime.-ctor?view=netframework-4.8#System_DateTime__ctor_System_Int32_System_Int32_System_Int32_System_Int32_System_Int32_System_Int32_

AddGlobalVariable("DT", Types.DateTime, new DateTime(2022, 1, 20, 15, 0, 0)); //20.01.2022 15:00:00
}

function Evaluate()
{

//дата бара больше даты гл.перем ИЛИ дата бара равна дате гл.перем, но время бара больше
if (BarDate() > DT.Date || (BarDate() == DT.Date && BarTime() > DT.TimeOfDay))
{
   // Условие выполняется
   A = BarTime().Hours;
}

}


DTChek-01.jpg
DTChek-01.jpg (73.09 КБ) 10682 просмотра

DTChek-02.jpg
DTChek-02.jpg (84.01 КБ) 10680 просмотров

если же задача не бар на графике проверять с гл.перем, а именно проверить текущий день и время с датой и временем из гл.перем,

то заменяем BarDate() в скрипте на DateTime.Now.Date и BarTtime() на DateTime.Now.TimeOfDay

но визуализация результата будет, либо на всех барах условие выполняется либо нет. Т.е. либо задает A либо нет, везде!