使用QMT编写基于MACD的策略
时间: 2023-06-11 17:05:54 浏览: 651
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` 方法中,我们可以记录买入和卖出的价格,并在交易结束时计算盈利。
需要注意的是,这只是一个简单的示例,并没有考虑市场的实际情况。在实际应用中,我们需要结合更多的指标和数据,以及制定更合理的买卖规则。
阅读全文
相关推荐


















