J'ai essayé l'oscillateur stochastique, l'entrée du trading système, après avoir augmenté le cours de l'action. Le code python est dans Reference (1), il a donc 3 ans, donc si vous pensez qu'il est toujours là, cela ne fonctionnera pas. Alors, je vais le mettre ensemble dans un article pour ne pas l'oublier. 【référence】 ①Investing with Python: Stochastic Oscillator ②ImmediateDeprecationError of Google Finance data #587 ③pandas.core.window.rolling.Rolling.min
・ Introduction à Systre ・ Déplacer le code ・ Comment est-ce maintenant?
Fondamentalement ① Achetez quand ça tombe en panne ② Vendez quand ça monte Ce n'est pas grave si le système peut automatiser cela. Est-ce que ① diminue plus? ② Peut-il encore augmenter? Il y a un risque, alors j'aimerais également le signaler. L'une des méthodes les plus couramment utilisées pour cette détermination consiste à utiliser le graphique de l'oscillateur stochastique présenté dans la référence (1), et cette fois nous décrirons comment le coder afin qu'il puisse être utilisé. 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 =Le plus bas pour le look-back period)
Highest High =Le plus haut pour le look-back period)
3-day SMA =Moyenne mobile simple sur 3 jours
Une période d'analyse de 14 jours est généralement utilisée. Comment trouver la moyenne mobile simple est la suivante
SMA(n) = \frac {\sum_{i=0}^{n-1}(CLOSE_i)} {n}
【référence】 ④ Analyser les actions pour comprendre la performance de l'entreprise
En fait, le code de référence ① ne fonctionne pas. De plus, Yahoo Finance est interdit de gratter.
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import datetime as dt
from pandas_datareader import data
Vous pouvez l'obtenir en spécifiant la date sur Yahoo, Google et d'autres sites payants, mais vous ne pouvez pas spécifier la date de fin sur ce site. Cependant, cela fonctionne comme la même fonction en extrayant ce dont vous avez besoin à partir des données récupérées, comme indiqué ci-dessous. De plus, comme la séquence de données est inversée, elle est inversée. 【référence】 ⑥ [Obtenir des lignes / colonnes spécifiques à partir du bloc de données avec Pandas](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]
Calculez le% K ci-dessus ci-dessous. Ici, rolling (). Max () of pandas a été changé, et il peut être calculé en faisant ce qui suit selon la référence ③.
def STOK(close, low, high, n):
STOK = ((close - low.rolling(n).min()) / (high.rolling(n).max() - low.rolling(n).min())) * 100
return STOK
Voici la fonction qui calcule% D. Calculez% K pour calculer la moyenne mobile simple sur 3 jours.
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
La marque utilise Sony. La période est la même que la référence ① ci-dessus. En premier lieu, le nombre de jours pour revenir sur% K et% D est également de 14 jours.
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)
Je vais sortir les données pour confirmation ci-dessous.
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
Enfin, le graphique est affiché ci-dessous. Puisque% D manque de données pendant 15 jours (il n'y a pas de données les samedis et dimanches en premier lieu), alignez les axes horizontaux de ax1 et ax2 en traçant à partir du 16ème jour.
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()
Le résultat est le suivant. Je ne peux pas me sentir soulagé, alors je vais essayer de sortir le même résultat que le site de référence. Le graphique 2016 de "FB" a pu être reproduit, et les mêmes graphiques de% K et% D ont été obtenus. À propos, vous pouvez vérifier le cours de l'action 2016 de FB dans la référence ⑧.
Eh bien, consultez la référence suivante ⑨ etc. pour savoir quoi faire à partir de ces tableaux. Référence ⑨ Traduction et devis Google. ** "Si supérieur à 80, le marché est considéré comme surachat et les valeurs inférieures à 20 sont considérées comme survendu.% K (ligne bleue dans le graphique ci-dessous) et% D (ligne rouge ci-dessous). L'intersection de ces deux lignes indique qu'un changement de direction du marché approche. Si% K est supérieur à% D, il s'agit d'un signal d'achat sauf si la valeur dépasse 80. , Lorsque% K tombe en dessous de% D, il est considéré comme un signal de vente à moins que la valeur ne tombe en dessous de 20. "** 【référence】 ⑧ Cours de l'action Facebook (Facebook, Inc.) / Actions américaines ⑨A trader’s guide to the stochastic oscillator
Sony; il y a de nombreux magasins. .. .. Un peu suracheté. .. .. Nippon Airlines 9201; c'était suracheté. .. .. Mais pouvez-vous l'acheter lundi? Sumitomo Mitsui Financial Group 8316; Hmm, surachat. .. .. NTT Docomo 9437; S'il est survendu et que le bleu apparaît, achetez-le ♬
C'est facile à utiliser, alors utilisons-le ・ Stock_trade / stc2.py
・ J'ai dessiné un oscillateur stochastique et joué avec. ・ Je sens que je peux l'utiliser sérieusement
・ Y a-t-il un indicateur? ・ Faites-vous de la systole? ・ Si tel est le cas, il est probable que les frais de transaction feront faillite, et il sera nécessaire de trouver des moyens de le voir dans un cycle long.
・ Yahoo Finance est interdit de gratter L'acquisition automatique (grattage) des informations de publication Yahoo! Finance est interdite
Recommended Posts