2.27K 浏览
0

测试过程:1、首先把快期模拟账户手动平仓,使仓位归0. 2、运行代码:发出金叉买入信号,要求平掉账号所有空单,然后下1手多单。

3、运行结果,因为账号本来就空仓,所以下一手多单正常完成。  4、信号死叉做空,要求先平掉账户多单,再下一首空单。运行结果,提示:平仓单错误,又下的一张空单正确。请老师指导。

if D.iloc[-2] < B.iloc[-2] and D.iloc[-1] > B.iloc[-1]:
            print("死叉")
            #获取持仓量,大于零就先平仓,再开空单1手,持仓量等于零,直接开空单1手
            position = api.get_position(SYMBOL)
            if position.pos_long > 0:
                order1 = api.insert_order(symbol=SYMBOL, direction="SELL", offset="CLOSE", volume=position.pos_long,limit_price=klines.iloc[-1].close-1)
                order2 = api.insert_order(symbol=SYMBOL, direction="SELL", offset="OPEN", volume=1,limit_price=klines.iloc[-1].close - 1)
             else:
                order2 = api.insert_order(symbol=SYMBOL, direction="SELL", offset="OPEN", volume=1,limit_price = klines.iloc[-1].close-1)
         if D.iloc[-2] > B.iloc[-2] and D.iloc[-1] < B.iloc[-1]:
            print("金叉")
            #获取持仓量,大于零就先平仓,再开多单,等于零就直接开1手多单。
            position = api.get_position(SYMBOL)
            if position.pos_short > 0:
                order1 = api.insert_order(symbol=SYMBOL, direction="BUY", offset="CLOSE",volume=position.pos_short,limit_price=klines.iloc[-1].close+1)
                order2 = api.insert_order(symbol=SYMBOL, direction="BUY", offset="OPEN", volume=1,limit_price=klines.iloc[-1].close + 1)
             else:
                order2 = api.insert_order(symbol=SYMBOL, direction="BUY", offset="OPEN", volume=1,limit_price = klines.iloc[-1].close+1)

李思恒 已回答的问题 2021年6月22日

天勤是个好平台,论坛客服力量应当加强,感觉问题回复不够及时,问题解答不够详细。

0

可以print下pos.long和short看一下,看看条件触发的对不对。策略类的修改其实并不在我们的支持范围内,因为单独看一小段代码其实很难判断策略的问题到底是什么,还请理解哈

李思恒 已回答的问题 2021年6月22日