package simplex.bn25.makino335926.trading.position;
import simplex.bn25.makino335926.trading.trade.Trade;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;
// クラス:Validation(取引のバリデーション処理を追加)
public class Validation {
//メソッド:validationQuantity(保有数量が負にならないかを検証)
public static boolean validateQuantity(String ticker, String side, int quantity, List<Trade> trades) {
List<Position> positions = CalculationPosition.calculationPosition(trades, Map.of());
long currentQuantity = positions.stream()
.filter(position -> position.getTicker().equals(ticker))
.mapToLong(Position::getQuantity)
.findFirst()
.orElse(0L);
if (side.equals("SELL") && currentQuantity - quantity < 0) {
System.out.println("> 銘柄の保有数量が負の値となるため不正です。");
return false;
}
return true;
}
//メソッド:validationDateTime(取引時間が適切かを検証)
public static boolean validateTradeTime(String ticker, LocalDateTime tradedDatetime, List<Trade> trades) {
boolean isInvalidTime = trades.stream()
.filter(t -> t.ticker().equals(ticker))
.anyMatch(t -> !tradedDatetime.isAfter(t.tradedDatetime()));
if (isInvalidTime) {
System.out.println("> 過去の最新の取引時刻と同じ、またはそれより過去であるため不正です。");
return false;
}
return true;
}
}
コメント