欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件高级功能研发区 → 平仓资金当然不能使用开仓?

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有2009人关注过本帖树形打印复制链接

主题:平仓资金当然不能使用开仓?

帅哥哟,离线,有人找我吗?
rockyan
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:黑侠 帖子:611 积分:0 威望:0 精华:0 注册:2015/9/11 9:51:55
平仓资金当然不能使用开仓?  发帖心情 Post By: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


 回到顶部
帅哥哟,离线,有人找我吗?
rockyan
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:黑侠 帖子:611 积分:0 威望:0 精华:0 注册:2015/9/11 9:51:55
  发帖心情 Post By:2021/4/7 20:22:05 [只看该作者]

结果如图
图片点击可在新窗口打开查看此主题相关图片如下:无标题.png
图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
rockyan
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:黑侠 帖子:611 积分:0 威望:0 精华:0 注册:2015/9/11 9:51:55
  发帖心情 Post By:2021/4/7 20:24:26 [只看该作者]

接1楼
   
# after_trading函数会在每天交易结束后被调用,当天只会被调用一次。 --(选择实现)
def after_trading(context):
    pass


 回到顶部
帅哥哟,离线,有人找我吗?
yukizzc
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:21598 积分:0 威望:0 精华:1 注册:2010/7/31 16:35:30
  发帖心情 Post By:2021/4/7 23:14:36 [只看该作者]

就是这么设计的,当根平仓不是直接平仓的。就和你实际交易平仓后马上开仓,是开不了,有时间一样


 回到顶部
帅哥哟,离线,有人找我吗?
rockyan
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:黑侠 帖子:611 积分:0 威望:0 精华:0 注册:2015/9/11 9:51:55
  发帖心情 Post By:2021/4/8 9:13:32 [只看该作者]

实际上,当天卖出回笼的资金,当天是可以再买入股票的

这个要改啊


 回到顶部
帅哥哟,离线,有人找我吗?
yukizzc
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:21598 积分:0 威望:0 精华:1 注册:2010/7/31 16:35:30
  发帖心情 Post By:2021/4/8 9:40:35 [只看该作者]

你回测只有一根k,没有所谓实际交易那种时间流逝的,这个你要自己感受下的

给你一根日线,你除非去模拟出8个小时的回测过程,否者就是一根日线,就是一个数据,一个数据本身不存在切分成小分所以没有办法去模拟出8个小时

所以只能这么设计

 


 回到顶部