系统自动生成的Demo代码

  • 以平安银行为例 ```python

    导入函数库

    from jqdata import *

初始化函数,设定基准等等

def initialize(context):

  1. # 设定沪深300作为基准
  2. set_benchmark('000300.XSHG')
  3. # 开启动态复权模式(真实价格)
  4. set_option('use_real_price', True)
  5. # 输出内容到日志 log.info()
  6. log.info('初始函数开始运行且全局只运行一次')
  7. # 过滤掉order系列API产生的比error级别低的log
  8. # log.set_level('order', 'error')
  9. ### 股票相关设定 ###
  10. # 股票类每笔交易时的手续费是:买入时佣金万分之三,卖出时佣金万分之三加千分之一印花税, 每笔交易佣金最低扣5块钱
  11. set_order_cost(OrderCost(close_tax=0.001, open_commission=0.0003, close_commission=0.0003, min_commission=5), type='stock')
  12. ## 运行函数(reference_security为运行时间的参考标的;传入的标的只做种类区分,因此传入'000300.XSHG'或'510300.XSHG'是一样的)
  13. # 开盘前运行
  14. run_daily(before_market_open, time='before_open', reference_security='000300.XSHG')
  15. # 开盘时运行
  16. run_daily(market_open, time='open', reference_security='000300.XSHG')
  17. # 收盘后运行
  18. run_daily(after_market_close, time='after_close', reference_security='000300.XSHG')

开盘前运行函数

def before_market_open(context):

  1. # 输出运行时间
  2. log.info('函数运行时间(before_market_open):'+str(context.current_dt.time()))
  3. # 给微信发送消息(添加模拟交易,并绑定微信生效)
  4. # send_message('美好的一天~')
  5. # 要操作的股票:平安银行(g.为全局变量)
  6. g.security = '000001.XSHE'

开盘时运行函数

def market_open(context): log.info(‘函数运行时间(market_open):’+str(context.current_dt.time())) security = g.security

  1. # 获取股票的收盘价
  2. close_data = get_bars(security, count=5, unit='1d', fields=['close'])
  3. # 取得过去五天的平均价格
  4. MA5 = close_data['close'].mean()
  5. # 取得上一时间点价格
  6. current_price = close_data['close'][-1]
  7. # 取得当前的现金
  8. cash = context.portfolio.available_cash
  9. # 如果上一时间点价格高出五天平均价1%, 则全仓买入
  10. if (current_price > 1.01*MA5) and (cash > 0):
  11. # 记录这次买入
  12. log.info("价格高于均价 1%%, 买入 %s" % (security))
  13. # 用所有 cash 买入股票
  14. order_value(security, cash)
  15. # 如果上一时间点价格低于五天平均价, 则空仓卖出
  16. elif current_price < MA5 and context.portfolio.positions[security].closeable_amount > 0:
  17. # 记录这次卖出
  18. log.info("价格低于均价, 卖出 %s" % (security))
  19. # 卖出所有股票,使这只股票的最终持有量为0
  20. order_target(security, 0)

收盘后运行函数

def after_market_close(context): log.info(str(‘函数运行时间(after_market_close):’+str(context.current_dt.time())))

  1. #得到当天所有成交记录
  2. trades = get_trades()
  3. for _trade in trades.values():
  4. log.info('成交记录:'+str(_trade))
  5. log.info('一天结束')
  6. log.info('##############################################################')
  1. <a name="3CP4L"></a>
  2. # 简单网格交易模式(人工控制)
  3. - 仅在特定时候买卖.
  4. ```python
  5. # 导入函数库
  6. from jqdata import *
  7. # 初始化函数,设定基准等等
  8. def initialize(context):
  9. # 设定沪深300作为基准
  10. set_benchmark('000300.XSHG')
  11. # 开启动态复权模式(真实价格)
  12. set_option('use_real_price', True)
  13. # 输出内容到日志 log.info()
  14. log.info('初始函数开始运行且全局只运行一次')
  15. # 过滤掉order系列API产生的比error级别低的log
  16. # log.set_level('order', 'error')
  17. ### 股票相关设定 ###
  18. # 股票类每笔交易时的手续费是:买入时佣金万分之三,卖出时佣金万分之三加千分之一印花税, 每笔交易佣金最低扣5块钱
  19. set_order_cost(OrderCost(close_tax=0.001, open_commission=0.0003, close_commission=0.0003, min_commission=5), type='stock')
  20. ## 运行函数(reference_security为运行时间的参考标的;传入的标的只做种类区分,因此传入'000300.XSHG'或'510300.XSHG'是一样的)
  21. # 开盘前运行
  22. run_daily(before_market_open, time='before_open', reference_security='000300.XSHG')
  23. # 开盘时运行
  24. run_daily(market_open, time='open', reference_security='000300.XSHG')
  25. # 收盘后运行
  26. run_daily(after_market_close, time='after_close', reference_security='000300.XSHG')
  27. ## 开盘前运行函数
  28. def before_market_open(context):
  29. # 输出运行时间
  30. log.info('函数运行时间(before_market_open):'+str(context.current_dt.time()))
  31. # 给微信发送消息(添加模拟交易,并绑定微信生效)
  32. # send_message('美好的一天~')
  33. # 要操作的股票:平安银行(g.为全局变量)
  34. g.security = '600016.XSHG'
  35. ## 开盘时运行函数
  36. def market_open(context):
  37. log.info('函数运行时间(market_open):'+str(context.current_dt.time()))
  38. security = g.security
  39. # 获取股票的收盘价
  40. close_data = get_bars(security, count=5, unit='1d', fields=['close'])
  41. # 取得过去五天的平均价格
  42. MA5 = close_data['close'].mean()
  43. # 取得上一时间点价格
  44. current_price = close_data['close'][-1]
  45. cash = context.portfolio.available_cash
  46. # 取得当前的现金
  47. today = "%s-%s-%s"%(context.current_dt.year,context.current_dt.month,context.current_dt.day)
  48. log.info(today)
  49. if (today == "2019-7-12"):
  50. order_value(security, 20000)
  51. elif (today == "2019-8-6"):
  52. order_value(security, 20000)
  53. if (current_price > 7 and context.portfolio.positions[security].closeable_amount > 0):
  54. log.info("卖出 %s" % (security))
  55. order_target(security, 0)
  56. ## 收盘后运行函数
  57. def after_market_close(context):
  58. log.info(str('函数运行时间(after_market_close):'+str(context.current_dt.time())))
  59. #得到当天所有成交记录
  60. trades = get_trades()
  61. for _trade in trades.values():
  62. log.info('成交记录:'+str(_trade))
  63. log.info('一天结束')
  64. log.info('##############################################################')