vn.py官网
开源量化社区
Member
avatar
加入于:
帖子: 8
声望: 0

description

description

其中 price是当前一分钟bar的收盘价

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

代码是这样的
import random
from vnpy.app.cta_strategy import (
CtaTemplate,
StopOrder,
TickData,
BarData,
TradeData,
OrderData,
BarGenerator,
ArrayManager,
)

class RandomStrategy(CtaTemplate):
tp = 30
sl = 10

buy_level = 0
short_level = 0
price=0

author = "awen"
parameters = ["tp", "sl"]
variables = ["buy_level", "short_level","price"]

def __init__(self, cta_engine, strategy_name, vt_symbol, setting):
    super().__init__(cta_engine, strategy_name, vt_symbol, setting)
    self.bg = BarGenerator(self.on_bar)
    self.am = ArrayManager()

def on_init(self):
    print("策略初始化程序开始")

    print("策略初始化程序结束")

def on_start(self):
    print("策略启动程序开始")

    self.put_event()
    print("策略启动程序结束")

def on_stop(self):
    print("策略终止程序开始")

    self.put_event()
    print("策略终止程序结束")

def on_tick(self, tick: TickData):
    self.bg.update_tick(tick)

def on_bar(self, bar: BarData):
    self.cancel_all()

    self.am.update_bar(bar)
    if not self.am.inited:
        print('bar ', bar.datetime, ' am未初始化')
        return
    print('bar ', bar.datetime)

    self.price=bar.close_price

    if self.pos==0:
        if random.random() > 0.5:
            self.buy_level=bar.close_price * 1.01
            self.buy(self.buy_level, 1)
        else:
            self.short_level=bar.close_price * 0.99
            self.short(self.short_level, 1)
    elif self.pos>0:
        if bar.close_price>self.buy_level+self.tp or bar.close_price<self.buy_level-self.sl:
            self.sell(bar.close_price*0.99,abs(self.pos))
    elif self.pos<0:
        if bar.close_price<self.short_level-self.tp or bar.close_price>self.short_level+self.sl:
            self.cover(bar.close_price*1.01,abs(self.pos))

    self.put_event()

def on_order(self, order: OrderData):
    print('on_order')

    self.put_event()

def on_trade(self, trade: TradeData):
    print('on_trade')

    self.put_event()

def on_stop_order(self, stop_order: StopOrder):
    print('on_stop_order')

    self.put_event()
Member
avatar
加入于:
帖子: 3164
声望: 185

请输出”合约信息查询成功“之后再初始化策略

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

xiaohe wrote:

请输出”合约信息查询成功“之后再初始化策略
确实是 输出”合约信息查询成功“之后再初始化策略 的,还是无法实盘程序交易。
我试了下,连了CTP可以手工交易,无法程序交易,会不会是因为我没有配置RQData数据接口?之前模拟回测都是用的CSV本地数据

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

awen_hbw wrote:

xiaohe wrote:

请输出”合约信息查询成功“之后再初始化策略
确实是 输出”合约信息查询成功“之后再初始化策略 的,还是无法实盘程序交易。
我试了下,连了CTP可以手工交易,无法程序交易,会不会是因为我没有配置RQData数据接口?之前模拟回测都是用的CSV本地数据

问题解决了吗,我也卡这里了,一样的情况

Administrator
avatar
加入于:
帖子: 5108
声望: 296
  1. 仿真交易需要准备初始化数据(通过RQData或者自己用DataRecorder录制了)
  2. 跑SimNow请移除PaperAccount应用
Member
avatar
加入于:
帖子: 3164
声望: 185

请问是指报错找不到合约吗?

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

沪公网安备 31011502017034号