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

news/2024/11/30 6:51:30/

                                     软件模拟股票高抛低吸

约定:

  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, 全仓抛售!

结论:

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


http://www.ppmy.cn/news/888635.html

相关文章

股票两回合(算法入门题目007)

题目 假定你来交易某只股票。 你的每次买或卖都限定为1股。 你最多可进行4次交易(卖和卖各2次)&#xff0c; 开始时&#xff0c;你手中无股票。 并且&#xff0c;必须等第一笔卖掉后&#xff0c;才能买第二笔。 每个时间点只能完成一次操作&#xff08;买或卖&#xff09;。 还…

利用SVM和逻辑回归股票涨跌简单预测

import numpy as np import pandas as pd from sklearn import svm from sklearn import cross_validation import tushare as ts from sklearn.linear_model import LogisticRegression datats.get_k_data(600000,start2015-01-01,end2018-04-12)#通过tushare的接口获取浦发…

解读:基于图卷积特征的卷积神经网络的股票趋势预测(文末赠书)

写在前面 下面这篇文章的内容主要是来自2020年发表于Information Science 的一篇文章《A novel graph convolutional feature based convolutional neural network for stock trend prediction》。这篇文章提出了一种新颖的基于图卷积特征的卷积神经网络股票趋势预测方法&#…

股票数据处理仿真

股票数据处理仿真 文章目录 股票数据处理仿真 1. 数据获取2. 数据探索2.1 统计性描述2.2 可视化展示2.3 其他探索 3. 数据预处理3.1 缺失值处理3.1.1 丢弃3.1.2 平均数、中位数、众数填充3.1.3 向前、向后填充 3.2 标准化3.2.1 线性归一化&#xff08;min-max normalization&am…

python读取股票数据_如何利用程序(如python) 从新浪财经或者雅虎财经获取到所有A股数据(历史日线数据,实时股票数据)?...

用Python内置的Yahoo金融接口两行代码即可挖掘出股票交易数据。再用matplotlib 绘制出图表即可。 示例&#xff1a;1、获取苹果20141/1至2015/8/20的股票数据。 In [27]: import pandas.io.data as web In [28]: web.get_data_yahoo(AAPL,1/1/2014,20/8/2015) Out[29]: Op…

Android Glide加载小gif和图片比较模糊

其实Glide加载还是可以将小图片加载的非常清晰的&#xff0c; 可以通过Glide转换为Bitmap 利用Drawable将setFilterBitmap为true 但是这玩意解决不了GIF。在没有找到库的情况下&#xff1a;我直接自定义view通过 pl.droidsonroids.gif:android-gif-drawable获取时间间隔并将gif…

Nuxt.js--》解密Nuxt.js:构建优雅、高效的现代化Vue.js应用

博主今天开设Nuxt.js专栏&#xff0c;带您深入探索 Nuxt.js 的精髓&#xff0c;学习如何利用其强大功能构建出色的前端应用程序。我们将探讨其核心特点、灵活的路由系统、优化技巧以及常见问题的解决方案。无论您是想了解 Nuxt.js 的基础知识&#xff0c;还是希望掌握进阶技巧&…

大前端学习-Get请求和Post请求的区别

常见的HTTP请求方式有&#xff1a; 1、GET: 请求指定的页面信息&#xff0c;并返回实体主体 2、POST&#xff1a;向指定资源提交数据进行处理请求&#xff08;例如提交表单或者上传文件&#xff09; 3、HEAD&#xff1a;类似于Get请求&#xff0c;返回的响应中没有内容 4、…