Я использую Binance. Net в качестве оболочки API Binance, и недавно я столкнулся с проблемой с DateTime.AddSeconds
.
Следующий код должен найти свечу перед последним заказом.
// OpenTime and CloseTime are both DateTime
var openTime = lastOrder.OpenTime; // 10:50:00
var closeTime = lastOrder.CloseTime; // 10:54:59
// It should return 10:55:00 - 10:50:00 = 5 minutes
// The reason I'm doing this is because I don't know the exact interval my bot is working with.
// What I know is the OpenTime (begin) and CloseTime (end).
var difference = closeTime.AddSeconds(1) - openTime; // closeTime.AddSeconds(1) doesn't work
var dateTime = openTime - difference; // 10:50:00 - 00:05:00.9990000 = 10:39:99
// 10:39:99 is an invalid startTime/endTime
var kline = _client.GetKlines(symbol, interval, startTime: dateTime, endTime: dateTime, limit: 1).Data;
Проблема:
Проблема в том, что .AddSeconds(1)
на самом деле не добавляет эту секунду и в результате _client.GetKlines
завершается неудачей.
Я не знаю, есть ли лучший способ получить предыдущую свечу в API Binance, но если есть, я бы принял это как решение.
Проблема визуального представления:
Редактировать:
Исправлено! Когда я проверил свойства DateTime, я понял, что пропустил миллисекунды в свойстве CloseTime. Так что в итоге это был неверный расчет. Вместо .AddSeconds(1)
я сделал это .AddMiliseconds(1)
.