QMT获取历史K线和MACD策略

#导入pandas库

import pandas as pd

#初始化

def init(C):

        print('初始化成功!!!')

        main(C)

#主函数

def main(C):

        #下载历史数据到本地函数

        download_history_data(股票代码,'1d','','')        # 1d 表示 下载以天为周期的数据

        #获取历史K线,获取的是dict类型的数据

        """ start_time 是开始时间可根据自己要求填写,period 是周期一天, count 是获取条数 """

        stock_dict = C.get_local_data('股票代码', end_time='结束时间', period='1d',  count=200)

        # 转为pandas类型数据

        df = pd.DataFrame.from_dict(stock_dict , orient='index')

        

        # 数据计算

        df['EMA_Short'] = df['close'].ewm(span=12, adjust=False).mean()        # 快线
        df['EMA_Long'] = df['close'].ewm(span=26, adjust=False).mean()        # 慢线
        df['DIF'] = df['EMA_Short'] - df['EMA_Long']        # 快慢线差值
        df['DEA'] = df['DIF'].ewm(span=9, adjust=False).mean()
        df['MACD'] = (df['DIF'] - df['DEA']) * 2                #MACD值

  • 13
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
QMT 是一个基于Python的量化交易框架,可以用它来编写自己的交易策略。下面是一个基于MACD的策略示例: ``` from qmt import Strategy, DataHandler import talib class MACDStrategy(Strategy): def __init__(self): self.buy_price = None self.sell_price = None self.macd = None self.signal = None def on_data(self, data: DataHandler): if len(data.close) < 26: return self.macd, self.signal, _ = talib.MACD(data.close) current_price = data.close[-1] if self.macd[-1] > self.signal[-1] and self.macd[-2] < self.signal[-2]: self.buy(current_price) elif self.macd[-1] < self.signal[-1] and self.macd[-2] > self.signal[-2]: self.sell(current_price) def buy(self, price): self.buy_price = price self.buy_order(price) def sell(self, price): self.sell_price = price self.sell_order(price) def on_order_filled(self, filled_order): if filled_order.order_type == 'buy': self.buy_price = filled_order.price elif filled_order.order_type == 'sell': self.sell_price = filled_order.price def on_trade_closed(self, trade): profit = (trade.sell_price - trade.buy_price) / trade.buy_price * 100 print(f"Trade closed: buy @ {trade.buy_price}, sell @ {trade.sell_price}, profit: {profit:.2f}%") ``` 该策略使用 talib 库来计算 MACD 指标,并通过比较 MACD 和信号线的交叉点来判断买入和卖出时机。当 MACD 线上穿信号线时,发出买入指令;当 MACD 线下穿信号线时,发出卖出指令。在 `on_order_filled` 和 `on_trade_closed` 方法中,我们可以记录买入和卖出的价格,并在交易结束时计算盈利。 需要注意的是,这只是一个简单的示例,并没有考虑市场的实际情况。在实际应用中,我们需要结合更多的指标和数据,以及制定更合理的买卖规则。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Fly.Py

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

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

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

打赏作者

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

抵扣说明:

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

余额充值