/**
* <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;
}
* <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;
}