-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathIq_option_bot_backtest SEM GALE.py
More file actions
119 lines (85 loc) · 3.95 KB
/
Copy pathIq_option_bot_backtest SEM GALE.py
File metadata and controls
119 lines (85 loc) · 3.95 KB
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
from iqoptionapi.stable_api import IQ_Option
import time
from configobj import ConfigObj
import sys
from datetime import datetime
from tabulate import tabulate
import pandas as pd
import os
### CRIANDO ARQUIVO DE CONFIGURAÇÃO ####
caminho_arquivo = r'G:\Meu Drive\3. Finanças e Investimentos\IqOption_bot-main\config.txt'
config = ConfigObj(caminho_arquivo)
email = config['LOGIN']['email']
senha = config['LOGIN']['senha']
print('Iniciando Conexão com a IQOption')
API = IQ_Option(email,senha)
### Função para conectar na IQOPTION ###
check, reason = API.connect()
if check:
print('\nConectado com sucesso')
else:
if reason == '{"code":"invalid_credentials","message":"You entered the wrong credentials. Please ensure that your login/password is correct."}':
print('\nEmail ou senha incorreta')
sys.exit()
else:
print('\nHouve um problema na conexão')
print(reason)
sys.exit()
pares_abertos = []
all_asset = API.get_all_open_time()
for par in all_asset['digital']:
pares_abertos.append(par)
for par in all_asset['turbo']:
if all_asset['turbo'][par]['open']:
if par not in pares_abertos:
pares_abertos.append(par)
timeframe = 60 #60 segundos
qnt_velas = 1100 #maximo 1000
resultado = []
for par in pares_abertos:
velas = API.get_candles(par, timeframe,qnt_velas, time.time())
doji = 0
win = 0
loss = 0
for i in range(len(velas)):
minutos = float(datetime.fromtimestamp(velas[i]['from']).strftime('%M')[1:])
if minutos == 5 or minutos== 0:
try:
if i <2:
pass
else:
vela1 = 'Verde' if velas[i-3]['open'] < velas[i-3]['close'] else 'Vermelha' if velas[i-3]['open'] > velas[i-3]['close'] else 'Doji'
vela2 = 'Verde' if velas[i-2]['open'] < velas[i-2]['close'] else 'Vermelha' if velas[i-2]['open'] > velas[i-2]['close'] else 'Doji'
vela3 = 'Verde' if velas[i-1]['open'] < velas[i-1]['close'] else 'Vermelha' if velas[i-1]['open'] > velas[i-1]['close'] else 'Doji'
entrada1 = 'Verde' if velas[i]['open'] < velas[i]['close'] else 'Vermelha' if velas[i]['open'] > velas[i]['close'] else 'Doji'
entrada2 = 'Verde' if velas[i+1]['open'] < velas[i+1]['close'] else 'Vermelha' if velas[i+1]['open'] > velas[i+1]['close'] else 'Doji'
cores = vela1,vela2,vela3
if cores.count('Verde') > cores.count('Vermelha') and cores.count('Doji') == 0 : dir = 'Vermelha'
if cores.count('Vermelha') > cores.count('Verde') and cores.count('Doji') == 0 : dir = 'Verde'
if cores.count('Doji') >0:
doji += 1
else:
if entrada1 == dir:
win +=1
else:
loss +=1
except:
pass
total_entrada = win + loss
wins = win
assertividade = round(wins/(total_entrada)*100,2)
resultado.append([par] + [win] + [loss] + [assertividade])
print(tabulate(resultado, headers=['PAR','WINS','LOSS','ASSERTIVIDADE']))
data = [['PAR', 'WINS', 'LOSS', 'ASSERTIVIDADE']] + resultado
# Use a função tabulate para formatar os dados como uma tabela
table = tabulate(data, headers='firstrow', tablefmt='grid')
# Crie um DataFrame com os dados
df = pd.DataFrame(resultado, columns=['PAR', 'WINS', 'LOSS', 'ASSERTIVIDADE'])
# Obtenha a data e hora atual
now = datetime.now().strftime("%Y-%m-%d_%H-%M-%S")
script_directory = os.path.dirname(os.path.realpath(__file__))
# Salve o DataFrame em um arquivo Excel com a data e hora no nome do arquivo
excel_filename = os.path.join(script_directory, f'resultado_{now}.xlsx')
df.to_excel(excel_filename, index=False)
# Imprima uma mensagem indicando que o arquivo foi salvo
print(f'Resultado exportado para {excel_filename}')