软件模拟股票高抛低吸

约定:

  1. 本金10000.00元;

  2. 当前股价10.0元/股;

  3. 本金的50%用于建仓;

  4. 股价下降10%,买入当前股票数的10%(低吸);

  5. 股价上升20%,卖出当前股票数的10%(高抛);

  6. 股价下降与上升概率同等(或2:1)情况下总价值分析;

  7. 低吸后持股成本:(第一次买入数量*买入价 + 第二次买入数量*买入价+交易费用)/ (第一次买入数量 + 第二次买入数量);

  8. 高抛后持股成本:(第一次买入数量*买入价 - 第二次卖出数量*买入价+交易费用)/ (第一次买入数量 - 第二次买入数量);

  9. 每次交易费用固定为6元 = 5元(交易佣金+印花税)+ 1元(杂费);

  10. 总共交易20次,并且最后2次为股价上升;

  11. 其他:参考大神的文章 “高抛低吸”与“追涨杀跌”。

目标:

通过长期高抛低吸,将持有股数增加,将持有股价降低。

编程(股价下降与上升概率2:1):

#include <string.h>
#include <stdio.h>
#include <time.h>int main(){double zongjiazhi = 10000.0;//总价值 = 现金+股值double xianjin = 10000.0;//本金1万double chiguchengben = 0.0;//持股成本double gujia_junzhi = 10.0;//初始股价均值10元1股double dangqian_gujia = 10.0;//当前股价int gupiaoshu = 0;//股票数int suijishu = 0;//假设下降概率与上升概率比为2:1srand((unsigned int)time(NULL));int i = 1;for(i = 1; i <= 20; i++){if(1 == i){//首次建仓chiguchengben = xianjin/2;//建仓使用一半本金xianjin = xianjin - chiguchengben;gupiaoshu = chiguchengben/gujia_junzhi;gujia_junzhi = gujia_junzhi*1.0;printf("\n--------------------------------------------------------------------------------------------------------------------------\n");printf("\n第 %d 次建仓 : 总价值=%.2lf, 剩余现金=%.2lf, 持股成本=%.2lf, 持有股票数=%d, 持有股票均价=%.2lf, 当前股价=%.2lf \n", i, zongjiazhi, xianjin, chiguchengben, gupiaoshu, gujia_junzhi, gujia_junzhi);}else{suijishu = rand() % 100 + 1;//产生随机数[1,100]printf("\n\n随机数 = %d, ", suijishu);if((suijishu < 66) && (i < 18)){//下跌10%,补仓10%printf("补仓\n");double bucang_gujia = dangqian_gujia*0.9;//补仓股价int bucang_gupiaoshu = (int)gupiaoshu*0.1;//补仓股票数double bucang_jine = bucang_gujia*bucang_gupiaoshu;//补仓金额dangqian_gujia = bucang_gujia;//当前股价xianjin = xianjin - bucang_jine;//当前本金chiguchengben = chiguchengben + bucang_jine;gupiaoshu = gupiaoshu + bucang_gupiaoshu;//当前股票总数gujia_junzhi = (chiguchengben + 6 + 1)*1.0/gupiaoshu;zongjiazhi = xianjin + gupiaoshu*dangqian_gujia;printf("第 %d 次操作前 : 补仓股价=%.2lf, 补仓股票数=%d, 补仓金额=%.2lf\n", i, bucang_gujia, bucang_gupiaoshu, bucang_jine);printf("第 %d 次操作后 : 持有股票数=%d, 持有股票均价=%.2lf, 当前股价=%.2lf \n", i, gupiaoshu, gujia_junzhi, dangqian_gujia);printf("第 %d 次操作后 : 总价值=%.2lf, 持股成本=%.2lf, 剩余现金=%.2lf \n", i, zongjiazhi, chiguchengben, xianjin);}else{//上升20%,抛仓10%printf("抛仓\n");double pocang_gujia = dangqian_gujia*1.2;//抛仓股价int pocang_gupiaoshu = (int)gupiaoshu*0.1;//抛仓股票数double pocang_jine = pocang_gujia*pocang_gupiaoshu;//抛仓金额dangqian_gujia = pocang_gujia;//当前股价xianjin = xianjin + pocang_jine;//当前现金chiguchengben = chiguchengben - pocang_jine;if(chiguchengben < 0){printf("!!!!!!持股成本已最低!!!!!!\n");break;}gupiaoshu = gupiaoshu - pocang_gupiaoshu;//当前股票总数gujia_junzhi = (chiguchengben + 6 + 1)*1.0/gupiaoshu;zongjiazhi = xianjin + gupiaoshu*dangqian_gujia;printf("第 %d 次操作前 : 抛仓股价=%.2lf, 抛仓股票数=%d, 抛仓金额=%.2lf\n", i, pocang_gujia, pocang_gupiaoshu, pocang_jine);printf("第 %d 次操作后 : 持有股票数=%d, 持有股票均价=%.2lf, 当前股价=%.2lf \n", i, gupiaoshu, gujia_junzhi, dangqian_gujia);printf("第 %d 次操作后 : 总价值=%.2lf, 持股成本=%.2lf, 剩余现金=%.2lf \n", i, zongjiazhi, chiguchengben, xianjin);}}}return 0;
}

测试结果:

第 1 次建仓 : 总价值=10000.00, 剩余现金=5000.00, 持股成本=5000.00, 持有股票数=500, 持有股票均价=10.00, 当前股价=10.00 随机数 = 52, 补仓
第 2 次操作前 : 补仓股价=9.00, 补仓股票数=50, 补仓金额=450.00
第 2 次操作后 : 持有股票数=550, 持有股票均价=9.92, 当前股价=9.00
第 2 次操作后 : 总价值=9500.00, 持股成本=5450.00, 剩余现金=4550.00 随机数 = 57, 补仓
第 3 次操作前 : 补仓股价=8.10, 补仓股票数=55, 补仓金额=445.50
第 3 次操作后 : 持有股票数=605, 持有股票均价=9.76, 当前股价=8.10
第 3 次操作后 : 总价值=9005.00, 持股成本=5895.50, 剩余现金=4104.50 随机数 = 50, 补仓
第 4 次操作前 : 补仓股价=7.29, 补仓股票数=60, 补仓金额=437.40
第 4 次操作后 : 持有股票数=665, 持有股票均价=9.53, 当前股价=7.29
第 4 次操作后 : 总价值=8514.95, 持股成本=6332.90, 剩余现金=3667.10 随机数 = 1, 补仓
第 5 次操作前 : 补仓股价=6.56, 补仓股票数=66, 补仓金额=433.03
第 5 次操作后 : 持有股票数=731, 持有股票均价=9.27, 当前股价=6.56
第 5 次操作后 : 总价值=8030.16, 持股成本=6765.93, 剩余现金=3234.07 随机数 = 57, 补仓
第 6 次操作前 : 补仓股价=5.90, 补仓股票数=73, 补仓金额=431.06
第 6 次操作后 : 持有股票数=804, 持有股票均价=8.96, 当前股价=5.90
第 6 次操作后 : 总价值=7550.56, 持股成本=7196.98, 剩余现金=2803.02 随机数 = 71, 抛仓
第 7 次操作前 : 抛仓股价=7.09, 抛仓股票数=80, 抛仓金额=566.87
第 7 次操作后 : 持有股票数=724, 持有股票均价=9.17, 当前股价=7.09
第 7 次操作后 : 总价值=8500.06, 持股成本=6630.11, 剩余现金=3369.89 随机数 = 16, 补仓
第 8 次操作前 : 补仓股价=6.38, 补仓股票数=72, 补仓金额=459.17
第 8 次操作后 : 持有股票数=796, 持有股票均价=8.91, 当前股价=6.38
第 8 次操作后 : 总价值=7987.05, 持股成本=7089.28, 剩余现金=2910.72 随机数 = 75, 抛仓
第 9 次操作前 : 抛仓股价=7.65, 抛仓股票数=79, 抛仓金额=604.57
第 9 次操作后 : 持有股票数=717, 持有股票均价=9.05, 当前股价=7.65
第 9 次操作后 : 总价值=9002.31, 持股成本=6484.71, 剩余现金=3515.29 随机数 = 67, 抛仓
第 10 次操作前 : 抛仓股价=9.18, 抛仓股票数=71, 抛仓金额=652.01
第 10 次操作后 : 持有股票数=646, 持有股票均价=9.04, 当前股价=9.18
第 10 次操作后 : 总价值=10099.72, 持股成本=5832.70, 剩余现金=4167.30 随机数 = 86, 抛仓
第 11 次操作前 : 抛仓股价=11.02, 抛仓股票数=64, 抛仓金额=705.28
第 11 次操作后 : 持有股票数=582, 持有股票均价=8.82, 当前股价=11.02
第 11 次操作后 : 总价值=11286.20, 持股成本=5127.42, 剩余现金=4872.58 随机数 = 20, 补仓
第 12 次操作前 : 补仓股价=9.92, 补仓股票数=58, 补仓金额=575.24
第 12 次操作后 : 持有股票数=640, 持有股票均价=8.92, 当前股价=9.92
第 12 次操作后 : 总价值=10644.84, 持股成本=5702.66, 剩余现金=4297.34 随机数 = 16, 补仓
第 13 次操作前 : 补仓股价=8.93, 补仓股票数=64, 补仓金额=571.27
第 13 次操作后 : 持有股票数=704, 持有股票均价=8.92, 当前股价=8.93
第 13 次操作后 : 总价值=10010.09, 持股成本=6273.94, 剩余现金=3726.06 随机数 = 59, 补仓
第 14 次操作前 : 补仓股价=8.03, 补仓股票数=70, 补仓金额=562.35
第 14 次操作后 : 持有股票数=774, 持有股票均价=8.84, 当前股价=8.03
第 14 次操作后 : 总价值=9381.68, 持股成本=6836.28, 剩余现金=3163.72 随机数 = 37, 补仓
第 15 次操作前 : 补仓股价=7.23, 补仓股票数=77, 补仓金额=556.73
第 15 次操作后 : 持有股票数=851, 持有股票均价=8.70, 当前股价=7.23
第 15 次操作后 : 总价值=8759.89, 持股成本=7393.01, 剩余现金=2606.99 随机数 = 32, 补仓
第 16 次操作前 : 补仓股价=6.51, 补仓股票数=85, 补仓金额=553.11
第 16 次操作后 : 持有股票数=936, 持有股票均价=8.50, 当前股价=6.51
第 16 次操作后 : 总价值=8144.60, 持股成本=7946.12, 剩余现金=2053.88 随机数 = 90, 抛仓
第 17 次操作前 : 抛仓股价=7.81, 抛仓股票数=93, 抛仓金额=726.20
第 17 次操作后 : 持有股票数=843, 持有股票均价=8.57, 当前股价=7.81
第 17 次操作后 : 总价值=9362.74, 持股成本=7219.92, 剩余现金=2780.08 随机数 = 87, 抛仓
第 18 次操作前 : 抛仓股价=9.37, 抛仓股票数=84, 抛仓金额=787.11
第 18 次操作后 : 持有股票数=759, 持有股票均价=8.48, 当前股价=9.37
第 18 次操作后 : 总价值=10679.27, 持股成本=6432.81, 剩余现金=3567.19 随机数 = 87, 抛仓
第 19 次操作前 : 抛仓股价=11.24, 抛仓股票数=75, 抛仓金额=843.33
第 19 次操作后 : 持有股票数=684, 持有股票均价=8.18, 当前股价=11.24
第 19 次操作后 : 总价值=12101.69, 持股成本=5589.48, 剩余现金=4410.52 随机数 = 100, 抛仓
第 20 次操作前 : 抛仓股价=13.49, 抛仓股票数=68, 抛仓金额=917.54
第 20 次操作后 : 持有股票数=616, 持有股票均价=7.60, 当前股价=13.49
第 20 次操作后 : 总价值=13639.92, 持股成本=4671.94, 剩余现金=5328.06

结论:

即使前期股价再怎么跌,每跌10%,则补仓后,持有股票的均价一直在降低,只要等到股价上升时,手中低价的股票就能实现盈利,当然这个时间成本是无法估计的,可能一年,可能三年,但对于价值投资来看,这个时间并不算长。

编程(股价下降与上升概率1:1):

#include <string.h>
#include <stdio.h>
#include <time.h>int main(){double zongjiazhi = 10000.0;//总价值 = 现金+股值double xianjin = 10000.0;//本金1万double chiguchengben = 0.0;//持股成本double gujia_junzhi = 10.0;//初始股价均值10元1股double dangqian_gujia = 10.0;//当前股价int gupiaoshu = 0;//股票数int suijishu = 0;//假设下降概率与上升概率比为2:1srand((unsigned int)time(NULL));int i = 1;for(i = 1; i <= 20; i++){if(1 == i){//首次建仓chiguchengben = xianjin/2;//建仓使用一半本金xianjin = xianjin - chiguchengben;gupiaoshu = chiguchengben/gujia_junzhi;gujia_junzhi = gujia_junzhi*1.0;printf("\n--------------------------------------------------------------------------------------------------------------------------\n");printf("\n第 %d 次建仓 : 总价值=%.2lf, 剩余现金=%.2lf, 持股成本=%.2lf, 持有股票数=%d, 持有股票均价=%.2lf, 当前股价=%.2lf \n", i, zongjiazhi, xianjin, chiguchengben, gupiaoshu, gujia_junzhi, gujia_junzhi);}else{suijishu = rand() % 100 + 1;//产生随机数[1,100]printf("\n\n随机数 = %d, ", suijishu);if((suijishu < 50) && (i < 18)){//下跌10%,补仓10%printf("补仓\n");double bucang_gujia = dangqian_gujia*0.9;//补仓股价int bucang_gupiaoshu = (int)gupiaoshu*0.1;//补仓股票数double bucang_jine = bucang_gujia*bucang_gupiaoshu;//补仓金额dangqian_gujia = bucang_gujia;//当前股价xianjin = xianjin - bucang_jine;//当前本金chiguchengben = chiguchengben + bucang_jine;gupiaoshu = gupiaoshu + bucang_gupiaoshu;//当前股票总数gujia_junzhi = (chiguchengben + 6 + 1)*1.0/gupiaoshu;zongjiazhi = xianjin + gupiaoshu*dangqian_gujia;printf("第 %d 次操作前 : 补仓股价=%.2lf, 补仓股票数=%d, 补仓金额=%.2lf\n", i, bucang_gujia, bucang_gupiaoshu, bucang_jine);printf("第 %d 次操作后 : 持有股票数=%d, 持有股票均价=%.2lf, 当前股价=%.2lf \n", i, gupiaoshu, gujia_junzhi, dangqian_gujia);printf("第 %d 次操作后 : 总价值=%.2lf, 持股成本=%.2lf, 剩余现金=%.2lf \n", i, zongjiazhi, chiguchengben, xianjin);}else{//上升20%,抛仓10%printf("抛仓\n");double pocang_gujia = dangqian_gujia*1.2;//抛仓股价int pocang_gupiaoshu = (int)gupiaoshu*0.1;//抛仓股票数double pocang_jine = pocang_gujia*pocang_gupiaoshu;//抛仓金额dangqian_gujia = pocang_gujia;//当前股价xianjin = xianjin + pocang_jine;//当前现金chiguchengben = chiguchengben - pocang_jine;if(chiguchengben < 0){printf("!!!!!!持股成本已最低!!!!!!\n");break;}gupiaoshu = gupiaoshu - pocang_gupiaoshu;//当前股票总数gujia_junzhi = (chiguchengben + 6 + 1)*1.0/gupiaoshu;zongjiazhi = xianjin + gupiaoshu*dangqian_gujia;printf("第 %d 次操作前 : 抛仓股价=%.2lf, 抛仓股票数=%d, 抛仓金额=%.2lf\n", i, pocang_gujia, pocang_gupiaoshu, pocang_jine);printf("第 %d 次操作后 : 持有股票数=%d, 持有股票均价=%.2lf, 当前股价=%.2lf \n", i, gupiaoshu, gujia_junzhi, dangqian_gujia);printf("第 %d 次操作后 : 总价值=%.2lf, 持股成本=%.2lf, 剩余现金=%.2lf \n", i, zongjiazhi, chiguchengben, xianjin);}}}return 0;
}

测试结果:

第 1 次建仓 : 总价值=10000.00, 剩余现金=5000.00, 持股成本=5000.00, 持有股票数=500, 持有股票均价=10.00, 当前股价=10.00 随机数 = 35, 补仓
第 2 次操作前 : 补仓股价=9.00, 补仓股票数=50, 补仓金额=450.00
第 2 次操作后 : 持有股票数=550, 持有股票均价=9.92, 当前股价=9.00
第 2 次操作后 : 总价值=9500.00, 持股成本=5450.00, 剩余现金=4550.00 随机数 = 10, 补仓
第 3 次操作前 : 补仓股价=8.10, 补仓股票数=55, 补仓金额=445.50
第 3 次操作后 : 持有股票数=605, 持有股票均价=9.76, 当前股价=8.10
第 3 次操作后 : 总价值=9005.00, 持股成本=5895.50, 剩余现金=4104.50 随机数 = 23, 补仓
第 4 次操作前 : 补仓股价=7.29, 补仓股票数=60, 补仓金额=437.40
第 4 次操作后 : 持有股票数=665, 持有股票均价=9.53, 当前股价=7.29
第 4 次操作后 : 总价值=8514.95, 持股成本=6332.90, 剩余现金=3667.10 随机数 = 74, 抛仓
第 5 次操作前 : 抛仓股价=8.75, 抛仓股票数=66, 抛仓金额=577.37
第 5 次操作后 : 持有股票数=599, 持有股票均价=9.62, 当前股价=8.75
第 5 次操作后 : 总价值=9484.52, 持股成本=5755.53, 剩余现金=4244.47 随机数 = 9, 补仓
第 6 次操作前 : 补仓股价=7.87, 补仓股票数=59, 补仓金额=464.52
第 6 次操作后 : 持有股票数=658, 持有股票均价=9.46, 当前股价=7.87
第 6 次操作后 : 总价值=8960.51, 持股成本=6220.05, 剩余现金=3779.95 随机数 = 7, 补仓
第 7 次操作前 : 补仓股价=7.09, 补仓股票数=65, 补仓金额=460.58
第 7 次操作后 : 持有股票数=723, 持有股票均价=9.25, 当前股价=7.09
第 7 次操作后 : 总价值=8442.46, 持股成本=6680.63, 剩余现金=3319.37 随机数 = 79, 抛仓
第 8 次操作前 : 抛仓股价=8.50, 抛仓股票数=72, 抛仓金额=612.22
第 8 次操作后 : 持有股票数=651, 持有股票均价=9.33, 当前股价=8.50
第 8 次操作后 : 总价值=9467.08, 持股成本=6068.41, 剩余现金=3931.59 随机数 = 85, 抛仓
第 9 次操作前 : 抛仓股价=10.20, 抛仓股票数=65, 抛仓金额=663.24
第 9 次操作后 : 持有股票数=586, 持有股票均价=9.24, 当前股价=10.20
第 9 次操作后 : 总价值=10574.17, 持股成本=5405.17, 剩余现金=4594.83 随机数 = 90, 抛仓
第 10 次操作前 : 抛仓股价=12.24, 抛仓股票数=58, 抛仓金额=710.18
第 10 次操作后 : 持有股票数=528, 持有股票均价=8.91, 当前股价=12.24
第 10 次操作后 : 总价值=11770.04, 持股成本=4695.00, 剩余现金=5305.00 随机数 = 63, 抛仓
第 11 次操作前 : 抛仓股价=14.69, 抛仓股票数=52, 抛仓金额=764.05
第 11 次操作后 : 持有股票数=476, 持有股票均价=8.27, 当前股价=14.69
第 11 次操作后 : 总价值=13063.05, 持股成本=3930.95, 剩余现金=6069.05 随机数 = 51, 抛仓
第 12 次操作前 : 抛仓股价=17.63, 抛仓股票数=47, 抛仓金额=828.70
第 12 次操作后 : 持有股票数=429, 持有股票均价=7.25, 当前股价=17.63
第 12 次操作后 : 总价值=14461.85, 持股成本=3102.25, 剩余现金=6897.75 随机数 = 83, 抛仓
第 13 次操作前 : 抛仓股价=21.16, 抛仓股票数=42, 抛仓金额=888.65
第 13 次操作后 : 持有股票数=387, 持有股票均价=5.74, 当前股价=21.16
第 13 次操作后 : 总价值=15974.67, 持股成本=2213.60, 剩余现金=7786.40 随机数 = 38, 补仓
第 14 次操作前 : 补仓股价=19.04, 补仓股票数=38, 补仓金额=723.61
第 14 次操作后 : 持有股票数=425, 持有股票均价=6.93, 当前股价=19.04
第 14 次操作后 : 总价值=15155.85, 持股成本=2937.21, 剩余现金=7062.79 随机数 = 25, 补仓
第 15 次操作前 : 补仓股价=17.14, 补仓股票数=42, 补仓金额=719.81
第 15 次操作后 : 持有股票数=467, 持有股票均价=7.85, 当前股价=17.14
第 15 次操作后 : 总价值=14346.54, 持股成本=3657.02, 剩余现金=6342.98 随机数 = 53, 抛仓
第 16 次操作前 : 抛仓股价=20.57, 抛仓股票数=46, 抛仓金额=946.03
第 16 次操作后 : 持有股票数=421, 持有股票均价=6.46, 当前股价=20.57
第 16 次操作后 : 总价值=15947.25, 持股成本=2710.99, 剩余现金=7289.01 随机数 = 5, 补仓
第 17 次操作前 : 补仓股价=18.51, 补仓股票数=42, 补仓金额=777.39
第 17 次操作后 : 持有股票数=463, 持有股票均价=7.55, 当前股价=18.51
第 17 次操作后 : 总价值=15081.43, 持股成本=3488.38, 剩余现金=6511.62 随机数 = 91, 抛仓
第 18 次操作前 : 抛仓股价=22.21, 抛仓股票数=46, 抛仓金额=1021.71
第 18 次操作后 : 持有股票数=417, 持有股票均价=5.93, 当前股价=22.21
第 18 次操作后 : 总价值=16795.39, 持股成本=2466.67, 剩余现金=7533.33 随机数 = 42, 抛仓
第 19 次操作前 : 抛仓股价=26.65, 抛仓股票数=41, 抛仓金额=1092.79
第 19 次操作后 : 持有股票数=376, 持有股票均价=3.67, 当前股价=26.65
第 19 次操作后 : 总价值=18647.80, 持股成本=1373.88, 剩余现金=8626.12 随机数 = 34, 抛仓
第 20 次操作前 : 抛仓股价=31.98, 抛仓股票数=37, 抛仓金额=1183.41
第 20 次操作后 : 持有股票数=339, 持有股票均价=0.58, 当前股价=31.98
第 20 次操作后 : 总价值=20652.14, 持股成本=190.47, 剩余现金=9809.53

结论:

当股价下降与上升概率均等时,得出类似上面的结论,并且此时的收益将更大。

当你打算长期持有某一只股票时,当然可以按照上述步骤操作,但是大多数短期操作的朋友往往心中有个预期的盈利点位(比如1000.00元),赚到我就跑路,那就需要在股指达到某个点时,全仓抛售。

编程(股价下降与上升概率2:1):

#include <string.h>
#include <stdio.h>
#include <time.h>#define YUQI_YINGLI 3000.00int main(){double zongjiazhi = 10000.0;//总价值 = 现金+股值double benjin = 10000.0;//本金1万double xianjin = 10000.0;//现金1万double chiguchengben = 0.0;//持股成本double gujia_junzhi = 10.0;//初始股价均值10元1股double dangqian_gujia = 10.0;//当前股价int gupiaoshu = 0;//股票数int suijishu = 0;//假设下降概率与上升概率比为2:1srand((unsigned int)time(NULL));int i = 1;for(i = 1; i <= 20; i++){if(1 == i){//首次建仓chiguchengben = xianjin/2;//建仓使用一半本金xianjin = xianjin - chiguchengben;gupiaoshu = chiguchengben/gujia_junzhi;gujia_junzhi = gujia_junzhi*1.0;printf("\n--------------------------------------------------------------------------------------------------------------------------\n");printf("\n第 %d 次建仓 : 总价值=%.2lf, 剩余现金=%.2lf, 持股成本=%.2lf, 持有股票数=%d, 持有股票均价=%.2lf, 当前股价=%.2lf \n", i, zongjiazhi, xianjin, chiguchengben, gupiaoshu, gujia_junzhi, gujia_junzhi);}else{suijishu = rand() % 100 + 1;//产生随机数[1,100]printf("\n\n随机数 = %d, ", suijishu);if((suijishu < 66) && (i < 18)){//下跌10%,补仓10%printf("补仓\n");double bucang_gujia = dangqian_gujia*0.9;//补仓股价int bucang_gupiaoshu = (int)gupiaoshu*0.1;//补仓股票数double bucang_jine = bucang_gujia*bucang_gupiaoshu;//补仓金额dangqian_gujia = bucang_gujia;//当前股价xianjin = xianjin - bucang_jine;//当前本金chiguchengben = chiguchengben + bucang_jine;gupiaoshu = gupiaoshu + bucang_gupiaoshu;//当前股票总数gujia_junzhi = (chiguchengben + 6 + 1)*1.0/gupiaoshu;zongjiazhi = xianjin + gupiaoshu*dangqian_gujia;printf("第 %d 次操作前 : 补仓股价=%.2lf, 补仓股票数=%d, 补仓金额=%.2lf\n", i, bucang_gujia, bucang_gupiaoshu, bucang_jine);printf("第 %d 次操作后 : 持有股票数=%d, 持有股票均价=%.2lf, 当前股价=%.2lf \n", i, gupiaoshu, gujia_junzhi, dangqian_gujia);printf("第 %d 次操作后 : 总价值=%.2lf, 持股成本=%.2lf, 剩余现金=%.2lf \n", i, zongjiazhi, chiguchengben, xianjin);if(zongjiazhi-benjin > YUQI_YINGLI){printf("\n盈利达到预期,盈利额为%.2lf, 全仓抛售!\n", (zongjiazhi-benjin));break;}}else{//上升20%,抛仓10%printf("抛仓\n");double pocang_gujia = dangqian_gujia*1.2;//抛仓股价int pocang_gupiaoshu = (int)gupiaoshu*0.1;//抛仓股票数double pocang_jine = pocang_gujia*pocang_gupiaoshu;//抛仓金额dangqian_gujia = pocang_gujia;//当前股价xianjin = xianjin + pocang_jine;//当前现金chiguchengben = chiguchengben - pocang_jine;if(chiguchengben < 0){printf("!!!!!!持股成本已最低!!!!!!\n");break;}gupiaoshu = gupiaoshu - pocang_gupiaoshu;//当前股票总数gujia_junzhi = (chiguchengben + 6 + 1)*1.0/gupiaoshu;zongjiazhi = xianjin + gupiaoshu*dangqian_gujia;printf("第 %d 次操作前 : 抛仓股价=%.2lf, 抛仓股票数=%d, 抛仓金额=%.2lf\n", i, pocang_gujia, pocang_gupiaoshu, pocang_jine);printf("第 %d 次操作后 : 持有股票数=%d, 持有股票均价=%.2lf, 当前股价=%.2lf \n", i, gupiaoshu, gujia_junzhi, dangqian_gujia);printf("第 %d 次操作后 : 总价值=%.2lf, 持股成本=%.2lf, 剩余现金=%.2lf \n", i, zongjiazhi, chiguchengben, xianjin);if(zongjiazhi-benjin > YUQI_YINGLI){printf("\n盈利达到预期,盈利额为%.2lf, 全仓抛售!\n", (zongjiazhi-benjin));break;}}}}return 0;
}

测试结果:

第 1 次建仓 : 总价值=10000.00, 剩余现金=5000.00, 持股成本=5000.00, 持有股票数=500, 持有股票均价=10.00, 当前股价=10.00 随机数 = 88, 抛仓
第 2 次操作前 : 抛仓股价=12.00, 抛仓股票数=50, 抛仓金额=600.00
第 2 次操作后 : 持有股票数=450, 持有股票均价=9.79, 当前股价=12.00
第 2 次操作后 : 总价值=11000.00, 持股成本=4400.00, 剩余现金=5600.00 随机数 = 16, 补仓
第 3 次操作前 : 补仓股价=10.80, 补仓股票数=45, 补仓金额=486.00
第 3 次操作后 : 持有股票数=495, 持有股票均价=9.88, 当前股价=10.80
第 3 次操作后 : 总价值=10460.00, 持股成本=4886.00, 剩余现金=5114.00 随机数 = 26, 补仓
第 4 次操作前 : 补仓股价=9.72, 补仓股票数=49, 补仓金额=476.28
第 4 次操作后 : 持有股票数=544, 持有股票均价=9.87, 当前股价=9.72
第 4 次操作后 : 总价值=9925.40, 持股成本=5362.28, 剩余现金=4637.72 随机数 = 27, 补仓
第 5 次操作前 : 补仓股价=8.75, 补仓股票数=54, 补仓金额=472.39
第 5 次操作后 : 持有股票数=598, 持有股票均价=9.77, 当前股价=8.75
第 5 次操作后 : 总价值=9396.63, 持股成本=5834.67, 剩余现金=4165.33 随机数 = 14, 补仓
第 6 次操作前 : 补仓股价=7.87, 补仓股票数=59, 补仓金额=464.52
第 6 次操作后 : 持有股票数=657, 持有股票均价=9.60, 当前股价=7.87
第 6 次操作后 : 总价值=8873.50, 持股成本=6299.19, 剩余现金=3700.81 随机数 = 85, 抛仓
第 7 次操作前 : 抛仓股价=9.45, 抛仓股票数=65, 抛仓金额=614.11
第 7 次操作后 : 持有股票数=592, 持有股票均价=9.62, 当前股价=9.45
第 7 次操作后 : 总价值=9908.04, 持股成本=5685.08, 剩余现金=4314.92 随机数 = 93, 抛仓
第 8 次操作前 : 抛仓股价=11.34, 抛仓股票数=59, 抛仓金额=668.91
第 8 次操作后 : 持有股票数=533, 持有股票均价=9.42, 当前股价=11.34
第 8 次操作后 : 总价值=11026.66, 持股成本=5016.17, 剩余现金=4983.83 随机数 = 11, 补仓
第 9 次操作前 : 补仓股价=10.20, 补仓股票数=53, 补仓金额=540.79
第 9 次操作后 : 持有股票数=586, 持有股票均价=9.49, 当前股价=10.20
第 9 次操作后 : 总价值=10422.38, 持股成本=5556.97, 剩余现金=4443.03 随机数 = 84, 抛仓
第 10 次操作前 : 抛仓股价=12.24, 抛仓股票数=58, 抛仓金额=710.18
第 10 次操作后 : 持有股票数=528, 持有股票均价=9.19, 当前股价=12.24
第 10 次操作后 : 总价值=11618.25, 持股成本=4846.79, 剩余现金=5153.21 随机数 = 100, 抛仓
第 11 次操作前 : 抛仓股价=14.69, 抛仓股票数=52, 抛仓金额=764.05
第 11 次操作后 : 持有股票数=476, 持有股票均价=8.59, 当前股价=14.69
第 11 次操作后 : 总价值=12911.26, 持股成本=4082.74, 剩余现金=5917.26 随机数 = 15, 补仓
第 12 次操作前 : 补仓股价=13.22, 补仓股票数=47, 补仓金额=621.53
第 12 次操作后 : 持有股票数=523, 持有股票均价=9.01, 当前股价=13.22
第 12 次操作后 : 总价值=12211.86, 持股成本=4704.27, 剩余现金=5295.73 随机数 = 23, 补仓
第 13 次操作前 : 补仓股价=11.90, 补仓股票数=52, 补仓金额=618.88
第 13 次操作后 : 持有股票数=575, 持有股票均价=9.27, 当前股价=11.90
第 13 次操作后 : 总价值=11520.25, 持股成本=5323.15, 剩余现金=4676.85 随机数 = 25, 补仓
第 14 次操作前 : 补仓股价=10.71, 补仓股票数=57, 补仓金额=610.55
第 14 次操作后 : 持有股票数=632, 持有股票均价=9.40, 当前股价=10.71
第 14 次操作后 : 总价值=10835.91, 持股成本=5933.70, 剩余现金=4066.30 随机数 = 89, 抛仓
第 15 次操作前 : 抛仓股价=12.85, 抛仓股票数=63, 抛仓金额=809.78
第 15 次操作后 : 持有股票数=569, 持有股票均价=9.02, 当前股价=12.85
第 15 次操作后 : 总价值=12189.83, 持股成本=5123.92, 剩余现金=4876.08 随机数 = 92, 抛仓
第 16 次操作前 : 抛仓股价=15.42, 抛仓股票数=56, 抛仓金额=863.77
第 16 次操作后 : 持有股票数=513, 持有股票均价=8.32, 当前股价=15.42
第 16 次操作后 : 总价值=13652.58, 持股成本=4260.15, 剩余现金=5739.85 盈利达到预期,盈利额为3652.58, 全仓抛售!

结论:

达到第16轮操作时,达到盈利目标,全仓抛售,盈利出局。

编程(股价下降与上升概率1:1):

#include <string.h>
#include <stdio.h>
#include <time.h>#define YUQI_YINGLI 3000.00int main(){double zongjiazhi = 10000.0;//总价值 = 现金+股值double benjin = 10000.0;//本金1万double xianjin = 10000.0;//现金1万double chiguchengben = 0.0;//持股成本double gujia_junzhi = 10.0;//初始股价均值10元1股double dangqian_gujia = 10.0;//当前股价int gupiaoshu = 0;//股票数int suijishu = 0;//假设下降概率与上升概率比为2:1srand((unsigned int)time(NULL));int i = 1;for(i = 1; i <= 20; i++){if(1 == i){//首次建仓chiguchengben = xianjin/2;//建仓使用一半本金xianjin = xianjin - chiguchengben;gupiaoshu = chiguchengben/gujia_junzhi;gujia_junzhi = gujia_junzhi*1.0;printf("\n--------------------------------------------------------------------------------------------------------------------------\n");printf("\n第 %d 次建仓 : 总价值=%.2lf, 剩余现金=%.2lf, 持股成本=%.2lf, 持有股票数=%d, 持有股票均价=%.2lf, 当前股价=%.2lf \n", i, zongjiazhi, xianjin, chiguchengben, gupiaoshu, gujia_junzhi, gujia_junzhi);}else{suijishu = rand() % 100 + 1;//产生随机数[1,100]printf("\n\n随机数 = %d, ", suijishu);if((suijishu < 50) && (i < 18)){//下跌10%,补仓10%printf("补仓\n");double bucang_gujia = dangqian_gujia*0.9;//补仓股价int bucang_gupiaoshu = (int)gupiaoshu*0.1;//补仓股票数double bucang_jine = bucang_gujia*bucang_gupiaoshu;//补仓金额dangqian_gujia = bucang_gujia;//当前股价xianjin = xianjin - bucang_jine;//当前本金chiguchengben = chiguchengben + bucang_jine;gupiaoshu = gupiaoshu + bucang_gupiaoshu;//当前股票总数gujia_junzhi = (chiguchengben + 6 + 1)*1.0/gupiaoshu;zongjiazhi = xianjin + gupiaoshu*dangqian_gujia;printf("第 %d 次操作前 : 补仓股价=%.2lf, 补仓股票数=%d, 补仓金额=%.2lf\n", i, bucang_gujia, bucang_gupiaoshu, bucang_jine);printf("第 %d 次操作后 : 持有股票数=%d, 持有股票均价=%.2lf, 当前股价=%.2lf \n", i, gupiaoshu, gujia_junzhi, dangqian_gujia);printf("第 %d 次操作后 : 总价值=%.2lf, 持股成本=%.2lf, 剩余现金=%.2lf \n", i, zongjiazhi, chiguchengben, xianjin);if(zongjiazhi-benjin > YUQI_YINGLI){printf("\n盈利达到预期,盈利额为%.2lf, 全仓抛售!\n", (zongjiazhi-benjin));break;}}else{//上升20%,抛仓10%printf("抛仓\n");double pocang_gujia = dangqian_gujia*1.2;//抛仓股价int pocang_gupiaoshu = (int)gupiaoshu*0.1;//抛仓股票数double pocang_jine = pocang_gujia*pocang_gupiaoshu;//抛仓金额dangqian_gujia = pocang_gujia;//当前股价xianjin = xianjin + pocang_jine;//当前现金chiguchengben = chiguchengben - pocang_jine;if(chiguchengben < 0){printf("!!!!!!持股成本已最低!!!!!!\n");break;}gupiaoshu = gupiaoshu - pocang_gupiaoshu;//当前股票总数gujia_junzhi = (chiguchengben + 6 + 1)*1.0/gupiaoshu;zongjiazhi = xianjin + gupiaoshu*dangqian_gujia;printf("第 %d 次操作前 : 抛仓股价=%.2lf, 抛仓股票数=%d, 抛仓金额=%.2lf\n", i, pocang_gujia, pocang_gupiaoshu, pocang_jine);printf("第 %d 次操作后 : 持有股票数=%d, 持有股票均价=%.2lf, 当前股价=%.2lf \n", i, gupiaoshu, gujia_junzhi, dangqian_gujia);printf("第 %d 次操作后 : 总价值=%.2lf, 持股成本=%.2lf, 剩余现金=%.2lf \n", i, zongjiazhi, chiguchengben, xianjin);if(zongjiazhi-benjin > YUQI_YINGLI){printf("\n盈利达到预期,盈利额为%.2lf, 全仓抛售!\n", (zongjiazhi-benjin));break;}}}}return 0;
}

测试结果:

第 1 次建仓 : 总价值=10000.00, 剩余现金=5000.00, 持股成本=5000.00, 持有股票数=500, 持有股票均价=10.00, 当前股价=10.00 随机数 = 73, 抛仓
第 2 次操作前 : 抛仓股价=12.00, 抛仓股票数=50, 抛仓金额=600.00
第 2 次操作后 : 持有股票数=450, 持有股票均价=9.79, 当前股价=12.00
第 2 次操作后 : 总价值=11000.00, 持股成本=4400.00, 剩余现金=5600.00 随机数 = 7, 补仓
第 3 次操作前 : 补仓股价=10.80, 补仓股票数=45, 补仓金额=486.00
第 3 次操作后 : 持有股票数=495, 持有股票均价=9.88, 当前股价=10.80
第 3 次操作后 : 总价值=10460.00, 持股成本=4886.00, 剩余现金=5114.00 随机数 = 33, 补仓
第 4 次操作前 : 补仓股价=9.72, 补仓股票数=49, 补仓金额=476.28
第 4 次操作后 : 持有股票数=544, 持有股票均价=9.87, 当前股价=9.72
第 4 次操作后 : 总价值=9925.40, 持股成本=5362.28, 剩余现金=4637.72 随机数 = 45, 补仓
第 5 次操作前 : 补仓股价=8.75, 补仓股票数=54, 补仓金额=472.39
第 5 次操作后 : 持有股票数=598, 持有股票均价=9.77, 当前股价=8.75
第 5 次操作后 : 总价值=9396.63, 持股成本=5834.67, 剩余现金=4165.33 随机数 = 27, 补仓
第 6 次操作前 : 补仓股价=7.87, 补仓股票数=59, 补仓金额=464.52
第 6 次操作后 : 持有股票数=657, 持有股票均价=9.60, 当前股价=7.87
第 6 次操作后 : 总价值=8873.50, 持股成本=6299.19, 剩余现金=3700.81 随机数 = 62, 抛仓
第 7 次操作前 : 抛仓股价=9.45, 抛仓股票数=65, 抛仓金额=614.11
第 7 次操作后 : 持有股票数=592, 持有股票均价=9.62, 当前股价=9.45
第 7 次操作后 : 总价值=9908.04, 持股成本=5685.08, 剩余现金=4314.92 随机数 = 28, 补仓
第 8 次操作前 : 补仓股价=8.50, 补仓股票数=59, 补仓金额=501.68
第 8 次操作后 : 持有股票数=651, 持有股票均价=9.51, 当前股价=8.50
第 8 次操作后 : 总价值=9348.73, 持股成本=6186.76, 剩余现金=3813.24 随机数 = 83, 抛仓
第 9 次操作前 : 抛仓股价=10.20, 抛仓股票数=65, 抛仓金额=663.24
第 9 次操作后 : 持有股票数=586, 持有股票均价=9.44, 当前股价=10.20
第 9 次操作后 : 总价值=10455.83, 持股成本=5523.52, 剩余现金=4476.48 随机数 = 82, 抛仓
第 10 次操作前 : 抛仓股价=12.24, 抛仓股票数=58, 抛仓金额=710.18
第 10 次操作后 : 持有股票数=528, 持有股票均价=9.13, 当前股价=12.24
第 10 次操作后 : 总价值=11651.70, 持股成本=4813.35, 剩余现金=5186.65 随机数 = 50, 抛仓
第 11 次操作前 : 抛仓股价=14.69, 抛仓股票数=52, 抛仓金额=764.05
第 11 次操作后 : 持有股票数=476, 持有股票均价=8.52, 当前股价=14.69
第 11 次操作后 : 总价值=12944.70, 持股成本=4049.30, 剩余现金=5950.70 随机数 = 41, 补仓
第 12 次操作前 : 补仓股价=13.22, 补仓股票数=47, 补仓金额=621.53
第 12 次操作后 : 持有股票数=523, 持有股票均价=8.94, 当前股价=13.22
第 12 次操作后 : 总价值=12245.30, 持股成本=4670.82, 剩余现金=5329.18 随机数 = 75, 抛仓
第 13 次操作前 : 抛仓股价=15.87, 抛仓股票数=52, 抛仓金额=825.17
第 13 次操作后 : 持有股票数=471, 持有股票均价=8.18, 当前股价=15.87
第 13 次操作后 : 总价值=13628.53, 持股成本=3845.65, 剩余现金=6154.35 盈利达到预期,盈利额为3628.53, 全仓抛售!

结论:

结果和上轮测试结果大致相同,但大量测试时会发现,此次收敛速度,也即操作轮数要小于上轮测试。

软件模拟股票高抛低吸后各参数变化相关推荐

  1. websocket 学习--简单使用,nodejs搭建websocket服务器,到模拟股票,到实现聊天室

    websocket简介: WebSocket协议是 HTML5 开始提供的一种基于TCP的一种新的全双工通讯的网络通讯协议.它允许服务器主动发送信息给客户端. 和http协议的不同?? HTTP 协议 ...

  2. 异常记录(CPU产生的异常和软件模拟产生的异常)

    文章目录 前奏 异常的分类 CPU产生的异常 软件模拟产生的异常 异常产生 CPU异常的产生 CommonDispatchException函数分析 总结: 软件模拟异常 填充ExceptionRec ...

  3. CPU和软件模拟异常的执行流程

    文章目录 CPU异常记录 异常的分类 CPU产生的异常 软件模拟产生的异常 CPU异常的处理流程 CommonDispatchException函数分析 总结 模拟异常记录 模拟异常的执行流程 Rai ...

  4. IIC软件模拟-读写EEPROM

    这里写目录标题 1.IIC简介 2. I2C 基本读写过程 2.1.主机写数据到从机 2.2.主机由从机中读数据 2.3.读和写数据 2.4.地址及数据方向 2.5.响应信号 3.软件模拟I2C 4. ...

  5. aspen变压吸附塔_ASPEN软件模拟在分离中的应用

    ASPEN软件模拟在分离中的应用 工艺092 刘峰030091054 当前化学研究已达到分子设计的水平,化工生产和管理也多采用计算机控制.计算机进入化学化工领域后,在帮助深入研究化学基础理论呵促进化工 ...

  6. SkyEye(一种软件模拟的系统开发平台)

    一.SkyEye介绍 1.SkyEye的起源和发展 2002年11月,一个偶然的机会,一群操作系统的爱好者在网上进行聊天,成立了一个TM-Linux兴趣小组,希望要做一些感兴趣的事情.当时在清华大学计 ...

  7. SoftwareSerial库的使用——Arduino软件模拟串口通信

    除HardwareSerial外,Arduino还提供了SoftwareSerial类库,它可以将你的其他数字引脚通过程序模拟成串口通信引脚. 通常我们将Arduino UNO上自带的串口称为硬件串口 ...

  8. STM32基于软件模拟IIC进行AHT21B温湿度采集

    STM32基于软件模拟IIC进行AHT21B温湿度采集 一. IIC简介 1.1 IIC简介 1.2 实现方式 1.3 实现方式对比 二. AHT21B简介 2.1 简介 2.2 产品特点 2.3 外 ...

  9. STC8A8K64单片机关于AT24C04基本读写操作(包含硬件I2C与软件模拟I2C)

    实验:AT24C04基本读写操作 步骤及现象:在下载程序前,选择stc-isp的IRC频率:12MHz. 程序下载完成后,在串口助手界面,HEX模式下,选择波 特率9600,然后点击"打开串 ...

最新文章

  1. springboot教程(三)
  2. 【布莱克智讯之声公众号】 精彩图文分类导航
  3. 给地球上的22.8万种植物建立图像索引
  4. html53d正方形,利用HTML5绘制点线面组成的3D图形的示例
  5. django会话跟踪技术
  6. 向android获取文件路径,在Android上获取图像的文件路径
  7. 百度图表echart使用心得
  8. IO和IO设备和IO指令和IO通道 以及 IO的分类(只要涉及 IO,这4个就绑定在一起都会使用到)
  9. Firefox上IETab插件造成的一个问题
  10. 调用情迁机器人发送微信或者QQ消息等即时通讯消息
  11. Python入门学习十:Python绘图
  12. CC1310空中升级笔记02 CC26xx_CC13xx_BLE_OAD_例程梳理
  13. 如何使用启动盘启动计算机,电脑重装系统怎么设置用U盘启动盘引导?
  14. 【PTA】藏头诗:输入四句古诗,输出每句诗的第一个字。
  15. 新学问教育php,神墨教师的教育梦——让梦想与爱同行
  16. vulnhub -- hacksudo: Thor
  17. css中如何设置hr的样式?css hr标签多种样式(图文)
  18. 2020最新版LaTeX软件教程---Tex live 2020的安装与使用
  19. 华为od统一考试B卷【最少面试官数】Python 实现
  20. 学计算机的人有多可怕,人类的大脑其实很可怕 不会感到疼痛还会自相残杀

热门文章

  1. NS3安装步骤【MAC系统】
  2. CentOS8提高篇8:CentOS制作U盘启动盘
  3. Flink任务报:Could not allocate the required slot within slot request timeout.
  4. 你知道es是如何计算相似度得分的吗?
  5. 京东万象数据接口,钱没花完,接口404,客服是白痴,无法维权
  6. 利用指示器随机变量计算掷n次骰子总和的期望值
  7. 基于快速质量图导向法的相位解包裹
  8. 3DMax切割、拆分(分离模型)
  9. 36. I/O Devices
  10. day43_crud