Ich habe den Stochastic Oscillator ausprobiert, den Einstieg in den Systemhandel, nachdem ich den Aktienkurs erhöht hatte. Der Python-Code befindet sich in Referenz ①, ist also 3 Jahre alt. Wenn Sie also glauben, dass er noch vorhanden ist, funktioniert er nicht. Also werde ich es in einem Artikel zusammenstellen, damit ich es nicht vergesse. 【Referenz】 ①Investing with Python: Stochastic Oscillator ②ImmediateDeprecationError of Google Finance data #587 ③pandas.core.window.rolling.Rolling.min
・ Einführung in Systre ・ Verschieben Sie den Code · Wie ist es jetzt?
Grundsätzlich ① Kaufen, wenn es sinkt ② Verkaufen, wenn es steigt Es ist in Ordnung, wenn das System dies automatisieren kann. Geht ① nicht mehr runter? ② Kann es noch höher gehen? Es besteht ein Risiko, daher möchte ich das auch identifizieren. Eine Methode, die häufig für diese Bestimmung verwendet wird, ist die Verwendung des in Referenz (1) gezeigten Diagramms des stochastischen Oszillators. Dieses Mal werden wir die Codierung beschreiben, damit sie verwendet werden kann. The Stochastic Oscillator is calculated as follows:
%K = (Current Close - Lowest Low)/(Highest High - Lowest Low) * 100
%D = 3-day SMA of %K
Lowest Low =Das niedrigste Tief für den Look-back period)
Highest High =Höchste Höhe für den Look-back period)
3-day SMA =3 Tage einfacher gleitender Durchschnitt
In der Regel wird eine Lookback-Zeit von 14 Tagen verwendet. So ermitteln Sie den einfachen gleitenden Durchschnitt wie folgt
SMA(n) = \frac {\sum_{i=0}^{n-1}(CLOSE_i)} {n}
【Referenz】 ④ Aktien analysieren, um die Unternehmensleistung zu verstehen
Tatsächlich funktioniert der Referenzcode ① nicht. Darüber hinaus ist es Yahoo Finance untersagt, zu kratzen.
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import datetime as dt
from pandas_datareader import data
Sie können es erhalten, indem Sie das Datum auf Yahoo, Google und anderen kostenpflichtigen Websites angeben. Sie können jedoch nicht das Enddatum auf dieser Website angeben. Es funktioniert jedoch wie dieselbe Funktion, indem Sie das, was Sie benötigen, aus den abgerufenen Daten extrahieren, wie unten gezeigt. Da die Datensequenz umgekehrt ist, ist sie auch umgekehrt. 【Referenz】 ⑥ [Mit Pandas bestimmte Zeilen / Spalten aus dem Datenrahmen abrufen](https://pythondatascience.plavox.info/pandas/%E8%A1%8C%E3%83%BB%E5%88%97%E3% 81% AE% E6% 8A% BD% E5% 87% BA) ⑦Right way to reverse pandas.DataFrame?
def get_stock(stock,start,end):
df = data.DataReader(stock, 'stooq',start)["Close"]
df = df.iloc[::-1]
return df[start:end]
def get_high(stock,start,end):
df = data.DataReader(stock, 'stooq',start)['High']
df = df.iloc[::-1]
return df[start:end]
def get_low(stock,start,end):
df = data.DataReader(stock, 'stooq',start)['Low']
df = df.iloc[::-1]
return df[start:end]
Berechnen Sie die obigen% K unten. Hier wurde das Rollen (). Max () der Pandas geändert und kann wie folgt gemäß Referenz ③ berechnet werden.
def STOK(close, low, high, n):
STOK = ((close - low.rolling(n).min()) / (high.rolling(n).max() - low.rolling(n).min())) * 100
return STOK
Unten ist die Funktion, die% D berechnet. Berechnen Sie% K, um den einfachen gleitenden 3-Tage-Durchschnitt zu berechnen.
def STOD(close, low, high, n):
STOK = ((close - low.rolling(n).min()) / (high.rolling(n).max() - low.rolling(n).min())) * 100
STOD = STOK.rolling(3).mean()
return STOD
Die Marke verwendet Sony. Der Zeitraum ist der gleiche wie in Referenz ① oben. Erstens beträgt die Anzahl der Tage, die auf% K und% D zurückblicken, ebenfalls 14 Tage.
stock = '6758.JP' #sony
start = dt.date(2016,1,1)
end = dt.date(2016,12,31)
df = pd.DataFrame(get_stock(stock, start, end))
df['High'] = get_high(stock, start, end)
df['Low'] = get_low(stock, start, end)
df['%K'] = STOK(df['Close'], df['Low'], df['High'], 14)
df['%D'] = STOD(df['Close'], df['Low'], df['High'], 14)
Ich werde die Daten zur Bestätigung unten ausgeben.
print(df[0:30])
print(df.tail())
Close High Low %K %D
Date
2016-01-04 2875.56 2981.55 2859.04 NaN NaN
2016-01-05 2880.90 2916.39 2849.30 NaN NaN
...
2016-01-21 2363.56 2506.53 2363.06 NaN NaN
2016-01-22 2458.85 2470.05 2405.86 15.487720 NaN
2016-01-25 2468.09 2498.74 2439.42 18.493802 NaN
2016-01-26 2363.06 2408.78 2359.66 0.595113 11.525545
2016-01-27 2442.81 2453.99 2409.75 18.250258 12.446391
...
2016-02-15 2379.61 2408.29 2293.05 34.207540 16.258774
2016-02-16 2415.11 2459.84 2316.39 39.242858 27.149584
Close High Low %K %D
Date
2016-12-26 3261.97 3293.31 3260.04 65.381424 70.155819
2016-12-27 3253.17 3264.93 3237.51 59.458713 65.992247
2016-12-28 3266.87 3296.23 3249.25 62.741071 62.527069
2016-12-29 3228.71 3261.97 3196.41 22.300469 48.166751
2016-12-30 3205.22 3240.46 3192.49 8.557408 31.199649
Close High Low %K %D
Schließlich wird das Diagramm unten ausgegeben. Da% D 15 Tage lang keine Daten enthält (an Samstagen und Sonntagen gibt es überhaupt keine Daten), richten Sie die horizontalen Achsen von ax1 und ax2 durch Zeichnen ab dem 16. Tag aus.
fig, (ax1,ax2) = plt.subplots(2,1,figsize=(1.6180 * 4, 4*1))
ax1.plot(df['Close'][16:],label = "close")
ax2.plot(df['%K'][16:],label = "%K")
ax2.plot(df['%D'][16:],label = "%D")
ax1.legend()
ax2.legend()
ax1.grid()
ax2.grid()
plt.savefig("./stock/stc_%K%D_6758.png ")
plt.show()
Das Ergebnis ist wie folgt. Ich kann mich nicht erleichtert fühlen, daher werde ich versuchen, dieselbe Ausgabe wie die Referenzseite auszugeben. Das Diagramm von 2016 von "FB" konnte reproduziert werden, und die gleichen Diagramme von% K und% D wurden erhalten. Übrigens können Sie den Aktienkurs 2016 von FB in Referenz ⑧ überprüfen.
In den folgenden Abschnitten ⑨ usw. finden Sie Informationen zu den Aktionen in diesen Diagrammen. Referenz ⑨ Google Übersetzung und Zitat. ** "Wenn es über 80 liegt, gilt der Markt als überkauft und Werte unter 20 als überverkauft.% K (blaue Linie in der Grafik unten) und% D (rote Linie unten). Wenn sich diese beiden Linien kreuzen, bedeutet dies, dass der Markt im Begriff ist, die Richtung zu ändern. Wenn% K über% D liegt, handelt es sich um ein Kaufsignal, sofern der Wert 80 nicht überschreitet. Wenn% K unter% D fällt, wird dies als Verkaufssignal betrachtet, es sei denn, der Wert fällt unter 20. "** 【Referenz】 ⑧ Facebook (Facebook, Inc.) Aktienkurs / US-Aktie ⑨A trader’s guide to the stochastic oscillator
Sony: Es gibt viele Geschäfte. .. .. Ein bisschen überkauft. .. .. Nippon Airlines 9201; Es wurde überkauft. .. .. Aber können Sie es am Montag kaufen? Sumitomo Mitsui Financial Group 8316; Hmm, überkauft. .. .. NTT Docomo 9437; Wenn es überverkauft ist und Blau auftaucht, kaufen Sie es ♬
Es ist einfach zu bedienen, also lasst es uns benutzen ・ Stock_trade / stc2.py
・ Ich habe einen stochastischen Oszillator gezeichnet und damit gespielt. ・ Ich habe das Gefühl, dass ich es ernsthaft nutzen kann
・ Gibt es einen Indikator? ・ Machst du Systole? ・ Wenn dies der Fall ist, ist es wahrscheinlich, dass die Transaktionsgebühr bankrott geht, und es wird notwendig sein, Wege zu finden, um sie in einem langen Zyklus zu sehen.
・ Yahoo Finance darf nicht kratzen Das automatische Erfassen (Scraping) von Veröffentlichungsinformationen von Yahoo! Finance ist verboten