小果实盘交易框架---第一个策略,qmt同花顺人气排行,提供源代码

大家今天怎么样利用qmt——trader交易框架写资金的策略我今天费应该自己开发的qmt实盘交易框架的例子给大家,策略内容买入同花顺人气排行,趋势得分大于50 的股票,卖出趋势小于25,排名不在前50的股票策略源代码

链接小果实盘交易框架---第一个策略,qmt同花顺人气排行,提供源代码 (qq.com)

小果实盘交易框架qmt_traer

图片

图片

第一个策略qmt

图片

from qmt_trader.qmt_trader import qmt_traderfrom trader_tool.unification_data import unification_datafrom trader_tool.ths_rq import ths_rqfrom trader_tool.analysis_models import analysis_modelsfrom trader_tool.shape_analysis import shape_analysisimport schedulefrom tqdm import tqdmclass trader_strategy:    def __init__(self,path= r'D:/国金QMT交易端模拟/userdata_mini',                  session_id = 123456,account='55009640',account_type='STOCK',                  is_slippage=True,slippage=0.01):        '''        交易策略        买入人气排行前10,脉冲人气排行50,趋势大于50,持有大于25        '''        self.path=path        self.session_id=session_id        self.account=account        self.account_type=account_type        self.is_slippage=is_slippage        self.slippage=slippage        self.trader_tool='qmt'        self.trader=qmt_trader(path=self.path,                  session_id =self.session_id,account=self.account,account_type=self.account_type,                  is_slippage=self.is_slippage,slippage=self.slippage)        self.data=unification_data(trader_tool='qmt')        self.data=self.data.get_unification_data()        self.ths_rq=ths_rq()        self.analysis_models=analysis_models()        self.shape_analysis=shape_analysis    def connact(self):        '''        链接qmt        '''        try:            self.trader.connect()            print('{}成功'.format(self.trader_tool))            return True        except:            print('{}连接失败'.format(self.trader_tool))            return False    def get_buy_sell_data(self):        '''        获取同花顺人气排行数据        '''        df=self.ths_rq.get_hot_stock_rank()        print(df)        df.to_excel(r'数据.xlsx')        rank_stock_list=df['证券代码'].tolist()        score_list=[]        stock_list=df['证券代码'].tolist()        for i in tqdm(range(len(stock_list))):            stock=stock_list[i]            try:                hist=self.data.get_hist_data_em(stock=stock)                score=self.analysis_models.mean_line_models(df=hist)                score_list.append(score)            except:                score_list.append(None)        df['score']=score_list        buy_df=df[df['score']>=50]        #买入下单        buy_stock_list=buy_df['证券代码'][:10]        for stock in buy_stock_list:            price=self.data.get_spot_data(stock=stock)['最新价']            #检查是否可以买入            if self.trader.check_stock_is_av_buy(stock=stock,price=price,amount=100):                self.trader.buy(security=stock,amount=100,price=price)        #卖出趋势小于25,不在排名前10        sell_stock_list=[]        hold_stock=self.trader.position()        print(hold_stock)        if hold_stock.shape[0]>0:            hold_stock_list=hold_stock['证券代码'].tolist()            for stock in hold_stock_list:                try:                    hist=self.data.get_hist_data_em(stock=stock)                    score=self.analysis_models.mean_line_models(df=hist)                    sell_stock_list.append(score)                except:                    sell_stock_list.append(None)        #卖出不在排名前50的        if hold_stock.shape[0]>0:            hold_stock_list=hold_stock['证券代码'].tolist()            for stock in hold_stock_list:                if stock not in rank_stock_list[:50]:                    sell_stock_list.append(score)        sell_stock_list=list(set(sell_stock_list))        if len(sell_stock_list):            for stock in sell_stock_list:                price=self.data.get_spot_data(stock=stock)['最新价']                #检查是否可以卖出                if self.trader.check_stock_is_av_sell(stock=stock,amount=100):                    self.trader.sell(security=stock,price=price,amount=100)if __name__=='__main__':    trader=trader_strategy(path= r'C:/国金QMT交易端模拟/userdata_mini',                  session_id = 123456,account='55003645',account_type='STOCK',                  is_slippage=True,slippage=0.01)    trader.connact()    #测试    trader.get_buy_sell_data()    schedule.every().day.at('{}'.format('14:30')).do(trader.get_buy_sell_data)                   

运行的效果

图片

下单的

图片

图片

下单的结果非常快,1秒不到

图片

保存的数据

图片

图片

全部源代码上传知识星球可以直接下载使用

QMT(Quantum Trader)是由国泰君安证券推出的一款专业的量化交易平台,支持用户编写基于Python或其他语言的股票、期货等金融产品的量化交易策略。但是需要注意的是,**QMT标准版本身并不提供具体的股票量化交易策略源代码**,而是通过其API接口让用户自行开发。 以下是一个简单的关于如何构建股票量化交易策略的基本思路,并附上一段伪代码示例: ### 股票量化交易策略简介 #### 策略类型 常见的股票量化交易策略包括但不限于: 1. **均线突破策略**:当短期均线上穿长期均线时买入;下穿时卖出。 2. **RSI超买超卖策略**:利用技术指标RSI判断市场是否进入超买或超卖区域。 3. **网格交易策略**:设定价格区间,在低价位买入高价卖出,赚取价差收益。 #### 示例 - 均线突破策略 假设我们希望实现一个简单均线交叉的交易策略,核心思想如下: - 计算短期移动平均线 (如5日MA) 和长期移动平均线 (如60日MA); - 当短周期MA大于长周期MA时买入; - 反之则清仓并退出所有持仓。 ```python import pandas as pd from qmt import * # 初始化回测环境 def init(context): context.stock = 'SHSE.600519' # 设置目标股票为贵州茅台 context.short_period = 5 # 定义短期均线窗口期数 context.long_period = 60 # 长期均线窗口期数 # 每个交易日运行一次 def handle_data(context, data): stock_price = get_history('close', symbol=context.stock) short_ma = stock_price[-context.short_period:].mean() long_ma = stock_price[-context.long_period:].mean() current_position = context.portfolio.positions.get(context.stock, None) if short_ma > long_ma and not current_position: order_target_value(context.stock, context.portfolio.cash * 0.8) # 全仓买入 elif short_ma < long_ma and current_position: order_target(context.stock, 0) # 清空仓位 if __name__ == '__main__': run(strategy=handle_data, initialize=init, start_date='2022-01-01') ``` 上述代码仅为简化版本,实际应用还需要考虑手续费、滑点成本等因素。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xg_quant

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值