QMT小练习突破底部平台策略

前些天有位粉丝让我写一个底部震荡选股策略,正好以前我在通达信上写过一个类似的指标,于是就用之前的逻辑,在QMT中编写了一下。

主要逻辑为:

选股方面:

1、当日收盘价低于近460个交易日(大约两年)的最高收盘价。这代表了底部特性。

2、近60个交易日的最高收盘价/近60个交易日的最低收盘价<1.2。这代表了震荡特性。

3、昨日收盘价>近60个交易日的最高收盘价。这代表了突破特性。

交易方面:

4、最多持有5只股票。

5、止盈止损。每只股票收益超过50%卖出止盈,损失超过-30%卖出止损。

根据以上逻辑生成了代码:

#encoding:gbk


class a():
    pass
A = a() #创建空的类的实例 用来保存委托状态 


def init(C):


  A.acct= '666' #随便设置一个账号
  A.acct_type= 'STOCK' #账号类型
  A.stocknum = 5#最多持有5支股票


def handlebar(C):
  print(timetag_to_datetime(C.get_bar_timetag(C.barpos),'%Y%m%d'))
  pos = get_trade_detail_data(A.acct, A.acct_type, 'position')#获取持仓
#如果有持仓股票,则单只股票50%止盈,-30%止损。
  if len(pos)>0:
    for p in pos:
      print(f' 股票代码:{p.m_strInstrumentID}.{p.m_strExchangeID},\n 剩余数量:{p.m_nVolume},\n 持仓成本:{p.m_dOpenPrice:.3f},\n 盈亏比例:{p.m_dProfitRate:.2%}')
      if p.m_dProfitRate>=0.5 or p.m_dProfitRate<=-0.3:
        passorder(24,1123,A.acct,p.m_strInstrumentID,5,0,1,C)
  else:
    print(' 空仓')
  #选股
  A.stock = C.get_stock_list_in_sector('沪深A股')
  data = C.get_market_data_ex(['close'],A.stock, end_time=timetag_to_datetime(C.get_bar_timetag(C.barpos),'%Y%m%d'),period = "1d",count = 460)
  for s in A.stock:
    df = data[s]
    if len(data[s]) < 460:
      print('行情长度不足(新上市或最近有停牌) 跳过运行')
      continue
    df.dropna()
    high_2years = max(df['close'])
    high = max(df['close'][-61:-2])
    low = min(df['close'][-61:-2])
    try :#近60日收盘价波动在20%以内,当日收盘价比2年内最高价的40%还低,收盘价格跳出60日震荡平台
      if df['close'][-1] / high_2years < 0.4 and high/low < 1.2 and df['close'][-1] > high:
        print(timetag_to_datetime(C.get_bar_timetag(C.barpos),'%Y%m%d'),s)
        if len(pos)<A.stocknum:#如果持仓不足5支,则买入筛选出来的股票
          passorder(23, 1101, A.acct, s, 5, 0, 100, "", 1, "",C)
    except ZeroDivisionError:#解决因数据问题,导致除数为0的异常。
      print(timetag_to_datetime(C.get_bar_timetag(C.barpos),'%Y%m%d'),'数据问题,除数为0',s)

返回(开头部分截图):

QMT小练习突破底部平台策略

收益情况,很明显,没跑过沪深300:

QMT小练习突破底部平台策略

一些知识点讲解一下:

20行,每只持仓股票,收益超过50%卖出止盈,损失超过-30%卖出止损。

33行,近460个交易日的最高收盘价。

34、35行,近61日的最高、最近收盘价(不含当日)。

39、40行,如果持仓股不够5只,则买入策略选出的股票100股。

因为是全A选股,又获取取了460个交易日的数据,所以策略运行很慢。点击“回测”后,7分钟左右才更新日志(这个时间跟电脑的配置有关)。大家可以更改股票池或将460缩短一些,以缩短回测时间。

发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/73397
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!

(0)
股市刺客的头像股市刺客
上一篇 2024 年 7 月 10 日
下一篇 2024 年 7 月 10 日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注