一、心理线指标PSY简介
其中,n为周期数,通常是12天。
二、交易信号的生成
-
买入信号:当PSY值低于20,表明市场可能过度悲观,是一个潜在的买入机会。
-
卖出信号:当PSY值高于80,表明市场可能过度乐观,是一个潜在的卖出机会。
三、PSY心理线指标策略量化实战

import pandas as pd
import numpy as np
def calculate_psy(df, n=12):
df['Price_Change'] = df['Close'] > df['Close'].shift(1)
df['PSY'] = (df['Price_Change'].rolling(n).sum() / n) * 100
return df['PSY']
def generate_signals(df, psy_threshold_buy=20, psy_threshold_sell=80):
df['Signal'] = 0
# 生成买入信号
df.loc[df['PSY'] < psy_threshold_buy, 'Signal'] = 1
# 生成卖出信号
df.loc[df['PSY'] > psy_threshold_sell, 'Signal'] = -1
return df['Signal']
# 假设df是包含股票收盘价的DataFrame
psy_values = calculate_psy(df)
signals = generate_signals(df, psy_threshold_buy=20, psy_threshold_sell=80) # 调整阈值以适应市场
# 绘制PSY指标和交易信号
import matplotlib.pyplot as plt
plt.figure(figsize=(14, 7))
plt.plot(df['Close'], label='Close Price')
plt.plot(psy_values, label='PSY', linestyle='--')
plt.plot(df[signals == 1].index, df['Close'][signals == 1], '^', markersize=10, color='green', label='Buy Signal')
plt.plot(df[signals == -1].index, df['Close'][signals == -1], 'v', markersize=10, color='red', label='Sell Signal')
plt.legend()
plt.show()
-
策略回测
四、最后
发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/106021
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!