Skip to content

Commit a194ef3

Browse files
committed
fix SecurityType.getSecurityType() for option
1 parent 89cc748 commit a194ef3

File tree

2 files changed

+8
-9
lines changed

2 files changed

+8
-9
lines changed

src/main/java/org/spacious_team/broker/pojo/SecurityQuote.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,8 @@ public class SecurityQuote {
6969

7070
//@Nullable
7171
@JsonProperty("currency")
72-
@Schema(description = "Валюта котировки для акций, облигаций и деривативов (опционально)", example = "RUB", nullable = true)
72+
@Schema(description = "Валюта котировки для акций, облигаций, произвольных активов и опционально для деривативов",
73+
example = "RUB", nullable = true)
7374
private final String currency;
7475

7576
/**

src/main/java/org/spacious_team/broker/pojo/SecurityType.java

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -31,27 +31,25 @@ public enum SecurityType {
3131
CURRENCY_PAIR("валюта"),
3232
ASSET("произвольный актив");
3333

34+
public static final String ASSET_PREFIX = "ASSET:";
3435
@Getter
3536
private final String description;
3637

3738
public static SecurityType getSecurityType(Security security) {
3839
return getSecurityType(security.getId());
3940
}
4041

41-
/**
42-
* Для правильного определения дериватива наименование должно быть представлено в полном формате с дефисом, например "Si-3.22"
43-
*/
4442
public static SecurityType getSecurityType(String security) {
4543
int length = security.length();
46-
int dashPosition = security.indexOf('-');
47-
if (length == 12 && dashPosition == -1) {
44+
if (length == 12 && security.indexOf('-') == -1) {
4845
return STOCK_OR_BOND;
4946
} else if (length == 6 || (length > 7 && security.charAt(6) == '_')) { // USDRUB_TOM or USDRUB_TOD or USDRUB
5047
return CURRENCY_PAIR;
51-
} else if (dashPosition != -1) {
52-
return DERIVATIVE;
48+
} else if (security.startsWith(ASSET_PREFIX)) {
49+
return ASSET;
5350
}
54-
return ASSET;
51+
// фьючерс всегда с дефисом, например Si-12.21, опцион может быть MXI-6.21M170621CA3000 или MM3000BF1
52+
return DERIVATIVE;
5553
}
5654

5755
/**

0 commit comments

Comments
 (0)