VeighNa量化社区
你的开源社区量化交易平台
Member
avatar
加入于:
帖子: 227
声望: 0
   def send_order(
        self,
        direction: Direction,
        offset: Offset,
        price: float,
        volume: float,
        stop: bool = False,
        lock: bool = False,
        net: bool = False
):
    """
    Send a new order.
    """
    c = volume / (self.setting['time'] / self.setting['interval'])
    contract = self.get_contract(self.vt_symbol)

    if contract:
        c = round_to(c, contract.min_volume)

    print('ccccccccc:', c)
    if self.trading:
        for x in range(self.setting['time'] // self.setting['interval']):
            if self.traded <= volume:
                vt_orderids = self.cta_engine.send_order(
                    self, direction, offset, price, c, stop, lock, net
                )
                self.traded += c
            sleep(self.setting['interval'])
        return vt_orderids
    else:
        return []

在策略运行过程中报错

description

Member
avatar
加入于:
帖子: 4618
声望: 284

vt_orderids这个变量在引用前还没有定义

Member
avatar
加入于:
帖子: 227
声望: 0

template中的vt_orderids也没有定义,而且python不是可以直接使用变量的吗,不需要提前定义

Member
avatar
加入于:
帖子: 716
声望: 62

感觉你for循环里的if语句没有运行,python变量不需要定义类型,但是使用前要先赋值

Member
avatar
加入于:
帖子: 227
声望: 0

郭易燔 wrote:

感觉你for循环里的if语句没有运行,python变量不需要定义类型,但是使用前要先赋值

对对,if语句是正常运行的,应该是 vt_orderids = self.cta_engine.send_order(
self, direction, offset, price, c, stop, lock, net
),执行这句之后没有trade输出
这句没有运行 不知道为什么

Member
avatar
加入于:
帖子: 716
声望: 62

你运行打印试试看是否会有self.traded > volume的情况

Member
avatar
加入于:
帖子: 227
声望: 0

郭易燔 wrote:

你运行打印试试看是否会有self.traded > volume的情况

if self.traded <= volume:
print('---------------')
vt_orderids = self.cta_engine.send_order(
self, direction, offset, price, c, stop, lock, net
)
print('--------------')
self.traded += c
在上面加了两个输出 都可以正常输出,就是return vt_orderids的时候出问题

Member
avatar
加入于:
帖子: 4618
声望: 284

xiaohe wrote:

vt_orderids这个变量在引用前还没有定义
vt_orderids只是你if条件里的局部变量,需要在for前赋值

Member
avatar
加入于:
帖子: 227
声望: 0

xiaohe wrote:

xiaohe wrote:

vt_orderids这个变量在引用前还没有定义
vt_orderids只是你if条件里的局部变量,需要在for前赋值
跟着好像没有关系,我看案例中就是这样直接用的

© 2015-2022 上海韦纳软件科技有限公司
备案服务号:沪ICP备18006526号

沪公网安备 31011502017034号

【用户协议】
【隐私政策】
【免责条款】