**作业(一)给定日期买,给定日期卖**
```
def Buy_sell_on_given_dates(context, date_buy, date_sale):
"""作业,给定日期买,给定日期卖"""
if context.current_dt.date() == date_buy:
log.info("特殊的日子~多买入几手。")
order(g.security, 500) # 设置 date_buy 时,买入5手。
elif context.current_dt.date() == date_sale:
log.info("特殊的日子~多卖出几手。")
order(g.security, -500) # 设置 date_buy 时,卖出5手。
def market_open(context):
Buy_sell_on_given_dates(context, datetime.date(2018,3,1), datetime.date(2018,3,21))
```
需要把函数(market_open)代入“周期循环”中,每一次循环进行一次判断,到达给定日期就买入或者卖出。
**作业(二)实现止盈止损**
```
def before_market_close(context):
""""收盘前运行的定时函数,实现止盈止损"""
log.info("\n")
log.info('函数(before_market_close)运行时间:', context.current_dt.time()) # 输出运行时间
if g.ret < -0.01:
"""如果收益率小于-0.01,即亏损达到 1% 则卖出股票,幅度可以自己调,一般10%"""
log.info("触发止损!尝试将平安银行的股票仓位调整至 0 股。")
order_target(g.security, 0) # 通过买卖,将平安银行的股票仓位调整至100股。
elif g.ret >= 0.012:
"""如果收益率达到 1.2% 则卖出股票"""
log.info("触发止盈!尝试将平安银行的股票仓位调整至 0 股。")
order_target(g.security, 0) # 通过买卖,将平安银行的股票仓位调整至100股。
else:
log.info("未触发止损/盈。")
```
同样地,需要把函数(before_market_close)代入“周期循环”中,每一次循环进行一次判断,达到“止损/盈”标准后就卖出。
2022-08-06