vnpy和vn.py 哪个是真的
时间: 2024-02-07 12:00:41 浏览: 372
vnpy和vn.py都是真实存在的库。它们都是专门为量化交易和金融分析而设计的Python开源库。其中vn.py是由vn.py团队开发,涵盖了期货市场、股票市场等多个市场的行情接口、交易接口和策略开发接口。而vnpy是由VNPY团队开发,同样也提供了期货、股票等多个市场的行情接口、交易接口以及量化交易的基础框架和工具。两者都在量化交易领域有着较高的知名度和使用率,且都在不断地更新和完善功能。因此,无论是vnpy还是vn.py,都是真实存在且被广泛应用的量化交易工具。要选择使用哪个,可以根据自身的需求和偏好来决定,可以进行更详细的对比和试用,以选择最适合自己的工具。
相关问题
vn.py MA策略回测
好的,下面是一个使用vn.py库进行MA策略回测的示例代码。
首先,我们需要导入所需的库和数据:
```python
from vnpy.app.cta_strategy.backtesting import BacktestingEngine, OptimizationSetting
from vnpy.app.cta_strategy.strategies.ma_strategy import MAStrategy
# 创建回测引擎对象
engine = BacktestingEngine()
# 设置回测数据
engine.set_parameters(
vt_symbol="IF88.CFFEX",
interval="1m",
start=datetime(2010, 1, 1),
end=datetime(2021, 12, 31),
rate=0.3/10000,
slippage=0.2,
size=300,
pricetick=0.2,
capital=1_000_000,
)
# 添加策略
engine.add_strategy(MAStrategy, {'fast_window': 5, 'slow_window': 10})
# 加载数据
engine.load_data()
# 运行回测
engine.run_backtesting()
# 输出回测结果
df = engine.calculate_result()
print(df[['net_pnl', 'total_profit', 'total_commission']])
```
这里我们使用`BacktestingEngine`类创建回测引擎对象,并设置回测参数,包括交易品种、回测时间、手续费等。然后我们添加`MAStrategy`策略,并使用`load_data()`方法加载数据,使用`run_backtesting()`方法运行回测,并使用`calculate_result()`方法计算回测结果,并输出净利润、总盈亏、总手续费等指标。
在上面的代码中,`MAStrategy`是一个简单的MA策略类,其中`fast_window`和`slow_window`分别表示快速和慢速移动平均线的窗口大小。下面是`MAStrategy`类的示例代码:
```python
from vnpy.app.cta_strategy import (
CtaTemplate,
Direction,
StopOrder,
TickData,
BarData,
TradeData,
OrderData,
BarGenerator,
ArrayManager,
)
class MAStrategy(CtaTemplate):
"""
简单的MA策略
"""
author = "vn.py"
fast_window = 5
slow_window = 10
fixed_size = 1
fast_ma = 0.0
slow_ma = 0.0
parameters = ["fast_window", "slow_window", "fixed_size"]
variables = ["fast_ma", "slow_ma"]
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, 5, self.on_5min_bar)
self.am = ArrayManager()
def on_init(self):
self.write_log("策略初始化")
self.load_bar(10)
def on_start(self):
self.write_log("策略启动")
def on_stop(self):
self.write_log("策略停止")
def on_tick(self, tick: TickData):
self.bg.update_tick(tick)
def on_bar(self, bar: BarData):
self.bg.update_bar(bar)
def on_5min_bar(self, bar: BarData):
self.am.update_bar(bar)
if not self.am.inited:
return
self.fast_ma = self.am.sma(self.fast_window)
self.slow_ma = self.am.sma(self.slow_window)
if self.fast_ma > self.slow_ma:
if self.pos == 0:
self.buy(bar.close_price + 5, self.fixed_size)
elif self.pos < 0:
self.cover(bar.close_price + 5, self.fixed_size)
self.buy(bar.close_price + 5, self.fixed_size)
elif self.fast_ma < self.slow_ma:
if self.pos == 0:
self.sell(bar.close_price - 5, self.fixed_size)
elif self.pos > 0:
self.sell(bar.close_price - 5, self.fixed_size)
self.short(bar.close_price - 5, self.fixed_size)
```
在`MAStrategy`中,我们定义了`fast_window`和`slow_window`两个参数来设置快速和慢速移动平均线的窗口大小,并定义了`fixed_size`参数来设置每次交易的数量。在`on_5min_bar()`方法中,我们使用`ArrayManager`类计算快速和慢速移动平均线,并根据MA交叉信号进行买入和卖出操作。
除了单一品种的回测外,vn.py还支持多品种的回测和参数优化等功能,可以根据具体需要进行调整和优化。
安装vn.py后怎么配置jupyter notebook
安装完vn.py后,你需要进行如下配置以在jupyter notebook中使用vn.py:
1. 打开jupyter notebook
2. 在jupyter notebook中打开一个新的terminal或者cmd窗口
3. 在terminal或者cmd窗口中输入以下命令:
```
jupyter kernelspec list
```
4. 查找vn.py的kernel路径,通常为:
```
/Users/{用户名}/Library/Jupyter/kernels/vnpy
```
5. 打开vn.py kernel的配置文件`kernel.json`,该文件位于上述路径下,使用任何文本编辑器打开该文件
6. 在该文件中,修改`display_name`和`argv`字段,将其修改为如下所示:
```
{
"display_name": "vnpy",
"language": "python",
"argv": [
"python",
"-m",
"vnpy_fxdayu",
"-f",
"{connection_file}"
],
"env": {
"PYTHONPATH": "/path/to/vnpy"
}
}
```
其中,`/path/to/vnpy`为你安装vn.py的路径。请注意确保上述路径是正确的。
7. 保存`kernel.json`文件
8. 在jupyter notebook的主页面上,点击右上角的"New"按钮,选择"vnpy" kernel
9. 现在你就可以在jupyter notebook中使用vn.py进行交易、回测等操作了。
阅读全文