QMT入门非常简洁的双均线策略

本文将QMT自带的双均线策略改写的非常简洁,适合QMT入门。

代码如下:

#encoding:gbk
import numpy as np
import datetime


"""
示例说明:双均线实盘策略,通过计算快慢双均线,在金叉时买入,死叉时做卖出
"""


class _a():
  pass
A = _a() #创建空的类的实例 用来保存全局变量


def init(C):
  A.stock= C.stockcode + '.' + C.market #品种为模型交易界面选择品种,本例默认为沪深300指数
  A.line10=10   #快线周期
  A.line20=20   #慢线周期
  #设置股票池 订阅品种行情
  C.set_universe([A.stock])


def handlebar(C):
  #K线的日期
  Kline_date = timetag_to_datetime(C.get_bar_timetag(C.barpos),'%Y%m%d')
  #真实的时间
  real_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
  #获取行情数据
  data = C.get_history_data(max(A.line10, A.line20)+1, '1d', 'close',dividend_type='front_ratio')
  #获取收盘价格列表
  close_list = data[A.stock]
  #获取两条均线前一天的数值
  pre_line1 = np.mean(close_list[-A.line10-1: -1])
  pre_line2 = np.mean(close_list[-A.line20-1: -1])
  #获取两条均线当天的数值
  current_line1 = np.mean(close_list[-A.line10:])
  current_line2 = np.mean(close_list[-A.line20:])
  
  #如果快线穿过慢线,则买入
  if pre_line1 < pre_line2 and current_line1 > current_line2:
    msg = f"{real_time}|{Kline_date} 双均线实盘 {A.stock} 上穿均线 买入"
    print(msg)


  #如果快线下穿慢线,则卖出
  if  pre_line1 > pre_line2 and current_line1 < current_line2:
    msg = f"{real_time}|{Kline_date} 双均线实盘 {A.stock} 下穿均线 卖出 "
    print(msg)

一些知识点讲解一下:

9-11行,这里定义一个空类,用来保存一些全局量化。Python有自己的全局变量定义和使用方法,但不如定义空类简洁。也可以将全局变量保存到ContextInfo,但不提倡,两个原因:1、ContextInfo中的内容很多,如果再将自定义变量保存进去,会拖慢策略运行速度。2、一些变量保存不到ContextInfo中去。

20行,函数里面的参数C,为ContextInfo的缩写,缩写一下的话,整个策略可以减少很多代码量的。

22行,这里获取了K线时间,后续用来显示回测重要时件是在哪条K线上发生的。

30-34,获取两条均线前一天和当天的数值,后续用来判断形式了金叉还是死叉。

以上就是简洁的双均线策略,后续再慢慢补充上细节,就会形成一个完整的双均线策略。

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

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

相关推荐

发表回复

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