python量化交易常用函数 (python量化交易筹码分布)

ADL指标全称为Accumulation/Distribution Line,它是区间累计/分布线,用于判断某个期间内价格的趋势与变化。它的计算方法是通过成交量和价格的比较来确定资金的流入流出情况,用于分析供需关系,判定买卖时机。

python量化股票指标,python量化交易筹码分布

下面是基于easytrader库的ADL指标交易策略:

1.引入必要的模块和变量

import easytrader
import numpy as np
import pandas as pd
from sklearn.preprocessing import MinMaxScaler

user = easytrader.use('ht')
user.prepare('ht.json')
code = '600519'
start_date = '20180101'
end_date = '20210523'

2.获取历史股票数据

python量化股票指标,python量化交易筹码分布

df = user.get_history_transaction_data(code, start=start_date, end=end_date)
df.index = pd.to_datetime(df['成交时间'])
df = df.sort_index()
close_prices = df['成交价格']
volume = df['成交数量']

3.定义ADL指标计算函数

python量化股票指标,python量化交易筹码分布

def ADL(close_prices, volume):
    scaler = MinMaxScaler(feature_range=(-1, 1))
    scaled_prices = scaler.fit_transform(np.array(close_prices).reshape(-1, 1)).flatten()
    scaled_volume = scaler.fit_transform(np.array(volume).reshape(-1, 1)).flatten()
    mfVolume = scaled_volume * ((scaled_prices[:-1] - scaled_prices[1:]) / scaled_prices[1:])
    adl = np.zeros_like(scaled_prices)
    adl[0] = mfVolume[0]
    for i in range(1, len(adl)):
        adl[i] = adl[i-1] + mfVolume[i]
    return scaler.inverse_transform(np.array(scaled_prices).reshape(-1, 1)).flatten(), adl

4.计算ADL指标及买卖信号

python量化股票指标,python量化交易筹码分布

close, adl = ADL(close_prices, volume)
signal = (adl - np.min(adl)) / (np.max(adl) - np.min(adl)) > 0.5

5.根据买卖信号进行交易

python量化股票指标,python量化交易筹码分布

hold = False
for i in range(len(signal)):
    price = close[i]
    if signal[i] and not hold:
        user.buy(code, price, 100)
        hold = True
    elif not signal[i] and hold:
        user.sell(code, price, 100)
        hold = False

以上代码为一个简单的ADL指标交易策略,其核心思想是根据ADL指标的信号进行交易,该指标通过成交量和价格的比较来确定资金的流入流出情况,对于本次开发不足或者存在问题,欢迎补充和完善。