vn.py量化社区
By Traders, For Traders.
Member
avatar
加入于:
帖子: 19
声望: 0

本人菜鸟,刚学习量化交易不久,目前正在使用中信提供的ctp仿真环境,通过测试需要用程序完成下单、撤销等基本操作,我自己编写了一个非常简单的下单程序,没有任何策略条件,但试了好几次都没有成功。我选择的合约是IF2012.CFFEX,通过手动下单都能成功。代码如下,烦请哪位大神帮忙看看我这个程序的问题在哪,非常感谢!

from typing import Any
from vnpy.app.cta_strategy import (
CtaTemplate,
BarGenerator,
ArrayManager
)

from vnpy.trader.object import (
BarData,
TickData
)

class DemoStrategy(CtaTemplate):
""""""
author = "H.N."

real_price = 4690
parameters = ["real_price"]
variables = []

def __init__(
    self,
    cta_engine: Any,
    strategy_name: str,
    vt_symbol: str,
    setting: dict,
    ):
    super().__init__(cta_engine, strategy_name, vt_symbol, setting)

def on_init(self):
    """日志输出:策略初始化"""
    self.write_log("策略初始化")


def on_start(self):
    """
    当策略被启动时候调用该函数
    """
    self.write_log("策略启动")
    real_price1 = self.real_price
    self.buy(real_price1, 1)


def on_stop(self):
    self.write_log("策略停止")    
Member
avatar
加入于:
帖子: 967
声望: 52
  1. 你把on_init的load_bar()删了,没法初始化,就会停在这里;
  2. 你把逻辑写在on_start,这不是一个回调函数,所以只会跑一次,就算你修复了第一个问题,如果你第一个价格达不到要求,也是无法成交的。

如果只是测试基本回测操作,其实可以拿cta_strategy里的策略来尝试。

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

xiaohe wrote:

  1. 你把on_init的load_bar()删了,没法初始化,就会停在这里;
  2. 你把逻辑写在on_start,这不是一个回调函数,所以只会跑一次,就算你修复了第一个问题,如果你第一个价格达不到要求,也是无法成交的。

    如果只是测试基本回测操作,其实可以拿cta_strategy里的策略来尝试。
    非常感谢!!

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