pytrader是基于 easytradereasyquotation 的量化交易框架,支持东方财富自动交易,支持进行策略回测。

开源地址:https://github.com/jadepeng/pytrader

策略文件

在strategies目录,可以参考已有的编写。

策略需要继承StrategyTemplate类,实现int和onbar等函数。

init 设置关注的股票,行情引擎就会推动股票行情。


  1. def init(self):
  2. for stock_code in self.watch_stocks:
  3. self.quotation_engine.watch(stock_code)

行情数据到来时,触发on_bar函数:

  1. def on_bar(self, context: Context, data: Dict[str, DataFrame]):
  2. pass
  • Context 是一个工具类,可以获取其他bar或者计算cci、rsi等指标
  • data是推动的行情字典,可以用股票代码获取DataFrame类型的行情数据

在线交易

参见 tradertest.py ,会加载所有策略,稍微改动下也能支持制定策略


  1. import easyquant
  2. from easyquant import DefaultLogHandler
  3. print('测试 DEMO')
  4. # 东财
  5. broker = 'eastmoney'
  6. # 自己准备
  7. # {
  8. # "user": "",
  9. # "password": ""# }
  10. need_data = 'account.json'
  11. log_type = 'file'
  12. log_handler = DefaultLogHandler(name='测试', log_type=log_type, filepath='logs.log')
  13. m = easyquant.MainEngine(broker,
  14. need_data,
  15. quotation='online',
  16. # 1分钟K线
  17. bar_type="1m",
  18. log_handler=log_handler)
  19. m.is_watch_strategy = True # 策略文件出现改动时,自动重载,不建议在生产环境下使用
  20. m.load_strategy()
  21. m.start()

运行结果:

  1. 测试 DEMO
  2. already logined in
  3. Balance(asset_balance=59686.86, current_balance=6834.62, enable_balance=56977.76, frozen_balance=0.0, market_value=2709.0999999999985, money_type='人民币', pre_interest=0)
  4. Balance(asset_balance=59686.86, current_balance=6834.62, enable_balance=56977.76, frozen_balance=0.0, market_value=2709.0999999999985, money_type='人民币', pre_interest=0)
  5. [2021-11-11 11:59:05.663694] INFO: 测试策略1: 164906 名称:中国互联 市值:2709.0 盈亏: -814.7999999999997
  6. 1.29
  7. [2021-11-11 11:59:05.667705] INFO: 测试策略1: 164906 CCI:[200. 5.07246377 34.82587065]
  8. [2021-11-11 11:59:05.668707] INFO: 测试策略1: 164906 RSI6:[75.21876239 52.10112261 52.10112261]
  9. [2021-11-11 11:59:05.668707] INFO: 测试策略1: cci enter high space
  10. [2021-11-11 11:59:05.668707] INFO: 测试策略1: 上升中,继续持仓
  11. [2021-11-11 11:59:05.668707] INFO: 测试策略1:
  12. Balance(asset_balance=59686.86, current_balance=6834.62, enable_balance=56977.76, frozen_balance=0.0, market_value=2709.0999999999985, money_type='人民币', pre_interest=0)
  13. Balance(asset_balance=59686.86, current_balance=6834.62, enable_balance=56977.76, frozen_balance=0.0, market_value=2709.0999999999985, money_type='人民币', pre_interest=0)
  14. [2021-11-11 12:00:07.303305] INFO: 测试策略1: 164906 名称:中国互联 市值:2709.0 盈亏: -814.7999999999997
  15. 1.29
  16. [2021-11-11 12:00:07.314334] INFO: 测试策略1: 164906 CCI:[200. 5.07246377 34.82587065]
  17. [2021-11-11 12:00:07.315336] INFO: 测试策略1: 164906 RSI6:[75.21876239 52.10112261 52.10112261]
  18. [2021-11-11 12:00:07.316338] INFO: 测试策略1: cci enter high space
  19. [2021-11-11 12:00:07.316338] INFO: 测试策略1: 上升中,继续持仓
  20. [2021-11-11 12:00:07.317342] INFO: 测试策略1:
  21. Balance(asset_balance=59686.86, current_balance=6834.62, enable_balance=56977.76, frozen_balance=0.0, market_value=2709.0999999999985, money_type='人民币', pre_interest=0)
  22. Balance(asset_balance=59686.86, current_balance=6834.62, enable_balance=56977.76, frozen_balance=0.0, market_value=2709.0999999999985, money_type='人民币', pre_interest=0)
  23. [2021-11-11 12:01:18.392363] INFO: 测试策略1: 164906 名称:中国互联 市值:2709.0 盈亏: -814.7999999999997
  24. 1.29

回测

参考backtest.py,设置回测的时间和策略,注意使用quotation需要为tushare或者jqdata,可以自己申请

  1. import easyquotation
  2. import easyquant
  3. from easyquant import DefaultLogHandler, PushBaseEngine
  4. from easyquant.log_handler.default_handler import MockLogHandler
  5. from strategies.CCI import Strategy
  6. print('backtest 回测 测试 ')
  7. broker = 'mock'
  8. need_data = 'account.json'
  9. #
  10. mock_start_dt = "2020-01-01"
  11. mock_end_dt= "2021-11-11"
  12. m = easyquant.MainEngine(broker, need_data,
  13. quotation='tushare',
  14. # quotation='jqdata',
  15. bar_type="1d")
  16. log_handler = MockLogHandler(context=m.context)
  17. # 选择策略
  18. strategy = Strategy(user=m.user, log_handler=log_handler, main_engine=m)
  19. m.start_mock(mock_start_dt, mock_end_dt, strategy)
  20. print('mock end')
  21. print(m.user.get_balance())
  22. for deal in m.user.get_current_deal():
  23. print(deal.deal_time, deal.bs_type, deal.deal_price, deal.deal_amount)

运行结果举例:


  1. backtest 回测 测试
  2. [2021-11-11 12:09:44.962805] INFO: default: 启动主引擎
  3. [2020-02-04 15:00:00] INFO: 002230 RSI6:[48.76350746 20.16124773 38.11308036]
  4. [2020-02-04 15:00:00] INFO: RSI上穿,抄底买入 35.15 28300
  5. [2020-03-17 15:00:00] INFO: 没钱买入
  6. [2020-03-19 15:00:00] INFO: 没钱买入
  7. [2020-03-23 15:00:00] INFO: 跌破20日线,止损 34.74
  8. [2020-03-23 15:00:00] INFO: 002230 盈亏: -14587.234999999835
  9. [2020-03-24 15:00:00] INFO: 002230 RSI6:[34.67789665 25.20904214 33.31120403]
  10. [2020-03-24 15:00:00] INFO: RSI上穿,抄底买入 35.48 27500
  11. [2020-03-25 15:00:00] INFO: 没钱买入
  12. [2020-03-30 15:00:00] INFO: 跌破20日线,止损 34.53
  13. [2020-03-30 15:00:00] INFO: 002230 盈亏: -26124.999999999884
  14. [2020-04-01 15:00:00] INFO: 002230 RSI6:[29.6608755 28.83954667 29.33914896]
  15. [2020-04-01 15:00:00] INFO: RSI上穿,抄底买入 34.5 27400
  16. [2020-04-02 15:00:00] INFO: 没钱买入
  17. [2020-04-16 15:00:00] INFO: 跌破20日线,止损 34.42
  18. [2020-04-16 15:00:00] INFO: 002230 盈亏: -2191.999999999953
  19. [2020-04-30 15:00:00] INFO: 002230 RSI6:[42.27921854 21.00976129 24.6876384 ]
  20. [2020-04-30 15:00:00] INFO: RSI上穿,抄底买入 33.28 28100
  21. [2020-05-18 15:00:00] INFO: 跌破20日线,止损 33.22
  22. [2020-05-18 15:00:00] INFO: 002230 盈亏: -1686.000000000064
  23. [2020-05-19 15:00:00] INFO: 002230 RSI6:[63.47371421 33.38711899 36.98845238]
  24. [2020-05-19 15:00:00] INFO: RSI上穿,抄底买入 34.63 26800
  25. [2020-05-21 15:00:00] INFO: 跌破20日线,止损 32.87
  26. [2020-05-21 15:00:00] INFO: 002230 盈亏: -47168.00000000014
  27. [2020-05-26 15:00:00] INFO: 002230 RSI6:[36.84886995 24.31515989 31.02544277]
  28. [2020-05-26 15:00:00] INFO: RSI上穿,抄底买入 32.2 27100
  29. [2020-05-27 15:00:00] INFO: 跌破20日线,止损 31.7
  30. [2020-05-27 15:00:00] INFO: 002230 盈亏: -13550.000000000096
  31. [2020-05-28 15:00:00] INFO: 002230 RSI6:[33.23760915 31.96286073 36.84886995]
  32. [2020-05-28 15:00:00] INFO: RSI上穿,抄底买入 31.76 26900
  33. [2020-05-29 15:00:00] INFO: 没钱买入
  34. [2020-06-11 15:00:00] INFO: 002230 RSI6:[68.15891577 81.93030038 62.4026211 ]
  35. [2020-06-11 15:00:00] INFO: RSI拐点,卖出 34.86 26900
  36. [2020-06-11 15:00:00] INFO: 002230 盈亏: 83389.99999999994
  37. [2020-07-17 15:00:00] INFO: 002230 RSI6:[33.74292572 31.23748151 42.53459562]
  38. [2020-07-17 15:00:00] INFO: RSI上穿,抄底买入 37.24 25000
  39. [2020-07-20 15:00:00] INFO: 没钱买入
  40. [2020-07-23 15:00:00] INFO: 跌破20日线,止损 37.23
  41. [2020-07-23 15:00:00] INFO: 002230 盈亏: -250.0000000001279
  42. [2020-07-28 15:00:00] INFO: 002230 RSI6:[26.57979316 25.44498903 25.44498903]
  43. [2020-07-28 15:00:00] INFO: RSI上穿,抄底买入 36.0 25700
  44. [2020-07-29 15:00:00] INFO: 没钱买入
  45. [2020-09-08 15:00:00] INFO: 没钱买入
  46. [2020-09-09 15:00:00] INFO: 跌破20日线,止损 34.87
  47. [2020-09-09 15:00:00] INFO: 002230 盈亏: -29041.000000000065
  48. [2020-09-11 15:00:00] INFO: 002230 RSI6:[23.21420985 19.75351242 21.54530544]
  49. [2020-09-11 15:00:00] INFO: RSI上穿,抄底买入 34.7 25600
  50. [2020-09-14 15:00:00] INFO: 没钱买入
  51. [2020-09-15 15:00:00] INFO: 没钱买入
  52. [2020-09-16 15:00:00] INFO: 没钱买入
  53. [2020-09-18 15:00:00] INFO: 没钱买入
  54. [2020-09-24 15:00:00] INFO: 跌破20日线,止损 34.45
  55. [2020-09-24 15:00:00] INFO: 002230 盈亏: -6400.0
  56. [2020-09-25 15:00:00] INFO: 002230 RSI6:[31.28480547 28.80417236 37.72008547]
  57. [2020-09-25 15:00:00] INFO: RSI上穿,抄底买入 34.52 25400
  58. [2020-09-28 15:00:00] INFO: 跌破20日线,止损 34.05
  59. [2020-09-28 15:00:00] INFO: 002230 盈亏: -11938.000000000151
  60. [2020-09-29 15:00:00] INFO: 002230 RSI6:[39.35969455 24.42732022 31.28480547]
  61. [2020-09-29 15:00:00] INFO: RSI上穿,抄底买入 34.49 24900
  62. [2020-09-30 15:00:00] INFO: 跌破20日线,止损 34.27
  63. [2020-09-30 15:00:00] INFO: 002230 盈亏: -5477.999999999972
  64. [2020-11-27 15:00:00] INFO: 002230 RSI6:[28.44005514 25.0207767 26.70993727]
  65. [2020-11-27 15:00:00] INFO: RSI上穿,抄底买入 38.3 22100
  66. [2020-11-30 15:00:00] INFO: 跌破20日线,止损 38.22
  67. [2020-11-30 15:00:00] INFO: 002230 盈亏: -1767.9999999999623
  68. [2020-12-01 15:00:00] INFO: 002230 RSI6:[44.13552902 27.72604598 28.44005514]
  69. [2020-12-01 15:00:00] INFO: RSI上穿,抄底买入 39.0 21500
  70. [2020-12-02 15:00:00] INFO: 跌破20日线,止损 38.92
  71. [2020-12-02 15:00:00] INFO: 002230 盈亏: -1719.9999999999634
  72. [2020-12-10 15:00:00] INFO: 002230 RSI6:[35.60943671 27.75226461 39.14467353]
  73. [2020-12-10 15:00:00] INFO: RSI上穿,抄底买入 38.0 21900
  74. [2020-12-28 15:00:00] INFO: 跌破20日线,止损 36.83
  75. [2020-12-28 15:00:00] INFO: 002230 盈亏: -25623.000000000036
  76. [2020-12-29 15:00:00] INFO: 002230 RSI6:[32.07174913 27.74978633 39.49470813]
  77. [2020-12-29 15:00:00] INFO: RSI上穿,抄底买入 37.06 21600
  78. [2020-12-30 15:00:00] INFO: 没钱买入
  79. [2021-01-14 15:00:00] INFO: 002230 RSI6:[65.37887186 87.65459084 81.3661945 ]
  80. [2021-01-14 15:00:00] INFO: RSI拐点,卖出 44.65 21600
  81. [2021-01-14 15:00:00] INFO: 002230 盈亏: 163943.9999999999
  82. [2021-02-04 15:00:00] INFO: 002230 RSI6:[40.45563373 34.85232425 61.618979 ]
  83. [2021-02-04 15:00:00] INFO: RSI上穿,抄底买入 45.3 21100
  84. [2021-02-05 15:00:00] INFO: 跌破20日线,止损 43.68
  85. [2021-02-05 15:00:00] INFO: 002230 盈亏: -34181.99999999995
  86. [2021-02-08 15:00:00] INFO: 002230 RSI6:[38.25296049 34.05735873 40.45563373]
  87. [2021-02-08 15:00:00] INFO: RSI上穿,抄底买入 44.26 20700
  88. [2021-03-09 15:00:00] INFO: 没钱买入
  89. [2021-03-17 15:00:00] INFO: 没钱买入
  90. [2021-03-22 15:00:00] INFO: 没钱买入
  91. [2021-04-13 15:00:00] INFO: 没钱买入
  92. [2021-04-14 15:00:00] INFO: 没钱买入
  93. [2021-05-10 15:00:00] INFO: 没钱买入
  94. [2021-05-26 15:00:00] INFO: 002230 RSI6:[76.69600435 84.43471078 72.43816252]
  95. [2021-05-26 15:00:00] INFO: RSI拐点,卖出 61.26 20700
  96. [2021-05-26 15:00:00] INFO: 002230 盈亏: 351900.0
  97. [2021-07-15 15:00:00] INFO: 002230 RSI6:[39.48466829 33.9016054 39.71800096]
  98. [2021-07-15 15:00:00] INFO: RSI上穿,抄底买入 61.23 20600
  99. [2021-07-16 15:00:00] INFO: 跌破20日线,止损 60.8
  100. [2021-07-16 15:00:00] INFO: 002230 盈亏: -8857.999999999995
  101. [2021-07-21 15:00:00] INFO: 002230 RSI6:[48.9588887 32.03685393 44.09694546]
  102. [2021-07-21 15:00:00] INFO: RSI上穿,抄底买入 61.53 20200
  103. [2021-07-27 15:00:00] INFO: 跌破20日线,止损 58.02
  104. [2021-07-27 15:00:00] INFO: 002230 盈亏: -70901.99999999996
  105. [2021-07-29 15:00:00] INFO: 002230 RSI6:[42.58407346 32.68979414 32.93389648]
  106. [2021-07-29 15:00:00] INFO: RSI上穿,抄底买入 59.49 19500
  107. [2021-07-30 15:00:00] INFO: 跌破20日线,止损 58.6
  108. [2021-07-30 15:00:00] INFO: 002230 盈亏: -17355.00000000001
  109. [2021-08-10 15:00:00] INFO: 002230 RSI6:[37.95398922 30.4741093 32.0076735 ]
  110. [2021-08-10 15:00:00] INFO: RSI上穿,抄底买入 57.34 19800
  111. [2021-08-11 15:00:00] INFO: 跌破20日线,止损 56.46
  112. [2021-08-11 15:00:00] INFO: 002230 盈亏: -17424.00000000005
  113. [2021-08-18 15:00:00] INFO: 002230 RSI6:[14.58881343 13.39682666 17.62430499]
  114. [2021-08-18 15:00:00] INFO: RSI上穿,抄底买入 51.6 21600
  115. [2021-08-19 15:00:00] INFO: 没钱买入
  116. [2021-08-23 15:00:00] INFO: 没钱买入
  117. [2021-08-31 15:00:00] INFO: 没钱买入
  118. [2021-09-02 15:00:00] INFO: 跌破20日线,止损 50.05
  119. [2021-09-02 15:00:00] INFO: 002230 盈亏: -33480.000000000095
  120. [2021-09-06 15:00:00] INFO: 002230 RSI6:[50.10713849 21.29516507 23.76252327]
  121. [2021-09-06 15:00:00] INFO: RSI上穿,抄底买入 51.94 20600
  122. [2021-09-07 15:00:00] INFO: 跌破20日线,止损 51.93
  123. [2021-09-07 15:00:00] INFO: 002230 盈亏: -205.99999999995902
  124. [2021-09-17 15:00:00] INFO: 002230 RSI6:[44.42750488 29.78456305 37.51313217]
  125. [2021-09-17 15:00:00] INFO: RSI上穿,抄底买入 50.95 20900
  126. [2021-10-22 15:00:00] INFO: 没钱买入
  127. mock end
  128. [Balance(asset_balance=1231152.1139999998, current_balance=1187.1139999998268, enable_balance=1187.1139999998268, frozen_balance=0, market_value=1229965.0, money_type='人民币', pre_interest=0.25)]
  129. 2020-02-04 00:00:00 B 35.15 28300
  130. 2020-03-23 00:00:00 S 34.74 28300
  131. 2020-03-24 00:00:00 B 35.48 27500
  132. 2020-03-30 00:00:00 S 34.53 27500
  133. 2020-04-01 00:00:00 B 34.5 27400
  134. 2020-04-16 00:00:00 S 34.42 27400
  135. 2020-04-30 00:00:00 B 33.28 28100
  136. 2020-05-18 00:00:00 S 33.22 28100
  137. 2020-05-19 00:00:00 B 34.63 26800
  138. 2020-05-21 00:00:00 S 32.87 26800
  139. 2020-05-26 00:00:00 B 32.2 27100
  140. 2020-05-27 00:00:00 S 31.7 27100
  141. 2020-05-28 00:00:00 B 31.76 26900
  142. 2020-06-11 00:00:00 S 34.86 26900
  143. 2020-07-17 00:00:00 B 37.24 25000
  144. 2020-07-23 00:00:00 S 37.23 25000
  145. 2020-07-28 00:00:00 B 36.0 25700
  146. 2020-09-09 00:00:00 S 34.87 25700
  147. 2020-09-11 00:00:00 B 34.7 25600
  148. 2020-09-24 00:00:00 S 34.45 25600
  149. 2020-09-25 00:00:00 B 34.52 25400
  150. 2020-09-28 00:00:00 S 34.05 25400
  151. 2020-09-29 00:00:00 B 34.49 24900
  152. 2020-09-30 00:00:00 S 34.27 24900
  153. 2020-11-27 00:00:00 B 38.3 22100
  154. 2020-11-30 00:00:00 S 38.22 22100
  155. 2020-12-01 00:00:00 B 39.0 21500
  156. 2020-12-02 00:00:00 S 38.92 21500
  157. 2020-12-10 00:00:00 B 38.0 21900
  158. 2020-12-28 00:00:00 S 36.83 21900
  159. 2020-12-29 00:00:00 B 37.06 21600
  160. 2021-01-14 00:00:00 S 44.65 21600
  161. 2021-02-04 00:00:00 B 45.3 21100
  162. 2021-02-05 00:00:00 S 43.68 21100
  163. 2021-02-08 00:00:00 B 44.26 20700
  164. 2021-05-26 00:00:00 S 61.26 20700
  165. 2021-07-15 00:00:00 B 61.23 20600
  166. 2021-07-16 00:00:00 S 60.8 20600
  167. 2021-07-21 00:00:00 B 61.53 20200
  168. 2021-07-27 00:00:00 S 58.02 20200
  169. 2021-07-29 00:00:00 B 59.49 19500
  170. 2021-07-30 00:00:00 S 58.6 19500
  171. 2021-08-10 00:00:00 B 57.34 19800
  172. 2021-08-11 00:00:00 S 56.46 19800
  173. 2021-08-18 00:00:00 B 51.6 21600
  174. 2021-09-02 00:00:00 S 50.05 21600
  175. 2021-09-06 00:00:00 B 51.94 20600
  176. 2021-09-07 00:00:00 S 51.93 20600
  177. 2021-09-17 00:00:00 B 50.95 20900

开源支持东财自动交易的简单量化交易框架pytrader的更多相关文章

  1. 量化交易(Quantitative Trading)

    什么是量化交易 量化交易是指借助现代统计学和数学的方法,利用计算机技术来进行交易的证券投资方式.量化交易从庞大的历史数据中海选能带来超额收益的多种“大概率”事件以制定策略,用数量模型验证及固化这些规律 ...

  2. 【LSGDOJ1836】: 量化交易 贪心

    题目描述 applepi 训练了一个可以自动在股票市场进行量化交易的模型.通常来说,applepi 写出的模型,你懂得,就好比一架印钞机.不过为了谨慎起见,applepi还是想先检查一下模型的效果.a ...

  3. Python量化交易

    资料整理: 1.python量化的一个github 代码 2.原理 + python基础 讲解 3.目前发现不错的两个量化交易 学习平台: 聚宽和优矿在量化交易都是在15年线上布局的,聚宽是15年的新 ...

  4. 微软宣布.NET开发环境将开源 支持Mac OS X和Linux

    微软宣布.NET开发环境将开源 支持Mac OS X和Linux 投递人 itwriter 发布于 2014-11-13 06:58 评论(55) 有4388人阅读  原文链接  [收藏]  « » ...

  5. bootstrap-typeahead 自动补全简单的使用教程

    参考链接: 参考1 : https://segmentfault.com/a/1190000006036166参考2 : https://blog.csdn.net/u010174173/articl ...

  6. DELPHI PROTOBUF免费的开源支持库fundamentals5

    DELPHI PROTOBUF免费的开源支持库fundamentals5 1.源码URL: https://github.com/fundamentalslib/fundamentals5 2.编译P ...

  7. 量化交易中VWAP/TWAP算法的基本原理和简单源码实现(C++和python)(转)

    量化交易中VWAP/TWAP算法的基本原理和简单源码实现(C++和python) 原文地址:http://blog.csdn.net/u012234115/article/details/728300 ...

  8. ASP.NET Core 配置 EF SQLite 支持 - ASP.NET Core 基础教程 - 简单教程,简单编程

    原文:ASP.NET Core 配置 EF SQLite 支持 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 配置 EF SQLite 支持 上一章节我有提 ...

  9. Python量化交易的简单介绍

    Python只是一门技术. 一.量化交易的发展 1.国外量化金融领域发展日趋成熟. 2.近几年量化交易在国内掀起热潮. 3.Python作为量化交易的编译语言. 二.什么是量化交易 1.利用计算机强大 ...

随机推荐

  1. SAP Shared Object 01 (共享对象)

    介绍 共享对象是在共享内存中的一个对象.共享内存是应用服务器中的一个内存区域,可以被应用服务器中的所有程序访问. 在共享对象出现之前,ABAP使用EXPORT 和 IMPORT语句实现内存区域中内容的 ...

  2. Python实现一个简单三层神经网络的搭建并测试

    python实现一个简单三层神经网络的搭建(有代码) 废话不多说了,直接步入正题,一个完整的神经网络一般由三层构成:输入层,隐藏层(可以有多层)和输出层.本文所构建的神经网络隐藏层只有一层.一个神经网 ...

  3. Hibernate 的 <= 出现问题

    问题模拟 select new map( e.name as name , e.salary as salary) from Emplpyee e where e.salary <= :sala ...

  4. SpringMVC的数据输出

    使用 @Controller public class OutputController { @RequestMapping("/handle01") public String ...

  5. mysql-router-MIC-8.0.26集群部署

    1.具体部署详情请看视频 https://space.bilibili.com/677825194 2.mysql主要配置如下 cat > /etc/my.cnf <<EOF [cl ...

  6. Python读取网页表格数据

    学会了从网格爬取数据,就可以告别从网站一页一页复制表格数据的时代了. 说个亲身经历的事: 以前我的本科毕业论文是关于"燃放烟花爆竹和空气质量"之间关系的,就要从环保局官网查资料. ...

  7. 题解 GT考试

    题目传送门 题目大意 给出\(n,m,k\),以及一个长度为\(m\)的数字串\(s_{1,2,...,m}\),求有多少个长度为\(n\)的数字串\(X\)满足\(s\)不出现在其中的个数模\(k\ ...

  8. 洛谷4035 JSOI2008球形空间产生器 (列柿子+高斯消元)

    题目链接 qwq 首先看到这个题,感觉就应该从列方程入手. 我们设给定的点的坐标矩阵是\(x\),然后球心坐标\(a_1,a_2....a_n\) 根据欧几里得距离公式,对于一个\(n维空间\)的第\ ...

  9. JSR303数据校验

    Springboot中可以用@validated来校验数据,如果数据异常则会统一抛出异常,方便异常中心统一处理. 导入依赖: <dependency> <groupId>org ...

  10. Java(14)面向对象之封装

    作者:季沐测试笔记 原文地址:https://www.cnblogs.com/testero/p/15201610.html 博客主页:https://www.cnblogs.com/testero ...