class Analize: def __init__(self): self.api = IQ_Option(config.USERNAME, config.PASSWORD) self.dispacher = Dispacher(self.api.api) self.api.change_balance(config.MODE) self.timesync = TimeSync(self.api, self.dispacher) self.actives = [] self.generate_actives() acts: list = self.get_operable_actives() for index, active in enumerate(acts): candles: list = list(reversed(self.api.api.getcandles(active.code, 1, 10000, time.time()))) for index, candle in candles: if index < len(candles) - 10: candle: Candle = candle win = 0 losses = 0 if candles[index + 1].direction + candles[index + 2].direction + candles[index + 3].direction pass def get_balance(self): while True: try: respon = self.api.get_profile() if(respon["isSuccessful"] == True): return respon["result"]["balance"] except: pass time.sleep(.5) def get_operable_actives(self) -> list: f = lambda active : active.enabled and active.is_profitable() return list(filter(f, self.actives)) def refresh_actives(self): if time.time() > self.last_refresh_actives + 60: self.last_refresh_actives = time.time() check, init_info = self.get_all_init() if check: actives = init_info['turbo']['actives'] for active in self.actives: active.set_data(actives[str(active.code)]) self.sort_actives() def generate_actives(self): self.last_refresh_actives = time.time() init_info: dict = self.api.get_all_init().get('result') actives = init_info['turbo']['actives'] self.actives = list(map(lambda code: Active(actives[code]), actives)) self.sort_actives() def sort_actives(self): self.actives = sorted(self.actives, key=attrgetter('profit'), reverse=True) def get_all_init(self): self.api.api.api_option_init_all_result = None try: self.api.api.get_api_option_init_all() except: return False, None start = time.time() while True: if time.time() - start > 30 or self.api.api.api_option_init_all_result != None: break try: if self.api.api.api_option_init_all_result['isSuccessful']: return True, self.api.api.api_option_init_all_result['result'] except: return False, None
import random import time import json from iqoptionapi.stable_api import IQ_Option from datetime import datetime print("login...") api = IQ_Option("*****@*****.**", "zoom3.m.2009") api.change_balance("PRACTICE") init_info = api.get_all_init() actives = init_info["result"]["binary"]["actives"] def fun(code): return actives[str(code)]["enabled"] == True assets_enablets_code = list(filter(fun, actives)) assets_enablets = list(map(lambda code: actives[code], assets_enablets_code)) print(assets_enablets)
class Start: def __init__(self): self.api = IQ_Option(config.USERNAME, config.PASSWORD) self.dispacher = Dispacher(self.api.api) self.api.change_balance(config.MODE) self.timesync = TimeSync(self.api, self.dispacher) self.bots = [] self.actives = [] self.generate_actives() self.create_bots() while True: if self.timesync.is_desconected(): self.stop_bots() print('disconnected trying to reconnect in {} seconds'.format(config.TIME_RECONNECT)) time.sleep(config.TIME_RECONNECT) if(self.reconnect()): print('successfully reconnected') self.create_bots() time.sleep(.3) def stop_bots(self): for bot in self.bots: if bot: bot.stop() def create_bots(self): self.bots = [] actives = self.get_operable_actives() for index, active in enumerate(actives): if index >= config.MAX_BOTS: break self.api.start_candles_stream(active.name, config.CANDLE_SIZE, config.MAX_CANDLES) bot = Bot(self, self.api, self.dispacher, self.timesync, active) self.bots.append(bot) bot.start() def get_balance(self): while True: try: respon = self.api.get_profile() if(respon["isSuccessful"] == True): return respon["result"]["balance"] except: self.reconnect() time.sleep(.5) def get_operable_actives(self) -> list: f = lambda active : active.enabled and active.is_profitable() return list(filter(f, self.actives)) def refresh_actives(self): if time.time() > self.last_refresh_actives + 60: self.last_refresh_actives = time.time() check, init_info = self.get_all_init() if check: actives = init_info['turbo']['actives'] for active in self.actives: active.set_data(actives[str(active.code)]) self.sort_actives() def generate_actives(self): self.last_refresh_actives = time.time() init_info: dict = self.api.get_all_init().get('result') actives = init_info['turbo']['actives'] self.actives = list(map(lambda code: Active(actives[code]), actives)) self.sort_actives() def sort_actives(self): self.actives = sorted(self.actives, key=attrgetter('profit'), reverse=True) def reconnect(self): try: self.api.api.close() result = self.api.api.connect() self.api.api.websocket.on_message = self.dispacher.on_message return result except: print('fail to reconnect') def start_candles_stream(self, ACTIVE, size, maxdict): if size in self.api.size: self.api.api.real_time_candles_maxdict_table[ACTIVE][size] = maxdict self.api.full_realtime_get_candle(ACTIVE,size,maxdict) self.api.start_candles_one_stream(ACTIVE,size) else: logging.error('**error** start_candles_stream please input right size') def get_all_init(self): self.api.api.api_option_init_all_result = None try: self.api.api.get_api_option_init_all() except: return False, None start = time.time() while True: if time.time() - start > 30 or self.api.api.api_option_init_all_result != None: break try: if self.api.api.api_option_init_all_result['isSuccessful']: return True, self.api.api.api_option_init_all_result['result'] except: return False, None