首页 百科知识 范文大全 经典语录
您现在位置: 首页 > 百科知识 >

emv指标是什么意思(使用EMV指标编写自动交易策略)

100次浏览     发布时间:2025-01-19 05:44:05    

EMV指标是一种用于技术分析的指标,可以帮助交易者判断市场的买卖压力。在这篇文章中,我们将编写一个使用EMV指标的交易策略,并使用Python中的easytrader库实现自动交易。


首先,我们需要安装easytrader库。在命令行中输入以下命令来安装:

pip install easytrader

接下来,我们需要下载并加载历史股票数据。可以使用tushare库来获取历史数据。在命令行中输入以下命令来安装tushare:


pip install tushare

在代码中,我们将导入tushare库并使用它来获取某个股票的历史数据:

import tushare as ts

df = ts.get_k_data('600519', start='2020-01-01', end='2023-01-01')
df = df.set_index('date')

接下来,我们将编写计算EMV指标的代码。EMV指标基于成交量和价格变动的比率来计算。它可以帮助我们确定市场中的买卖压力。在这个策略中,我们将使用EMV指标的30日移动平均线作为信号线。

def EMV(df: pd.DataFrame, signal_period: int = 30):
    mid_price = (df['high'] + df['low']) / 2.0
    emv = ((mid_price - mid_price.shift(1)) * (df['volume'] / ((df['high'] - df['low'])))).sum() / df['volume'].rolling(window=14).sum().shift(1)
    emv_ma = emv.rolling(window=signal_period).mean()
    return emv, emv_ma

最后,我们将编写自动交易代码。这个策略将在每个交易日的开盘时买入,并在信号线上穿过价格线的时候卖出。


from easytrader import *
import pandas as pd

USER = 'xxxxxxxx'  # 券商账户
PASSWORD = 'xxxxxxxx'  # 券商密码
MONITOR_CODES = ['600519']  # 监控股票

def main():
    # 登录券商
    user = use('ths')
    user.prepare(user='xxxxxx', moni=True)
    user.connect()
    print(user)

    while True:
        # 获取当前时间
        now = datetime.now()
        # 判断当前时间是否为交易日
        if is_trade_day(now):
            # 获取当天交易数据
            df = ts.get_k_data('600519', start=now.strftime('%Y-%m-%d'), end=now.strftime('%Y-%m-%d'))
            # 计算EMV指标
            emv, emv_ma = EMV(df)
            # 获取当前价格
            current_price = df.iloc[-1]['close']
            # 判断是否需要买入
            if emv_ma[-1] > current_price:
                user.buy('600519', price=current_price, amount=100)
            # 判断是否需要卖出
            elif emv_ma[-1] < current_price:
                user.sell('600519', price=current_price, amount=100)
        # 每分钟检查一次
        time.sleep(60)

if __name__ == '__main__':
    main()


说明:

  1. use()函数需要传入你使用的券商,这里示例使用的是tonghuashun(ths);
  2. is_trade_day()函数用于判断当前时间是否为交易日;
  3. buy()函数用于买入指定的股票,amount参数表示购买的数量;
  4. sell()函数用于卖出指定的股票,amount参数表示卖出的数量;
  5. 由于本文只是演示一个交易策略的示例,因此这个交易策略实现起来可能还需要更多的完善。

相关文章