我是靠谱客的博主 大意鸵鸟,最近开发中收集的这篇文章主要介绍多板块轮动策略编写技巧----策略编写学习教材,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一.本章内容主要介绍了如何在MINDGO平台上快速学会编写多板块轮动策略,希望能给有需要的小伙伴带来一定帮助。¶

本文建立于双板块轮动策略编写技巧之上,因此需要完整地学习的同学可以先看教材(六)
二.多板块策略逻辑

一、轮动策略介绍

在【系列六】中已经详细的讲到了板块轮动效应,当时整个策略的不完善之处在于板块太少,无法完全解释大盘 的涨跌逻辑,因为本人在【系列七】中特意创建了一个多指数轮动策略,目的就是通过对大量指数的强弱判断,从而 来解析整个大盘的上涨逻辑。
  通俗的讲,每段时期的大盘涨跌逻辑都是有所不同的,比如:前段时间蓝筹股的上涨,这段时间周期股暴涨等等, 说白了,每个时期的大盘在上涨过程中,总有一个板块或者是指数、行业是推动大盘上涨的,除非是在大牛市,每个 行业、板块都在涨,但是都在涨的同时,必定有一个板块或者行业是涨幅最喜人的。从以上的逻辑,我们可以得出: 多指数(行业)轮动策略可以最大程度上解释大盘的涨跌逻辑!
轮动策略的优势非常明显,在任何一段时间内,买入最强势的指数,而这个指数正是带动整个大盘上涨的核心力 量。当然,策略中还会判断指数强弱,如果没有一个指数达到强势标准,则直接空仓。这也就是说,轮动策略本身就 具备良好的风控措施,而且因为买入的是指数,其不需要考虑非系统性风险。
  多指数轮动策略的重点在于以下四点:
  一:必须具备足够多的指数,也就是这些指数包含很多行业、指数,这样可以在任何一个时期来解释大盘内在涨 跌逻辑。
  二:必须有一个严格的强弱判断逻辑,一个指数的表现如何量化成强弱关系并与其它指数进行对比。
  三:确定调仓周期,策略应该是一个月调仓一次,还是一周调仓一次,或者其它,这个调仓逻辑与你选择指数的 类型、数量有关。
  四:确定持仓指数数量,当策略判断出各个指数的强弱并排序后,策略持仓最强表现的一个指数,还是前几个指 数,这会直接影响到策略的最终结果。

二、构建多指数轮动策略

本章为了达到编写教学效果和策略逻辑完善,本人选取了9个指数ETF基金来解释大盘涨跌逻辑:159901 深100ETF, 510050 50ETF,159915创业板ETF,510300 沪深300ETF,510500 500ETF,510180 180ETF,159902 中小板ETF,159905 深红利ETF,150019银华锐进。
  其次定义板块强弱,采用当日收盘价与20日前的收盘价进行涨跌幅计算,如果当日收盘价相对于20日前的收盘价是 上涨的,则表明该板块较为强势,由于一共9个指数,选取其中最强的一个作为交易标的。如果出现9个指数都下跌,那 么我们则空仓避险。
  板块强弱的调仓周期为一月。
三.策略框架

I.初始化函数,设置账户条件
II.交易函数,用于买卖个股

#=====================================================================================================
#=====================================================================================================
#导包操作
import pandas as pd
#=====================================================================================================
#=====================================================================================================
#初始化函数,用于初始条件,其中爱吃醋 context.security中确定策略判断的几大板块
def init(context):
run_monthly(trade,date_rule=3)
context.security=['150019.SZ','159901.OF','510050.OF',
'159915.OF','510300.OF',
'510500.OF','510180.OF',
'159902.OF','159905.OF']
#注意:格式可以一行,也可以多行,不影响代码运行,4行还只是context.security里的。
#=====================================================================================================
#=====================================================================================================
#板块强弱衡量函数
def bankuai(context,bar_dict):
df={'security':[],'qd':[]}
stocks=context.security
for i in stocks:
df['security'].append(i)
price = history(i, ['close'], 25, '1d')
p20=price['close'].iloc[-20]
p1=price['close'].iloc[-1]
m=(p1-p20)/p20
df['qd'].append(m)
df = pd.DataFrame(df).sort_values(by ='qd', ascending=False)
x=df['qd'].iloc[0]
y=['123']
if x >0 :
return df['security'].iloc[0]
else:
return y
#直接输出最强的板块,如果所有板块都是负数,那么输出固定值y=['123']
#=====================================================================================================
#=====================================================================================================
#交易函数
def trade(context,bar_dict):
n=bankuai(context,bar_dict)
d=len(n)
#首先判断所有板块是否变弱,变弱则清仓
if d==1:
if len(list(context.portfolio.stock_account.positions.keys())) > 0:
for stock in list(context.portfolio.stock_account.positions.keys()):
order_target(stock, 0)
#其次判断最强板块是否是我们持仓的板块,不是则先卖持仓,后买最强板块。
else:
if n not in list(list(context.portfolio.stock_account.positions.keys())):
for stock in list(context.portfolio.stock_account.positions.keys()):
order_target(stock, 0)
if len(list(context.portfolio.stock_account.positions.keys())) < 1:
order_target_value(n, context.portfolio.stock_account.available_cash)
#=====================================================================================================
#=====================================================================================================
#设置止损止盈
def handle_bar(context,bar_dict):
n=bankuai(context,bar_dict)
d=len(n)
#判断函数,用于判断板块,如果所有板块都弱了,那么n是1,执行清仓。
if d==1:
if len(list(context.portfolio.stock_account.positions.keys())) > 0:
for stock in list(list(context.portfolio.stock_account.positions.keys())):
order_target(stock, 0)

最后

以上就是大意鸵鸟为你收集整理的多板块轮动策略编写技巧----策略编写学习教材的全部内容,希望文章能够帮你解决多板块轮动策略编写技巧----策略编写学习教材所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部