• macd策略
2020-10-29 22:03:58

商品期货Python版MACD策略（教学）

商品期货Python版MACD策略（教学）

Author: 小小梦, Date: 2020-06-30 14:02:19

Tags: Python MACD

商品期货Python版MACD策略（教学）

策略仅作教学使用。

如有问题欢迎留言。

商品期货策略，不支持数字货币。

'''backtest

start: 2020-03-01 00:00:00

end: 2020-06-29 00:00:00

period: 1h

basePeriod: 1m

exchanges: [{"eid":"Futures_CTP","currency":"FUTURES"}]

'''

# 全局变量

ChartCfg = {

'__isStock': True,

'title': {

'text': 'Python MACD 策略图表'

},

'yAxis': [{

'title': {'text': 'K线'},

'style': {'color': '#4572A7'},

'opposite': False

}, {

'title': {'text': '指标轴'},

'opposite': True

}],

'series': [{

'type': 'candlestick',

'name': '当前周期',

'id': 'primary',

'data': []

}, {

'type': 'line',

'id': 'dif',

'name': 'DIF',

"yAxis" : 1,

'data': []

}, {

'type': 'line',

'id': 'dea',

'name': 'DEA',

"yAxis" : 1,

'data': []

}, {

'type': 'line',

'id': 'macd',

'name': 'MACD',

"yAxis" : 1,

'data': []

}]

}

IDLE = -1

if direction == IDLE and amount > 0:

elif direction == IDLE and amount < 0:

exchange.SetDirection("sell")

exchange.Sell(price, abs(amount))

if direction == PD_LONG or direction == PD_LONG_YD:

exchange.Sell(price, abs(amount))

elif direction == PD_SHORT or direction == PD_SHORT_YD:

exchange.SetDirection("closesell_today" if direction == PD_SHORT else "closesell")

def updatePos():

while True:

orders = _C(exchange.GetOrders)

if len(orders) == 0:

break

for i in range(len(orders)):

exchange.CancelOrder(orders[i].Id, orders[i])

Sleep(1000)

pos = _C(exchange.GetPosition)

if len(pos) == 0:

return IDLE, 0

return pos[0].Type, pos[0].Amount

def main():

global ChartCfg

state = IDLE

preTime = 0

chart = Chart(ChartCfg)

chart.reset()

while True:

if exchange.IO("status"):

info = _C(exchange.SetContractType, Symbol)

while True:

r = _C(exchange.GetRecords)

if len(r) > FastPeriod and len(r) > SlowPeriod and len(r) > SignalPeriod:

break

# 计算指标

macd = TA.MACD(r, FastPeriod, SlowPeriod, SignalPeriod)

if macd[0][-3] is None or macd[1][-3] is None:

continue

LogStatus(_D(), "已经连接")

# 画图

for i in range(len(r)):

if r[i]["Time"] == preTime:

chart.add(0, [r[i]["Time"], r[i]["Open"], r[i]["High"], r[i]["Low"], r[i]["Close"]], -1)

elif r[i]["Time"] > preTime:

chart.add(0, [r[i]["Time"], r[i]["Open"], r[i]["High"], r[i]["Low"], r[i]["Close"]])

preTime = r[i]["Time"]

# 检测交易信号

if macd[0][-2] < 0 and macd[1][-2] < 0 and macd[0][-3] < macd[1][-3] and macd[0][-2] > macd[1][-2] and (state != PD_LONG and state != PD_LONG_YD):

# 平空仓，开多仓 或者 开多仓

state, amount = updatePos()

if state == PD_SHORT or state == PD_SHORT_YD:

trade(state, amount, r[-1]["Close"] + info["PriceTick"] * SlidePoint)

elif state == IDLE:

trade(state, Amount, r[-1]["Close"] + info["PriceTick"] * SlidePoint)

elif macd[0][-2] > 0 and macd[1][-2] > 0 and macd[0][-3] > macd[1][-3] and macd[0][-2] < macd[1][-2] and (state != PD_SHORT and state != PD_SHORT_YD):

# 平多仓，开空仓 或者 开空仓

state, amount = updatePos()

if state == PD_LONG or state == PD_LONG_YD:

trade(state, amount, r[-1]["Close"] - info["PriceTick"] * SlidePoint)

elif state == IDLE:

trade(state, -Amount, r[-1]["Close"] - info["PriceTick"] * SlidePoint)

else :

LogStatus(_D(), "未连接")

Sleep(500)

相关内容

更多内容

更多相关内容
• 【量化投资】成功率极高的MACD策略python编程实现
• MACD策略的matlab全程代码，清楚的秒回macd用于matlab软件实现的全过程
• ## MACD策略学习

千次阅读 2020-04-08 00:33:08
MACD策略回测 常规MACD策略为在0轴上金叉买入，在0轴之下死叉卖出 策略模板代码 import numpy as np import pandas as pd # 导入技术分析库 import talib as tb def initialize(context):# 初始化 g.security = '...

## 概念介绍

• 移动平均值（EMA）

 EMA（12）=前一日EMA（12）×11/13+今日收盘价×2/13
EMA（26）=前一日EMA（26）×25/27+今日收盘价×2/27


计算移动均值是一个不断累加并调整系数的过程。与传统均值的区别在于：移动均值参考到该股票自上市以来每一天的收盘价，并在每次累计上新的收盘价时，弱化之前收盘价的比重，以实现动态累计的效果。

• 离差值（DIF）

 DIF=今日EMA（12）－今日EMA（26）


离差值是双均线策略的核心指标。计算离差值的意义在于：反映该股票的发展势头。理论上，当DIF>0，则发展势头向好。

• 离差平均值（EMA）

 今日DEA（MACD）=前一日DEA×8/10+今日DIF×2/10

• MACD柱

 MACD柱值=（DIF-DEA）×2


此处做差的原理与DIF相同，这里的DIF也就相当于周期为1日的DEA。因此，如果说DIF的正负是衡量发展势头是否向好，那么MACD柱则反应发展势头有多猛，数学意义相当于对DIF求导。

• 几个参数之间的关系

## 对该指标的一些想法与分析

1、移动平均线的优势

• 参考到更多的历史数据
• 动态赋权：近则影响大，远则影响小

2、分析股票主要有两个角度：长期和短期。如均线只能反映股票的历史价格，但通过两条不同周期的均线比较，从而判断当前参数近期内的发展趋势。MACD柱的原理同理。

3、为什么需要MACD指标？MACD是对股价的抽象，意在发现其涨跌周期律。那么如何来进行高层抽象呢？其主要通过平均不同周期做差这两个操作来实现。

• 平均是将新数据与历史数据进行合并，起到过滤噪声、平缓变化的作用。由于每日收盘价太过起伏，对近期股价的判断具有较高的随机性。所以我们进行一次抽象，计算平均值，应用均线策略来帮助判断。但均线策略仍具有较高的随机性，所以对均线再做平均，即对股价的二次抽象，得到MACD指标。
• 不同周期做差用于判断参数的发展势头。新股价的合并对不同周期参数产生不同影响，根据运算规则可知，对短期参数必然影响更大。而长期参数则可视为参考对象，其变化为必然变化，短期参数变化-必然变化=超额变化，也就是我们所说的趋势

4、根据第三点的阐述，可知MACD的作用原理在于通过两层抽象来尝试挖掘股价的周期变化律。因此MACD的提出是基于这样一个假设的：股价存在涨跌周期律。而事实上我们也会发现：尽管每日收盘价是阴晴不定的，就算昨天涨今天也可能跌，具有跳跃性，但MACD柱都是渐变的，类似于正弦函数。理论而言，这具有合理性也我们的常识一致，因为势头由盛转衰、由衰转盛都不是突变的，但股价涨跌是突变的，致使在实际操作上存在问题。

5、第四点提出：由于MACD成立存在假设，所以理论与实际存在偏差。具体而言，其偏差主要体现在滞后性。当一只股票上涨一段时间后开始下跌，但下跌后的股价仍高于历史平均，就会使得DIF和DEA仍在上涨，导致MACD无法捕捉到这段下跌趋势。为了补足这个缺陷，在交易时合理的买入点为DIF超过DEA时产生的金叉，但合理的卖出点应为MACD柱的最高点

6、缺陷情况补充：先下跌在上涨，综合第五点即为两种极值情况；适用情况：先平滑再上涨。

## MACD策略回测

常规MACD策略为在0轴上金叉买入，在0轴之下死叉卖出

策略模板代码

import numpy as np
import pandas as pd
# 导入技术分析库
import talib as tb

def initialize(context):# 初始化
g.security = '600160.XSHG'# 股票代码,XSHG:上海证券交易所,XSHE:深圳证券交易所
def handle_data(context, data):# 每日循环
prices = attribute_history(g.security, 300, '1d', ['close'])
price = np.array(prices['close'])
cash = context.portfolio.cash# 取得当前的现金

DIF, DEA, MACD = tb.MACD(
price,
fastperiod=12,
slowperiod=26,
signalperiod=9)

# 在0轴上金叉买入
if DIF[-1] > 0 and DEA[-1] > 0:
if (DIF[-2] <= DEA[-2]) and (DIF[-1] > DEA[-1]):
order_value(g.security, cash)
# 在0轴之下死叉卖出
elif DIF[-1] < 0 and DEA[-1] < 0:
if (DIF[-2] >= DEA[-2]) and (DIF[-1] < DEA[-1]):
order_target(g.security, 0)


经过上述分析，我认为将卖出点设置为MACD柱最高点更为合适，即将上面代码的卖出部分改为

	# 在MACD最高点卖出
if MACD[-1] < MACD[-2] * 0.95:
order_target(g.security, 0)


以下为对部分行业的股票进行回测的结果
回测时间：2018/1/1-2020/3/1
基准收益：-2.25%

#### 房地产股

股票代码股票名称传统策略修改策略
000002万科A8.78%3.78%
000402金融街-23.48%5.27%
002146荣盛发展7.57%8.64%
600048保利地产14.02%-2.70%

#### 银行股

股票代码股票名称传统策略修改策略
601398工商银行-12.35%-6.00%
601328交通银行-7.95%-0.37%
601288农业银行-9.57%3.76%
601818光大银行-12.09%-2.67%

#### 医药股

股票代码股票名称传统策略修改策略
000538云南白药-20.76%-2.45%
600276恒瑞医药62.98%1.20%
601607上海医药0.00%0.00%
600056中国医药-48.37%-11.24%

在几组简单的测试条件下，修改策略在多数情况表现优于传统策略，但似乎也失去了一次大赚的机会。总体而言，修改策略相对传统策略更为保守和稳健。当然，上述测试尚不完全，有待进一步测试完善。

展开全文
• Python 量化投资实战教程(2) —MACD策略(+26.9%) Python 量化投资实战教程(3) —A股回测MACD策略 Github仓库：https://github.com/Ckend/pythondict-quant 上一回，我们基于简单的MACD策略回测了华正新材这只股票的...

量化投资系列文章：

Python 量化投资实战教程(2) —MACD策略(+26.9%)

Python 量化投资实战教程(3) —A股回测MACD策略

上一回，我们基于简单的MACD策略回测了华正新材这只股票的收益率，发现效果非常好，收益达到了26.9%，但这个策略放到其他股票上会不会有这么高的收益呢？我们今天就来试试看这个策略在不考虑基本面，只考虑技术面的情况下，在A股上的平均表现。

为了回测该策略在A股上的平均表现，我们从A股随机选取了1000只股票，使用MACD策略回测其2010年1月1日至今，使用MACD策略进行投资的表现。其中，以一万元作为本金，佣金为万分之五，每次交易100股。

最终发现，使用该策略最终亏损的股票有626只，盈利的有372只，有2只股票数据不足被去除。最高盈利有84%，最差亏损也达-34%。盈利超过10%的股票有30只，亏损超过30%的有29只。并总结了这30只盈利超过10%的股票的特点。

https://github.com/Ckend/pythondict-quant

## 1.准备

开始之前，你要确保Python和pip已经成功安装在电脑上噢，如果没有，请访问这篇文章：超详细Python安装指南 进行安装。如果你用Python的目的是数据分析，可以直接安装Anaconda：Python数据分析与挖掘好帮手—Anaconda

Windows环境下打开Cmd(开始—运行—CMD)，苹果系统环境下请打开Terminal(command+空格输入Terminal)，准备开始输入命令安装依赖。

当然，我更推荐大家用VSCode编辑器，把本文代码Copy下来，在编辑器下方的终端运行命令安装依赖模块，多舒服的一件事啊：Python 编程的最好搭档—VSCode 详细指南。

在终端输入以下命令安装我们所需要的依赖模块:

pip install backtrader


看到 Successfully installed xxx 则说明安装成功。

## 2.改造策略

最方便的回测股票数据的形式是将股票数据存储在MySQL数据库中，每次回测从数据库中拉取数据即可。但为了能够方便地让大家复现实验，我们将这些股票的数据以文件的形式存储下来。

策略上，我们不需要做改变，但是需要将运行策略的这一部分封装起来，用于批量执行策略：

def run_cerebro(stock_file, result):
"""
运行策略
:param stock_file: 股票数据文件位置
:param result: 回测结果存储变量
"""

cerebro = bt.Cerebro()

# 加载数据到模型中
data = bt.feeds.GenericCSVData(
dataname=stock_file,
fromdate=datetime.datetime(2010, 1, 1),
todate=datetime.datetime(2020, 4, 25),
dtformat='%Y%m%d',
datetime=2,
open=3,
high=4,
low=5,
close=6,
volume=10,
reverse=True
)

# 本金10000，每次交易100股
cerebro.broker.setcash(10000)

# 万五佣金
cerebro.broker.setcommission(commission=0.0005)

# 运行策略
cerebro.run()

# 剩余本金
money_left = cerebro.broker.getvalue()

# 获取股票名字
stock_name = stock_file.split('\\')[-1].split('.csv')[0]

# 将最终回报率以百分比的形式返回
result[stock_name] = float(money_left - 10000) / 10000


然后遍历所有股票，运行策略，结果保存在result变量中：

files_path = 'stocks\\'
result = []

# 遍历所有股票数据
for stock in os.listdir(files_path):
modpath = os.path.dirname(os.path.abspath(sys.argv[0]))
datapath = os.path.join(modpath, files_path + stock)
print(datapath)
try:
run_cerebro(datapath, result)
except Exception as e:
print(e)


最后，我们使用pickle将变量结果保存为文件，以方便后续分析：

f = open('./batch_macd_result.txt', 'wb')
pickle.dump(result, f)
f.close()


随后，我们就可以随意分析这个结果，而不用重新跑一遍策略了。

## 3.结果分析

接下来，使用最简单的方法分析结果：

import pickle

# 加载保存的结果
f = open('./batch_macd_result.txt', 'rb')
f.close()

# 计算
pos = []
neg = []
ten_pos = []
ten_neg = []
for result in data:
res = data[result]
if res > 0:
pos.append(res)
else:
neg.append(res)

if res > 0.1:
ten_pos.append(result)
elif res < -0.1:
ten_neg.append(result)

max_stock = max(data, key=data.get)

print(f'最高收益的股票： {max_stock}, 达到 {data[max_stock]}')
print(f'正收益数量: {len(pos)}, 负收益数量:{len(neg)}')
print(f'+10%数量: {len(ten_pos)}, -10%数量:{len(ten_neg)}')
print(f'收益10%以上的股票: {ten_pos}')


随机抽取的1000千股票，回测结果如下：

D:\\CODE\\stock\\backtrader>python analysis.py
最高收益 600745.SH, 达到 0.8413365999999998
正收益数量: 372, 负收益数量:626
+10%数量: 30, -10%数量:29
收益10%以上的股票: $'000403.SZ', '000858.SZ', '002271.SZ', '002311.SZ', '002475.SZ', '002555.SZ', '002568.SZ', '002605.SZ', '002714.SZ', '300007.SZ', '300136.SZ', '300220.SZ', '300347.SZ', '300476.SZ', '300482.SZ', '300566.SZ', '300601.SZ', '300613.SZ', '300630.SZ', '300725.SZ', '600570.SH', '600585.SH', '600745.SH', '601231.SH', '601799.SH', '603297.SH', '603378.SH', '603655.SH', '603737.SH', '603823.SH'$


显然，在不考虑基本面的情况下，该策略的收益并不高，因此不建议用该策略进行A股整体回测并作交易。但是我们可以观察一下收益10%以上的股票的基本面特点。

你会发现大部分使用MACD策略收益10%以上的股票，其同比年利润增长都是大于0的，只有2只股票例外。此外，大部分股票平均年利润同比增长都在20%到30%左右，而且不会有太大的波动。

所以，MACD策略只有在股票的基本面优秀的情况下，才能发挥最大的价值。而在股票基本面比较差的情况下，这个策略的表现非常差，因此对于投机者而言，它并不是一个好的策略，但是对于价值投资者而言，其具备一定的参考价值。

好了，我们关于MACD策略的分析就到这里，如果大家有进一步的兴趣的话，记得关注Python实用宝典哦，我们将每周更新一期量化投资相关的推送，希望大家喜欢，本文的代码及数据，请在公众号后台回复：量化投资3 下载。

我们的文章到此就结束啦，如果你希望我们今天的Python 实战教程，请持续关注我们，如果对你有帮助，麻烦在下面点一个赞/在看哦，有任何问题都可以在下方留言区留言，我们都会耐心解答的！

Python实用宝典
不只是一个宝典
欢迎关注公众号：Python实用宝典

原文来自Python实用宝典：Python 量化投资实战教程(3) —A股回测MACD策略

展开全文
• 上一回，我们基于简单的MACD策略回测了华正新材这只股票的收益率，发现效果非常好，收益达到了26.9%，但这个策略放到其他股票上会不会有这么高的收益呢？我们今天就来试试看这个策略在不考虑基本面，只考虑技术面的...

上一回，我们基于简单的MACD策略回测了华正新材这只股票的收益率，发现效果非常好，收益达到了26.9%，但这个策略放到其他股票上会不会有这么高的收益呢？我们今天就来试试看这个策略在不考虑基本面，只考虑技术面的情况下，在A股上的平均表现。

为了回测该策略在A股上的平均表现，我们从A股随机选取了1000只股票，使用MACD策略回测其2010年1月1日至今，使用MACD策略进行投资的表现。其中，以一万元作为本金，佣金为万分之五，每次交易100股。

最终发现，使用该策略最终亏损的股票有626只，盈利的有372只，有2只股票数据不足被去除。最高盈利有84%，最差亏损也达-34%。盈利超过10%的股票有30只，亏损超过30%的有29只。并总结了这30只盈利超过10%的股票的特点。

## 1.准备

开始之前，你要确保Python和pip已经成功安装在电脑上噢，如果没有，请访问这篇文章：超详细Python安装指南 进行安装。如果你用Python的目的是数据分析，可以直接安装Anaconda：Python数据分析与挖掘好帮手—Anaconda

Windows环境下打开Cmd(开始—运行—CMD)，苹果系统环境下请打开Terminal(command+空格输入Terminal)，准备开始输入命令安装依赖。

当然，我更推荐大家用VSCode编辑器，把本文代码Copy下来，在编辑器下方的终端运行命令安装依赖模块，多舒服的一件事啊：Python 编程的最好搭档—VSCode 详细指南。

在终端输入以下命令安装我们所需要的依赖模块:

pip install backtrader

看到 Successfully installed xxx 则说明安装成功。

## 2.改造策略

最方便的回测股票数据的形式是将股票数据存储在MySQL数据库中，每次回测从数据库中拉取数据即可。但为了能够方便地让大家复现实验，我们将这些股票的数据以文件的形式存储下来。

策略上，我们不需要做改变，但是需要将运行策略的这一部分封装起来，用于批量执行策略：

def run_cerebro(stock_file, result):
    """
    运行策略
    :param stock_file: 股票数据文件位置
    :param result: 回测结果存储变量
    """

    cerebro = bt.Cerebro()
​
    cerebro.addstrategy(TestStrategy)
​
    # 加载数据到模型中
    data = bt.feeds.GenericCSVData(
        dataname=stock_file,
        fromdate=datetime.datetime(2010, 1, 1),
        todate=datetime.datetime(2020, 4, 25),
        dtformat='%Y%m%d',
        datetime=2,
        open=3,
        high=4,
        low=5,
        close=6,
        volume=10,
        reverse=True
    )
    cerebro.adddata(data)
​
    # 本金10000，每次交易100股
    cerebro.broker.setcash(10000)
    cerebro.addsizer(bt.sizers.FixedSize, stake=100)
​
    # 万五佣金
    cerebro.broker.setcommission(commission=0.0005)
​
    # 运行策略
    cerebro.run()
​
    # 剩余本金
    money_left = cerebro.broker.getvalue()
​
    # 获取股票名字
    stock_name = stock_file.split('\\')[-1].split('.csv')[0]
​
    # 将最终回报率以百分比的形式返回
    result[stock_name] = float(money_left - 10000) / 10000

然后遍历所有股票，运行策略，结果保存在result变量中：

files_path = 'stocks\\'
result = []
​
# 遍历所有股票数据
for stock in os.listdir(files_path):
    modpath = os.path.dirname(os.path.abspath(sys.argv[0]))
    datapath = os.path.join(modpath, files_path + stock)
    print(datapath)
    try:
        run_cerebro(datapath, result)
    except Exception as e:
        print(e)

最后，我们使用pickle将变量结果保存为文件，以方便后续分析：

f = open('./batch_macd_result.txt', 'wb')
pickle.dump(result, f)
f.close()

随后，我们就可以随意分析这个结果，而不用重新跑一遍策略了。

## 3.结果分析

接下来，使用最简单的方法分析结果：

import pickle
​
# 加载保存的结果
f = open('./batch_macd_result.txt', 'rb')
data = pickle.load(f)
f.close()
​
# 计算
pos = []
neg = []
ten_pos = []
ten_neg = []
for result in data:
    res = data[result]
    if res > 0:
        pos.append(res)
    else:
        neg.append(res)
​
    if res > 0.1:
        ten_pos.append(result)
    elif res < -0.1:
        ten_neg.append(result)
​
max_stock = max(data, key=data.get)
​
print(f'最高收益的股票： {max_stock}, 达到 {data[max_stock]}')
print(f'正收益数量: {len(pos)}, 负收益数量:{len(neg)}')
print(f'+10%数量: {len(ten_pos)}, -10%数量:{len(ten_neg)}')
print(f'收益10%以上的股票: {ten_pos}')

随机抽取的1000千股票，回测结果如下：

D:\CODE\stock\backtrader&gt;python analysis.py
最高收益 600745.SH, 达到 0.8413365999999998
正收益数量: 372, 负收益数量:626
+10%数量: 30, -10%数量:29
收益10%以上的股票: ['000403.SZ', '000858.SZ', '002271.SZ', '002311.SZ', '002475.SZ', '002555.SZ', '002568.SZ', '002605.SZ', '002714.SZ', '300007.SZ', '300136.SZ', '300220.SZ', '300347.SZ', '300476.SZ', '300482.SZ', '300566.SZ', '300601.SZ', '300613.SZ', '300630.SZ', '300725.SZ', '600570.SH', '600585.SH', '600745.SH', '601231.SH', '601799.SH', '603297.SH', '603378.SH', '603655.SH', '603737.SH', '603823.SH']

显然，在不考虑基本面的情况下，该策略的收益并不高，因此不建议用该策略进行A股整体回测并作交易。但是我们可以观察一下收益10%以上的股票的基本面特点。

你会发现大部分使用MACD策略收益10%以上的股票，其同比年利润增长都是大于0的，只有2只股票例外。此外，大部分股票平均年利润同比增长都在20%到30%左右，而且不会有太大的波动。

所以，MACD策略只有在股票的基本面优秀的情况下，才能发挥最大的价值。而在股票基本面比较差的情况下，这个策略的表现非常差，因此对于投机者而言，它并不是一个好的策略，但是对于价值投资者而言，其具备一定的参考价值。

好了，我们关于MACD策略的分析就到这里，如果大家有进一步的兴趣的话，记得关注Python实用宝典哦，我们将每周更新一期量化投资相关的推送，希望大家喜欢，本文的代码及数据，请在公众号后台回复：量化投资3 下载。

我们的文章到此就结束啦，如果你喜欢今天的 Python 教程，请持续关注Python实用宝典。

有任何问题，可以在公众号后台回复：加群，回答相应验证信息，进入互助群询问。

原创不易，希望你能在下面点个赞和在看支持我继续创作，谢谢！

展开全文
• 这一次，让我们把策略变得复杂一点，使用MACD策略的信号线交叉交易法： 本系列教程源代码Github仓库：https://github.com/Ckend/pythondict-quant 1.原理 为了解释MACD的原理，我们需要先了解指数移动平均线(下...
• Python 量化投资实战教程(2) —MACD策略(+26.9%) Python 量化投资实战教程(3) —A股回测MACD策略 Github仓库：https://github.com/Ckend/pythondict-quant 上次，我们简单地用Python 和 backtrader 使用最简单的...
• function MACD(freq,shareNum)%%买卖原则为：%dif-dea均为正，且dif上扬，买入信号参考。%dif-dea均为负，且dif下跌，卖出信号参考。targetList = traderGetTargetList();%获取目标资产信息HandleList = ...
• MACD多品种止盈止损策略.py
• 在这一节，我们引入库import talib，因为这个库里有很多的技术指标，可以直接引用，不用自己再编指标函数，非常的方便，只要一个语句macd, macdsignal, macdhist = talib.MACD(ma, fastperiod=12, slowperiod=26, ...
• ## python实现MACD均线择时策略

千次阅读 多人点赞 2020-11-01 20:48:33
今天我们将以MACD为例，探究如何利用技术指标进行策略的构建与实现。 > MACD的组成 MACD（Moving Average Convergence and Divergence)即指数平滑移动平均线，由Geral Appel 于1970年提出，属于大势趋势类指标，...
• 经典MACD交易策略经典MACD交易策略Author: Hukybo, Date: 2019-10-25 16:43:14Tags: MACD Python摘要相信做过交易的人对MACD都不陌生，这是一个非常古老的技术指标，它是由查拉尔·阿佩尔(Geral Appel)在上个世纪70...
• 移动均线有好几个策略，不过都是简单的策略，包括简单的移动均线策略，双均线交叉策略macd线的策略。目前也就觉得macd线简单好用。先放一个简单的策略——移动均线策略。这个策略是由下向上超过均线就买入，相反就...
• 此次测试主要有两个角度：①MACD策略有效性随大盘波动影响的测试；②参数设置对MACD策略的影响测试。 这是2014年以来A股指数的周线图，可以看到在红框部分起伏非常大，设置为大盘波动期的参考对象（2014/8/1-2016/2...
• 一、MACD择时策略： 1.买入规则：DIF上穿DEA，买入股票 2.卖出规则：DIF下穿DEA，卖出股票 3.止损价：max(移动止损,固定止损) 移动止损:ma - std 固定止损:开仓价 - 开仓的std ''' import tushare as ts ...
• # 初始化此策略 # 设置我们要操作的股票池, 这里我们只操作一支股票 g.security = '600570.SS' set_universe(g.security) def handle_data(context, data): security = g.security # 得到五日均线价格 ...
• MACD称为异同移动平均线，是从双指数移动平均线发展而来的，由快的指数移动平均线（EMA12）减去慢的指数移动平均线（EMA26）得到快线DIF，再用2×（快线DIF-DIF的9日加权移动均线DEA）得到MACD柱。MACD的意义和双...
• matlab macd投资策略MACD称为指数平滑移动平均线，是从双指数移动平均线发展而来的，由快的指数移动平均线（EMA12）减去慢的指数移动平均线（EMA26）得到快线DIF，再用2×（快线DIF-DIF的9日加权移动均线DEA）得到...
• 商品期货Python版MACD策略（教学）商品期货Python版MACD策略（教学）Author: 小小梦, Date: 2020-06-30 14:02:19Tags: Python MACD商品期货Python版MACD策略（教学）策略仅作教学使用。如有问题欢迎留言。商品期货...
• MACD策略python实现背离点的判断 话不多说直接贴代码和运行结果！！ ****运行环境：**PyCharm2017.1 import baostock as bs import pandas as pd import talib as ta import matplotlib.pyplot as plt def ...
• MACD指标定义 MACD称为异同移动平均线，是从双指数移动平均线发展而来的，由快的指数移动平均线（EMA12）减去慢的指数移动平均线（EMA26）得到快线DIF，再用2×（快线DIF-DIF的9日加权移动均线DEA）得到MACD柱。MACD...
• MACD均线择时策略是十分基础的策略，适合咱们这种新手学习，这篇博客就分享一下基于聚宽实现MACD均线择时策略。 代码： 注：需要到聚宽的量化平台去运行。 # MACD均线择时策略 ''' 筛选出符合： 10<市盈率...
• MACD的基本概念，可以参考 https://www.joinquant.com/post/7095?f=18newyearjx ，感谢 Quant中找米吃的阿鼠 和 聚宽小秘书 Thanks♪(･ω･)ﾉ 我认为MACD不适合采用轮动策略，经过回测，我将策略改成以下模式：
• 1.平滑异同移动平均线定义 平滑异同移动平均线...Signal(DEM或DEA或MACD) (红线): 计算macd9天均值，公式：Signal(DEM或DEA或MACD)：EMA(MACD,9) Histogram (柱): 计算macd与signal的差值，公式：Histogram：MACD-S
• 在开始我在Python 库中使用MACD指标stockstats.我想知道,如果我有一个特定股票的100个OHLC条目,我怎样才能使用MACD输出来产生信号,无论我应该买入还是卖出或持有？在图表中,可以想象,但在编程方面我如何得到这个想法...

...