-- 作者:rockyan
-- 发布时间:2021/4/7 20:20:19
-- 平仓资金当然不能使用开仓?
为什么在第二次设定的应该开平的日期,平仓以后,不能全部开仓呢?
貌似是不能支持当天卖出股票回来的资金,用于当天开仓
源码如下
# 本Python代码主要用于策略交易 # 可以自己import我们平台支持的第三方python模块,比如pandas、numpy等。 from PythonApi import * import math # 参数定义区,这里定义的参数可以直接在context对象中获取。--(选择实现) #def parameter(): # input_par("myvalues1",5,1,20,1) # input_par("myvalues2",10,1,20,1)
# 在这个方法中编写任何的初始化逻辑。context对象将会在你的算法策略的任何方法之间做传递。--(必须实现) def init(context): # 在context中保存全局变量 context.s1 = "SZ000001" #平安银行股票 # print("策略启动") #调试打印输出
# before_trading此函数会在每天基准合约的策略交易开始前被调用,当天只会被调用一次。--(选择实现) def before_trading(context): pass
# 你选择的品种的数据更新将会触发此段逻辑,例如日或分钟历史数据切片或者是实时数据切片更新。--(必须实现) def handle_bar(context): # 开始编写你的主要的算法逻辑。 #使用buy_open、sell_close等方法下单 #下单示例: #buy_open(context.s1, "Market", volume = 100) # 市价开多 #buy_open(context.s1, "Limit", 25.45, 100) # 限价开多 if 1: change = 0 print([str(context.now)]) if str(context.now) == \'2021-03-19 00:00:00\' or str(context.now) == \'2021-03-26 00:00:00\': change = 1 stock = [\'SH600031\', \'SH600570\', \'SH603288\', \'SH603160\', \'SH600519\'] if change: ho =get_portfolio_book(0) sellmoney = 0 if len(ho)>0: for k in ho: sellmoney += (history_bars(k, 2, \'self\',\'close\')[-1])*(get_portfolio(k,2).buy_today_quantity) sell_close(k,"market",volume=get_portfolio(k,2).buy_today_quantity,serial_id = 1) cash = (get_account(3)+sellmoney) print([\'cash\',cash]) for k in stock: volumebuy = (math.floor(cash/5/(history_bars(k, 2, \'self\',\'close\')[-1])/100))*100 buy_open(k, \'Market\',volume = volumebuy,serial_id = 2)#amount=cash/10 0,100,0,serial=2,serial_id = 2)#volume=cash/10,serial_id = 2) print([k,history_bars(k, 2, \'self\',\'close\')[-1],volumebuy,221]) pass
|