-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdesvio_padrão.py
136 lines (96 loc) · 3.75 KB
/
desvio_padrão.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
# -*- coding: utf-8 -*-
"""Desvio padrão.ipynb
Automatically generated by Colaboratory.
Original file is located at
https://colab.research.google.com/drive/1IdbTT9hBYw_kIFf0c6xh248mnajhQQE7
# Importando as bibliotecas necessárias
"""
import pandas as pd, numpy as np
from datetime import datetime
import matplotlib.pyplot as plt
plt.style.use('fivethirtyeight')
from google.colab import drive
drive.mount('/content/drive')
"""# Carregando dados"""
caminho=('/content/drive/My Drive/Gráficosforex/CADCHFM5.csv')
data = pd.read_csv(caminho,encoding = "utf-16")
data.columns = ['Data', 'Abertura','Maxima','Minima','Fechamento','Ticks','Volume']
#Escolhendo o índice
data=data.set_index(pd.DatetimeIndex(data['Data'].values))
tipo_candle= []
for i in range(0,len(data)):
if data['Fechamento'][i] > data['Abertura'][i]:
tipo_candle.append("Verde")
else:
tipo_candle.append("Vermelho")
data['Corpo']=abs(data['Fechamento']-data['Abertura'])
data["Candle"]=tipo_candle
data['Candle_post']=data['Candle'].shift(-1)
data['Candle_post2']=data['Candle'].shift(-2)
#Mostrando dados
data
"""Visualização dos dados para a análise"""
#Visualizando os dados de fechamento do preço
plt.figure(figsize=(100,100))
plt.title('Preço de Fechamento')
plt.plot(data['Fechamento'])
plt.xlabel('Data', fontsize=18)
plt.ylabel('Fechamento', fontsize=18)
plt.show()
#Calculo de médias móveis
a=9
b=20
c=42
EMA1=data.Fechamento.ewm(span=a, adjust=False).mean()
EMA2=data.Fechamento.ewm(span=b, adjust=False).mean()
EMA3=data.Fechamento.ewm(span=c, adjust=False).mean()
#Visualizando as médias móveis do gráfico
plt.figure(figsize=(30, 30))
plt.title('Preço de Fechamento')
plt.plot(data['Fechamento'], label= 'Fechamento', color='blue')
plt.plot(EMA1, label = 'Média 9', color= 'green')
plt.plot(EMA2, label = 'Média 20', color= 'red')
plt.plot(EMA3, label = 'Média 42' , color='orange')
plt.xlabel('Data', fontsize=18)
plt.ylabel('Fechamento', fontsize=18)
plt.show()
#Adicionando as médias ao data set
data['EMA9']= EMA1
data['EMA20']=EMA2
data['EMA42']=EMA3
data
# Adicionando colunas de retorno e desvio padrão e candle e candle de sinal(se o candle é maior que os 3 anteriores)
data['Retorno']=((data['Fechamento']/data['Abertura'])-1)*100
data['Desv_pad2'] = data['Fechamento'].rolling(2).std()
data['Desv_pad5'] = data['Fechamento'].rolling(5).std()
data['Desv_pad20'] = data['Fechamento'].rolling(20).std()
data['Total_2anteriores']=data['Corpo'].rolling(3).sum()-data['Corpo']
data['Total_3anteriores']=data['Corpo'].rolling(4).sum()-data['Corpo']
data.iloc[:20]
# O objetivo do código é encontrar a correlação entre o desvio padrão e a probabilidade de o próximo candle ser idêntico ao anterior.
# Deste modo encontramos os momentos em que os candle foram idênticos:
data.loc[data['Candle']==data['Candle_post']]
data2=data.loc[data['Candle']==data['Candle_post']]
dd=data2.loc[data2['EMA9']>=data2['Fechamento']]
# Commented out IPython magic to ensure Python compatibility.
#Fazemos o histograma para análise das dos intervalos de maior probabilidade
# %matplotlib inline
dd=data.loc[data['Candle']==data['Candle_post']]
dd=dd.loc[data['Corpo']>data['Total_3anteriores']]
#data2['Desv_pad'].hist(bins=20000)
plt.figure(figsize=(20,20))
plt.title('Preço de Fechamento')
plt.hist(dd['Desv_pad2'],bins=1000)
plt.xlabel('Data', fontsize=18)
plt.ylabel('Fechamento', fontsize=18)
plt.xlim(0.00005,0.0002)
plt.show()
subtrair2=data['Desv_pad2'].shift(1)
subtrair5=data['Desv_pad5'].shift(1)
subtrair20=data['Desv_pad20'].shift(1)
data['Subtra_2']=data['Desv_pad2']-subtrair2
data['Subtra_5']=data['Desv_pad5']-subtrair5
data['Subtra_20']=data['Desv_pad20']-subtrair20
data
comparação=data.loc[data['Corpo']>=data['Total_3anteriores']]
data.loc[data['Subtra_5']>=0.000200]