qmt双均线实盘交易代码
时间: 2025-05-19 14:19:45 浏览: 27
### QMT平台双均线策略实盘交易代码示例
以下是基于QMT平台实现的双均线策略实盘交易代码示例。该代码实现了通过计算快慢均线交叉点来判断买卖信号的功能,并结合实际市场环境进行了优化。
```python
from qmt import StrategyBase, KLinePeriodType
class DualMA(StrategyBase):
def __init__(self, context):
super().__init__(context)
self.fast_period = 10 # 短期均线周期
self.slow_period = 30 # 长期均线周期
def on_bar(self, bar_data):
"""
处理每根K线的数据并生成交易信号。
:param bar_data: 当前K线数据
"""
symbol = list(bar_data.keys())[0] # 获取标的物代码
# 计算短期和长期均线
close_prices = bar_data[symbol]['close']
fast_ma = close_prices.rolling(window=self.fast_period).mean()[-1]
slow_ma = close_prices.rolling(window=self.slow_period).mean()[-1]
position = self.get_position(symbol)
# 判断金叉(买入)
if (fast_ma > slow_ma) and ((position is None) or (position.net_quantity <= 0)):
order_price = bar_data[symbol]['close'][-1]
quantity = int(self.context.account().cash / order_price * 0.98) # 考虑手续费
if quantity > 0:
self.buy(symbol=symbol, price=order_price, quantity=quantity)
# 判断死叉(卖出)
elif (fast_ma < slow_ma) and ((position is not None) and (position.net_quantity > 0)):
self.sell_all(symbol=symbol)
def main(context=None):
strategy = DualMA(context=context)
universe = ['600519.SH'] # 设置股票池,这里以贵州茅台为例
period_type = KLinePeriodType.DAY # 使用日线级别数据
start_time = '2023-01-01' # 回测或实时运行起始时间
end_time = '2023-12-31' # 结束时间
strategy.run(universe, period_type, start_time=start_time, end_time=end_time)
```
#### 关键功能说明
上述代码主要分为以下几个部分:
1. **初始化参数**:定义了短期均线 (`fast_period`) 和长期均线 (`slow_period`) 的窗口大小[^1]。
2. **均线计算**:利用 `pandas` 库中的 `rolling.mean()` 方法分别计算短期和长期均线值。
3. **交易逻辑**:
- 如果短期均线上穿长期均线,则视为“黄金交叉”,触发买入信号[^2]。
- 如果短期均线下穿长期均线,则视为“死亡交叉”,触发卖出信号[^2]。
4. **仓位管理**:在每次交易之前检查当前持仓情况,避免重复下单或多头/空头冲突。
此代码适用于QMT平台的实际交易场景,能够有效捕捉趋势变化并执行相应操作。
---
### 注意事项
为了提高系统的稳定性和准确性,在实盘环境中还需要考虑以下因素:
- 数据质量控制:确保输入的历史K线数据无缺失或异常值。
- 时间过滤器:仅允许特定时间段内的订单提交,例如避开开盘集合竞价阶段。
- 委托状态跟踪:及时更新未成交订单的状态以防漏单或重单现象发生。
---
问题
阅读全文
相关推荐


















