Mir ist aufgefallen, dass ich neulich die MACD-Methode bei verschiedenen Marken ausprobiert habe. Ist das nicht ein bisschen langsam zu signalisieren? ??
Abgesehen von der Tatsache, dass es nicht gut ist, es täglich zu tun, wurde es ursprünglich wie folgt definiert.
MACD = 12-Tage-EMA-26-Tage-EMA
Signal = MACD 9-Tage-EMA
Histogramm = Signal-MACD
Daher ist es ein Beurteilungsstandard, dass es nur notwendig ist, den Kauf und Verkauf des nächsten Tages anhand der täglichen Daten beurteilen zu können. Schauen wir uns als charakteristische Ausgabe das mittlerweile beliebte "ZM" an.
Es ist ein sehr eintöniges Bild, das sich nach rechts erhebt, und wenn Sie den Anstieg und Abfall gehorsam vorhersagen können, können Sie anscheinend viel Geld verdienen.
Wenn Sie genau hinschauen, ist der Moment, in dem Sie 0 im Histogramm überschreiten, etwas spät, und wenn die Absenkzeit kurz ist, verkaufen Sie an der Stelle, an der es fast sinkt, und umgekehrt, wenn Sie schnell steigen, kaufen Sie an der Stelle, an der es steigt. Es kann sein. Das ist etwas verschwenderisch. Wenn Sie sicherstellen, dass die Reduzierung oder Erhöhung vor dem Kauf oder Verkauf bestätigt wird, hat dies fast die gleiche Bedeutung wie das menschliche Auge oder Urteil. Hier ist das Ziel der automatische Handel, und die Effizienz und Genauigkeit des Handels sind wesentlich, daher möchte ich die Fähigkeit haben, numerische Schwankungen vorherzusagen.
Obwohl es keine Theorie gibt, haben wir diese MACD-Methode verbessert und einen Weg gefunden, um zu einem früheren Zeitpunkt ein Handelssignal zu geben. Die diesmal verwendete Definition lautet wie folgt. ** Wenn Sie dies verwenden, nennen Sie es bitte mu_method **
series ;Daten in chronologischer Reihenfolge
series2, cycle = decompose(series)
MACD2 = Serie2-26 Tage EMA(series2)
Signal2 = MACD2 9-Tage-EMA
Histogramm = Signal2-MACD2
Die GIF-Animation ist wie folgt. Drei Bilder (MACD, MACD des Trends, Mu-Methode) werden wiederholt abgespielt, aber das mit ZM im Titel ist das Bild nach dieser Verbesserung. Im Vergleich zum ursprünglichen MACD verschiebt sich das Signal für mehr als 3 Tage deutlich nach links, was meiner Meinung nach rechtzeitig zum Kauf und Verkauf sein wird.
・ Ich frage mich, ob ich es endlich tun werde. ..
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import datetime as dt
from pandas_datareader import data
import statsmodels.api as sm
from statsmodels.tsa.seasonal import STL
def get_stock(stock,start,end):
df = data.DataReader(stock, 'stooq',start)["Close"]
df = df.iloc[::-1]
return df[start:end]
def EMA1(x, n):
#k = 3.45*(n+1)
a= 2/(n+1)
return pd.Series(x).ewm(alpha=a).mean()
stock0 = 'ZM'
stock = stock0 #+ '.JP'
start = dt.date(2020,1,1)
end = dt.date(2020,6,13)
df = pd.DataFrame(get_stock(stock, start, end))
date_df=df['Close'].index.tolist()
series = df['Close'].values.tolist()
bunseki = "trend" #series" #cycle" #trend
cycle, trend = sm.tsa.filters.hpfilter(series, 144)
df['Close'] = trend
series2 = df['Close'].values.tolist()
df['Close']=series #series" #cycle" #trend
df['Close2']=series2
df['y12'] = EMA1(df['Close2'], 12)
df['y26'] = EMA1(df['Close2'], 26)
df['MACD'] = df['y12'] -df['y26']
df['MACD2'] = df['Close2'] -df['y26']
df['signal2'] = EMA1(df['MACD2'], 9)
df['signal'] = EMA1(df['MACD'], 9)
df['hist_']=df['MACD2']-df['signal2']
date_df=df['Close'].index.tolist()
print(df[len(series)-10:len(series)])
fig, (ax1,ax2) = plt.subplots(2,1,figsize=(1.6180 * 8, 4*2),dpi=200)
ax1.plot(df['Close'],label="series")
ax1.plot(df['Close2'],label="series2")
ax1.plot(df['y12'],label="y12")
ax1.plot(df['y26'],label="y26")
ax2.plot(df['MACD2'],label="MACD2")
#ax2.plot(df['MACD'],label="MACD")
ax2.plot(df['signal2'],label="signal2")
#ax2.plot(df['signal'],label="signal")
ax2.bar(date_df,df['hist_'])
ax1.set_title("{}".format(stock0))
ax1.legend()
ax2.legend()
ax1.grid()
ax2.grid()
ax2.set_ylim(-5,20)
plt.savefig("./stock/{}/newck_ema_df_decompose_%5K%25D_{}_{}now{}.png ".format(stock0,stock,bunseki,start))
plt.pause(1)
plt.close()