Tradematic Support Center
Guides, articles, videos and links for Tradematic users and developers.
Как сравнить текущую цену с ценой предыдущего дня в указанное время, например, 20:00?
42987РЕДАКТОР КОДА ВРЕМЯ ПРЕДЫДУЩИЙ ДЕНЬ DATETIME DATETIMETOBAR БАРCоздаем переменную prevWorkDay класса DateTime и присваеваем ей дату сегодняшнего дня и искомое время, в данном случае 20:00. Прежде чем ссылаться на предыдущий день, нужно проверить существует ли он в нашей истории или нет, так как могут быть праздники и выходные. Для этого используем DateTimeToBar(prevWorkDay,true), который возвращает номер бара указанной даты, а если такого бара нет, то возвращает отрицательное значение -1. Данную проверку используем в цикле do while, где от переменной prevWorkDay вычитаем 1 день. Не забываем проверять, что перебираем только те бары, которые находятся в рамках нашей истории. Получаем следующий код:
DateTime prevWorkDay=new DateTime(Date[bar].Year,Date[bar].Month, Date[bar].Day,20,0,0); do { prevWorkDay=prevWorkDay - TimeSpan.FromDays(1); } //проверка на существование бара с указанной датой и дополнительно проверям, что не ушли за меющуюся историю. while((DateTimeToBar(prevWorkDay,true)<0) && (prevWorkDay>Date[0])); if (Close[bar]>=Close[DateTimeToBar(prevWorkDay,true)]) { BuyAtClose(bar); }