使用股票報價我需要找到具有以下輸入參數的範圍:查找股票報價範圍
價格步驟:儘可能降低價格變動。步驟= 0.01意味着報價可以是100.01,100.1,但不是100.015。對於'大'股可以是> 1。
範圍內的步數。步驟= 10意味着我需要10次最低價格變動。像[100.1; 100.2)需要調整時間間隔以儘量減少移動,所以不需要[100.015; 100.15)可能的時間間隔。
輸入引號任何雙(6個位數後,就足夠了),可能會或可能不會遵守價格一步規則(例如,從股市的直接價值服從,但平均值不)。顯然,報價應該是間隔的。我嘗試了不同的方法,但都失敗了。
範圍是相當簡單:
public class Range<T extends Comparable> {
private T from = null;
private T to = null;
public Range(T from, T to) {
this.from = from;
this.to = to;
}
public T getFrom() {
return from;
}
public T getTo() {
return to;
}
@SuppressWarnings("unchecked")
public boolean contains(T value) {
return from.compareTo(value) <= 0 && to.compareTo(value) > 0;
}
@Override
public String toString() {
return "Range{" +
"from=" + from +
", to=" + to +
'}';
}
}
protected static Range<Double> getRangeFromPrice(double pips, int step, double price) {
BigDecimal modifier = new BigDecimal(pips * step).setScale(6, BigDecimal.ROUND_HALF_DOWN);
BigDecimal begin = new BigDecimal(price).divide(modifier, 0, BigDecimal.ROUND_HALF_DOWN).multiply(modifier);
return new Range<>(begin.doubleValue(), begin.add(modifier).doubleValue());
}
此功能的大部分時間,例如對於點數= 0.01和步長= 10
- 價= 132範圍{從= 132.0,以= 132.1}確定
- 價格= 132.01範圍從{= 132.0,爲= 132.1}確定
- 價格= 132.1範圍從{= 132.1,爲= 132.2}確定
- 價格= 132.15範圍從{= 132.2,爲= 132.3} < - ERROR,價格不在間隔
我嘗試不同的舍入策略,但它們都失敗(在一個實例中或另外的)。現在我完全沒有想法。我怎樣才能自動選擇舍入策略?