python 利用pandas.Series.ewm 计算ma 和kdj

#! /usr/bin/env python3
# -*- coding: UTF-8 -*-


import pandas as pd
import requests
import json
import numpy as np
import datetime

api_url = "https://www.okex.me/v2/spot/instruments/ltc-usdt/candles?granularity=86400&size=1000&t=1592091928445"

html = requests.get(api_url)
stock_datas = pd.DataFrame()

for i in json.loads(html.text)['data']:
    date = (datetime.datetime.strptime(i[0].split('T')[0], "%Y-%m-%d") + datetime.timedelta(days=1)).strftime("%Y%m%d")
    df_insert = pd.DataFrame(
        {'date': date, 'open': i[1], 'high': i[2], 'low': i[3], 'close': np.float(i[4]), 'volume': i[5]}, index=[0])
    stock_datas = stock_datas.append(df_insert)

ma_list = [7, 30]  # ma移动平均

for ma in ma_list:
    stock_datas['MA_' + str(ma)] = np.round(pd.Series.rolling(stock_datas['close'], window=ma).mean(), 1)

low_list = stock_datas['low'].rolling(9, min_periods=9).min()
low_list.fillna(value=stock_datas['low'].expanding().min(), inplace=True)
high_list = stock_datas['high'].rolling(9, min_periods=9).max()
high_list.fillna(value=stock_datas['high'].expanding().max(), inplace=True)
rsv = (stock_datas['close'] - low_list) / (high_list - low_list) * 100

stock_datas['K'] = pd.Series.ewm(rsv, com=2).mean()
stock_datas['D'] = pd.Series.ewm(stock_datas['K'], com=2).mean()
stock_datas['J'] = 3 * stock_datas['K'] - 2 * stock_datas['D']

custom_date = input("""
    Example:20200401 2020年04月01日
    Enter datetime please:"""
                    )
result = stock_datas[stock_datas['date'] == custom_date][['date', 'K', 'D', 'J', 'MA_7', 'MA_30']]
if result.__len__() > 0:
    result = "MA7:{}\r\nMA30:{}\r\nK:{}\r\nD:{}\r\nJ:{}\r\n".format(result['MA_7'].values[0], result['MA_30'].values[0],
                                                                    np.round(result['K'].values[0], 2),
                                                                    np.round(result['D'].values[0], 2),
                                                                    np.round(result['J'].values[0], 2))
    print(result)
    with open('a.txt', 'w+') as f:
        f.write(result)
else:
    print("Found nothing!!!")

 

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值