数字货币量化交易策略—基于移动平均线MA

本文介绍金融市场中的量化交易策略之移动平均线MA策略。

一、概念

移动平均线,Moving Average,简称MA,MA是用统计分析的方法,将一定时期内的证券价格(指数)加以平均,并把不同时间的平均值连接起来,形成一根MA,用以观察证券价格变动趋势的一种技术指标。
移动平均线是由著名的美国投资专家Joseph E.Granville(葛兰碧,又译为格兰威尔)于20世纪中期提出来的。均线理论是当今应用最普遍的技术指标之一,它帮助交易者确认现有趋势、判断将出现的趋势、发现过度延生即将反转的趋势。其图如下:
在这里插入图片描述
均线最主要目的是用来判断趋势通常是预期市场现在跟未来可能的走势。

二、计算方法

移动平均线代表的是一种算术平均线,把一段时间周期内的价格相加,除以周期频率。

移动平均线=将N天的收盘价加总后再除以N,即得到第N天的算术平均线数值。

N天:只计算交易日(有开盘的日子、没开盘不算)
时间单位:要注意的是,有时候不用日资料,也会使用周资料、小时、分钟为时间切分单位,这些也都能够画出均线。简单来说,均线就是把价格取平均这样而已。
不同投资交易周期的使用者,会使用不同周期的时间(分钟收盘价[分K线]、小时收盘价[小时K线]、日收盘价[日K线]、周收盘价[周K线])。

三、使用方法

当两个长短不同的移动平均线(MA)在图表中交叉,有个专有名词叫做 死亡交叉、黄金交叉:
移动平均线(Moving Average)的黄金交叉:短均线向上突破长均线
一般来说,当移动平均线5MA向上突破10MA的时候,被称为是黄金交叉,表示短期内可能会上涨、有波段涨幅,适合多单进场或是空单出场。
移动平均线(Moving Average)的死亡交叉:短均线向下突破长均线
当移动平均线5MA跌破10MA的时候,被视为死亡交叉,表示短期内可能会下跌、有波段跌幅,适合空单进场或是多单出场。

四、Python3程序实现

1、获取K线数据
exchange = Exchange("binance")  #
symbol = "BTC_USDT"
kline = exchange.kline(symbol = symbol, interval = '1day', limit = 120)
stamp, open, high, low, close, volume = kline
2、使用TA-Lib计算
MA5  = talib.MA(close, 5)
MA10 = talib.MA(close, 10)  
3、判断趋势
DIRECTION = ""
if (MA5[-2] < MA10[-2] and MA5[-1] > MA10[-1]):     # MA5-MA10金叉
    DIRECTION = "BUY"
if (MA5[-2] > MA10[-2] and MA5[-1] < MA10[-1]):     # MA5-MA10死叉
    DIRECTION = "SELL"
4、执行交易
ticker = exchange.ticker(symbol)
if DIRECTION == "BUY":
    info = exchange.order(symbol, "BUY", "LIMIT", quantity=0.01, price=ticker["last"])
    print(info)
elif DIRECTION == "SELL":
    info = exchange.order(symbol, "SELL", "LIMIT", quantity=0.01, price=ticker["last"])
    print(info)

完整代码如下

exchange = Exchange("binance")  #
symbol = "BTC_USDT"
kline = exchange.kline(symbol = symbol, interval = '1day', limit = 120)
stamp, open, high, low, close, volume = kline

MA5  = talib.MA(close, 5)
MA10 = talib.MA(close, 10)  

DIRECTION = ""
if (MA5[-2] < MA10[-2] and MA5[-1] > MA10[-1]):     # MA5-MA10金叉
    DIRECTION = "BUY"
if (MA5[-2] > MA10[-2] and MA5[-1] < MA10[-1]):     # MA5-MA10死叉
    DIRECTION = "SELL"
      
ticker = exchange.ticker(symbol)
if DIRECTION == "BUY":
    info = exchange.order(symbol, "BUY", "LIMIT", quantity=0.01, price=ticker["last"])
    print(info)
elif DIRECTION == "SELL":
    info = exchange.order(symbol, "SELL", "LIMIT", quantity=0.01, price=ticker["last"])
    print(info)

五、注意事项

1、除了MA指标之外,还有指数移动平均线(EMA)和加权移动平均线(WMA)两种均线指标,计算方法大同小异。
2、当市场行情正处于震荡期时,移动平均线的卖出买入信号会频繁出现,而这时往往不是适合的时机,要根据其他指标综合判断。
3.移动平均线的变化较为缓慢,有一定的滞后性。

六、相关链接

本文中的相关信息可以参考本博客上的其他专栏
1、TA-Lib安装使用
2、常用交易所SDK

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
要基于K线形态构造交易量化交易策略代码,首先需要明确要使用的K线形态模式,例如反转形态或持续形态。在这里,我们以简单的买入反转策略为例。 步骤1:定义K线形态模式 选择一个K线反转形态模式,例如双底形态。双底形态是指价格在某个时间段内形成两个低点,并且两个低点之间有一个高点。这表明股票价格的下降趋势即将转变为上升趋势。 步骤2:确定交易信号规则 定义交易信号规则,以判断何时发出买入信号。在这里,我们设置当价格在前一根K线形成的低点之上,并且当前K线形成的低点之下时,发出买入信号。 步骤3:编写策略代码 下面是一个简单的Python代码示例,用于实现这个买入反转策略: ``` import pandas as pd def generate_signals(df): signals = [] for i in range(1, len(df)): if df['low'][i] > df['low'][i-1] and df['low'][i] < df['low'][i+1]: signals.append(1) # 买入信号 else: signals.append(0) # 无信号 signals.append(0) # 最后一根K线没有信号 return signals # 假设我们有一个包含K线数据的dataframe,其中'open', 'high', 'low', 'close'是OHLC数据 df = pd.DataFrame(...) signals = generate_signals(df) # 根据信号进行交易 for i in range(len(signals)): if signals[i] == 1: # 发出买入信号,执行买入交易 buy_price = df['close'][i+1] # 其他交易逻辑... ``` 以上代码根据设定的双底形态模式,在每根K线形成之后判断是否发出买入信号,然后根据信号进行交易操作。 请注意,以上只是一个简单的示例,并未包含完整的交易逻辑和风险管理措施。在实际交易中,还需要考虑止损、止盈、仓位控制等方面的问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

比特量化

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

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

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

打赏作者

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

抵扣说明:

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

余额充值