19
2019
06

股票 计算逻辑

/**
 * <pre>

前复权:复权后价格=[(复权前价格-现金红利)+配(新)股价格×流通股份变动比例]÷(1+流通股份变动比例+送股率)
后复权:复权后价格=复权前价格×(1+流通股份变动比例+送股率)+现金红利

前复权:复权后价格=[(复权前价格-现金红利)+配(新)股价格×流通股份变动比例]÷(1+流通股份变动比例+送股率) 
后复权:复权后价格=复权前价格×(1+流通股份变动比例+送股率)-配(新)股价格×流通股份变动比例+现金红利

 * </pre>
 */
public static final double after(double close, double profit, double pei, double rate, double song){
return close*(1+rate+song)-pei*rate+profit;
}

public static final double[] after(double[] price, double profit, double pei, double rate, double song){
for(int i=0; i<price.length; i++){
price[i] = after(price[i], profit, pei, rate,song);
}
return price;
}

// [(前收盘价-现金红利)+配(新)股价格× 流通股份变动比例]÷ (1+流通股份变动比例)
public static final double before(double close, double profit, double pei, double rate, double song){
return (close-profit+pei*rate)/(1+rate+song);
}

public static final double[] before(double[] price, double profit, double pei, double rate, double song){
for(int i=0; i<price.length; i++){
price[i] = before(price[i], profit, pei, rate,song);
}
return price;
}


//



public static double[][] merge(double[][][] doubles){
int size = count(doubles);
double[][] result = new double[size][];
int offset = 0;
for(int i=0; i<doubles.length; i++){
double[][] double_1 = doubles[i];
System.arraycopy(double_1, 0, result, offset, double_1.length);
offset += double_1.length;
}
return result;


« 上一篇 下一篇 »