QMT的获取行情函数get_market_data与get_market_data_ex区别

文章讨论了在Python中使用get_market_data和get_market_data_ex两个函数从股票数据中获取信息时,内存占用的区别。get_market_data在获取大量数据如quoter时导致内存飙升,而get_market_data_ex针对单个指标如lastPrice则更节省内存。作者建议优先使用get_market_data_ex并质疑为何原始函数仍在文档中保留,可能造成用户困惑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#encoding:gbk

import pandas as pd
import numpy as np
import talib

def init(ContextInfo):
    stock_code_list=[] #股票代码列表
    stock_code_list=ContextInfo.get_stock_list_in_sector('沪深A股') #获取沪深所有A股
    
    #遍历A股所有股票,打印输出
    for i in stock_code_list:
        lastPrice_dict=ContextInfo.get_market_data_ex(['lastPrice'],[i],period='tick',count=1)
        #lastPrice_dict=ContextInfo.get_market_data(['quoter'],[i],period='tick',count=-1)
        print(lastPrice_dict)
    
def handlebar(ContextInfo):
    pass

当使用get_market_data函数时,可以看到内存占用直线飙升

猜测主要原因是get_market_data获取quoter时,quoter的数据量比较大

而用get_market_data_ex只是单独获取一个lastPrice,数据量相对小很多。

而使用get_market_data_ex这个第二版函数的时候,内存占用,其他方面都很正常。既然做了升级,不知道为什么QMT没有把get_market_data这个函数抛弃了,反而还在文档中,让使用者傻傻分不清楚,只有掉坑里折腾半天才爬上来。

<think>好的,用户想了解QMT平台上的打板交易策略的实现方法和示例教程。首先,我需要回忆一下QMT和MiniQMT的相关信息,特别是关于策略模板和数据接口的部分。 根据引用[3],QMT支持复杂的自定义策略,而MiniQMT更适合初学者使用预设模板。打板策略通常涉及捕捉股票的涨停或跌停机会,所以可能需要获取涨跌停价格数据。引用[4]提到了获取历史涨跌停价格的函数get_market_data_ex,这个函数应该会在策略中用到。 接下来,用户可能需要具体的代码示例。打板策略一般包括几个步骤:选股条件、买入时机、风险控制和卖出策略。选股条件可能需要筛选当日接近涨停的股票,这里可以用实时数据接口。买入时机可能是在涨停板打开的瞬间,或者封单量满足条件时。风险控制包括仓位管理和止损设置,比如在跌破涨停价时止损。 然后,我需要考虑如何将这些步骤转化为QMT平台的代码。比如,使用get_market_data_ex获取涨跌停价格,然后结合实时行情数据判断当前价格是否接近涨停。同时,引用[2]提到的均线交叉策略模板可以作为参考,将打板逻辑嵌入到策略模板中。 用户可能还会关心如何回测和优化策略,这部分需要利用QMT的回测模块,设置相关参数,比如滑点、手续费等。此外,引用[3]提到MiniQMT的图形化界面可能简化这些步骤,但QMT本身需要更多编程能力。 最后,需要确保回答结构清晰,分步骤说明实现方法,并提供示例代码。同时,生成的相关问题要覆盖策略优化、风险控制、数据获取等方面,帮助用户进一步学习。</think>### QMT平台打板策略实现方法 打板策略的核心在于捕捉股票涨停/跌停瞬间的市场机会,QMT平台可通过以下步骤实现: ### 一、策略实现步骤 1. **数据获取** - 使用`get_market_data_ex`函数获取涨跌停价格数据[^4] ```python stock_list = ['600519.SH', '000001.SZ'] stop_price_data = xtdata.get_market_data_ex([], stock_list, period="stoppricedata", start_time="20240101", end_time="20240110") ``` 2. **选股条件** - 筛选当日涨幅>9%且未涨停的股票 ```python realtime_data = xtdata.get_full_tick(stock_list) selected_stocks = [code for code in stock_list if (realtime_data[code]['lastPrice'] / realtime_data[code]['preClose'] - 1) > 0.09 and realtime_data[code]['lastPrice'] < stop_price_data[code]['upper_limit']] ``` 3. **买入信号** - 涨停板封单量>10万手时触发买入 ```python if order_volume > 100000: xt_trader.order_stock(account, code, xtconstant.STOCK_BUY, 1000, xtconstant.FIX_PRICE, stop_price_data[code]['upper_limit']) ``` 4. **风险控制** - 设置2%的移动止损 ```python stop_loss_price = entry_price * 0.98 if current_price < stop_loss_price: xt_trader.order_stock(account, code, xtconstant.STOCK_SELL, position, xtconstant.FIX_PRICE, current_price) ``` ### 二、完整策略示例 ```python from xtquant import xtdata from xtquant.xttrader import XtQuantTrader class DabanStrategy: def __init__(self): self.account = 'xxxxxx' # 替换实盘账号 self.xt_trader = XtQuantTrader() def get_stop_price(self, codes): return xtdata.get_market_data_ex([], codes, "stoppricedata", "", "") def on_tick(self, code): # 获取实时行情 tick = xtdata.get_full_tick([code])[code] stop_price = self.get_stop_price([code])[code]['upper_limit'] # 买入条件判断 if tick['lastPrice'] >= stop_price * 0.995 and tick['askVol1'] > 100000: self.place_order(code, 'BUY', stop_price) # 止损逻辑 if tick['lastPrice'] < self.entry_price * 0.98: self.place_order(code, 'SELL', tick['lastPrice']) def place_order(self, code, direction, price): order_type = xtconstant.STOCK_BUY if direction == 'BUY' else xtconstant.STOCK_SELL self.xt_trader.order_stock(self.account, code, order_type, 1000, xtconstant.FIX_PRICE, price) ``` ### 三、关键参数优化 1. **封单量阈值**:根据市场流动性动态调整 2. **买入时机**:可设置为涨停价-0.5%的扫单策略 3. **持仓时间**:建议T+1日开盘集合竞价卖出 ###
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值