From 16d47eaf4deddcbe140dfa2de029dad319707ae3 Mon Sep 17 00:00:00 2001 From: vigo Date: Mon, 17 Jun 2024 16:38:32 -0400 Subject: [PATCH 1/3] dhsfs --- .../v2/__init__.py | 0 .../v2/pocketoptionapi2}/.gitignore | 0 .../v2/pocketoptionapi2}/ACTIVE_CODE.txt | 0 .../v2/pocketoptionapi2/__init__.py | 0 .../docs/image/icon/favicon.ico | Bin .../v2/pocketoptionapi2}/docs/index.md | 0 .../docs/javascripts/.Rhistory | 0 .../docs/javascripts/extra.js | 0 .../v2/pocketoptionapi2}/instrument.txt | 0 .../v2/pocketoptionapi2}/mkdocs.yml | 0 .../pocketoptionapi/__init__.py | 0 .../pocketoptionapi2}/pocketoptionapi/api.py | 0 .../pocketoptionapi/constants.py | 0 .../pocketoptionapi/country_id.py | 0 .../pocketoptionapi/expiration.py | 0 .../pocketoptionapi/global_value.py | 0 .../pocketoptionapi/http/__init__.py | 0 .../pocketoptionapi/http/login.py | 0 .../pocketoptionapi/http/logout.py | 0 .../pocketoptionapi/http/resource.py | 0 .../pocketoptionapi/stable_api.py | 0 .../pocketoptionapi/ws/__init__.py | 0 .../pocketoptionapi/ws/chanels/__init__.py | 0 .../pocketoptionapi/ws/chanels/auth.py | 0 .../pocketoptionapi/ws/chanels/base.py | 0 .../pocketoptionapi/ws/chanels/buy.py | 0 .../pocketoptionapi/ws/chanels/candle.py | 0 .../ws/chanels/get_asset_data.py | 0 .../pocketoptionapi/ws/chanels/get_balance.py | 0 .../pocketoptionapi/ws/chanels/ping_server.py | 0 .../pocketoptionapi/ws/chanels/subscribe.py | 0 .../pocketoptionapi/ws/chanels/unsubscribe.py | 0 .../pocketoptionapi/ws/client.py | 0 .../v2/pocketoptionapi2}/setup.py | 0 pocketoptionapi/v2/pocketoptionapi2/test.py | 9 ++++++ test.py | 30 +----------------- 36 files changed, 10 insertions(+), 29 deletions(-) rename v2/pocketoptionapi-v2/docs/javascripts/.Rhistory => pocketoptionapi/v2/__init__.py (100%) rename {v2/pocketoptionapi-v2 => pocketoptionapi/v2/pocketoptionapi2}/.gitignore (100%) rename {v2/pocketoptionapi-v2 => pocketoptionapi/v2/pocketoptionapi2}/ACTIVE_CODE.txt (100%) create mode 100644 pocketoptionapi/v2/pocketoptionapi2/__init__.py rename {v2/pocketoptionapi-v2 => pocketoptionapi/v2/pocketoptionapi2}/docs/image/icon/favicon.ico (100%) rename {v2/pocketoptionapi-v2 => pocketoptionapi/v2/pocketoptionapi2}/docs/index.md (100%) create mode 100644 pocketoptionapi/v2/pocketoptionapi2/docs/javascripts/.Rhistory rename {v2/pocketoptionapi-v2 => pocketoptionapi/v2/pocketoptionapi2}/docs/javascripts/extra.js (100%) rename {v2/pocketoptionapi-v2 => pocketoptionapi/v2/pocketoptionapi2}/instrument.txt (100%) rename {v2/pocketoptionapi-v2 => pocketoptionapi/v2/pocketoptionapi2}/mkdocs.yml (100%) rename {v2/pocketoptionapi-v2 => pocketoptionapi/v2/pocketoptionapi2}/pocketoptionapi/__init__.py (100%) rename {v2/pocketoptionapi-v2 => pocketoptionapi/v2/pocketoptionapi2}/pocketoptionapi/api.py (100%) rename {v2/pocketoptionapi-v2 => pocketoptionapi/v2/pocketoptionapi2}/pocketoptionapi/constants.py (100%) rename {v2/pocketoptionapi-v2 => pocketoptionapi/v2/pocketoptionapi2}/pocketoptionapi/country_id.py (100%) rename {v2/pocketoptionapi-v2 => pocketoptionapi/v2/pocketoptionapi2}/pocketoptionapi/expiration.py (100%) rename {v2/pocketoptionapi-v2 => pocketoptionapi/v2/pocketoptionapi2}/pocketoptionapi/global_value.py (100%) rename {v2/pocketoptionapi-v2 => pocketoptionapi/v2/pocketoptionapi2}/pocketoptionapi/http/__init__.py (100%) rename {v2/pocketoptionapi-v2 => pocketoptionapi/v2/pocketoptionapi2}/pocketoptionapi/http/login.py (100%) rename {v2/pocketoptionapi-v2 => pocketoptionapi/v2/pocketoptionapi2}/pocketoptionapi/http/logout.py (100%) rename {v2/pocketoptionapi-v2 => pocketoptionapi/v2/pocketoptionapi2}/pocketoptionapi/http/resource.py (100%) rename {v2/pocketoptionapi-v2 => pocketoptionapi/v2/pocketoptionapi2}/pocketoptionapi/stable_api.py (100%) rename {v2/pocketoptionapi-v2 => pocketoptionapi/v2/pocketoptionapi2}/pocketoptionapi/ws/__init__.py (100%) rename {v2/pocketoptionapi-v2 => pocketoptionapi/v2/pocketoptionapi2}/pocketoptionapi/ws/chanels/__init__.py (100%) rename {v2/pocketoptionapi-v2 => pocketoptionapi/v2/pocketoptionapi2}/pocketoptionapi/ws/chanels/auth.py (100%) rename {v2/pocketoptionapi-v2 => pocketoptionapi/v2/pocketoptionapi2}/pocketoptionapi/ws/chanels/base.py (100%) rename {v2/pocketoptionapi-v2 => pocketoptionapi/v2/pocketoptionapi2}/pocketoptionapi/ws/chanels/buy.py (100%) rename {v2/pocketoptionapi-v2 => pocketoptionapi/v2/pocketoptionapi2}/pocketoptionapi/ws/chanels/candle.py (100%) rename {v2/pocketoptionapi-v2 => pocketoptionapi/v2/pocketoptionapi2}/pocketoptionapi/ws/chanels/get_asset_data.py (100%) rename {v2/pocketoptionapi-v2 => pocketoptionapi/v2/pocketoptionapi2}/pocketoptionapi/ws/chanels/get_balance.py (100%) rename {v2/pocketoptionapi-v2 => pocketoptionapi/v2/pocketoptionapi2}/pocketoptionapi/ws/chanels/ping_server.py (100%) rename {v2/pocketoptionapi-v2 => pocketoptionapi/v2/pocketoptionapi2}/pocketoptionapi/ws/chanels/subscribe.py (100%) rename {v2/pocketoptionapi-v2 => pocketoptionapi/v2/pocketoptionapi2}/pocketoptionapi/ws/chanels/unsubscribe.py (100%) rename {v2/pocketoptionapi-v2 => pocketoptionapi/v2/pocketoptionapi2}/pocketoptionapi/ws/client.py (100%) rename {v2/pocketoptionapi-v2 => pocketoptionapi/v2/pocketoptionapi2}/setup.py (100%) create mode 100644 pocketoptionapi/v2/pocketoptionapi2/test.py diff --git a/v2/pocketoptionapi-v2/docs/javascripts/.Rhistory b/pocketoptionapi/v2/__init__.py similarity index 100% rename from v2/pocketoptionapi-v2/docs/javascripts/.Rhistory rename to pocketoptionapi/v2/__init__.py diff --git a/v2/pocketoptionapi-v2/.gitignore b/pocketoptionapi/v2/pocketoptionapi2/.gitignore similarity index 100% rename from v2/pocketoptionapi-v2/.gitignore rename to pocketoptionapi/v2/pocketoptionapi2/.gitignore diff --git a/v2/pocketoptionapi-v2/ACTIVE_CODE.txt b/pocketoptionapi/v2/pocketoptionapi2/ACTIVE_CODE.txt similarity index 100% rename from v2/pocketoptionapi-v2/ACTIVE_CODE.txt rename to pocketoptionapi/v2/pocketoptionapi2/ACTIVE_CODE.txt diff --git a/pocketoptionapi/v2/pocketoptionapi2/__init__.py b/pocketoptionapi/v2/pocketoptionapi2/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/v2/pocketoptionapi-v2/docs/image/icon/favicon.ico b/pocketoptionapi/v2/pocketoptionapi2/docs/image/icon/favicon.ico similarity index 100% rename from v2/pocketoptionapi-v2/docs/image/icon/favicon.ico rename to pocketoptionapi/v2/pocketoptionapi2/docs/image/icon/favicon.ico diff --git a/v2/pocketoptionapi-v2/docs/index.md b/pocketoptionapi/v2/pocketoptionapi2/docs/index.md similarity index 100% rename from v2/pocketoptionapi-v2/docs/index.md rename to pocketoptionapi/v2/pocketoptionapi2/docs/index.md diff --git a/pocketoptionapi/v2/pocketoptionapi2/docs/javascripts/.Rhistory b/pocketoptionapi/v2/pocketoptionapi2/docs/javascripts/.Rhistory new file mode 100644 index 0000000..e69de29 diff --git a/v2/pocketoptionapi-v2/docs/javascripts/extra.js b/pocketoptionapi/v2/pocketoptionapi2/docs/javascripts/extra.js similarity index 100% rename from v2/pocketoptionapi-v2/docs/javascripts/extra.js rename to pocketoptionapi/v2/pocketoptionapi2/docs/javascripts/extra.js diff --git a/v2/pocketoptionapi-v2/instrument.txt b/pocketoptionapi/v2/pocketoptionapi2/instrument.txt similarity index 100% rename from v2/pocketoptionapi-v2/instrument.txt rename to pocketoptionapi/v2/pocketoptionapi2/instrument.txt diff --git a/v2/pocketoptionapi-v2/mkdocs.yml b/pocketoptionapi/v2/pocketoptionapi2/mkdocs.yml similarity index 100% rename from v2/pocketoptionapi-v2/mkdocs.yml rename to pocketoptionapi/v2/pocketoptionapi2/mkdocs.yml diff --git a/v2/pocketoptionapi-v2/pocketoptionapi/__init__.py b/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/__init__.py similarity index 100% rename from v2/pocketoptionapi-v2/pocketoptionapi/__init__.py rename to pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/__init__.py diff --git a/v2/pocketoptionapi-v2/pocketoptionapi/api.py b/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/api.py similarity index 100% rename from v2/pocketoptionapi-v2/pocketoptionapi/api.py rename to pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/api.py diff --git a/v2/pocketoptionapi-v2/pocketoptionapi/constants.py b/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/constants.py similarity index 100% rename from v2/pocketoptionapi-v2/pocketoptionapi/constants.py rename to pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/constants.py diff --git a/v2/pocketoptionapi-v2/pocketoptionapi/country_id.py b/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/country_id.py similarity index 100% rename from v2/pocketoptionapi-v2/pocketoptionapi/country_id.py rename to pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/country_id.py diff --git a/v2/pocketoptionapi-v2/pocketoptionapi/expiration.py b/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/expiration.py similarity index 100% rename from v2/pocketoptionapi-v2/pocketoptionapi/expiration.py rename to pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/expiration.py diff --git a/v2/pocketoptionapi-v2/pocketoptionapi/global_value.py b/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/global_value.py similarity index 100% rename from v2/pocketoptionapi-v2/pocketoptionapi/global_value.py rename to pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/global_value.py diff --git a/v2/pocketoptionapi-v2/pocketoptionapi/http/__init__.py b/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/http/__init__.py similarity index 100% rename from v2/pocketoptionapi-v2/pocketoptionapi/http/__init__.py rename to pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/http/__init__.py diff --git a/v2/pocketoptionapi-v2/pocketoptionapi/http/login.py b/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/http/login.py similarity index 100% rename from v2/pocketoptionapi-v2/pocketoptionapi/http/login.py rename to pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/http/login.py diff --git a/v2/pocketoptionapi-v2/pocketoptionapi/http/logout.py b/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/http/logout.py similarity index 100% rename from v2/pocketoptionapi-v2/pocketoptionapi/http/logout.py rename to pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/http/logout.py diff --git a/v2/pocketoptionapi-v2/pocketoptionapi/http/resource.py b/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/http/resource.py similarity index 100% rename from v2/pocketoptionapi-v2/pocketoptionapi/http/resource.py rename to pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/http/resource.py diff --git a/v2/pocketoptionapi-v2/pocketoptionapi/stable_api.py b/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/stable_api.py similarity index 100% rename from v2/pocketoptionapi-v2/pocketoptionapi/stable_api.py rename to pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/stable_api.py diff --git a/v2/pocketoptionapi-v2/pocketoptionapi/ws/__init__.py b/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/ws/__init__.py similarity index 100% rename from v2/pocketoptionapi-v2/pocketoptionapi/ws/__init__.py rename to pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/ws/__init__.py diff --git a/v2/pocketoptionapi-v2/pocketoptionapi/ws/chanels/__init__.py b/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/ws/chanels/__init__.py similarity index 100% rename from v2/pocketoptionapi-v2/pocketoptionapi/ws/chanels/__init__.py rename to pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/ws/chanels/__init__.py diff --git a/v2/pocketoptionapi-v2/pocketoptionapi/ws/chanels/auth.py b/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/ws/chanels/auth.py similarity index 100% rename from v2/pocketoptionapi-v2/pocketoptionapi/ws/chanels/auth.py rename to pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/ws/chanels/auth.py diff --git a/v2/pocketoptionapi-v2/pocketoptionapi/ws/chanels/base.py b/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/ws/chanels/base.py similarity index 100% rename from v2/pocketoptionapi-v2/pocketoptionapi/ws/chanels/base.py rename to pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/ws/chanels/base.py diff --git a/v2/pocketoptionapi-v2/pocketoptionapi/ws/chanels/buy.py b/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/ws/chanels/buy.py similarity index 100% rename from v2/pocketoptionapi-v2/pocketoptionapi/ws/chanels/buy.py rename to pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/ws/chanels/buy.py diff --git a/v2/pocketoptionapi-v2/pocketoptionapi/ws/chanels/candle.py b/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/ws/chanels/candle.py similarity index 100% rename from v2/pocketoptionapi-v2/pocketoptionapi/ws/chanels/candle.py rename to pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/ws/chanels/candle.py diff --git a/v2/pocketoptionapi-v2/pocketoptionapi/ws/chanels/get_asset_data.py b/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/ws/chanels/get_asset_data.py similarity index 100% rename from v2/pocketoptionapi-v2/pocketoptionapi/ws/chanels/get_asset_data.py rename to pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/ws/chanels/get_asset_data.py diff --git a/v2/pocketoptionapi-v2/pocketoptionapi/ws/chanels/get_balance.py b/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/ws/chanels/get_balance.py similarity index 100% rename from v2/pocketoptionapi-v2/pocketoptionapi/ws/chanels/get_balance.py rename to pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/ws/chanels/get_balance.py diff --git a/v2/pocketoptionapi-v2/pocketoptionapi/ws/chanels/ping_server.py b/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/ws/chanels/ping_server.py similarity index 100% rename from v2/pocketoptionapi-v2/pocketoptionapi/ws/chanels/ping_server.py rename to pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/ws/chanels/ping_server.py diff --git a/v2/pocketoptionapi-v2/pocketoptionapi/ws/chanels/subscribe.py b/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/ws/chanels/subscribe.py similarity index 100% rename from v2/pocketoptionapi-v2/pocketoptionapi/ws/chanels/subscribe.py rename to pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/ws/chanels/subscribe.py diff --git a/v2/pocketoptionapi-v2/pocketoptionapi/ws/chanels/unsubscribe.py b/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/ws/chanels/unsubscribe.py similarity index 100% rename from v2/pocketoptionapi-v2/pocketoptionapi/ws/chanels/unsubscribe.py rename to pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/ws/chanels/unsubscribe.py diff --git a/v2/pocketoptionapi-v2/pocketoptionapi/ws/client.py b/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/ws/client.py similarity index 100% rename from v2/pocketoptionapi-v2/pocketoptionapi/ws/client.py rename to pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/ws/client.py diff --git a/v2/pocketoptionapi-v2/setup.py b/pocketoptionapi/v2/pocketoptionapi2/setup.py similarity index 100% rename from v2/pocketoptionapi-v2/setup.py rename to pocketoptionapi/v2/pocketoptionapi2/setup.py diff --git a/pocketoptionapi/v2/pocketoptionapi2/test.py b/pocketoptionapi/v2/pocketoptionapi2/test.py new file mode 100644 index 0000000..8d25ded --- /dev/null +++ b/pocketoptionapi/v2/pocketoptionapi2/test.py @@ -0,0 +1,9 @@ +import random +import time +import asyncio +import os +import time +# dotenv.load_dotenv() +SSID=r"""42["auth",{"session":"a:4:{s:10:\"session_id\";s:32:\"0641660deb66bacfe493ee595ad5bcd6\";s:10:\"ip_address\";s:12:\"190.162.4.33\";s:10:\"user_agent\";s:120:\"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36 OPR/107.\";s:13:\"last_activity\";i:1715088712;}bf42446033b557288d0399ac1527842c","isDemo":0,"uid":27658142,"platform":2}]""" + + diff --git a/test.py b/test.py index 0e9ba17..975779f 100644 --- a/test.py +++ b/test.py @@ -1,38 +1,10 @@ import random import time -import dotenv import asyncio -from pocketoptionapi.stable_api import PocketOption import os import time +from pocketoptionapi.v2.pocketoptionapi2.pocketoptionapi.stable_api import PocketOption # dotenv.load_dotenv() SSID=r"""42["auth",{"session":"a:4:{s:10:\"session_id\";s:32:\"0641660deb66bacfe493ee595ad5bcd6\";s:10:\"ip_address\";s:12:\"190.162.4.33\";s:10:\"user_agent\";s:120:\"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36 OPR/107.\";s:13:\"last_activity\";i:1715088712;}bf42446033b557288d0399ac1527842c","isDemo":0,"uid":27658142,"platform":2}]""" -api = PocketOption(SSID) -print(SSID) -def direction(): - # Selecciona aleatoriamente entre 'call' y 'put' - return random.choice(['call', 'put']) -def main(): - api.connect() - - max_retries = 5 - for _ in range(max_retries): - print(api.get_balance()) - exp_time = int(time.time()) + 5000 - api.buy(amount=12, ACTIVES="EURUSD", ACTION="call", expirations=exp_time) - time.sleep(5) - try: - asyncio.run(api.reconect()) - except: - pass - if api.check_connect(): - print(api.get_balance()) - api.buy(amount=12, ACTIVES="EURUSD", ACTION="call", expirations=exp_time) - break # Exit loop if connected - else: - print("Failed to connect after max retries") - -if __name__ == '__main__': - main() \ No newline at end of file From 2fd7180f9ac6ce33886750ba7078328cc08726ff Mon Sep 17 00:00:00 2001 From: vigo walker Date: Fri, 21 Jun 2024 14:08:36 -0400 Subject: [PATCH 2/3] fesbf --- .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 158 bytes pocketoptionapi/__pycache__/api.cpython-312.pyc | Bin 0 -> 8694 bytes .../__pycache__/constants.cpython-312.pyc | Bin 0 -> 7322 bytes .../__pycache__/expiration.cpython-312.pyc | Bin 0 -> 3090 bytes .../__pycache__/global_value.cpython-312.pyc | Bin 0 -> 477 bytes .../v2/__pycache__/__init__.cpython-312.pyc | Bin 0 -> 161 bytes .../pocketoptionapi/stable_api.py | 10 +++++----- .../ws/__pycache__/client.cpython-312.pyc | Bin 0 -> 13067 bytes .../ws/chanels/__pycache__/base.cpython-312.pyc | Bin 0 -> 1243 bytes .../chanels/__pycache__/buyv3.cpython-312.pyc | Bin 0 -> 2177 bytes .../chanels/__pycache__/candles.cpython-312.pyc | Bin 0 -> 1485 bytes .../__pycache__/get_balances.cpython-312.pyc | Bin 0 -> 886 bytes .../ws/chanels/__pycache__/ssid.cpython-312.pyc | Bin 0 -> 883 bytes .../ws/objects/__pycache__/base.cpython-312.pyc | Bin 0 -> 879 bytes .../objects/__pycache__/candles.cpython-312.pyc | Bin 0 -> 4603 bytes .../__pycache__/timesync.cpython-312.pyc | Bin 0 -> 3296 bytes test.py | 5 +++++ 17 files changed, 10 insertions(+), 5 deletions(-) create mode 100644 pocketoptionapi/__pycache__/__init__.cpython-312.pyc create mode 100644 pocketoptionapi/__pycache__/api.cpython-312.pyc create mode 100644 pocketoptionapi/__pycache__/constants.cpython-312.pyc create mode 100644 pocketoptionapi/__pycache__/expiration.cpython-312.pyc create mode 100644 pocketoptionapi/__pycache__/global_value.cpython-312.pyc create mode 100644 pocketoptionapi/v2/__pycache__/__init__.cpython-312.pyc create mode 100644 pocketoptionapi/ws/__pycache__/client.cpython-312.pyc create mode 100644 pocketoptionapi/ws/chanels/__pycache__/base.cpython-312.pyc create mode 100644 pocketoptionapi/ws/chanels/__pycache__/buyv3.cpython-312.pyc create mode 100644 pocketoptionapi/ws/chanels/__pycache__/candles.cpython-312.pyc create mode 100644 pocketoptionapi/ws/chanels/__pycache__/get_balances.cpython-312.pyc create mode 100644 pocketoptionapi/ws/chanels/__pycache__/ssid.cpython-312.pyc create mode 100644 pocketoptionapi/ws/objects/__pycache__/base.cpython-312.pyc create mode 100644 pocketoptionapi/ws/objects/__pycache__/candles.cpython-312.pyc create mode 100644 pocketoptionapi/ws/objects/__pycache__/timesync.cpython-312.pyc diff --git a/pocketoptionapi/__pycache__/__init__.cpython-312.pyc b/pocketoptionapi/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1a3b20c32bf08d710cf449b432c5c6b44e398d81 GIT binary patch literal 158 zcmX@j%ge<81g3Kf(m?cM5P=Rpvj9b=GgLBYGWxA#C}INgK7-W!vegeQPAw|dFUw5N zFHg+LPA$?8$WP8rE%7fX$;{7l4Di%10Q2*~{KSGx{rLFIyv&mLc)fzkUmP~M`6;D2 Zsdh!IK+_n3xERFv$jr#dSi}ru0RRVHColj2 literal 0 HcmV?d00001 diff --git a/pocketoptionapi/__pycache__/api.cpython-312.pyc b/pocketoptionapi/__pycache__/api.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8db3d5d985ce5a2e23b7c475e8e6ecfc33954674 GIT binary patch literal 8694 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 literal 0 HcmV?d00001 diff --git a/pocketoptionapi/__pycache__/constants.cpython-312.pyc b/pocketoptionapi/__pycache__/constants.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3d6c6951a427ff4063e64d11250719fd30aa2b4a GIT binary patch literal 7322 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 H{D%A$2`Oe; literal 0 HcmV?d00001 diff --git a/pocketoptionapi/__pycache__/expiration.cpython-312.pyc b/pocketoptionapi/__pycache__/expiration.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2c74a9022de5bacf137b4959d3ccad742c0c877f GIT binary patch literal 3090 zcmbVOU2NM#9KUny#EFxpX);#mpkB+yqK$s6V?$d3u`<{YY>cr{m7&Uu-Og=dhqJ@h z%7K88XkpSifwW2tsg-!>)Jjx>hdm<2l97y)XoP;5Bu?QGoMJ{8{8#G= zo#zuY;*nVxS($^8o5FGL8Wnmx&e*&xnTn~V6x&ZnSxK5w0#{Yi4-4G`{r)}}t|GH` zW}ykX-_(|?>*XrlDHO-k@gZG%UsZ^yh#5`P&rK+%F1m_ENu-($Q%a?Kz#@;TnH6K4 ztvI$>N@`Gn;)54@Pa6s`df!*a^$SvRQX#!>=!r?iJdrk4U3>A3W4&o-tvhQet@bJx z(<+hZX-|5}j!u)k0x4->38X5 zc7=20Ps8TJNU*TXPQC;h+bmCA65X8!XEewIw`4tyG_rTaSJUR4nvk%SW_jF`ENih4 zc|NlP+!GL?4N1vFCMk(Z5~8i7(hz?|tVAZE-uzAzQ#Th4F`0$&h4SR5Y3| zwLn42z~&U}Nurz~lEc{Jh(GdoVhyT{D59y5l&VSO<|35}Rv5~7Mw9h}1ASmgQiQ{d zsrLjNX$R91ky3TV2SrDIHAzKPQxmF`6e$%ImAJV`F9+Q8rd4KYAkDdh;%g1of-Xam zWMG3EJ1UI|*V+@{LqbD*ow2=!lF&8T7E)@0=#|A9&HwAz_Bm{du|{d3IJonAh8S@# zq3LLc#)zJ(IgEtqo{uQ$qy(;|iRUDHoFg>Np!lms+PtP;7^RhA^AMEEELJa^da)QZ z^XWB3LNm~gjw|M96Cv3KCvDJ;t1#ry?`^2H{dRaqA-rQjEr$DYN7ucGZ~gSck3O7l zyXEUBM>}puy9?3orM)-$^U>~N^toC7Zfx7NsntlSbD$6#xE&oVL zD|F`BPD0am6VlQ9I5nMw@juiww(tb?N>hWX#Vbs$Y8kUu*$oxP)T>AKtgy>8$k1pV zyL0zzAzGU<=hSU0AV96|nmMzK7T$F3-7GoFj6+qM6!M%V*DCrY^zLq`c-Hbv(9~&a zjdr_MxnGPnX>7Vnmbvsai)22_$vEq+zajsEmJjJ!%WH8CeqN~i7?3p5WIilqziY4i zl>^gW*vFH*pf(QI`Tyyzb*ehDJFyX**mV9c?|Eepje6Gm&wi}k6<@jlQS_Nn_m*|^ zg($v>&{+V8ESKdiPWDZnh1>b%0L+8b(rL)otY70`UD4{de18>j%inNU-t}31&)ni_ zpP+ANQ(LaCT|TOLjB!^OU3!Z}mJi;E&~XR(NDD9!8a6`FgU|#eRPGuruQi(Q)69<7 z*Jx_0d!SU-D5Av$2l~h(Feh8-00FJwoP&5aMG&B}r%i!%Bfo)j4 L|9mHoIWqnPbMv#J literal 0 HcmV?d00001 diff --git a/pocketoptionapi/__pycache__/global_value.cpython-312.pyc b/pocketoptionapi/__pycache__/global_value.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d11d21a2805a064c493f31c472d918a04e1d3020 GIT binary patch literal 477 zcmZutO-sW-5Z$!3sj)GrrE2{^@YIXB=uL!zh#vd^@zTq(CZmR~*|3{fdyBuqlRv=U z;w8thr+|Mz@aD-$Xu*R6Z)e^cc(XGfwrvrNgSY6;sS)y7l35tj;(H&9SK^al2?J5{ zjbR;g1M?iBi7*i@#5}?Z$Z%m|^lK*<{kHCo;Z_N61ThU1^+Xtg7lW@mN^yFg#0ldR zo;{wZK!m#YpGwCvh(R~5ug{M4n)d+Si2iZCqadY_esw{pUP`UpT1?H{SxMXZayNDIc{^?9w)0|12hDx~v}c<| literal 0 HcmV?d00001 diff --git a/pocketoptionapi/v2/__pycache__/__init__.cpython-312.pyc b/pocketoptionapi/v2/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ebac979d2e50fef344ae24b274cf2d89ec6183f0 GIT binary patch literal 161 zcmX@j%ge<81W)D`q=D$iAOanHW&w&!XQ*V*Wb|9fP{ah}eFmxd<)9y0oLW?@UzVAk zU!Itgom!+Hke{5LTH;?&l9`|97~rX20Osd|`H2OY`ejD?@$s2?nI-Y@dIgogIBatB cQ%ZAE?TT1|1~LM1F^KVznURsPh#ANN0PcS%xc~qF literal 0 HcmV?d00001 diff --git a/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/stable_api.py b/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/stable_api.py index 24322f6..607a043 100644 --- a/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/stable_api.py +++ b/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/stable_api.py @@ -1,15 +1,15 @@ # dev @vigo_walker, github: https://github.com/theshadow76 # python -from pocketoptionapi.api import pocketoptionapi -import pocketoptionapi.constants as OP_code -import pocketoptionapi.country_id as Country +from pocketoptionapi.v2.pocketoptionapi2.pocketoptionapi.api import pocketoptionapi +import pocketoptionapi.v2.pocketoptionapi2.pocketoptionapi.constants as OP_code +import pocketoptionapi.v2.pocketoptionapi2.pocketoptionapi.country_id as Country import threading import time import logging import operator -import pocketoptionapi.global_value as global_value -from pocketoptionapi.expiration import get_expiration_time, get_remaning_time +import pocketoptionapi.v2.pocketoptionapi2.pocketoptionapi.global_value as global_value +from pocketoptionapi.v2.pocketoptionapi2.pocketoptionapi.expiration import get_expiration_time, get_remaning_time from datetime import datetime, timedelta,timezone from collections import defaultdict from collections import deque diff --git a/pocketoptionapi/ws/__pycache__/client.cpython-312.pyc b/pocketoptionapi/ws/__pycache__/client.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2e77f093eee6c7438a89be11153bc9d267ebe148 GIT binary patch literal 13067 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 Sqo(&RpZYJjQcP#I`+orDCIoo^ literal 0 HcmV?d00001 diff --git a/pocketoptionapi/ws/chanels/__pycache__/base.cpython-312.pyc b/pocketoptionapi/ws/chanels/__pycache__/base.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a65696f3374df689e618c64c5d00f8615f627b7f GIT binary patch literal 1243 zcmZ`&y>HV%6u+~bG#E-Nh}r>xZZ(6w076k!iH{a_pcD#AmaA)DTDOj!-Z^a(bzsO) z2E^Ej9mK-O|G)xbK=sN$P|>n<;yv4Oqe7qLyLb1#e)oINU&qHy0&@3#r&ZSp`Gtp} zR0`$z7AObACrzS}C&Z@%;%kC_0)LdI*3&Jcf9GlJcSFHiv1F^R5^O2C z@~a)Os`6WJ-Hk+OdwGg{)rvz=Pmm^snwn3Wx~~mL)9@?4KA_D?&#WWM=h=2Hd!H!jw{_Zb2~wUy<8V8h*aW6o?vl{ zH9W-7SXp?UzxBb=LK%nQGr?AzkpR&)ej|>vD|YF-Xwg&$yQQUu5@AbX0~DfU?DVno zN(rf)?O-k5al=g^ot)sZrqju&ElW8&%E@U~4mQN@^wJvVK@=pM_s5Ywdw9Hrl`g~b znjD#=KD}?etsTRWcm}S8AfAk{8Bl;QvN5!b>>I^cj9ekL+MYffm}O$o{^_!ad?v+K zSEz&~@wst^X#z- z8-i0M$3T(Tv;K{&m;cW;2@dKeEYR6HnXJFteY5*>!u~#Ce@H$rf4Ti*V(wdQPT~OI z{1N!GU`Vhu=c&ngJNv6azry)e*9{BH80UWMaV~2Rn4$PcvLrbyoB@doqE(1tKn{)j zziXAs^vPATGEZ}7bXl}?c^&q&8n12$FUjI$9d6DNp4Mh^AhU7`3=}?v%8^bfJtU2j P>J*))`}h73+_Sj9b^1X` literal 0 HcmV?d00001 diff --git a/pocketoptionapi/ws/chanels/__pycache__/buyv3.cpython-312.pyc b/pocketoptionapi/ws/chanels/__pycache__/buyv3.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..52f9c4ea106bad1a2b1859f5f08b3e7819b6a17c GIT binary patch literal 2177 zcmbVN&2JM&6rc5e`XdP?At7lXC@yK-P&<^ipsK1=2p_K6fK;kVzO2^X!8ojU&FtF7 zk)v|pklwh_1C@eWiK0~Mp*~I7dF{3%F$d@A`x<)*vc(pt5jK*L;PG!ST(Tf+pO`1lrq-QWi};o<+SBf znEQ(~FzJm-iCIC(bIqVsriBnElu}387=*^}O^?j>I3)(gq1J)Sc#$N&@=%SLK6Eq=BGN){NqO+Xaj?%Ru+ODzOL2N3^k#K84 zi;`xfDK%wVYN~dmso3&eeL=UCre2IJ7;s*E7YL|eP3&Pcg1)Y`sdmrmCR`#7l2T{a zF@$v+L`vtX<@+??npO6yF3tr^FV{-`3@v*+%INhf^@FUSh7_O74`83$sE(e?lt7+Z?|x&N(2{kf4?Gm zD+c}pmOBL4AYGe;sDQ-_x~n5QgdVY#1szxu+2ZI{#W&@-SA6XP6SCY{ex+|c6JXtn zu@{5846@a`nyuNoZQPXwBe9@%4Pc~bsXNV0BfvC@(bT$lI~WM!~95y_jc&# zr;)TBWnMm>o=(YJ$$NG~lmyp-sy@&>rL%s7R~@fT8BY`)4=~M|XDzkC!QZ5@r)$T~tQ48d~~<__BX~(A>znxm#y!qXx}0IMc_Lx^V0Y*Y$G4BGXR9&5C44- yZCR3}C#3HQiNo(1nSMfgpOF*K$OoI+u#}Y+XEq7Wo2Q1PbJ92O{!4HcN%{}WIT}*{ literal 0 HcmV?d00001 diff --git a/pocketoptionapi/ws/chanels/__pycache__/candles.cpython-312.pyc b/pocketoptionapi/ws/chanels/__pycache__/candles.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e00138c7fe8bf7a9ec32dce995fd988795c72776 GIT binary patch literal 1485 zcmb7E&2Jk;6rcUf#*Wpx35EcrD^dlv2OAJUsGtaF)sRC%B+A7HR+F9CWZU(wJ2Q^! z$dP==A)G*PXb&KT6QKSnT#67Pon9gp4%`ARmvZ6Fj-7}g4$Nxan|U+y-tT?w_mxTs z!C3gJ9e?g1^hj;S1NOxjz60zIBB+UoLCn->nN8DBYb&*yR>AG2P3&FNbWF5_h_j1` zOU-+hR?u{NRxq*s+DcA3DfQ!=`D=M}lL|j?izLtd2xlav-0#wLt`DM3oYA!Yn^F)M z(tZzfx*BP9n%cmW{^1)y0G+Xeh`D13Lmwk_!yKEW|*atBe=G$36jF(5rAq{dRI>DhrJOG{K-(e}4ry^>!z~|2BH5y0LN5E) zH|c2GfXG0BCWK}pi4)4|r=LNAP_~6r{YsnjNr&O0q+b?Ei^iZ{*Si44BSgW!G(~wQ z6Iu-v!a8Ms9*=MPy}aXhaVC^cn|O;J!+>Nu1xV=>MI>!yQo4B@19IuMDNAx9t7(qO z`w160>#Y@{)xeS#7fjYv%);ZQ3mLuDpLG8JN z+6%vz-Ls`V`{*pHUfjQa|IDR5`_P;E*_->po7=zo&GOgF--@5S*I5}d>Bc7W8d(CzxP!z~qHfy+s`Zs=(PfMO4caovtliR9gkVu>Qn*TcciN s^B_}g!(Rk)WEqC>0KNGudgUQ1KSY&3T-Uht_}r|q@Y&3t2w0)xZ(u!+^Z)<= literal 0 HcmV?d00001 diff --git a/pocketoptionapi/ws/chanels/__pycache__/get_balances.cpython-312.pyc b/pocketoptionapi/ws/chanels/__pycache__/get_balances.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c98686b4529eb1136a4a89e23fda8f39ed1be731 GIT binary patch literal 886 zcmZ8f&1=*^6n`_x*0|l)MYJk{26~VjOj_tF6cH?iQqbCqmt2O~ooS8D?xvZv%PuSQ z(1S;BJ!nBMTIrwSrGjFK2!bbXm93Yae3N9W^g-VD$L~$v$FZ?8Ak}uGm3IW-r#6OE zDwKhX$_@w+B!njM3DG(YsZS{^fH1Z}n3C)pdA@ISsZ;u;4Tq%W99MFwk%w}Qb21uC zpx6NkJ`vzkL3~5dZSc*m;h1S%Jkf(j1`vmZs3NAT_oAD zT;Gr?QFh-JJmItUl4GQ$D8{zwgnkRwk#*H>tl=XSxv_;XbzddJmDJQ_N+Y-JlZW0D zg=4(UV71-h;hK!S<*fE`2K~YEq8DX$z6y^5ucN%iQ{IxH@(?^5f_I~CYBAQ}VaQnT z^8f$H9lA9Rbr;zd9F^hPt;6f~Z-Z7ZzA%qR;QaVO)!j?>Ru0B%pRGGTtjbqw@{=|B zX8!%++r_=)i#0RAQdn|IdXRo2#?mrl&9>MGwO(OteS?R2BwISZfCV2QuA+#?HPfe? zF|DWyvTZmVy}C6&Fw3P{o~T23XE)Dm?sk-0Z0^?ac4K`hshI>#nYX=!_P&Ao)Uf@F6W3VqvZ{}<{-c&h{fQS65qXq58p7e%U&vxmvfxrL=6+0PlF-n47 zAf&x^?pj8ARcB!9_A)7s#zG~jIr4@A?WPi8PgW4B(jY0lXgkl9kji-(^rMLv9t!E? zL(6A|BXio!nr)iZj-wQ*=W(_?Bd!^QOrt8Q~U{QmO#+T~$ zr|R~b_Pfs8&imwZb!Uk-=voyWL1SbrtuZ#tHVEZ9V@G2zEG(B8pT7S=l7bS3AD|uk7P*sea-4 literal 0 HcmV?d00001 diff --git a/pocketoptionapi/ws/objects/__pycache__/base.cpython-312.pyc b/pocketoptionapi/ws/objects/__pycache__/base.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e4a50f7087aa68d04bd9f373bc283d607a1c837d GIT binary patch literal 879 zcma)4J8u&~5T3o49XpPA1PWV1TOql*tAbF3ka$Rl0%Hkiu365$b#UVNj@>hs9f}k# zLV+k<(a}WtDKwPiTK<5+(4=DK?i^5Pm}2&uo!y!FX6AFPRsoc)k8$r41NcV9O6&qG zZy=aM2tF9_2tqc4(2(rJ%>BMGF`L%ZdlH4Cf#khN@pjbRlL>zsC;e#1?+04)vFzyl zHtOukZsK-VY3MWxV|f$793=P*(-|T2&Cr;EZ%I2eXK+$H^PP#+v{Q>BPu&NDK@7KkO$$Oly?MU72Ofq1R9y!q@Bd zBkO&2NyT;lWJc;-Yj_2Y?I1zL!6<)};lF3L7 z^)`S0N@h+T_5S(gp1)VLFsg(q?~bCKZy|6nYcY V!eoq{!q!ix#u`VregPiYuis85)A0ZR literal 0 HcmV?d00001 diff --git a/pocketoptionapi/ws/objects/__pycache__/candles.cpython-312.pyc b/pocketoptionapi/ws/objects/__pycache__/candles.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9ff38bcb54090978b22722b4eb9faeb763de4bd1 GIT binary patch literal 4603 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 literal 0 HcmV?d00001 diff --git a/test.py b/test.py index 975779f..5e9fc5f 100644 --- a/test.py +++ b/test.py @@ -8,3 +8,8 @@ SSID=r"""42["auth",{"session":"a:4:{s:10:\"session_id\";s:32:\"0641660deb66bacfe493ee595ad5bcd6\";s:10:\"ip_address\";s:12:\"190.162.4.33\";s:10:\"user_agent\";s:120:\"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36 OPR/107.\";s:13:\"last_activity\";i:1715088712;}bf42446033b557288d0399ac1527842c","isDemo":0,"uid":27658142,"platform":2}]""" +api = PocketOption() + +api.connect() + +print(api.get_balance()) \ No newline at end of file From 7fad3506c96101d240a0c6835f5dc88d8774d1e6 Mon Sep 17 00:00:00 2001 From: vigo walker Date: Fri, 21 Jun 2024 14:10:15 -0400 Subject: [PATCH 3/3] hewdwb --- README.md | 13 +- docs/todo.md | 4 +- .../__pycache__/__init__.cpython-311.pyc | Bin 169 -> 170 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 158 -> 0 bytes .../__pycache__/api.cpython-310.pyc | Bin 6278 -> 7247 bytes .../__pycache__/api.cpython-311.pyc | Bin 9335 -> 0 bytes .../__pycache__/api.cpython-312.pyc | Bin 8694 -> 0 bytes .../__pycache__/api.cpython-39.pyc | Bin 0 -> 6718 bytes .../__pycache__/constants.cpython-310.pyc | Bin 5521 -> 4194 bytes .../__pycache__/constants.cpython-311.pyc | Bin 7565 -> 2580 bytes .../__pycache__/constants.cpython-312.pyc | Bin 7322 -> 0 bytes .../__pycache__/constants.cpython-39.pyc | Bin 0 -> 3460 bytes .../__pycache__/expiration.cpython-310.pyc | Bin 1804 -> 1803 bytes .../__pycache__/expiration.cpython-311.pyc | Bin 3569 -> 0 bytes .../__pycache__/expiration.cpython-312.pyc | Bin 3090 -> 0 bytes .../__pycache__/expiration.cpython-39.pyc | Bin 0 -> 1793 bytes .../__pycache__/global_value.cpython-310.pyc | Bin 430 -> 429 bytes .../__pycache__/global_value.cpython-311.pyc | Bin 482 -> 0 bytes .../__pycache__/global_value.cpython-312.pyc | Bin 477 -> 0 bytes .../__pycache__/global_value.cpython-39.pyc | Bin 0 -> 423 bytes .../__pycache__/stable_api.cpython-310.pyc | Bin 9766 -> 10690 bytes .../__pycache__/stable_api.cpython-311.pyc | Bin 14511 -> 0 bytes .../__pycache__/stable_api.cpython-39.pyc | Bin 0 -> 9776 bytes pocketoptionapi/api.py | 118 +++--- pocketoptionapi/constants.py | 36 +- pocketoptionapi/prueba_temp.py | 9 + pocketoptionapi/stable_api.py | 150 +++++--- pocketoptionapi/v2/__init__.py | 0 .../v2/__pycache__/__init__.cpython-312.pyc | Bin 161 -> 0 bytes .../v2/pocketoptionapi2/.gitignore | 6 - .../v2/pocketoptionapi2/ACTIVE_CODE.txt | 146 -------- .../v2/pocketoptionapi2/__init__.py | 0 .../docs/image/icon/favicon.ico | Bin 1150 -> 0 bytes .../v2/pocketoptionapi2/docs/index.md | 201 ---------- .../docs/javascripts/.Rhistory | 0 .../docs/javascripts/extra.js | 27 -- .../v2/pocketoptionapi2/instrument.txt | 318 ---------------- .../v2/pocketoptionapi2/mkdocs.yml | 81 ---- .../pocketoptionapi/__init__.py | 16 - .../pocketoptionapi2/pocketoptionapi/api.py | 347 ------------------ .../pocketoptionapi/constants.py | 7 - .../pocketoptionapi/country_id.py | 190 ---------- .../pocketoptionapi/expiration.py | 80 ---- .../pocketoptionapi/global_value.py | 58 --- .../pocketoptionapi/http/__init__.py | 1 - .../pocketoptionapi/http/login.py | 22 -- .../pocketoptionapi/http/logout.py | 22 -- .../pocketoptionapi/http/resource.py | 10 - .../pocketoptionapi/stable_api.py | 294 --------------- .../pocketoptionapi/ws/__init__.py | 1 - .../pocketoptionapi/ws/chanels/__init__.py | 1 - .../pocketoptionapi/ws/chanels/auth.py | 13 - .../pocketoptionapi/ws/chanels/base.py | 19 - .../pocketoptionapi/ws/chanels/buy.py | 29 -- .../pocketoptionapi/ws/chanels/candle.py | 42 --- .../ws/chanels/get_asset_data.py | 7 - .../pocketoptionapi/ws/chanels/get_balance.py | 7 - .../pocketoptionapi/ws/chanels/ping_server.py | 9 - .../pocketoptionapi/ws/chanels/subscribe.py | 11 - .../pocketoptionapi/ws/chanels/unsubscribe.py | 9 - .../pocketoptionapi/ws/client.py | 140 ------- pocketoptionapi/v2/pocketoptionapi2/setup.py | 17 - pocketoptionapi/v2/pocketoptionapi2/test.py | 9 - .../ws/__pycache__/client.cpython-310.pyc | Bin 6791 -> 7015 bytes .../ws/__pycache__/client.cpython-311.pyc | Bin 14161 -> 0 bytes .../ws/__pycache__/client.cpython-312.pyc | Bin 13067 -> 0 bytes .../ws/__pycache__/client.cpython-39.pyc | Bin 5741 -> 5717 bytes .../chanels/__pycache__/base.cpython-311.pyc | Bin 1364 -> 0 bytes .../chanels/__pycache__/base.cpython-312.pyc | Bin 1243 -> 0 bytes .../chanels/__pycache__/buyv3.cpython-310.pyc | Bin 1629 -> 0 bytes .../chanels/__pycache__/buyv3.cpython-311.pyc | Bin 2483 -> 0 bytes .../chanels/__pycache__/buyv3.cpython-312.pyc | Bin 2177 -> 0 bytes .../__pycache__/candles.cpython-311.pyc | Bin 1629 -> 0 bytes .../__pycache__/candles.cpython-312.pyc | Bin 1485 -> 0 bytes .../__pycache__/get_balances.cpython-310.pyc | Bin 760 -> 0 bytes .../__pycache__/get_balances.cpython-311.pyc | Bin 1014 -> 0 bytes .../__pycache__/get_balances.cpython-312.pyc | Bin 886 -> 0 bytes .../chanels/__pycache__/ssid.cpython-311.pyc | Bin 991 -> 0 bytes .../chanels/__pycache__/ssid.cpython-312.pyc | Bin 883 -> 0 bytes pocketoptionapi/ws/chanels/buyv3.py | 2 +- pocketoptionapi/ws/chanels/get_balances.py | 2 +- .../__pycache__/base.cpython-310.pyc | Bin 1134 -> 1146 bytes .../channels/__pycache__/base.cpython-39.pyc | Bin 0 -> 1138 bytes .../__pycache__/buyv3.cpython-310.pyc | Bin 0 -> 1650 bytes .../channels/__pycache__/buyv3.cpython-39.pyc | Bin 0 -> 1670 bytes .../__pycache__/candles.cpython-310.pyc | Bin 1293 -> 1292 bytes .../__pycache__/candles.cpython-39.pyc | Bin 0 -> 1286 bytes .../__pycache__/change_symbol.cpython-310.pyc | Bin 0 -> 1034 bytes .../__pycache__/change_symbol.cpython-39.pyc | Bin 0 -> 1028 bytes .../__pycache__/get_balances.cpython-310.pyc | Bin 0 -> 756 bytes .../__pycache__/get_balances.cpython-39.pyc | Bin 0 -> 748 bytes .../__pycache__/ssid.cpython-310.pyc | Bin 791 -> 792 bytes .../channels/__pycache__/ssid.cpython-39.pyc | Bin 0 -> 784 bytes pocketoptionapi/ws/channels/base.py | 26 ++ pocketoptionapi/ws/channels/buyv3.py | 61 +++ pocketoptionapi/ws/channels/candles.py | 42 +++ pocketoptionapi/ws/channels/change_symbol.py | 25 ++ pocketoptionapi/ws/channels/get_balances.py | 18 + pocketoptionapi/ws/channels/ssid.py | 17 + pocketoptionapi/ws/client.py | 206 ++++++----- .../objects/__pycache__/base.cpython-310.pyc | Bin 794 -> 793 bytes .../objects/__pycache__/base.cpython-311.pyc | Bin 969 -> 0 bytes .../objects/__pycache__/base.cpython-312.pyc | Bin 879 -> 0 bytes .../objects/__pycache__/base.cpython-39.pyc | Bin 789 -> 785 bytes .../__pycache__/candles.cpython-310.pyc | Bin 3698 -> 3697 bytes .../__pycache__/candles.cpython-311.pyc | Bin 4947 -> 0 bytes .../__pycache__/candles.cpython-312.pyc | Bin 4603 -> 0 bytes .../__pycache__/candles.cpython-39.pyc | Bin 3779 -> 3775 bytes .../__pycache__/time_sync.cpython-310.pyc | Bin 0 -> 2696 bytes .../__pycache__/timesync.cpython-310.pyc | Bin 2472 -> 2471 bytes .../__pycache__/timesync.cpython-311.pyc | Bin 3518 -> 0 bytes .../__pycache__/timesync.cpython-312.pyc | Bin 3296 -> 0 bytes .../__pycache__/timesync.cpython-39.pyc | Bin 2485 -> 2481 bytes pocketoptionapi/ws/objects/time_sync.py | 70 ++++ test.py | 34 +- 115 files changed, 605 insertions(+), 2368 deletions(-) delete mode 100644 pocketoptionapi/__pycache__/__init__.cpython-312.pyc delete mode 100644 pocketoptionapi/__pycache__/api.cpython-311.pyc delete mode 100644 pocketoptionapi/__pycache__/api.cpython-312.pyc create mode 100644 pocketoptionapi/__pycache__/api.cpython-39.pyc delete mode 100644 pocketoptionapi/__pycache__/constants.cpython-312.pyc create mode 100644 pocketoptionapi/__pycache__/constants.cpython-39.pyc delete mode 100644 pocketoptionapi/__pycache__/expiration.cpython-311.pyc delete mode 100644 pocketoptionapi/__pycache__/expiration.cpython-312.pyc create mode 100644 pocketoptionapi/__pycache__/expiration.cpython-39.pyc delete mode 100644 pocketoptionapi/__pycache__/global_value.cpython-311.pyc delete mode 100644 pocketoptionapi/__pycache__/global_value.cpython-312.pyc create mode 100644 pocketoptionapi/__pycache__/global_value.cpython-39.pyc delete mode 100644 pocketoptionapi/__pycache__/stable_api.cpython-311.pyc create mode 100644 pocketoptionapi/__pycache__/stable_api.cpython-39.pyc create mode 100644 pocketoptionapi/prueba_temp.py delete mode 100644 pocketoptionapi/v2/__init__.py delete mode 100644 pocketoptionapi/v2/__pycache__/__init__.cpython-312.pyc delete mode 100644 pocketoptionapi/v2/pocketoptionapi2/.gitignore delete mode 100644 pocketoptionapi/v2/pocketoptionapi2/ACTIVE_CODE.txt delete mode 100644 pocketoptionapi/v2/pocketoptionapi2/__init__.py delete mode 100644 pocketoptionapi/v2/pocketoptionapi2/docs/image/icon/favicon.ico delete mode 100644 pocketoptionapi/v2/pocketoptionapi2/docs/index.md delete mode 100644 pocketoptionapi/v2/pocketoptionapi2/docs/javascripts/.Rhistory delete mode 100644 pocketoptionapi/v2/pocketoptionapi2/docs/javascripts/extra.js delete mode 100644 pocketoptionapi/v2/pocketoptionapi2/instrument.txt delete mode 100644 pocketoptionapi/v2/pocketoptionapi2/mkdocs.yml delete mode 100644 pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/__init__.py delete mode 100644 pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/api.py delete mode 100644 pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/constants.py delete mode 100644 pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/country_id.py delete mode 100644 pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/expiration.py delete mode 100644 pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/global_value.py delete mode 100644 pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/http/__init__.py delete mode 100644 pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/http/login.py delete mode 100644 pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/http/logout.py delete mode 100644 pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/http/resource.py delete mode 100644 pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/stable_api.py delete mode 100644 pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/ws/__init__.py delete mode 100644 pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/ws/chanels/__init__.py delete mode 100644 pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/ws/chanels/auth.py delete mode 100644 pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/ws/chanels/base.py delete mode 100644 pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/ws/chanels/buy.py delete mode 100644 pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/ws/chanels/candle.py delete mode 100644 pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/ws/chanels/get_asset_data.py delete mode 100644 pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/ws/chanels/get_balance.py delete mode 100644 pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/ws/chanels/ping_server.py delete mode 100644 pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/ws/chanels/subscribe.py delete mode 100644 pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/ws/chanels/unsubscribe.py delete mode 100644 pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/ws/client.py delete mode 100644 pocketoptionapi/v2/pocketoptionapi2/setup.py delete mode 100644 pocketoptionapi/v2/pocketoptionapi2/test.py delete mode 100644 pocketoptionapi/ws/__pycache__/client.cpython-311.pyc delete mode 100644 pocketoptionapi/ws/__pycache__/client.cpython-312.pyc delete mode 100644 pocketoptionapi/ws/chanels/__pycache__/base.cpython-311.pyc delete mode 100644 pocketoptionapi/ws/chanels/__pycache__/base.cpython-312.pyc delete mode 100644 pocketoptionapi/ws/chanels/__pycache__/buyv3.cpython-310.pyc delete mode 100644 pocketoptionapi/ws/chanels/__pycache__/buyv3.cpython-311.pyc delete mode 100644 pocketoptionapi/ws/chanels/__pycache__/buyv3.cpython-312.pyc delete mode 100644 pocketoptionapi/ws/chanels/__pycache__/candles.cpython-311.pyc delete mode 100644 pocketoptionapi/ws/chanels/__pycache__/candles.cpython-312.pyc delete mode 100644 pocketoptionapi/ws/chanels/__pycache__/get_balances.cpython-310.pyc delete mode 100644 pocketoptionapi/ws/chanels/__pycache__/get_balances.cpython-311.pyc delete mode 100644 pocketoptionapi/ws/chanels/__pycache__/get_balances.cpython-312.pyc delete mode 100644 pocketoptionapi/ws/chanels/__pycache__/ssid.cpython-311.pyc delete mode 100644 pocketoptionapi/ws/chanels/__pycache__/ssid.cpython-312.pyc rename pocketoptionapi/ws/{chanels => channels}/__pycache__/base.cpython-310.pyc (71%) create mode 100644 pocketoptionapi/ws/channels/__pycache__/base.cpython-39.pyc create mode 100644 pocketoptionapi/ws/channels/__pycache__/buyv3.cpython-310.pyc create mode 100644 pocketoptionapi/ws/channels/__pycache__/buyv3.cpython-39.pyc rename pocketoptionapi/ws/{chanels => channels}/__pycache__/candles.cpython-310.pyc (65%) create mode 100644 pocketoptionapi/ws/channels/__pycache__/candles.cpython-39.pyc create mode 100644 pocketoptionapi/ws/channels/__pycache__/change_symbol.cpython-310.pyc create mode 100644 pocketoptionapi/ws/channels/__pycache__/change_symbol.cpython-39.pyc create mode 100644 pocketoptionapi/ws/channels/__pycache__/get_balances.cpython-310.pyc create mode 100644 pocketoptionapi/ws/channels/__pycache__/get_balances.cpython-39.pyc rename pocketoptionapi/ws/{chanels => channels}/__pycache__/ssid.cpython-310.pyc (57%) create mode 100644 pocketoptionapi/ws/channels/__pycache__/ssid.cpython-39.pyc create mode 100644 pocketoptionapi/ws/channels/base.py create mode 100644 pocketoptionapi/ws/channels/buyv3.py create mode 100644 pocketoptionapi/ws/channels/candles.py create mode 100644 pocketoptionapi/ws/channels/change_symbol.py create mode 100644 pocketoptionapi/ws/channels/get_balances.py create mode 100644 pocketoptionapi/ws/channels/ssid.py delete mode 100644 pocketoptionapi/ws/objects/__pycache__/base.cpython-311.pyc delete mode 100644 pocketoptionapi/ws/objects/__pycache__/base.cpython-312.pyc delete mode 100644 pocketoptionapi/ws/objects/__pycache__/candles.cpython-311.pyc delete mode 100644 pocketoptionapi/ws/objects/__pycache__/candles.cpython-312.pyc create mode 100644 pocketoptionapi/ws/objects/__pycache__/time_sync.cpython-310.pyc delete mode 100644 pocketoptionapi/ws/objects/__pycache__/timesync.cpython-311.pyc delete mode 100644 pocketoptionapi/ws/objects/__pycache__/timesync.cpython-312.pyc create mode 100644 pocketoptionapi/ws/objects/time_sync.py diff --git a/README.md b/README.md index eaab72b..9817d5c 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,13 @@ -# talk with us -https://discord.gg/du4GaQGHMT - - - # Pocket Option API In development! for a better understanding, check this [link](https://github.com/theshadow76/PocketOptionAPI/issues/4) -there is a pocketoption api being sold for 1000 usd, and here we want to make it for free! +# help me + +you can donate here: [paypal](https://paypal.me/shadowtechsc?country.x=CL&locale.x=es_XC) + +or my BTC adress: bc1qmvpmpdt96vmgq3s3rh3gzxf75eml52r2d7sclw + +By donating you are helping me make this project better! diff --git a/docs/todo.md b/docs/todo.md index 7b41d26..67b5a55 100644 --- a/docs/todo.md +++ b/docs/todo.md @@ -1,4 +1,6 @@ # todo ### Add login system -- Not Done \ No newline at end of file +- Not Done + +-- updated \ No newline at end of file diff --git a/pocketoptionapi/__pycache__/__init__.cpython-311.pyc b/pocketoptionapi/__pycache__/__init__.cpython-311.pyc index 67ac79d75b234fd6a2b152ea7331f9a2d3ec2dec..d6f4f315e109033616919aaef9c8d10fb8d6190a 100644 GIT binary patch delta 75 zcmZ3^n WpXV6hsb2u*=Y#o)1)2I2i_8IMycvZ6 delta 74 zcmZ3*xRQ})IWI340}%Ywu}YiBV`5~JY!wq)oLW>IQ7(25q@vEq?Z4yACs~~NtFL&T8U!E`EhJVlCAhJP89(%>Sm#Uq4=IOoT?8s zhMi%^X_47v&d3EOvcleE!j{Fm5oc5w^Q_dZEq>!@YUX;Sxg_V;8jEiIJ`a*YUaPFu zeNn6WB_7yUY7HzltJjs=tgTC>f6Z^zvd9FB$)@ytDavGfpWQbC-V98CZAGeX7(9Oa zy^{-bYt`!&)tFQ6vaI?GXI6c8sqQw*4Ohte!irn{RQm3UUvrz4mD&O@v9cCer|Xr* zqNq$x>85dHB86b8hls+qr9C9spi_Vs16kbSJ%+ONBi`SdChZ?MW0E;sFvk$wiPV^5 z%IIC@#AFxP5{46(2}sE$=A?i$G#MZ(Z4r^(cMYefBlUKqK3MDlazGyF2lfI3z##5X z5QZ*ChFiEi2pj^&;B3mn2w3WbITGsVCgUC5D;?=oNYOBb3HZMT90iU6uj3ZSaef1M z6Y^U)zYUxK-T_Vmr-0UJ(7V7SFa=DDqKJvEP41kLXN4u=o9r%kX2hsSi8QqDiHyji zTh0kvbmM#;_C2B(D;Gqc*aOW)_~k@C^t%MPU+fL#_aP66!BD;oxgdr%Sq{NJz{Ri_ z2^W45Hr+m5HD`HNe{cSu2l~&^Uk#6-RPDls)uqA)R=Hej*8Fn$o*s)mIy3;?eXb7t zjAi_$T=c>&`u&4Kmu>J-{c8Ng&=^delqZ{_+>oAES&~6i$i>yAlBEvlui_`{{kwwc zhw;JuAEESephVn`*oMLFA7h4P=qK_2@d^DnF}r7!+>Q~wPIR1TOn;m#90{}A9Tm$# z*7GaMFLx6CoBk&G>6JMw3GTBp582pYTaj(HVBF@njScSgZ14@^8n&sx%CcFG#@Tw3 zq~)kER=FCz%7i)3uCk`d8T~$DpXK$f)bZ0N5x5jn6O`F&L`R7xK|$QdW-fc!%}%!` z)eWi2q(Od-6|WS*oB3yIY$Pm0rxxloJpT@O!=P9srcb5cY#ETB9wbMA9{_J3=u3`7 z*%sg6+x!v}>>|>G#-InpOk(pW=4{DSVUa8hgKFJHI)iWx%w@OMEE!>~gQ!%>RlA!b zTCHbc{~x*?ZG7WSkN!t`=Fl``c!puDnpdvWYk0y#&^{mG!R1Vm+q<>;^X!%V=gBmT z!ky^Z)wLVPU-H)f&Yri(uEf{B*VFbboyq6*L%VcvcSP6(i6!Y*D@{?CUJ|oNUDW;E zBic>xol-k7{))kfap|uWuequS^Wt3C%*7AGnON*JO%Y=hV;aSyIj!sV8!rrQ{hdA9 zYRbAd@q*pN^TU1elZixe=TP)9dFkmW=kyB!`ogrKUmt2G*3Rq9+@%+9RE1p&X6=JI zf^IMacy~bS`>7)YL*w>C;#<_zY&o*c!_MGa<~BN{9KA|?5}jv$Y^zJ4d#GEU*PG0@ z)}}bSjg@tqtf!`RZb(%^ICYj{#?RfV z%CM$So13@4lI`9Mr(TwvJK-8~2rtzuz}qkq+~ye`vl5Rj9*bt4&^0F09plOR$kW0c zrmrYfW>=VYOB?DiB3&uXs&Rd>`)ofwsmc(20CKFSZ$|&7TXFjv-ottD!07#x(V8VA z8dvHdD6m#`S~lFj>K$63=@JeKMI~3~h%OLaB6^?bGSNKIv-$FD$mFp=4&HA;7BjgS ziSZaWc`TxHxli7Lf+tL)H^CEK)}S?z=(9{ClHf)HptD8Da7BSi`_wOSQlok+*Oz;R zL@ETv-*qJ`qSjne1^qBL!w=K$?G3jLRdcaYub=>)QzX3|>OHR}R21IM{%6KJds=mo zel#2bzsqmLXyiI2x*UFaE2<<`RT>l=(BI}qro-lGSHLE1%w43vNZ}Lw+&jX*BK&Du Xt;7%g5Z?E8y3qsIJ4Js^1X5+U>H*vh~ z+fCXSR}o6o1LD%YbEQTV0uDXp!kGgX4&_)`mEgva6Bi^3^ESw+rk1{MX1_NxJD%Cy zXS4Swbw|@w0e z^K7TOeEr?=$wJLn9A7bOb^$O^+ixoK6?12un2QVS8$2?>o1{@ryz;3R=bi?10pQ9& z3Q|xUQ;q$NGpNooV*kvhV1xiF!A2Mmu{0uD`XM%=EicycIv^qr=p^j6*s0rs(F<2e zK#E}YP#idbP{|sE^r2Q#&ewR!;g*(fc_ZKj{2Pu!nK8gPU;;etZtI?`@%Py)2?5Y4_OGIYmUcm4f8I{6|P!zjZZhGx-O z_ERW@vh26eY^=X6jTO{X;%gAyZXh)j6Jr?T*h^VdL}sdgp%GRJfAC3$r;T%(;8fsr z7N{94JJqUH_L^b3TPW({qMHDWyxw+9ZOLE$kvX1{2O89qXKkrO{@ zN?VRyr33uBtu&AM1K>(PDqGTvLkr-+p#4O}c1vc(hS9etpM0xlQLJ5M&!cN+m!Sal zs~{t=vb(=`{(sr*TI`C#iZl;b?B_0uv?s+g2pK1<-B0o68@!BCqfX7D-oF2Y(J9dU z@%!^Voz^9;t#Df9beYqC6Z1X)Yt{t^{LsA*qzDp{U@J0awcgLxR0(&gNDV3(C8_i( z5*Ag2Re-1?$`kW_^c^siKl@FEn4ZPg-;_AhVSX~mPeR@;YMI2YZqiu(!ZcE3Xo$)QA%l1W)_X=F*3Y0I)L%Z@EOj^EkDwvxhX(`8&tD9%V8XGqF3 zL)lgofGu3C9JtsN$iha81%zUgwGkBcmjeE}=|3|3KjZkx7Ecob1uK z1jlku!ozZJ!pm|#!L!_#@Uh&V@UuLS2(Vm82rLgKg2=sETe>~b&e1-3EtKv^bg;5d z3olTZUyGzW6P*ke(7Mt)5<4pOQC2T#v2=H$o56zG&U8Olp(VUJOMSQsz$*(*Q8v3F$SOeE! zM9kxBcfO#XXI>AZ1yPDD8sby11%{YaEQ~f5! zF}jhw%9AfoJi7Vh(Bs?_xiEI3ICdgWUZR5N?KJ5^!e;f+M|z9`I;+WXT5}Z1EA&wc z2pebqYBj(5BGUhGwh$4E5z!LFZzKKIz=`^&5II?loV0|K`c5=$p(zqv?GRq(;<76aN}+yBHO?_w}E$| zuN{a{#28{X;!eaK#9qv=4|zZ00OBAbBqlM8ID#l5jw0?t977yuWAMsE)0}p1GxlT! zzj+ONw!x2Y1K-Qwz7|^S!97IB0q#UgYseIvxr9!k0QQ-cntA4;vC`$ zd57%3%Oy@KZ_0tYq-jS^$x*otwQn&kbDCXitbnHO&jg2i- z-%P5RD&Yn@z35BJ*i^b%F#D<{Le@#6{%c$zG?;hoQkz%_b1O+bnHH%E6Ib-?ZB;Sm z#61<2q{YRB>xy{YG*?8O9tMVsH0|~5d&V^_*c!N@mp#RHkEx7jt(cBbQ16cPXdYfuw=cMa|mbWd*3K zIFTeRn_aPan(A~1;vSnf6m3Z#!wb`VqR2F#El84@QB6r&>uut*>1xeqv`rRCo|FYL zIBM>Mk{h#|VWFx}?v&z!E9IX#1IrF*Gn3^SQYDPnd>oJ&!`n)?XH`&GvbI9cn! z1)ln-w%2h^AH?{NIeiZ@gU+u)*Pz>St*@D|Zq=`8qYfmXY>0Hmiji?k7-#FY$wJDN z7+}ycTlzB$(s(xCa7kpk(gxW8v}PH63hT^tWef7_Vy=4{G5?--a(EcLBw@^8{Zx)N>#tEEPX|1{8m<<5CM(6}a!tOqt- z-B9g|=3t>v^?j4>L`zurH}=)|hMs+!)ck1)&Fx^1dSAa%nFsUw)}CKgGIEV$T?GSH ze&fZX~mHSmowebX$PLrSl+G?s%mX)&+N>?#rb%|4rtlsWi_*G2O*o6QC4)Sf9MdBWb-!+Xh5HwORpGq zXj#iHCN*g_spS+qW*C}uC1>UUQEsQS98;G4uY*drbk$V!3G9a*&M3F)^y# zTt>=eOjVO`kgjM78cxxMAxcFl4gH#2R;b;-m|KnuOvY`VPS^HgiFR9!u69Sm4%mLW zR4k8|lV(zflSK@AmQ_y~NB8bz!?-k;D&4K^ZdMqt$NQ4@`madxiie)J~aOJy)WLgA`^Hv_-`Wv#mK=j@dUg6`EqggLsqhq8J2H_ zI=}ak&cW?5(Cgth{s!9p!1w6Crx=+iL?(-o$qoL65Ge}756yxwUKFSn18T72xiIof z7}?~16Min9cqX2BdcGi@DT-$b!r7v5))LNc3E^LcJ_~)mP!RfyLcb;Smu8#+Ea3p2 z)-!-AE~W^7!xSOZ8UWQGxvH=U?m8?oX~3sFv0%C?1`5wryiMwcYrt|9+da_gq{X{Ge(RiK%QRqokP8 zn$og{B2Pc|EX>E-^&?o7y|X3~ssYhtxQcA|rmicgkEOcWB}vistX|)O0U%0AXcMLe z^ke8#r;eRIM-wLDfl9A-JJkVDoiLm9xQB_jBd(NURU;_^8$mZ~1Fwy=NN6L%H)w2> zkidzYK1>B>U+Lfxn(r@7&#?EOEcU`asE?BV(tmf#`2`l;*p3=Z+YvA;Y?$KiR zv8U&)?$dZm0}~JD%3iYb4EL(+=Q_Geow3jPSFc``LY?Ivj9~O)ao>dd&IQRgd%`q5 zM$>-@dd_utQ!eKK$(7gt#0zyW>Ur$Pt58UAUo9Qn(i0LpwTlOK5C&4g35l z_o-){Gk7>49x4UQL2-3} zH`a_8rulcV1LU7PhrPcW4V^haes{og=5QldQt4)=2=yQuJ&DbF?nSK=8o34e z|BXLoautrke4J+*NWX%9^&uoMe6ngr--lwI1HtOox?A>xYRm5_>LDc1E<)&j__;9n zOc*Q(!#II0VHhwtXwQXR&xBp>af}nW>RL32r%Q-g^!L*Vah2#-(GZ%GEk%I7PHHN2 zY14A-NKI=qgjN;WgzyKt$R1~rktjT)=aK!-BKr%G1I5VeEd#orY)?fL8eOF3D*)y# ze(8FP^x~Jgi#0o&x%dFV=U!5AHLNQ}HV6B<-tzuYKN2RcnsIG$YWtm3Z@Rae({zmK z+8EPsyTdiQn05#?(%Ga&{ZylcvLSRK!B%FqYlF=kQ(yZ(AdImC2`t7i484cv3z5-c zWYiKyTMezBL{5hba7TVNcW3o*%N%{UvRFOb%FYZNfWR5lhsu+0BeBmH?tOCq6BvU3 z&l%x5;2(crgI#VDQ_fAjn7W?KDB4fjVC+lfLVx>RzGX~1JtKEUq8nXlR=?3YwHR9{ z*M|M8v|Hg4$0wKWJ*Snb!xfl^E9E>s2!+G!tTd~eHE46DkU`yrkH`x z9QM%mb<*mL9m{28Mc3}YJ(M&RS6FG)K4T3fwr?)#UMz#?{Pu_9{nP|Xj>c>4;?RIpfeyp(B*}WQW@DzP9 zo7C~WL&0Z=>OEh3R!4=z?&R$DTGxi%y`*L!q$-?PH3OBCX1BJspI+ywvK^wi)0n=Q zIvv2k4rOJ#&4DwT1gkVLY@u4TBlwyG%NHMC7^YE2x$B^2R=;CMtH@FXLdhOYt|nD2 zxu{`X)C7jVYuI6DH0)|h(O`E+ndu?9?b$RsvOv$M%hye5Nm1-xSzT65EUm&RD_Syz z*{HHk^@ts&hXNy%L-SE1w`invby10s9J0keYakrp`ROhaA6@YJVpICq&|L_pr0B^XuCg$!t*EBh+NfGgRIY{$$M zTuM~flAGe!@(2Y28q!jN(+ASL}^MwvB=k=;>NXB=QBWr{T9 zN3G7L4&qG7_E#iq7%T&+g8)@d1KI?AR<0GmV3k8c0_)q+985>4a=ulWceI|ZDFS8G zM*iMG!8qj|zEL&Rykm!|9K{yWR(YFOZs~El`2t2^*Rqb~a}F?O$LiGPbPS;nXemLH zzn}^I1o4cx;S;(;^U*NAGJR@^TaIdIa%Cu(&8sdy<-pCH_vREh2E)R@07)N zmv$f8{P@Y}lZC?Wx#I3Qiytcu?Rog&qpnBi3qyyBLx(KBzZGX|bb=DdA&rwx?xW-w z#+nA4nQb{F>*)jGw%95s;ugQlS*x>*J($5nsc*>QcRFCY`m)gFJ6a}<$!_8g!^HPZ zlnIjGd+~br&mBN`zz4szF`4W2b(M*m%=Y;D%fwA)JhUG-5jY?2xZK3ghVuJ%l?f7e zC<=(ND$X}R(Ffcr3aGXcX)DpKLYV==Vu zmQ_Vy*dsrH2;D2|)XBAX{Qy=)2kZ3y$`*eBk=bY$*{?*}^XykwaB(^DxH*d)uYb14v{ik|M+t|@WA)D#IchaNU~F#IB8TfAXVqA^`;`4W_hy;6N$(Xe U2gZMW`uWoDS{cbV_RC01E0YkU!Oqfo$53o_ps( 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 diff --git a/pocketoptionapi/__pycache__/api.cpython-39.pyc b/pocketoptionapi/__pycache__/api.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..68af619f2ce05d0c32631f044df1b7a7d976a54a GIT binary patch literal 6718 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 literal 0 HcmV?d00001 diff --git a/pocketoptionapi/__pycache__/constants.cpython-310.pyc b/pocketoptionapi/__pycache__/constants.cpython-310.pyc index 7f59a58a8bf8ff8dbd713ccae2d86df984af2642..8f087724250e5d9d47599d52b0c0028ac8e1ad91 100644 GIT binary patch delta 450 zcmZ9IPfG$p7{+(k*>zKt(g?goHz|{dE>e=Dgn_APR*SH%JELu_&N4Gw*d+o_T_X0< zwNunBy!2W2*p~=8HS0mDfq5C8cb?z-=W+FOIgVqoh`>)aQR}6W@9`B`^d}qgliXP2 zDiSmi3Yr8(C|RNwf*}aTf(Bp&DoE~0FbvhPtSNA=A*7?ea#Y$cR}VE%ELEyEyVsQF zvRQ}*IAb_g2Dx4*p7plo-|8*S{@y9(+O?5+ZjeEZ;0t83cEM%1Z{wjpz!2GO2b-6O zVTW0G$O&x|4=FQ-jIKK)KdS3}#0U~N~Yn2zkGGuHU?d2 z&R^H84N~QadwyxKXH@_Z@TD#-DpNfjA{tk9?f4Gb?6jSVYMo!zo-L*5H1JRLL)y1efO$u3?v zc`z~c;LVfqY`FNZxTAlDC!e<)&=H!vpES?+`9441_V3)6#e^G=4-5EgEvD-F=&!`Q zB$D$b>6`TNGe&KJh#-)VBY+4YPlO=|BPEcL5r`sh!7wrgBgi-;khkFu@-B=b@4*;y z9FoWhNFgU-3V9!EKK%f*t~d3nlMPEovM?8OurHnr`wO|4MS%nQM4IvKX-O~;fJiEb8+jdys0 z;=y50jF?)vrj?gEtG$Z8vANq9*UPH0rY#4>I$h@CEJ;)iy`trJ%!*pk%#~nHo2}fG zlO4>--jp-YtIhmg3nV_!tD|1c+Gd$!m$nXgtqCHRtEQ=|!9GXK-!w`3n=W^9SMCP4 zjT1>X^62VcD!&5fm@7#l_ii94)hU-!B(km>1=Yw0o7FFT{bt!Z68l-RNq=I@$&6^-pgio_$-vSUTL58Q!W5-EhNU zEn4D<@`=@G+bkWTCa>^;<65oQzTMiP_CAimet2Kw?{nNqx41pL>$(lPGw8Y;gBmD& r!ov!Ps1OppdLpkx$Hrt|N)OR(6uJ?0t)ka7(+>vP_X?dC63NhiBkU74 diff --git a/pocketoptionapi/__pycache__/constants.cpython-311.pyc b/pocketoptionapi/__pycache__/constants.cpython-311.pyc index 1a5aec464121cd6750c222ee241c79b109f75810..83015a07ee2705eccdfa6742ab4dce2941e28862 100644 GIT binary patch delta 825 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 Nrn;Z}9|k|8{~K~dp(_9Y diff --git a/pocketoptionapi/__pycache__/constants.cpython-312.pyc b/pocketoptionapi/__pycache__/constants.cpython-312.pyc deleted file mode 100644 index 3d6c6951a427ff4063e64d11250719fd30aa2b4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7322 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 H{D%A$2`Oe; diff --git a/pocketoptionapi/__pycache__/constants.cpython-39.pyc b/pocketoptionapi/__pycache__/constants.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..619aef0e3a87a94292711e78579912df0d66bdb1 GIT binary patch literal 3460 zcmd^>`)?dq6~|}x<@GvAO9=D@#l>loZ5w;zN17&flG&Gc{TOdOv&m-avaI(^l1bJ( z?##Hsi=m}9v_c>X<<*kXR05$E5FjCtKtcjq3J8hEkNYb>?a%yxR0)amy?54ef&YM6 z&F4Jtz2}}8dv0U@{*=Pk1Dz9>or8+ zG)O5LqJ6ZV4$vKRC%umj();NUeSkhlchTK+58X@m(TC{6bU%HBhUo$ND2>ozdXSFL zQ94FxdWasTN9Z_>(immv1dY=KP0|#dq(|u#Jw~VL3{BGvouzYho;1o*j`CEXBF$2X z$}~swv_Olb(-KwaaatyWOsdiax=1y;L>4_kEA%9NjOz4pYS1b*iO8nQbcL>xL)Yj! zwP=mni4+44M2v7iuz%gK!;hey* zaSZ!8%pbt~4e(pwE#Ph7cZ}ZKNO=cZ8WWU&hk!EhFfhk({(uoh;8ox(@O4J-uZU)0 zz6|^kI1PLSI0t+KxRcR)1oIsSMuA0O4A2?QpOBJ)xdc>z-vjJddRc}ujj6s0d>hFV z2s{o<0#m?AzywY)oIfLZ2KXBA7a#|`!sz`BDL;gE2_r0+e?wFQz6s0$uQ7V#Ncj$M z9{4UW13Uqo1y+D_z>~l`4CfZcUV*6r-vcfK5#SAm^C;H%67U%CW#AO>A|t)siH~Sn zWuY@DMBNRVo!E$0t8|i}u%jbctuw$7R(vF9)V(=p3`!Z87sjx=TM@Q zaw^tEiBg8XQc?PZ6uuM>)R*Rk9?O-@vXum7etsf@a#B(XUox*5rMg%=KUbc}Sc5`@ z`Aa4uiNeH`7$>ES6{h4|QieXWB=f7w+%XkwlAf~L%iSfkzT`D+mK$#+SaO1ul2XoG)2d;t8pa^Qm>%W}8Tu;n53MF- z-zVO}RILIDUz7jaz2}Otb)Ih@p9Wj8R8sIUrii0jQ5;rw6e~t4n~y9vRUBG&;#PtN z`C~oQO)M8?%S*bozp9tbLcVU8nprS9+6~`7JvP=@caCrP$J?$KTpe9^N7owObvqdI z-6o4s#~nLYC@;-S9tpfg+h6CbnH%=1j5hI~xqm?)!I#my~uS!-p`gI;y{`9_`$Bbl6?JW;cW3s||m+ z?G87Bz;jkN0({3Fn0{r^CA(E$DC-4nd1YN}-CYkHx6R#IX}WDcXtV==bbYfsRIgvL z1JqHkzlN>iz@w-Ubszsa2W3U0dy>qw+8yNHk-O$}?Eh*R9;|2?9_*It-5+qHxH*wq z(btu26_1$DUePZ`jQ9AtMKQg}U%lN6I-Y^Swy}stsMhp7Bdi|-5MoUIS1zwFO>&8}Hx8*fh-LpDg0}osGaDw_g-=bs5RP3Lz yL&=2jrlTH?Io$y*XO=G%4B`A=b8!1)6*%lE{sCq(8sRtM|Ni%^@~^}*O7h>S2vjBj literal 0 HcmV?d00001 diff --git a/pocketoptionapi/__pycache__/expiration.cpython-310.pyc b/pocketoptionapi/__pycache__/expiration.cpython-310.pyc index 1c2c89cd37f352b89dbd8ebc241cf190d29aa162..70f0d08699710dadf2c8ce899e58f364527226ee 100644 GIT binary patch delta 78 zcmeC->*nLm=jG*M00N~d!;ReRj3y2)RxtsU$r*`7xdBD_S*gh-F|HMfxdl0?@s6b> g`RO_Nc`*g~$=RtT`2{7J`FV*2nK7H)8IQ680Cuq&0ssI2 delta 79 zcmeC?>*3?h=jG*M00D7{joj>vrjGid#i>Qb`em8v`Q?c@*{MbP0r|<F47^eUL diff --git a/pocketoptionapi/__pycache__/expiration.cpython-311.pyc b/pocketoptionapi/__pycache__/expiration.cpython-311.pyc deleted file mode 100644 index c565617bd53e7e7f0164e69f41f8e52ca3c0becc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3569 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 L|9mHoIWqnPbMv#J diff --git a/pocketoptionapi/__pycache__/expiration.cpython-39.pyc b/pocketoptionapi/__pycache__/expiration.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0d183143530914c823bd155db7fb96a1b161d4cc GIT binary patch literal 1793 zcmZ`)&2QT_6elUkqLq(1ZP0j^P6*b6hap(kLxG?eHl!UkAPtHQ7zV?G$BIm<*!n0% zZ%H7Xyla8}3HEM1?@!2oq3ce*^bgo!*n3p!xWOubkMDzgALQ>*Vq+s9@aofX)a%;=m<(Gk7q9c1ZmvC>9`lQhhp zpDL4u@0^ArM6ZPrNxlcsoH#X2Agk)p+Qp@Bi1xwrKaU>o51ySzFN98>>FiWRX7DtF zl!k}jA3gczhe4i2BXFOaI7>wy57b#6Yk|^UeqL{(tD(t;%a9wGGoB)0x(zh4Jj(ES zFkBe6upAfzWtC)3D^{{oCh3UiPl0nJl}tLXSmmVMk{MUJ(tAaB$f~8J(jB?_r_wPl z@?C;!9+JvIjciH3k&IV5Q(C#D3x~%i_uzDc5WWL3jwWLfsxcgxN^&?t6*lEX@#SA> zm|V__Fj6`aX%;>gg^*dOQatiywQ%a7JO`Z!Vz3t~hi{v`+erWw)-E$bHaTJSjh^x?5bUDZ3U^iBJ zwHXt{i`x$mSF(jzg%T3BLB%#?(d=5>g$vS%#W$>O6)MV7S+6B=q_aj?SR1WCaH) z5~Z}Hh*Cr+V3Qd{9y6YVzDIOU=@ih6I0RgNyK1Rex@qNBv$A3*fKvk)ozlnTmk`kD z%zX4VrE^Nj`+HyhDtQI3NY(mKCS|Mipm+W?PRV9mw&#$E4DP`DHDda0lP6{ecE}Pk zT!ReX-iXPkmTeASuw}IE&NKk9hWN}q{TBIkcZizfs09{@feT+b?+bW$T3YtOHE-HF~ z1)siy`*(oU4&bMzLwG#pS?$HCRA+szRU*{>0SdmwYbq{}*}VVv$V-Gg1wLc1_EWiDIA0@m7BGQhW7Tln)w XNhT*_^%Zuf{d<6KzeBmhJ^smmX$QRZ literal 0 HcmV?d00001 diff --git a/pocketoptionapi/__pycache__/global_value.cpython-310.pyc b/pocketoptionapi/__pycache__/global_value.cpython-310.pyc index dd1f37562de55b3de258f2f0155217175af25e03..f096c95947483de3ba96c95f2661cf6276c922f3 100644 GIT binary patch delta 77 zcmZ3-yq1|epO=@50SJ_;3^#I{Fq$~ISj7ZXCTAoTypEYWpO=@50R+S)HgcOVnmX%;7N-^!>z8Gw=a(nuWTzJC2jnMbr?T@od5bDzb=dlLErf~R`wBq(_3F29|bZ{ge7`BGH{!TLRG4YU+OKXI{H(mGjQLGp<#)QgdT zlqL1j5Hk>WfGi*bIUo-xHtH2Dsf(Jahv#NdR3@a)sW~D(wmCMb>k`u^mMC-X;HSV3 z3=xL}a?%_PwZ@Z^RtoE!P1ij8V4zQX*hR3=W=3-*61qB-plu zyv{{&Bl=U12yIgZo@K<{Wf|dt;|ql{i!cnL@r{=8P*%5QOMm5raeZtLsi$|6&%Jm) z^ncfBpI_=;qR>P!JX;?+6#VhnZ~}7SO;@?=cWMO=xnU(Rj7QBM;aH?4Nt)LhGgO%$ z9L-R9kwuNu8LH3aLYSE!p3G1+svXDIYAIAAWjB-~Z9gnVdzDa&@@klkR4r8E%``Cl E0|`)^S^xk5 diff --git a/pocketoptionapi/__pycache__/global_value.cpython-312.pyc b/pocketoptionapi/__pycache__/global_value.cpython-312.pyc deleted file mode 100644 index d11d21a2805a064c493f31c472d918a04e1d3020..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 477 zcmZutO-sW-5Z$!3sj)GrrE2{^@YIXB=uL!zh#vd^@zTq(CZmR~*|3{fdyBuqlRv=U z;w8thr+|Mz@aD-$Xu*R6Z)e^cc(XGfwrvrNgSY6;sS)y7l35tj;(H&9SK^al2?J5{ zjbR;g1M?iBi7*i@#5}?Z$Z%m|^lK*<{kHCo;Z_N61ThU1^+Xtg7lW@mN^yFg#0ldR zo;{wZK!m#YpGwCvh(R~5ug{M4n)d+Si2iZCqadY_esw{pUP`UpT1?H{SxMXZayNDIc{^?9w)0|12hDx~v}c<| diff --git a/pocketoptionapi/__pycache__/global_value.cpython-39.pyc b/pocketoptionapi/__pycache__/global_value.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7e529a8b29c7a5bcbf98f025572c0db496b15f45 GIT binary patch literal 423 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 delta 3976 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 bOa3NL|HV^>yw*ARrtlko2+WHnxLEi`. + `. """ return GetCandles(self) + + @property + def change_symbol(self): + """Property for get Pocket Option websocket change_symbol chanel. + + :returns: The instance of :class:`ChangeSymbol + `. + """ + return ChangeSymbol(self) + + @property + def synced_datetime(self): + try: + if self.time_sync is not None: + self.sync.synchronize(self.time_sync.server_timestamp) + self.sync_datetime = self.sync.get_synced_datetime() + else: + logging.error("timesync no está establecido") + self.sync_datetime = None + except Exception as e: + logging.error(e) + self.sync_datetime = None + + return self.sync_datetime diff --git a/pocketoptionapi/constants.py b/pocketoptionapi/constants.py index 46ae868..cba6738 100644 --- a/pocketoptionapi/constants.py +++ b/pocketoptionapi/constants.py @@ -137,23 +137,25 @@ class REGION: REGIONS = { - "EUROPA": "wss://api-eu.po.market/socket.io/?EIO=4&transport=websocket", - "SEYCHELLES": "wss://api-sc.po.market/socket.io/?EIO=4&transport=websocket", - "HONGKONG": "wss://api-hk.po.market/socket.io/?EIO=4&transport=websocket", - "SERVER1": "wss://api-spb.po.market/socket.io/?EIO=4&transport=websocket", - "FRANCE2": "wss://api-fr2.po.market/socket.io/?EIO=4&transport=websocket", - "UNITED_STATES4": "wss://api-us4.po.market/socket.io/?EIO=4&transport=websocket", - "UNITED_STATES3": "wss://api-us3.po.market/socket.io/?EIO=4&transport=websocket", - "UNITED_STATES2": "wss://api-us2.po.market/socket.io/?EIO=4&transport=websocket", - "UNITED_STATES": "wss://api-us-north.po.market/socket.io/?EIO=4&transport=websocket", - "RUSSIA": "wss://api-msk.po.market/socket.io/?EIO=4&transport=websocket", - "SERVER2": "wss://api-l.po.market/socket.io/?EIO=4&transport=websocket", - "INDIA": "wss://api-in.po.market/socket.io/?EIO=4&transport=websocket", - "FRANCE": "wss://api-fr.po.market/socket.io/?EIO=4&transport=websocket", - "FINLAND": "wss://api-fin.po.market/socket.io/?EIO=4&transport=websocket", - "SERVER3": "wss://api-c.po.market/socket.io/?EIO=4&transport=websocket", - "ASIA": "wss://api-asia.po.market/socket.io/?EIO=4&transport=websocket", - "SERVER4": "wss://api-us-south.po.market/socket.io/?EIO=4&transport=websocket" + # "EUROPA": "wss://api-eu.po.market/socket.io/?EIO=4&transport=websocket", + # "SEYCHELLES": "wss://api-sc.po.market/socket.io/?EIO=4&transport=websocket", + # "HONGKONG": "wss://api-hk.po.market/socket.io/?EIO=4&transport=websocket", + # "SERVER1": "wss://api-spb.po.market/socket.io/?EIO=4&transport=websocket", + # "FRANCE2": "wss://api-fr2.po.market/socket.io/?EIO=4&transport=websocket", + # "UNITED_STATES4": "wss://api-us4.po.market/socket.io/?EIO=4&transport=websocket", + # "UNITED_STATES3": "wss://api-us3.po.market/socket.io/?EIO=4&transport=websocket", + # "UNITED_STATES2": "wss://api-us2.po.market/socket.io/?EIO=4&transport=websocket", + "DEMO": "wss://demo-api-eu.po.market/socket.io/?EIO=4&transport=websocket", + # "DEMO_2": "wss://try-demo-eu.po.market/socket.io/?EIO=4&transport=websocket", + # "UNITED_STATES": "wss://api-us-north.po.market/socket.io/?EIO=4&transport=websocket", + # "RUSSIA": "wss://api-msk.po.market/socket.io/?EIO=4&transport=websocket", + # "SERVER2": "wss://api-l.po.market/socket.io/?EIO=4&transport=websocket", + # "INDIA": "wss://api-in.po.market/socket.io/?EIO=4&transport=websocket", + # "FRANCE": "wss://api-fr.po.market/socket.io/?EIO=4&transport=websocket", + # "FINLAND": "wss://api-fin.po.market/socket.io/?EIO=4&transport=websocket", + # "SERVER3": "wss://api-c.po.market/socket.io/?EIO=4&transport=websocket", + # "ASIA": "wss://api-asia.po.market/socket.io/?EIO=4&transport=websocket", + # "SERVER4": "wss://api-us-south.po.market/socket.io/?EIO=4&transport=websocket" } def __getattr__(self, key): diff --git a/pocketoptionapi/prueba_temp.py b/pocketoptionapi/prueba_temp.py new file mode 100644 index 0000000..1141261 --- /dev/null +++ b/pocketoptionapi/prueba_temp.py @@ -0,0 +1,9 @@ +import pandas as pd + + +df_1 = pd.read_csv('datos_completos_AUDNZD_otc.csv') +df_2 = pd.read_csv('datos_completos_AUDNZD_otc_2.csv') + +df_full = pd.concat([df_1, df_2], axis=0) +print(df_full.shape) +df_full.to_csv('datos_full_AUDNZD_otc.csv', index=False) diff --git a/pocketoptionapi/stable_api.py b/pocketoptionapi/stable_api.py index 27fb47d..9801c86 100644 --- a/pocketoptionapi/stable_api.py +++ b/pocketoptionapi/stable_api.py @@ -16,8 +16,6 @@ from collections import deque # from pocketoptionapi.expiration import get_expiration_time, get_remaning_time import pandas as pd -from pocketoptionapi.ws.chanels.get_balances import * -from pocketoptionapi.ws.client import WebsocketClient # Obtener la zona horaria local del sistema como una cadena en el formato IANA local_zone_name = get_localzone() @@ -36,7 +34,7 @@ def get_balance(): class PocketOption: - __version__ = "6.8.9.1" + __version__ = "1.0.0" def __init__(self, ssid): self.size = [1, 5, 10, 15, 30, 60, 120, 300, 600, 900, 1800, @@ -67,10 +65,10 @@ def __init__(self, ssid): # -------------------------------------------------------------------------- def get_server_timestamp(self): - return self.api.timesync.server_timestamp + return self.api.time_sync.server_timestamp def get_server_datetime(self): - return self.api.timesync.server_datetime + return self.api.time_sync.server_datetime def set_session(self, header, cookie): self.SESSION_HEADER = header @@ -104,8 +102,6 @@ def connect(self): return False return True - async def reconect(self): - await WebsocketClient(self).reconnect() @staticmethod def check_connect(): # True/False @@ -119,46 +115,74 @@ def check_connect(): # wait for timestamp getting # self.update_ACTIVES_OPCODE() - def get_balance(self): + @staticmethod + def get_balance(): if global_value.balance_updated: return global_value.balance else: return None - def buy(self, amount, ACTIVES, ACTION, expirations): + def buy(self, amount, active, action, expirations): self.api.buy_multi_option = {} self.api.buy_successful = None req_id = "buy" + try: - self.api.buy_multi_option[req_id]["id"] = None - except: - pass + if req_id not in self.api.buy_multi_option: + self.api.buy_multi_option[req_id] = {"id": None} + else: + self.api.buy_multi_option[req_id]["id"] = None + except Exception as e: + logging.error(f"Error initializing buy_multi_option: {e}") + return False, None + global_value.order_data = None global_value.result = None - self.api.buyv3( - amount, ACTIVES, ACTION, expirations, req_id) + + self.api.buyv3(amount, active, action, expirations, req_id) + start_t = time.time() - while global_value.result is None or global_value.order_data is None: + while True: + if global_value.result is not None and global_value.order_data is not None: + break if time.time() - start_t >= 5: - logging.error(global_value.order_data["error"]) + if isinstance(global_value.order_data, dict) and "error" in global_value.order_data: + logging.error(global_value.order_data["error"]) + else: + logging.error("Unknown error occurred during buy operation") return False, None + time.sleep(0.1) # Sleep for a short period to prevent busy-waiting - return global_value.result, global_value.order_data["id"] + return global_value.result, global_value.order_data.get("id", None) def check_win(self, id_number): """Return amount of deals and win/lose status.""" + start_t = time.time() + order_info = None + while True: try: order_info = self.get_async_order(id_number) - if order_info["id"] is not None: + if order_info and "id" in order_info and order_info["id"] is not None: break except: pass + # except Exception as e: + # logging.error(f"Error retrieving order info: {e}") + + if time.time() - start_t >= 120: + logging.error("Timeout: Could not retrieve order info in time.") + return None, "unknown" - # Determina el estado de win/lose basado en el profit. - status = "win" if order_info["profit"] > 0 else "lose" - return order_info["profit"], status + time.sleep(0.1) # Sleep for a short period to prevent busy-waiting + + if order_info and "profit" in order_info: + status = "win" if order_info["profit"] > 0 else "lose" + return order_info["profit"], status + else: + logging.error("Invalid order info retrieved.") + return None, "unknown" @staticmethod def last_time(timestamp, period): @@ -167,48 +191,73 @@ def last_time(timestamp, period): timestamp_redondeado = (timestamp // period) * period return int(timestamp_redondeado) - def get_candles(self, ACTIVES, period, end_time, count=9000, count_request=1): + def get_candles(self, active, period, start_time=None, count=6000, count_request=1): """ Realiza múltiples peticiones para obtener datos históricos de velas y los procesa. Devuelve un Dataframe ordenado de menor a mayor por la columna 'time'. - :param ACTIVES: El activo para el cual obtener las velas. + :param active: El activo para el cual obtener las velas. :param period: El intervalo de tiempo de cada vela en segundos. - :param count: El número de segundos a obtener en cada petición, max: 9000 = 150 datos. - :param end_time: El tiempo final para la última vela. + :param count: El número de segundos a obtener en cada petición, max: 9000 = 150 datos de 1 min. + :param start_time: El tiempo final para la última vela. :param count_request: El número de peticiones para obtener más datos históricos. """ + if start_time is None: + time_sync = self.get_server_timestamp() + time_red = self.last_time(time_sync, period) + else: + time_red = start_time + time_sync = self.get_server_timestamp() - time_sync = self.get_server_timestamp() - period - time_red = self.last_time(time_sync, period) - print(time_red) - data_temp = [] - self.api.candles = data_temp - - if self.api.historyNew is not None: - data_temp.extend(self.process_data_history(self.api.historyNew, period)) + all_candles = [] - for i in range(count_request): + for _ in range(count_request): self.api.history_data = None + while True: try: - self.api.getcandles(ACTIVES, period, count, time_red) + # Enviar la petición de velas + self.api.getcandles(active, 30, count, time_red) + + # Esperar hasta que history_data no sea None while self.check_connect and self.api.history_data is None: - pass + time.sleep(0.1) + if self.api.history_data is not None: - data_temp.extend(self.api.history_data) + all_candles.extend(self.api.history_data) break - except: - logging.error('**error** get_candles need reconnect') - # self.connect() + except Exception as e: + logging.error(e) + # Puedes agregar lógica de reconexión aquí si es necesario + + # Ordenar all_candles por 'index' para asegurar que estén en el orden correcto + all_candles = sorted(all_candles, key=lambda x: x["time"]) + + # Asegurarse de que se han recibido velas antes de actualizar time_red + if all_candles: + # Usar el tiempo de la última vela recibida para la próxima petición + time_red = all_candles[0]["time"] - # Ajusta el tiempo de inicio para la próxima petición - time_red -= count + # Crear un DataFrame con todas las velas obtenidas + df_candles = pd.DataFrame(all_candles) - return self.api.candles + # Ordenar por la columna 'time' de menor a mayor + df_candles = df_candles.sort_values(by='time').reset_index(drop=True) + df_candles['time'] = pd.to_datetime(df_candles['time'], unit='s') + df_candles.set_index('time', inplace=True) + df_candles.index = df_candles.index.floor('1s') - def process_data_history(self, data, period): + # Resamplear los datos en intervalos de 30 segundos y calcular open, high, low, close + df_resampled = df_candles['price'].resample(f'{period}s').ohlc() + + # Resetear el índice para que 'time' vuelva a ser una columna + df_resampled.reset_index(inplace=True) + + return df_resampled + + @staticmethod + def process_data_history(data, period): """ Este método toma datos históricos, los convierte en un DataFrame de pandas, redondea los tiempos al minuto más cercano, y calcula los valores OHLC (Open, High, Low, Close) para cada minuto. Luego, convierte el resultado en un diccionario @@ -222,8 +271,8 @@ def process_data_history(self, data, period): df = pd.DataFrame(data['history'], columns=['timestamp', 'price']) # Convertir a datetime y redondear al minuto df['datetime'] = pd.to_datetime(df['timestamp'], unit='s', utc=True) - df['datetime'] = df['datetime'].dt.tz_convert(str(local_zone_name)) - df['minute_rounded'] = df['datetime'].dt.floor(f'{period/60}T') + # df['datetime'] = df['datetime'].dt.tz_convert(str(local_zone_name)) + df['minute_rounded'] = df['datetime'].dt.floor(f'{period / 60}min') # Calcular OHLC ohlcv = df.groupby('minute_rounded').agg( @@ -236,6 +285,8 @@ def process_data_history(self, data, period): ohlcv['time'] = ohlcv['minute_rounded'].apply(lambda x: int(x.timestamp())) ohlcv = ohlcv.drop(columns='minute_rounded') + ohlcv = ohlcv.iloc[:-1] + ohlcv_dict = ohlcv.to_dict(orient='records') return ohlcv_dict @@ -265,10 +316,15 @@ def process_candle(candle_data, period): data_df.sort_values(by='time', ascending=True, inplace=True) data_df.drop_duplicates(subset='time', keep="first", inplace=True) data_df.reset_index(drop=True, inplace=True) - data_df.fillna(method='ffill', inplace=True) + data_df.ffill(inplace=True) data_df.drop(columns='symbol_id', inplace=True) # Verificación opcional: Comprueba si las diferencias son todas de 60 segundos (excepto el primer valor NaN) diferencias = data_df['time'].diff() diff = (diferencias[1:] == period).all() return data_df, diff + def change_symbol(self, active, period): + return self.api.change_symbol(active, period) + + def sync_datetime(self): + return self.api.synced_datetime diff --git a/pocketoptionapi/v2/__init__.py b/pocketoptionapi/v2/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/pocketoptionapi/v2/__pycache__/__init__.cpython-312.pyc b/pocketoptionapi/v2/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index ebac979d2e50fef344ae24b274cf2d89ec6183f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 161 zcmX@j%ge<81W)D`q=D$iAOanHW&w&!XQ*V*Wb|9fP{ah}eFmxd<)9y0oLW?@UzVAk zU!Itgom!+Hke{5LTH;?&l9`|97~rX20Osd|`H2OY`ejD?@$s2?nI-Y@dIgogIBatB cQ%ZAE?TT1|1~LM1F^KVznURsPh#ANN0PcS%xc~qF diff --git a/pocketoptionapi/v2/pocketoptionapi2/.gitignore b/pocketoptionapi/v2/pocketoptionapi2/.gitignore deleted file mode 100644 index a3b9b4f..0000000 --- a/pocketoptionapi/v2/pocketoptionapi2/.gitignore +++ /dev/null @@ -1,6 +0,0 @@ -*.py[cod] -build/ -dist/ -*.egg-info/ -.vscode/ -/.vs \ No newline at end of file diff --git a/pocketoptionapi/v2/pocketoptionapi2/ACTIVE_CODE.txt b/pocketoptionapi/v2/pocketoptionapi2/ACTIVE_CODE.txt deleted file mode 100644 index aaa55ad..0000000 --- a/pocketoptionapi/v2/pocketoptionapi2/ACTIVE_CODE.txt +++ /dev/null @@ -1,146 +0,0 @@ -2018/5/7 -EURUSD 1 -EURGBP 2 -GBPJPY 3 -EURJPY 4 -GBPUSD 5 -USDJPY 6 -AUDCAD 7 -NZDUSD 8 -USDRUB 10 -AMAZON 31 -APPLE 32 -BAIDU 33 -CISCO 34 -FACEBOOK 35 -GOOGLE 36 -INTEL 37 -MSFT 38 -YAHOO 40 -AIG 41 -CITI 45 -COKE 46 -GE 48 -GM 49 -GS 50 -JPM 51 -MCDON 52 -MORSTAN 53 -NIKE 54 -USDCHF 72 -XAUUSD 74 -EURUSD-OTC 76 -EURGBP-OTC 77 -USDCHF-OTC 78 -NZDUSD-OTC 80 -GBPUSD-OTC 81 -AUDCAD-OTC 86 -ALIBABA 87 -YANDEX 95 -AUDUSD 99 -USDCAD 100 -AUDJPY 101 -GBPCAD 102 -GBPCHF 103 -GBPAUD 104 -EURCAD 105 -CHFJPY 106 -CADCHF 107 -EURAUD 108 -TWITTER 113 -FERRARI 133 -TESLA 167 -USDNOK 168 -EURNZD 212 -USDSEK 219 -USDTRY 220 -MMM:US 252 -ABT:US 253 -ABBV:US 254 -ACN:US 255 -ATVI:US 256 -ADBE:US 258 -AAP:US 259 -AA:US 269 -MO:US 278 -AMGN:US 290 -T:US 303 -BAC:US 313 -BBY:US 320 -BA:US 324 -BMY:US 328 -CAT:US 338 -CVX:US 349 -CL:US 365 -CMCSA:US 366 -COP:US 370 -COST:US 374 -CVS:US 379 -DHR:US 381 -DAL:US 386 -EBAY:US 407 -XOM:US 429 -FDX:US 434 -GILD:US 460 -HAS:US 471 -HON:US 480 -IBM:US 491 -KHC:US 513 -LMT:US 528 -MA:US 542 -MDT:US 548 -MU:US 553 -NFLX:US 569 -NEE:US 575 -NVDA:US 586 -PYPL:US 597 -PFE:US 603 -PM:US 605 -PG:US 617 -QCOM:US 626 -RTN:US 630 -CRM:US 645 -SLB:US 647 -SBUX:US 666 -SYK:US 670 -TWX:US 692 -VZ:US 723 -V:US 726 -WMT:US 729 -WBA:US 730 -WFC:US 733 -SNAP 756 -DUBAI 757 -TA25 758 -AMD 760 -ALGN 761 -ANSS 762 -DRE 772 -IDXX 775 -RMD 781 -SU 783 -TFX 784 -TMUS 785 -QQQ 796 -SPY 808 -BTCUSD 816 -XRPUSD 817 -ETHUSD 818 -LTCUSD 819 -DSHUSD 821 -BCHUSD 824 -OMGUSD 825 -ZECUSD 826 -ETCUSD 829 -BTGUSD 837 -QTMUSD 845 -TRXUSD 858 -EOSUSD 864 -USDINR 865 -USDPLN 866 -USDBRL 867 -USDZAR 868 -DBX 889 -SPOT 891 -USDSGD 892 -USDHKD 893 \ No newline at end of file diff --git a/pocketoptionapi/v2/pocketoptionapi2/__init__.py b/pocketoptionapi/v2/pocketoptionapi2/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/pocketoptionapi/v2/pocketoptionapi2/docs/image/icon/favicon.ico b/pocketoptionapi/v2/pocketoptionapi2/docs/image/icon/favicon.ico deleted file mode 100644 index 43ce842f41ff6379cdb4a1bff1cfa88db0fa1e5f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1150 zcmd6mze~eV5XUcC+D^5K)OL}MPW~FiK~QSJU->gcy9nYUxVX9MCiZU-hmt?0At?os zf~Zk6mI%W6y~L+!Ub;Eh@afCD-uLd^y(^J{r&uI>SE-R9DiP5PfC-k!j^$r|T(jbJ z%*r09#(}+redeP{LJ3TRN!iB>fe)wf>F$(!PHoJ3Jfv1|MLp;Oa0gmoO~pvjGPLZh z7Pvh}++HBQ-zP>4hECz*y#Yqj^v?Q3q@9IcKn(BrM;pcnn&g98QZKpfrEH{AdaT_I zoZ)gX2J%~)erpQ34NWh#yq|0OeyTo}H$4CM{_RZDYrS{3hvc6p?q6tnJ%3n#PCI{h zQ?DQW)9ROcoVxV?w+Hqj@$-q6`vv`5N!B0kWA|_4?j8=b`+tRYS7r$Qx4=(=d-R<8 zxb<{I*O(m-{xUPN-hgE_f38_BKr6F80OmiheBhr4@*l`5+h48BM8YYc92f=0kmzEU I-{GfpU+tu=<^TWy diff --git a/pocketoptionapi/v2/pocketoptionapi2/docs/index.md b/pocketoptionapi/v2/pocketoptionapi2/docs/index.md deleted file mode 100644 index 47d5117..0000000 --- a/pocketoptionapi/v2/pocketoptionapi2/docs/index.md +++ /dev/null @@ -1,201 +0,0 @@ -# Get start - -## document version - -7/5 - -2.2 fix connect stable - -6/13 -fix auth - - -12/5 - -1.6 -fix websocket connect - - -10/29 -1.5 -fix updateAssets - -7/17 -1.1 add get_payment - -7/3 - -add more function - -6/23 -v0.1 -!!!Start New!! - -## Debug Mode ON -```python -import logging -logging.basicConfig(level=logging.DEBUG,format='%(asctime)s %(message)s') -``` -## check_win & buy sample - -```python -from pocketoptionapi.stable_api import PocketOption -ssid=r"""42["auth",{"session":"a:4:{s:10:\"session_id\";s:32:\"123123123123\";s:10:\"ip_address\";s:12:\"2.111.11.5\";s:10:\"user_agent\";s:104:\"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36\";s:13:\"last_activity\";i:123232;}1232321213","isDemo":0,"uid":"123232132"}]""" -account=PocketOption(ssid) -check_connect,message=account.connect() -if check_connect: - account.change_balance("PRACTICE")#"REAL" - asset="EURUSD" - amount=1 - dir="call"#"call"/"put" - duration=30#sec - print("Balance: ",account.get_balance()) - buy_info=account.buy(asset,amount,dir,duration) - #need this to close the connect - print("----Trade----") - print("Get: ",account.check_win(buy_info["id"])) - print("----Trade----") - print("Balance: ",account.get_balance()) - #need close ping server thread - account.close() -``` - -## Login - -PockOption only support ssid login, because GOOGLE reCAPTCHA - -```python -from pocketoptionapi.stable_api import PocketOption -ssid=r"""42["auth",{"session":"a:4:{s:10:\"session_id\";s:32:\"123123123\";s:10:\"ip_address\";s:12:\"1.2.3.4\";s:10:\"user_agent\";s:123:\"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36\";s:13:\"last_activity\";i:123;}123","isDemo":1,"uid":"123"}]""" -account=PocketOption(ssid) -check,message=account.connect() -account.close() -``` - -## Get Balance - - -```python -from pocketoptionapi.stable_api import PocketOption -ssid=r"""42["auth",{"session":"a:4:{s:10:\"session_id\";s:32:\"123123123\";s:10:\"ip_address\";s:12:\"1.2.3.4\";s:10:\"user_agent\";s:123:\"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36\";s:13:\"last_activity\";i:123;}123","isDemo":1,"uid":"123"}]""" -account=PocketOption(ssid) -check,message=account.connect() -account.change_balance("PRACTICE") -balance=account.get_balance() -print(balance) -account.close() -``` - - - -## Buy - -```python -from pocketoptionapi.stable_api import PocketOption - -ssid=r"""42["auth",{"session":"a:4:{s:10:\"session_id\";s:32:\"123123123\";s:10:\"ip_address\";s:12:\"1.2.3.4\";s:10:\"user_agent\";s:123:\"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36\";s:13:\"last_activity\";i:123;}123","isDemo":1,"uid":"123"}]""" -account=PocketOption(ssid) -check,message=account.connect() -if check: - account.change_balance("PRACTICE") - asset="EURUSD" - amount=1 - dir="call"#"call"/"put" - duration=60#sec - print(account.buy(asset,amount,dir,duration)) - account.close() -``` - -## sell_option - -```python -from pocketoptionapi.stable_api import PocketOption -ssid=r"""42["auth",{"session":"a:4:{s:10:\"session_id\";s:32:\"123123123\";s:10:\"ip_address\";s:12:\"1.2.3.4\";s:10:\"user_agent\";s:123:\"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36\";s:13:\"last_activity\";i:123;}123","isDemo":1,"uid":"123"}]""" -account=PocketOption(ssid) -check_connect,message=account.connect() -if check_connect: - account.change_balance("PRACTICE")#"REAL" - asset="EURUSD" - amount=1 - dir="call"#"call"/"put" - duration=120#sec - print("Balance: ",account.get_balance()) - buy_info=account.buy(asset,amount,dir,duration) - #need this to close the connect - account.sell_option(buy_info["id"]) - account.close() -``` - - -## get candle - -```python -from pocketoptionapi.stable_api import PocketOption -ssid=r"""42["auth",{"session":"a:4:{s:10:\"session_id\";s:32:\"123123123\";s:10:\"ip_address\";s:12:\"1.2.3.4\";s:10:\"user_agent\";s:123:\"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36\";s:13:\"last_activity\";i:123;}123","isDemo":1,"uid":"123"}]""" -account=PocketOption(ssid) -check_connect,message=account.connect() -import time -if check_connect: - asset="EURUSD" - _time=int(time.time())#the candle end of time - offset=120#how much sec want to get _time-offset --->your candle <---_time - period=60#candle size in sec - print("You will get the candle from: "+str(_time-offset)+" to: "+str(_time)) - print("------\n") - candle=account.get_candle(asset,_time,offset,period) - for c in candle["data"]: - print(c) - account.close() -``` - -## check_asset_open - -```python -from pocketoptionapi.stable_api import PocketOption -ssid=r"""42["auth",{"session":"a:4:{s:10:\"session_id\";s:32:\"123123123\";s:10:\"ip_address\";s:12:\"1.2.3.4\";s:10:\"user_agent\";s:123:\"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36\";s:13:\"last_activity\";i:123;}123","isDemo":1,"uid":"123"}]""" -account=PocketOption(ssid) -check_connect,message=account.connect() -import time -if check_connect: - print("Check Asset Open") - for i in account.get_all_asset_name(): - print(i,account.check_asset_open(i)) - account.close() -``` - -## GET realtime candle - - -```python -from pocketoptionapi.stable_api import PocketOption -ssid=r"""42["auth",{"session":"a:4:{s:10:\"session_id\";s:32:\"123123123\";s:10:\"ip_address\";s:12:\"1.2.3.4\";s:10:\"user_agent\";s:123:\"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36\";s:13:\"last_activity\";i:123;}123","isDemo":1,"uid":"123"}]""" -account=PocketOption(ssid) -check_connect,message=account.connect() -import time -if check_connect: - asset="NZDUSD_otc" - list_size=10#this is setting how much Quote you want to save - account.start_candles_stream("NZDUSD_otc",list_size) - while True: - if len(account.get_realtime_candles("NZDUSD_otc"))==list_size: - break - print(account.get_realtime_candles("NZDUSD_otc")) - account.close() -``` - -## get_payment - -```python -from pocketoptionapi.stable_api import PocketOption -ssid=r"""42["auth",{"session":"a:4:{s:10:\"session_id\";s:32:\"123123123\";s:10:\"ip_address\";s:12:\"1.2.3.4\";s:10:\"user_agent\";s:123:\"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36\";s:13:\"last_activity\";i:123;}123","isDemo":1,"uid":"123"}]""" -account=PocketOption(ssid) -check_connect,message=account.connect() -if check_connect: - - all_data=account.get_payment() - for asset_name in all_data: - asset_data=all_data[asset_name] - print(asset_name,asset_data["payment"],asset_data["open"]) - -account.close() -``` \ No newline at end of file diff --git a/pocketoptionapi/v2/pocketoptionapi2/docs/javascripts/.Rhistory b/pocketoptionapi/v2/pocketoptionapi2/docs/javascripts/.Rhistory deleted file mode 100644 index e69de29..0000000 diff --git a/pocketoptionapi/v2/pocketoptionapi2/docs/javascripts/extra.js b/pocketoptionapi/v2/pocketoptionapi2/docs/javascripts/extra.js deleted file mode 100644 index b1f4222..0000000 --- a/pocketoptionapi/v2/pocketoptionapi2/docs/javascripts/extra.js +++ /dev/null @@ -1,27 +0,0 @@ -window.MathJax = { - jax: ["input/TeX","input/MathML","input/AsciiMath","output/SVG"], - extensions: ["tex2jax.js","mml2jax.js","asciimath2jax.js","MathMenu.js","MathZoom.js","AssistiveMML.js", "a11y/accessibility-menu.js"], - TeX: { - extensions: ["AMSmath.js","AMSsymbols.js","noErrors.js","noUndefined.js"] - }, - tex2jax: { - inlineMath: [ ["\\(","\\)"] ], - displayMath: [ ["\\[","\\]"] ] - }, - TeX: { - TagSide: "right", - TagIndent: ".8em", - MultLineWidth: "85%", - equationNumbers: { - autoNumber: "AMS", - }, - unicode: { - fonts: "STIXGeneral,'Arial Unicode MS'" - } - }, - displayAlign: "left", - showProcessingMessages: false, - messageStyle: "none" -}; - - diff --git a/pocketoptionapi/v2/pocketoptionapi2/instrument.txt b/pocketoptionapi/v2/pocketoptionapi2/instrument.txt deleted file mode 100644 index 920723d..0000000 --- a/pocketoptionapi/v2/pocketoptionapi2/instrument.txt +++ /dev/null @@ -1,318 +0,0 @@ -Name: NZD/SEK instrument_id: "NZDSEK" instrument_type: "forex" -Name: NZD/USD instrument_id: "NZDUSD" instrument_type: "forex" -Name: CAD/TRY instrument_id: "CADTRY" instrument_type: "forex" -Name: EUR/CHF instrument_id: "EURCHF" instrument_type: "forex" -Name: USD/THB instrument_id: "USDTHB" instrument_type: "forex" -Name: EUR/TRY instrument_id: "EURTRY" instrument_type: "forex" -Name: GBP/AUD instrument_id: "GBPAUD" instrument_type: "forex" -Name: AUD/USD instrument_id: "AUDUSD" instrument_type: "forex" -Name: EUR/MXN instrument_id: "EURMXN" instrument_type: "forex" -Name: USD/CHF instrument_id: "USDCHF" instrument_type: "forex" -Name: NOK/DKK instrument_id: "NOKDKK" instrument_type: "forex" -Name: EUR/NOK instrument_id: "EURNOK" instrument_type: "forex" -Name: SEK/JPY instrument_id: "SEKJPY" instrument_type: "forex" -Name: CAD/NOK instrument_id: "CADNOK" instrument_type: "forex" -Name: NOK/SEK instrument_id: "NOKSEK" instrument_type: "forex" -Name: GBP/HUF instrument_id: "GBPHUF" instrument_type: "forex" -Name: GBP/SGD instrument_id: "GBPSGD" instrument_type: "forex" -Name: AUD/NZD instrument_id: "AUDNZD" instrument_type: "forex" -Name: GBP/JPY instrument_id: "GBPJPY" instrument_type: "forex" -Name: CHF/SEK instrument_id: "CHFSEK" instrument_type: "forex" -Name: AUD/NOK instrument_id: "AUDNOK" instrument_type: "forex" -Name: GBP/NOK instrument_id: "GBPNOK" instrument_type: "forex" -Name: AUD/DKK instrument_id: "AUDDKK" instrument_type: "forex" -Name: EUR/AUD instrument_id: "EURAUD" instrument_type: "forex" -Name: AUD/CHF instrument_id: "AUDCHF" instrument_type: "forex" -Name: GBP/CHF instrument_id: "GBPCHF" instrument_type: "forex" -Name: AUD/CAD instrument_id: "AUDCAD" instrument_type: "forex" -Name: CHF/DKK instrument_id: "CHFDKK" instrument_type: "forex" -Name: AUD/TRY instrument_id: "AUDTRY" instrument_type: "forex" -Name: NZD/CHF instrument_id: "NZDCHF" instrument_type: "forex" -Name: USD/SEK instrument_id: "USDSEK" instrument_type: "forex" -Name: GBP/NZD instrument_id: "GBPNZD" instrument_type: "forex" -Name: EUR/DKK instrument_id: "EURDKK" instrument_type: "forex" -Name: NZD/DKK instrument_id: "NZDDKK" instrument_type: "forex" -Name: CAD/SGD instrument_id: "CADSGD" instrument_type: "forex" -Name: EUR/GBP instrument_id: "EURGBP" instrument_type: "forex" -Name: EUR/CAD instrument_id: "EURCAD" instrument_type: "forex" -Name: USD/CZK instrument_id: "USDCZK" instrument_type: "forex" -Name: AUD/MXN instrument_id: "AUDMXN" instrument_type: "forex" -Name: EUR/NZD instrument_id: "EURNZD" instrument_type: "forex" -Name: GBP/PLN instrument_id: "GBPPLN" instrument_type: "forex" -Name: NZD/NOK instrument_id: "NZDNOK" instrument_type: "forex" -Name: AUD/SGD instrument_id: "AUDSGD" instrument_type: "forex" -Name: GBP/SEK instrument_id: "GBPSEK" instrument_type: "forex" -Name: NZD/CAD instrument_id: "NZDCAD" instrument_type: "forex" -Name: NZD/MXN instrument_id: "NZDMXN" instrument_type: "forex" -Name: NZD/TRY instrument_id: "NZDTRY" instrument_type: "forex" -Name: CHF/SGD instrument_id: "CHFSGD" instrument_type: "forex" -Name: USD/MXN instrument_id: "USDMXN" instrument_type: "forex" -Name: EUR/HUF instrument_id: "EURHUF" instrument_type: "forex" -Name: GBP/CAD instrument_id: "GBPCAD" instrument_type: "forex" -Name: USD/TRY instrument_id: "USDTRY" instrument_type: "forex" -Name: USD/JPY instrument_id: "USDJPY" instrument_type: "forex" -Name: EUR/USD instrument_id: "EURUSD" instrument_type: "forex" -Name: AUD/SEK instrument_id: "AUDSEK" instrument_type: "forex" -Name: CHF/NOK instrument_id: "CHFNOK" instrument_type: "forex" -Name: USD/PLN instrument_id: "USDPLN" instrument_type: "forex" -Name: USD/HUF instrument_id: "USDHUF" instrument_type: "forex" -Name: CHF/JPY instrument_id: "CHFJPY" instrument_type: "forex" -Name: GBP/ILS instrument_id: "GBPILS" instrument_type: "forex" -Name: NZD/JPY instrument_id: "NZDJPY" instrument_type: "forex" -Name: CHF/TRY instrument_id: "CHFTRY" instrument_type: "forex" -Name: CAD/JPY instrument_id: "CADJPY" instrument_type: "forex" -Name: USD/RUB instrument_id: "USDRUB" instrument_type: "forex" -Name: SGD/JPY instrument_id: "SGDJPY" instrument_type: "forex" -Name: GBP/USD instrument_id: "GBPUSD" instrument_type: "forex" -Name: CAD/PLN instrument_id: "CADPLN" instrument_type: "forex" -Name: DKK/SGD instrument_id: "DKKSGD" instrument_type: "forex" -Name: NZD/SGD instrument_id: "NZDSGD" instrument_type: "forex" -Name: AUD/JPY instrument_id: "AUDJPY" instrument_type: "forex" -Name: NOK/JPY instrument_id: "NOKJPY" instrument_type: "forex" -Name: PLN/SEK instrument_id: "PLNSEK" instrument_type: "forex" -Name: USD/SGD instrument_id: "USDSGD" instrument_type: "forex" -Name: GBP/MXN instrument_id: "GBPMXN" instrument_type: "forex" -Name: USD/CAD instrument_id: "USDCAD" instrument_type: "forex" -Name: SEK/DKK instrument_id: "SEKDKK" instrument_type: "forex" -Name: DKK/PLN instrument_id: "DKKPLN" instrument_type: "forex" -Name: CAD/MXN instrument_id: "CADMXN" instrument_type: "forex" -Name: GBP/TRY instrument_id: "GBPTRY" instrument_type: "forex" -Name: EUR/SGD instrument_id: "EURSGD" instrument_type: "forex" -Name: NZD/ZAR instrument_id: "NZDZAR" instrument_type: "forex" -Name: EUR/CZK instrument_id: "EURCZK" instrument_type: "forex" -Name: EUR/JPY instrument_id: "EURJPY" instrument_type: "forex" -Name: CAD/CHF instrument_id: "CADCHF" instrument_type: "forex" -Name: USD/INR instrument_id: "USDINR" instrument_type: "forex" -Name: USD/BRL instrument_id: "USDBRL" instrument_type: "forex" -Name: USD/NOK instrument_id: "USDNOK" instrument_type: "forex" -Name: USD/DKK instrument_id: "USDDKK" instrument_type: "forex" -Name: China Large-Cap ETF instrument_id: "FXI" instrument_type: "cfd" -Name: IBM Corporation instrument_id: "IBM:US" instrument_type: "cfd" -Name: IDEXX Laboratories instrument_id: "IDXX" instrument_type: "cfd" -Name: Siemens instrument_id: "SIED-CHIX" instrument_type: "cfd" -Name: Roche instrument_id: "ROGZ-CHIX" instrument_type: "cfd" -Name: Airbus SE instrument_id: "AIRP-CHIX" instrument_type: "cfd" -Name: AbbVie instrument_id: "ABBV:US" instrument_type: "cfd" -Name: Concho Resources instrument_id: "CXO:US" instrument_type: "cfd" -Name: Verizon instrument_id: "VZ:US" instrument_type: "cfd" -Name: Unilever instrument_id: "ULVRL-CHIX" instrument_type: "cfd" -Name: Lockheed Martin instrument_id: "LMT:US" instrument_type: "cfd" -Name: NextEra Energy instrument_id: "NEE:US" instrument_type: "cfd" -Name: US 100 instrument_id: "USNDAQ100" instrument_type: "cfd" -Name: Entergy instrument_id: "ETR:US" instrument_type: "cfd" -Name: QQQ Trust, Series 1 instrument_id: "QQQ" instrument_type: "cfd" -Name: DTE Energy instrument_id: "DTE:US" instrument_type: "cfd" -Name: Tesco instrument_id: "TSCOL-CHIX" instrument_type: "cfd" -Name: First Solar instrument_id: "FSLR:US" instrument_type: "cfd" -Name: Pfizer instrument_id: "PFE:US" instrument_type: "cfd" -Name: Eastman Chemical instrument_id: "EMN:US" instrument_type: "cfd" -Name: JP Morgan Chase instrument_id: "JPM" instrument_type: "cfd" -Name: Google instrument_id: "GOOGLE" instrument_type: "cfd" -Name: Fastenal instrument_id: "FAST:US" instrument_type: "cfd" -Name: HSBC Holdings PLC instrument_id: "HSBAL-CHIX" instrument_type: "cfd" -Name: DaVita instrument_id: "DVA:US" instrument_type: "cfd" -Name: Utilities SPDR instrument_id: "XLU" instrument_type: "cfd" -Name: Federal Realty instrument_id: "FRT:US" instrument_type: "cfd" -Name: Commerzbank instrument_id: "CBKD-CHIX" instrument_type: "cfd" -Name: Amgen instrument_id: "AMGN:US" instrument_type: "cfd" -Name: Silver instrument_id: "XAGUSD" instrument_type: "cfd" -Name: Resmed Inc instrument_id: "RMD" instrument_type: "cfd" -Name: Equifax instrument_id: "EFX:US" instrument_type: "cfd" -Name: Digital Realty Trust instrument_id: "DLR:US" instrument_type: "cfd" -Name: Adobe Systems instrument_id: "ADBE:US" instrument_type: "cfd" -Name: Autodesk instrument_id: "ADSK:US" instrument_type: "cfd" -Name: Barclays instrument_id: "BARCL-CHIX" instrument_type: "cfd" -Name: Spotify instrument_id: "SPOT" instrument_type: "cfd" -Name: Standard Chartered instrument_id: "STANL-CHIX" instrument_type: "cfd" -Name: Alibaba instrument_id: "ALIBABA" instrument_type: "cfd" -Name: Freeport-McMoRan instrument_id: "FCX:US" instrument_type: "cfd" -Name: Delta Air Lines instrument_id: "DAL:US" instrument_type: "cfd" -Name: Materials Select Sector SPDR instrument_id: "XLB" instrument_type: "cfd" -Name: Amazon instrument_id: "AMAZON" instrument_type: "cfd" -Name: Semiconductor ETF instrument_id: "SMH" instrument_type: "cfd" -Name: S&P 500 ETF instrument_id: "SPY" instrument_type: "cfd" -Name: Caterpillar instrument_id: "CAT:US" instrument_type: "cfd" -Name: US 30 instrument_id: "US30" instrument_type: "cfd" -Name: ConocoPhillips instrument_id: "COP:US" instrument_type: "cfd" -Name: Flowserve instrument_id: "FLS:US" instrument_type: "cfd" -Name: Goldman Sachs instrument_id: "GS" instrument_type: "cfd" -Name: AU 200 instrument_id: "AUS200" instrument_type: "cfd" -Name: Edison instrument_id: "EIX:US" instrument_type: "cfd" -Name: Crude Oil WTI instrument_id: "USOUSD" instrument_type: "cfd" -Name: MSCI Mexico ETF instrument_id: "EWW" instrument_type: "cfd" -Name: General Electric instrument_id: "GE" instrument_type: "cfd" -Name: Micron Technology instrument_id: "MU:US" instrument_type: "cfd" -Name: Telefónica instrument_id: "TEFE-CHIX" instrument_type: "cfd" -Name: Procter & Gamble instrument_id: "PG:US" instrument_type: "cfd" -Name: Accenture instrument_id: "ACN:US" instrument_type: "cfd" -Name: Costco instrument_id: "COST:US" instrument_type: "cfd" -Name: Medtronic instrument_id: "MDT:US" instrument_type: "cfd" -Name: MSCI Emerging Markets ETF instrument_id: "EEM" instrument_type: "cfd" -Name: Expeditors instrument_id: "EXPD:US" instrument_type: "cfd" -Name: Facebook instrument_id: "FACEBOOK" instrument_type: "cfd" -Name: Tesla instrument_id: "TESLA" instrument_type: "cfd" -Name: Merck instrument_id: "MRKD-CHIX" instrument_type: "cfd" -Name: FirstEnergy instrument_id: "FE:US" instrument_type: "cfd" -Name: Altria instrument_id: "MO:US" instrument_type: "cfd" -Name: Core MSCI Emerging Markets instrument_id: "IEMG" instrument_type: "cfd" -Name: AS Roma instrument_id: "ASRM" instrument_type: "cfd" -Name: Bayer instrument_id: "BAYND-CHIX" instrument_type: "cfd" -Name: Continental instrument_id: "COND-CHIX" instrument_type: "cfd" -Name: Qualcomm instrument_id: "QCOM:US" instrument_type: "cfd" -Name: Vodafone Group PLC instrument_id: "VODL-CHIX" instrument_type: "cfd" -Name: Visa instrument_id: "V:US" instrument_type: "cfd" -Name: AT&T instrument_id: "T:US" instrument_type: "cfd" -Name: FedEx instrument_id: "FDX:US" instrument_type: "cfd" -Name: Frontier Communications instrument_id: "FTR:US" instrument_type: "cfd" -Name: Teleflex Inc instrument_id: "TFX" instrument_type: "cfd" -Name: Twitter Inc instrument_id: "TWITTER" instrument_type: "cfd" -Name: Royal Bank of Scotland instrument_id: "RBSL-CHIX" instrument_type: "cfd" -Name: S&P Oil & Gas Explor & Product instrument_id: "XOP" instrument_type: "cfd" -Name: Deutsche Post instrument_id: "DPWD-CHIX" instrument_type: "cfd" -Name: General Motors instrument_id: "GM" instrument_type: "cfd" -Name: US 500 instrument_id: "USSPX500" instrument_type: "cfd" -Name: Bank of America instrument_id: "BAC:US" instrument_type: "cfd" -Name: Nike instrument_id: "NIKE" instrument_type: "cfd" -Name: Darden Restaurants instrument_id: "DRI:US" instrument_type: "cfd" -Name: UBS instrument_id: "UBSGZ-CHIX" instrument_type: "cfd" -Name: Discover Financial Services instrument_id: "DFS:US" instrument_type: "cfd" -Name: Emerson Electric instrument_id: "EMR:US" instrument_type: "cfd" -Name: Advance Auto Parts instrument_id: "AAP:US" instrument_type: "cfd" -Name: Duke Realty Corp instrument_id: "DRE" instrument_type: "cfd" -Name: Rolls-Royce instrument_id: "RRL-CHIX" instrument_type: "cfd" -Name: Wells Fargo instrument_id: "WFC:US" instrument_type: "cfd" -Name: CitiGroup instrument_id: "CITI" instrument_type: "cfd" -Name: Cisco Systems instrument_id: "CISCO" instrument_type: "cfd" -Name: Apple instrument_id: "APPLE" instrument_type: "cfd" -Name: MSCI Japan ETF instrument_id: "EWJ" instrument_type: "cfd" -Name: F5 Networks instrument_id: "FFIV:US" instrument_type: "cfd" -Name: Heinz instrument_id: "KHC:US" instrument_type: "cfd" -Name: British American Tobacco instrument_id: "BATSL-CHIX" instrument_type: "cfd" -Name: Nvidia instrument_id: "NVDA:US" instrument_type: "cfd" -Name: E.ON instrument_id: "EOAND-CHIX" instrument_type: "cfd" -Name: Citrix Systems instrument_id: "CTXS:US" instrument_type: "cfd" -Name: UK 100 instrument_id: "UK100" instrument_type: "cfd" -Name: BBVA instrument_id: "BBVAE-CHIX" instrument_type: "cfd" -Name: Philip Morris Int. instrument_id: "PM:US" instrument_type: "cfd" -Name: Consolidated Edison instrument_id: "ED:US" instrument_type: "cfd" -Name: Netflix instrument_id: "NFLX:US" instrument_type: "cfd" -Name: Allianz instrument_id: "ALVD-CHIX" instrument_type: "cfd" -Name: FR 40 instrument_id: "FRANCE40" instrument_type: "cfd" -Name: Schlumberger instrument_id: "SLB:US" instrument_type: "cfd" -Name: Platinum instrument_id: "XPTUSD" instrument_type: "cfd" -Name: Consumer Discretionary SPDR instrument_id: "XLY" instrument_type: "cfd" -Name: BHP Billiton instrument_id: "BLTL-CHIX" instrument_type: "cfd" -Name: Credit Suisse instrument_id: "CSGNZ-CHIX" instrument_type: "cfd" -Name: Activision Blizzard instrument_id: "ATVI:US" instrument_type: "cfd" -Name: Hasbro instrument_id: "HAS:US" instrument_type: "cfd" -Name: Bristol-Myers Squibb instrument_id: "BMY:US" instrument_type: "cfd" -Name: Equity Residential instrument_id: "EQR:US" instrument_type: "cfd" -Name: Suncor Energy Inc. instrument_id: "SU" instrument_type: "cfd" -Name: Cintas instrument_id: "CTAS:US" instrument_type: "cfd" -Name: Morgan Stanley instrument_id: "MORSTAN" instrument_type: "cfd" -Name: Devon Energy instrument_id: "DVN:US" instrument_type: "cfd" -Name: Dun & Bradstreet instrument_id: "DNB:US" instrument_type: "cfd" -Name: S&P Metals & Mining ETF instrument_id: "XME" instrument_type: "cfd" -Name: SP 35 instrument_id: "SPAIN35" instrument_type: "cfd" -Name: Boeing instrument_id: "BA:US" instrument_type: "cfd" -Name: Ferrari instrument_id: "FERRARI" instrument_type: "cfd" -Name: US Real Estate ETF instrument_id: "IYR" instrument_type: "cfd" -Name: Dover instrument_id: "DOV:US" instrument_type: "cfd" -Name: Honeywell instrument_id: "HON:US" instrument_type: "cfd" -Name: Marks & Spencer instrument_id: "MKSL-CHIX" instrument_type: "cfd" -Name: BMW instrument_id: "BMWD-CHIX" instrument_type: "cfd" -Name: HK 50 instrument_id: "HONGKONG50" instrument_type: "cfd" -Name: PayPal instrument_id: "PYPL:US" instrument_type: "cfd" -Name: Alcoa instrument_id: "AA:US" instrument_type: "cfd" -Name: CVS Health instrument_id: "CVS:US" instrument_type: "cfd" -Name: iShares Russell 2000 ETF instrument_id: "IWM" instrument_type: "cfd" -Name: Walgreens Boots All. instrument_id: "WBA:US" instrument_type: "cfd" -Name: ANSYS instrument_id: "ANSS" instrument_type: "cfd" -Name: Energy SPDR instrument_id: "XLE" instrument_type: "cfd" -Name: Wheat instrument_id: "W1" instrument_type: "cfd" -Name: Ecolab instrument_id: "ECL:US" instrument_type: "cfd" -Name: Starbucks instrument_id: "SBUX:US" instrument_type: "cfd" -Name: Heineken Holding NV instrument_id: "HEIOA-CHIX" instrument_type: "cfd" -Name: Quest Diagnostics instrument_id: "DGX:US" instrument_type: "cfd" -Name: easyJet instrument_id: "EZJL-CHIX" instrument_type: "cfd" -Name: JP 225 instrument_id: "JAPAN225" instrument_type: "cfd" -Name: AMD instrument_id: "AMD" instrument_type: "cfd" -Name: Colgate-Palmolive instrument_id: "CL:US" instrument_type: "cfd" -Name: Salesforce.com instrument_id: "CRM:US" instrument_type: "cfd" -Name: Technology SPDR instrument_id: "XLK" instrument_type: "cfd" -Name: Dropbox instrument_id: "DBX" instrument_type: "cfd" -Name: Fidelity National Information Services instrument_id: "FIS:US" instrument_type: "cfd" -Name: 3M Company instrument_id: "MMM:US" instrument_type: "cfd" -Name: Daimler instrument_id: "DAID-CHIX" instrument_type: "cfd" -Name: Baidu instrument_id: "BAIDU" instrument_type: "cfd" -Name: Wal-Mart Stores instrument_id: "WMT:US" instrument_type: "cfd" -Name: Exxon Mobil instrument_id: "XOM:US" instrument_type: "cfd" -Name: Raytheon instrument_id: "RTN:US" instrument_type: "cfd" -Name: eBay instrument_id: "EBAY:US" instrument_type: "cfd" -Name: Discovery – Class A instrument_id: "DISCA:US" instrument_type: "cfd" -Name: Oil Services ETF instrument_id: "OIH" instrument_type: "cfd" -Name: Microsoft instrument_id: "MSFT" instrument_type: "cfd" -Name: Chevron instrument_id: "CVX:US" instrument_type: "cfd" -Name: Lloyds Banking Group PLC instrument_id: "LLOYL-CHIX" instrument_type: "cfd" -Name: 20+ Year Treasury Bond ETF instrument_id: "TLT" instrument_type: "cfd" -Name: Adidas instrument_id: "ADSD-CHIX" instrument_type: "cfd" -Name: Comcast – Class A instrument_id: "CMCSA:US" instrument_type: "cfd" -Name: Danaher instrument_id: "DHR:US" instrument_type: "cfd" -Name: Align Technology instrument_id: "ALGN" instrument_type: "cfd" -Name: Volkswagen instrument_id: "VOW3D-CHIX" instrument_type: "cfd" -Name: Fiserv instrument_id: "FISV:US" instrument_type: "cfd" -Name: L'Oreal instrument_id: "ORP-CHIX" instrument_type: "cfd" -Name: D. R. Horton instrument_id: "DHI:US" instrument_type: "cfd" -Name: Deutsche Telekom instrument_id: "DTED-CHIX" instrument_type: "cfd" -Name: Gold Miners ETF instrument_id: "GDX" instrument_type: "cfd" -Name: Gold instrument_id: "XAUUSD" instrument_type: "cfd" -Name: Extra Space Storage instrument_id: "EXR:US" instrument_type: "cfd" -Name: Manchester United instrument_id: "MANU" instrument_type: "cfd" -Name: Banco Santander instrument_id: "SANE-CHIX" instrument_type: "cfd" -Name: Abbott Labs instrument_id: "ABT:US" instrument_type: "cfd" -Name: FMC Corporation instrument_id: "FMC:US" instrument_type: "cfd" -Name: Snapchat instrument_id: "SNAP" instrument_type: "cfd" -Name: ThyssenKrupp instrument_id: "TKAD-CHIX" instrument_type: "cfd" -Name: GER 30 instrument_id: "GERMANY30" instrument_type: "cfd" -Name: Fortune Brands Home & Security instrument_id: "FBHS:US" instrument_type: "cfd" -Name: Crude Oil Brent instrument_id: "UKOUSD" instrument_type: "cfd" -Name: Coca Cola instrument_id: "COKE" instrument_type: "cfd" -Name: Essex Property Trust instrument_id: "ESS:US" instrument_type: "cfd" -Name: Wm Morrison Supermarkets instrument_id: "MRWL-CHIX" instrument_type: "cfd" -Name: Gilead Sciences instrument_id: "GILD:US" instrument_type: "cfd" -Name: MasterCard instrument_id: "MA:US" instrument_type: "cfd" -Name: Nestlé instrument_id: "NESNZ-CHIX" instrument_type: "cfd" -Name: CenturyLink instrument_id: "CTL:US" instrument_type: "cfd" -Name: Deutsche Bank instrument_id: "DBKD-CHIX" instrument_type: "cfd" -Name: T-Mobile US, Inc. instrument_id: "TMUS" instrument_type: "cfd" -Name: McDonald's instrument_id: "MCDON" instrument_type: "cfd" -Name: Diamond Offshore Drilling instrument_id: "DO:US" instrument_type: "cfd" -Name: Intel instrument_id: "INTEL" instrument_type: "cfd" -Name: Fifth Third Bank instrument_id: "FITB:US" instrument_type: "cfd" -Name: Best Buy instrument_id: "BBY:US" instrument_type: "cfd" -Name: EQT Corporation instrument_id: "EQT:US" instrument_type: "cfd" -Name: BP PLC instrument_id: "BPL-CHIX" instrument_type: "cfd" -Name: E-Trade instrument_id: "ETFC:US" instrument_type: "cfd" -Name: Stryker instrument_id: "SYK:US" instrument_type: "cfd" -Name: Dow Jones Industrial Average ETF instrument_id: "DIA" instrument_type: "cfd" -Name: NEM ×20 instrument_id: "XEMUSD-L" instrument_type: "crypto" -Name: Ethereum instrument_id: "ETHUSD" instrument_type: "crypto" -Name: EOS ×20 instrument_id: "EOSUSD-L" instrument_type: "crypto" -Name: Qtum instrument_id: "QTMUSD" instrument_type: "crypto" -Name: EOS instrument_id: "EOSUSD" instrument_type: "crypto" -Name: Bitcoin Cash ×20 instrument_id: "BCHUSD-L" instrument_type: "crypto" -Name: Bitcoin instrument_id: "BTCUSD" instrument_type: "crypto" -Name: TRON instrument_id: "TRXUSD" instrument_type: "crypto" -Name: Ripple ×20 instrument_id: "XRPUSD-L" instrument_type: "crypto" -Name: Stellar ×20 instrument_id: "XLMUSD-L" instrument_type: "crypto" -Name: Ethereum ×50 instrument_id: "ETHUSD-L" instrument_type: "crypto" -Name: ZCash instrument_id: "ZECUSD" instrument_type: "crypto" -Name: Litecoin instrument_id: "LTCUSD" instrument_type: "crypto" -Name: Bitcoin Cash instrument_id: "BCHUSD" instrument_type: "crypto" -Name: Bitcoin ×100 instrument_id: "BTCUSD-L" instrument_type: "crypto" -Name: OmiseGo instrument_id: "OMGUSD" instrument_type: "crypto" -Name: TRON ×50 instrument_id: "TRXUSD-L" instrument_type: "crypto" -Name: Cardano ×20 instrument_id: "ADAUSD-L" instrument_type: "crypto" -Name: Dash instrument_id: "DSHUSD" instrument_type: "crypto" -Name: Litecoin ×20 instrument_id: "LTCUSD-L" instrument_type: "crypto" -Name: Ripple instrument_id: "XRPUSD" instrument_type: "crypto" \ No newline at end of file diff --git a/pocketoptionapi/v2/pocketoptionapi2/mkdocs.yml b/pocketoptionapi/v2/pocketoptionapi2/mkdocs.yml deleted file mode 100644 index 6e7d409..0000000 --- a/pocketoptionapi/v2/pocketoptionapi2/mkdocs.yml +++ /dev/null @@ -1,81 +0,0 @@ -site_name: pocketoptionapi document -#repo_name: 'THU-DBLAB/IRBRL' -#repo_url: 'https://github.com/THU-DBLAB/IRBRL' -#site_url: 'https://thu-dblab.github.io/IRBRL/' -edit_uri: "" # this code say do not view edit on page -extra: - # disqus: 'lu-yi-hsun' - search: - language: 'jp' - #-tokenizer: '[\a\-\.]+' - #social: - # - type: 'github' - # link: 'https://github.com/Lu-Yi-Hsun/' - # - type: 'facebook' - # link: 'https://www.facebook.com/profile.php?id=100001559307331' - #- type: 'twitter' - #link: 'https://twitter.com/squidfunk' - # - type: 'linkedin' - # link: 'https://linkedin.com/in/squidfunk' - social: - - icon: fontawesome/brands/github - link: https://github.com/Lu-Yi-Hsun/ - - icon: fontawesome/brands/facebook - link: https://www.facebook.com/profile.php?id=100001559307331 - - - -theme: - language: "en" - name: 'material' #readthedocs/readthedocs - palette: - primary: 'indigo' - accent: 'Blue Grey' - feature: - tabs: false - font: - text: 'Roboto' - code: 'Roboto Mono' - favicon: image/icon/favicon.ico - - -# Extensions -markdown_extensions: - - footnotes - - markdown.extensions.admonition -# - markdown.extensions.codehilite: - # guess_lang: false - # linenums: true - - markdown.extensions.def_list - - markdown.extensions.footnotes - - markdown.extensions.meta - - markdown.extensions.toc: - permalink: true - - pymdownx.superfences: - preserve_tabs: true - - pymdownx.arithmatex - - pymdownx.betterem: - smart_enable: all - - pymdownx.caret - - pymdownx.critic - - pymdownx.details - - - pymdownx.inlinehilite - - pymdownx.magiclink - - pymdownx.mark - - pymdownx.smartsymbols - - pymdownx.superfences - - pymdownx.tasklist: - custom_checkbox: true - - pymdownx.tilde - - pymdownx.emoji: - emoji_index: !!python/name:materialx.emoji.twemoji - emoji_generator: !!python/name:materialx.emoji.to_svg - -extra_javascript: - - 'javascripts/extra.js' - - 'https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js' - -nav: - - Get start: index.md - \ No newline at end of file diff --git a/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/__init__.py b/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/__init__.py deleted file mode 100644 index bbe6873..0000000 --- a/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/__init__.py +++ /dev/null @@ -1,16 +0,0 @@ - -import logging - -def _prepare_logging(): - - logger = logging.getLogger(__name__) - #https://github.com/Lu-Yi-Hsun/pocketoptionapi_private/issues/1 - #try to fix this problem - #logger.setLevel(logging.DEBUG) - logger.addHandler(logging.NullHandler()) - - websocket_logger = logging.getLogger("websocket") - websocket_logger.setLevel(logging.DEBUG) - websocket_logger.addHandler(logging.NullHandler()) - -_prepare_logging() diff --git a/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/api.py b/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/api.py deleted file mode 100644 index 27ecd6e..0000000 --- a/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/api.py +++ /dev/null @@ -1,347 +0,0 @@ - -import time -import json -import logging -import threading -import requests -import ssl -import atexit -import tempfile -from des import DesKey -import base64 -from collections import deque -import sqlite3 -from pocketoptionapi.http.login import Login - -from pocketoptionapi.http.logout import Logout - -from pocketoptionapi.ws.client import WebsocketClient -from pocketoptionapi.ws.chanels.subscribe import * -from pocketoptionapi.ws.chanels.unsubscribe import * - -from pocketoptionapi.ws.chanels.auth import * -from pocketoptionapi.ws.chanels.ping_server import * -from pocketoptionapi.ws.chanels.buy import * -from pocketoptionapi.ws.chanels.candle import * -from pocketoptionapi.ws.chanels.get_balance import * -from pocketoptionapi.ws.chanels.get_asset_data import * - -import pocketoptionapi.global_value as global_value - -import collections -from collections import defaultdict - - - -# InsecureRequestWarning: Unverified HTTPS request is being made. -# Adding certificate verification is strongly advised. -# See: https://urllib3.readthedocs.org/en/latest/security.html -requests.packages.urllib3.disable_warnings() # pylint: disable=no-member - -def nested_dict(n, type): - if n == 1: - return defaultdict(type) - else: - return defaultdict(lambda: nested_dict(n-1, type)) - -class pocketoptionapi(object): - - def __init__(self, wss, header=None,proxies=None,set_ssid=None,auto_logout=True,_2FA_TOKEN=None): - - self.server_timestamp={} - self.real_time_canlde=nested_dict(2, dict) - self.real_time_quote={} - self.raw_e98={} - self.request_data={} - self.buy_data={} - self.check_win_end={} - self.check_win_refund_data={} - self.check_win_close_data={} - self.sub_uid={} - self.buy_info={} - self.header=header - self.wss_url = wss - self.websocket_client = None - self.session = requests.Session() - self.session.verify = False - self.session.trust_env = False - - self.getcandle_data={} - self.proxies = proxies - self._2FA_TOKEN=_2FA_TOKEN - # is used to determine if a buyOrder was set or failed. If - # it is None, there had been no buy order yet or just send. - # If it is false, the last failed - # If it is true, the last buy order was successful - self.buy_successful = None - self.object_id=None - self.set_ssid=set_ssid - self.auto_logout=auto_logout - self.realtime_price={} - self.updateAssets_data=None - - self.auto_tmp_session={} - self.async_name="" - - self.conn = sqlite3.connect(tempfile.gettempdir()+"/.pocketoptionapi") - - - self.c = self.conn.cursor() - self.c.execute('''create table if not exists session (email CHAR(100) PRIMARY KEY ,session CHAR(200));''') - self.conn.commit() - - #self._input_session("sdsss","twwt") - - - def _get_session(self,email): - cursor = self.c.execute("SELECT session from session Where email='"+email+"';") - data=cursor.fetchall() - if len(data)==0: - return None - else: - return data[0][0] - - - def _input_session(self,email,session): - try: - self.c.execute("INSERT INTO session (email,session) VALUES ('"+email+"','"+session+"' );") - except: - self.c.execute("UPDATE session set session = '"+session+"' where email='"+email+"' ") - self.conn.commit() - - def send_http_request(self, url, method, data=None, params=None, headers=None,cookies=None): # pylint: disable=too-many-arguments - - logger = logging.getLogger(__name__) - - logger.debug(method+": "+url+" headers: "+str(self.session.headers)+" cookies: "+str(self.session.cookies.get_dict())) - - - response = self.session.request(method=method, - url=url, - data=data, - params=params, - headers=headers, - proxies=self.proxies, - cookies=cookies) - logger.debug(response) - logger.debug(response.text) - logger.debug(response.headers) - logger.debug(response.cookies) - - - return response - - @property - def websocket(self): - - return self.websocket_client.wss - - def send_websocket_request(self,data,no_force_send=True): - if global_value.check_websocket_if_connect[self.object_id]==1: - logger = logging.getLogger(__name__) - data=data.replace("\\\\","\\") - data=data.replace("'","\"") - if no_force_send==False: - self.websocket.send(data) - else: - global_value.ssl_Mutex[self.object_id].acquire() - self.websocket.send(data) - global_value.ssl_Mutex[self.object_id].release() - logger.debug(data) - - def init_ansyc_data(self): - get=[{"t":2,"e":98,"uuid":"KDOJ6MMIERN26ZDIRV7","d":[22,20,21,26]}] - - self.send_websocket_request(get) - - def get_server_time(self,req_id:str=""): - get=[{"t":2,"e":90,"uuid":req_id}] - - self.send_websocket_request(get) - - - @property - def subscribe_realtime_candle(self): - - return changeSymbol(self) - - @property - def unsubscribe_realtime_candle(self): - return unsubfor(self) - - - @property - def logout(self): - - return Logout(self) - @property - def Auth_Mode(self): - return auth_mode(self) - @property - def login(self): - - return Login(self) - @property - def ping_to_server(self): - return Ping_To_Server(self) - @property - def TWO_FA(self): - return _2FA(self) - - @property - def Get_Balance(self): - - return get_balance(self) - @property - def Get_Asset_Data(self): - - return get_asset_data(self) - - @property - def ssid(self): - - return Ssid(self) - - - - @property - def getcandles(self): - - return loadHistoryPeriod(self) - - - - @property - def buy(self): - return buy_binary(self) - - @property - def sell_option(self): - return cancelOrder(self) - - - def set_session(self,cookies,headers): - - self.session.headers.update(headers) - - self.session.cookies.clear_session_cookies() - requests.utils.add_dict_to_cookiejar(self.session.cookies, cookies) - def init_global_value(self,object_id): - global_value.ssl_Mutex[object_id]=threading.Lock() - global_value.check_websocket_if_connect[object_id]=None - # try fix ssl.SSLEOFError: EOF occurred in violation of protocol (_ssl.c:2361) - - #if false websocket can sent self.websocket.send(data) - #else can not sent self.websocket.send(data) - - if object_id not in global_value.SSID: - global_value.SSID[object_id]=self.set_ssid - - global_value.check_websocket_if_error[object_id]=False - global_value.websocket_error_reason[object_id]=None - #start account is demo - global_value.account_mode_isDemo[object_id]=1 - - global_value.balance_id[object_id]=0 - global_value.check_auth_finish[object_id]=False - global_value.balance[object_id]=nested_dict(2,dict) - global_value.req_mutex[object_id]=threading.Lock() - global_value.req_id[object_id]=1 - global_value.auth_send_count[object_id]=0 - global_value.real_balance[object_id]=None - global_value.practice_balance[object_id]=None - - - def del_init_global_value(self,object_id): - del global_value.check_websocket_if_connect[object_id] - del global_value.SSID[object_id] - del global_value.check_websocket_if_error[object_id] - del global_value.websocket_error_reason[object_id] - del global_value.balance_id[object_id] - del global_value.req_mutex[object_id] - del global_value.req_id[object_id] - del global_value.balance[object_id] - def start_websocket(self): - - self.websocket_client = WebsocketClient(self) - try: - self.del_init_global_value(self.object_id) - except: - pass - # update self.object_id - self.object_id=id(self.websocket_client.wss) - self.init_global_value(self.object_id) - - try: - import re - p = '(?:http.*://)?(?P[^:/ ]+).?(?P[0-9]*).*' - - m = re.search(p,self.proxies["http"]) - http_proxy_host=m.group('host') # 'www.abc.com' - http_proxy_port=m.group('port') # '123' - except: - http_proxy_host=None - http_proxy_port=None - - self.websocket_thread = threading.Thread(target=self.websocket.run_forever,kwargs={'sslopt': { - "check_hostname": False, "cert_reqs": ssl.CERT_NONE, "ca_certs": "cacert.pem"},"http_proxy_host":http_proxy_host,"http_proxy_port":http_proxy_port,"suppress_origin":True}) # for fix pyinstall error: cafile, capath and cadata cannot be all omitted - self.websocket_thread.daemon = True - self.websocket_thread.start() - - start_time=time.time() - while True: - - if global_value.check_websocket_if_error[self.object_id]: - return False,global_value.websocket_error_reason[self.object_id] - if global_value.check_websocket_if_connect[self.object_id] == 0 : - global_value.websocket_error_reason[self.object_id]="Websocket connection closed." - return False,global_value.websocket_error_reason[self.object_id] - elif global_value.check_websocket_if_connect[self.object_id] == 1: - return True,None - if time.time()-start_time>global_value.wait_connect_sec: - global_value.websocket_error_reason[self.object_id]="Connect Error" - return False,global_value.websocket_error_reason[self.object_id] - - - - pass - def get_ssid(self): - response=None - response = self.login(self.username, self.password,self._2FA_TOKEN) # - if "session" in response.cookies: - self._input_session(self.username,response.cookies["session"]) - return response - - def connect(self): - - try: - self.logout() - except: - pass - if self.auto_logout: - atexit.register(self.logout) - - check_websocket,websocket_reason=self.start_websocket() - if check_websocket==False: - return check_websocket,websocket_reason - #set ssis cookie - - - return True,None - - def close(self): - self.websocket.close() - self.websocket_thread.join() - - def websocket_alive(self): - return self.websocket_thread.is_alive() - - @property - def Get_User_Profile_Client(self): - return Get_user_profile_client(self) - @property - def Request_Leaderboard_Userinfo_Deals_Client(self): - return Request_leaderboard_userinfo_deals_client(self) - @property - def Get_Users_Availability(self): - return Get_users_availability(self) diff --git a/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/constants.py b/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/constants.py deleted file mode 100644 index 92022af..0000000 --- a/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/constants.py +++ /dev/null @@ -1,7 +0,0 @@ -"""Module for IQ Option API constants.""" -#~~~need to update~~~ -ACTIVES ={'EURUSD': 1, 'EURGBP': 2, 'GBPJPY': 3, 'EURJPY': 4, 'GBPUSD': 5, 'USDJPY': 6, 'AUDCAD': 7, 'NZDUSD': 8, 'USDRUB': 10, 'AMAZON': 31, 'APPLE': 32, 'BAIDU': 33, 'CISCO': 34, 'FACEBOOK': 35, 'GOOGLE': 36, 'INTEL': 37, 'MSFT': 38, 'YAHOO': 40, 'AIG': 41, 'CITI': 45, 'COKE': 46, 'GE': 48, 'GM': 49, 'GS': 50, 'JPM': 51, 'MCDON': 52, 'MORSTAN': 53, 'NIKE': 54, 'USDCHF': 72, 'XAUUSD': 74, 'XAGUSD': 75, 'EURUSD-OTC': 76, 'EURGBP-OTC': 77, 'USDCHF-OTC': 78, 'EURJPY-OTC': 79, 'NZDUSD-OTC': 80, 'GBPUSD-OTC': 81, 'GBPJPY-OTC': 84, 'USDJPY-OTC': 85, 'AUDCAD-OTC': 86, 'ALIBABA': 87, 'YANDEX': 95, 'AUDUSD': 99, 'USDCAD': 100, 'AUDJPY': 101, 'GBPCAD': 102, 'GBPCHF': 103, 'GBPAUD': 104, 'EURCAD': 105, 'CHFJPY': 106, 'CADCHF': 107, 'EURAUD': 108, 'TWITTER': 113, 'FERRARI': 133, 'TESLA': 167, 'USDNOK': 168, 'EURNZD': 212, 'USDSEK': 219, 'USDTRY': 220, 'MMM:US': 252, 'ABT:US': 253, 'ABBV:US': 254, 'ACN:US': 255, 'ATVI:US': 256, 'ADBE:US': 258, 'AAP:US': 259, 'AA:US': 269, 'AGN:US': 272, 'MO:US': 278, 'AMGN:US': 290, 'T:US': 303, 'ADSK:US': 304, 'BAC:US': 313, 'BBY:US': 320, 'BA:US': 324, 'BMY:US': 328, 'CAT:US': 338, 'CTL:US': 344, 'CVX:US': 349, 'CTAS:US': 356, 'CTXS:US': 360, 'CL:US': 365, 'CMCSA:US': 366, 'CXO:US': 369, 'COP:US': 370, 'ED:US': 371, 'COST:US': 374, 'CVS:US': 379, 'DHI:US': 380, 'DHR:US': 381, 'DRI:US': 382, 'DVA:US': 383, 'DAL:US': 386, 'DVN:US': 388, 'DO:US': 389, 'DLR:US': 390, 'DFS:US': 391, 'DISCA:US': 392, 'DOV:US': 397, 'DTE:US': 400, 'DNB:US': 403, 'ETFC:US': 404, 'EMN:US': 405, 'EBAY:US': 407, 'ECL:US': 408, 'EIX:US': 409, 'EMR:US': 413, 'ETR:US': 415, 'EQT:US': 417, 'EFX:US': 418, 'EQR:US': 420, 'ESS:US': 421, 'EXPD:US': 426, 'EXR:US': 428, 'XOM:US': 429, 'FFIV:US': 430, 'FAST:US': 432, 'FRT:US': 433, 'FDX:US': 434, 'FIS:US': 435, 'FITB:US': 436, 'FSLR:US': 437, 'FE:US': 438, 'FISV:US': 439, 'FLS:US': 441, 'FMC:US': 443, 'FBHS:US': 448, 'FCX:US': 450, 'FTR:US': 451, 'GILD:US': 460, 'HAS:US': 471, 'HON:US': 480, 'IBM:US': 491, 'KHC:US': 513, 'LMT:US': 528, 'MA:US': 542, 'MDT:US': 548, 'MU:US': 553, 'NFLX:US': 569, 'NEE:US': 575, 'NVDA:US': 586, 'PYPL:US': 597, 'PFE:US': 603, 'PM:US': 605, 'PG:US': 617, 'QCOM:US': 626, 'DGX:US': 628, 'RTN:US': 630, 'CRM:US': 645, 'SLB:US': 647, 'SBUX:US': 666, 'SYK:US': 670, 'DIS:US': 689, 'TWX:US': 692, 'VZ:US': 723, 'V:US': 726, 'WMT:US': 729, 'WBA:US': 730, 'WFC:US': 733, 'SNAP': 756, 'DUBAI': 757, 'TA25': 758, 'AMD': 760, 'ALGN': 761, 'ANSS': 762, 'DRE': 772, 'IDXX': 775, 'RMD': 781, 'SU': 783, 'TFX': 784, 'TMUS': 785, 'QQQ': 796, 'SPY': 808, 'BTCUSD': 816, 'XRPUSD': 817, 'ETHUSD': 818, 'LTCUSD': 819, 'DSHUSD': 821, 'BCHUSD': 824, 'OMGUSD': 825, 'ZECUSD': 826, 'ETCUSD': 829, 'BTCUSD-L': 830, 'ETHUSD-L': 831, 'LTCUSD-L': 834, 'BCHUSD-L': 836, 'BTGUSD': 837, 'QTMUSD': 845, 'XLMUSD': 847, 'TRXUSD': 858, 'EOSUSD': 864, 'USDINR': 865, 'USDPLN': 866, 'USDBRL': 867, 'USDZAR': 868, 'DBX': 889, 'SPOT': 891, 'USDSGD': 892, 'USDHKD': 893, 'LLOYL-CHIX': 894, 'VODL-CHIX': 895, 'BARCL-CHIX': 896, 'TSCOL-CHIX': 897, 'BPL-CHIX': 898, 'HSBAL-CHIX': 899, 'RBSL-CHIX': 900, 'BLTL-CHIX': 901, 'MRWL-CHIX': 902, 'STANL-CHIX': 903, 'RRL-CHIX': 904, 'MKSL-CHIX': 905, 'BATSL-CHIX': 906, 'ULVRL-CHIX': 908, 'EZJL-CHIX': 909, 'ADSD-CHIX': 910, 'ALVD-CHIX': 911, 'BAYND-CHIX': 912, 'BMWD-CHIX': 913, 'CBKD-CHIX': 914, 'COND-CHIX': 915, 'DAID-CHIX': 916, 'DBKD-CHIX': 917, 'DPWD-CHIX': 919, 'DTED-CHIX': 920, 'EOAND-CHIX': 921, 'MRKD-CHIX': 922, 'SIED-CHIX': 923, 'TKAD-CHIX': 924, 'VOW3D-CHIX': 925, 'ENELM-CHIX': 926, 'ENIM-CHIX': 927, 'FCAM-CHIX': 928, 'PIRCM-CHIX': 929, 'PSTM-CHIX': 930, 'TITM-CHIX': 931, 'CSGNZ-CHIX': 933, 'NESNZ-CHIX': 934, 'ROGZ-CHIX': 935, 'UBSGZ-CHIX': 936, 'SANE-CHIX': 937, 'BBVAE-CHIX': 938, 'TEFE-CHIX': 939, 'AIRP-CHIX': 940, 'HEIOA-CHIX': 941, 'ORP-CHIX': 942, 'AUDCHF': 943, 'AUDNZD': 944, 'CADJPY': 945, 'EURCHF': 946, 'GBPNZD': 947, 'NZDCAD': 948, 'NZDJPY': 949, 'EURNOK': 951, 'CHFSGD': 952, 'EURSGD': 955, 'USDMXN': 957, 'JUVEM': 958, 'ASRM': 959, 'MANU': 966, 'UKOUSD': 969, 'XPTUSD': 970, 'USOUSD': 971, 'W1': 977, 'AUDDKK': 983, 'AUDMXN': 985, 'AUDNOK': 986, 'AUDSEK': 988, 'AUDSGD': 989, 'AUDTRY': 990, 'CADMXN': 992, 'CADNOK': 993, 'CADPLN': 994, 'CADTRY': 995, 'CHFDKK': 996, 'CHFNOK': 998, 'CHFSEK': 1000, 'CHFTRY': 1001, 'DKKPLN': 1004, 'DKKSGD': 1005, 'EURDKK': 1007, 'EURMXN': 1008, 'EURTRY': 1010, 'EURZAR': 1011, 'GBPILS': 1013, 'GBPMXN': 1014, 'GBPNOK': 1015, 'GBPPLN': 1016, 'GBPSEK': 1017, 'GBPSGD': 1018, 'GBPTRY': 1019, 'NOKDKK': 1023, 'NOKJPY': 1024, 'NOKSEK': 1025, 'NZDDKK': 1026, 'NZDMXN': 1027, 'NZDNOK': 1028, 'NZDSEK': 1030, 'NZDSGD': 1031, 'NZDTRY': 1032, 'NZDZAR': 1033, 'PLNSEK': 1036, 'SEKDKK': 1037, 'SEKJPY': 1038, 'SGDJPY': 1041, 'USDDKK': 1045, 'NZDCHF': 1048, 'GBPHUF': 1049, 'USDCZK': 1050, 'USDHUF': 1051, 'CADSGD': 1054, 'EURCZK': 1056, 'EURHUF': 1057, 'USDTHB': 1062, 'IOTUSD-L': 1116, 'XLMUSD-L': 1117, 'NEOUSD-L': 1118, 'ADAUSD-L': 1119, 'XEMUSD-L': 1120, 'XRPUSD-L': 1122, 'EEM': 1203, 'FXI': 1204, 'IWM': 1205, 'GDX': 1206, 'XOP': 1209, 'XLK': 1210, 'XLE': 1211, 'XLU': 1212, 'IEMG': 1213, 'XLY': 1214, 'IYR': 1215, 'SQQQ': 1216, 'OIH': 1217, 'SMH': 1218, 'EWJ': 1219, 'XLB': 1221, 'DIA': 1222, 'TLT': 1223, 'SDS': 1224, 'EWW': 1225, 'XME': 1227, 'QID': 1229, 'AUS200': 1230, 'FRANCE40': 1231, 'GERMANY30': 1232, 'HONGKONG50': 1233, 'SPAIN35': 1234, 'US30': 1235, 'USNDAQ100': 1236, 'JAPAN225': 1237, 'USSPX500': 1239, 'UK100': 1241, 'TRXUSD-L': 1242, 'EOSUSD-L': 1244, 'BNBUSD-L': 1279, 'ACB': 1288, 'CGC': 1289, 'CRON': 1290, 'GWPH': 1291, 'MJ': 1292, 'TLRY': 1293, 'BUD': 1294, 'LYFT': 1313, 'PINS': 1315, 'ZM': 1316, 'UBER': 1334, 'MELI': 1335, 'BYND': 1336, 'BSVUSD-L': 1338, 'ONTUSD-L': 1339, 'ATOMUSD-L': 1340, 'WORK': 1343, 'FDJP': 1350, 'CAN': 1351, 'VIAC': 1352, 'TFC': 1353} - -""" - {'EURUSD': 1, 'EURGBP': 2, 'GBPJPY': 3, 'EURJPY': 4, 'GBPUSD': 5, 'USDJPY': 6, 'AUDCAD': 7, 'NZDUSD': 8, 'USDRUB': 10, 'AMAZON': 31, 'APPLE': 32, 'BAIDU': 33, 'CISCO': 34, 'FACEBOOK': 35, 'GOOGLE': 36, 'INTEL': 37, 'MSFT': 38, 'YAHOO': 40, 'AIG': 41, 'CITI': 45, 'COKE': 46, 'GE': 48, 'GM': 49, 'GS': 50, 'JPM': 51, 'MCDON': 52, 'MORSTAN': 53, 'NIKE': 54, 'USDCHF': 72, 'XAUUSD': 74, 'XAGUSD': 75, 'EURUSD-OTC': 76, 'EURGBP-OTC': 77, 'USDCHF-OTC': 78, 'EURJPY-OTC': 79, 'NZDUSD-OTC': 80, 'GBPUSD-OTC': 81, 'USDJPY-OTC': 85, 'AUDCAD-OTC': 86, 'ALIBABA': 87, 'YANDEX': 95, 'AUDUSD': 99, 'USDCAD': 100, 'AUDJPY': 101, 'GBPCAD': 102, 'GBPCHF': 103, 'GBPAUD': 104, 'EURCAD': 105, 'CHFJPY': 106, 'CADCHF': 107, 'EURAUD': 108, 'TWITTER': 113, 'FERRARI': 133, 'TESLA': 167, 'USDNOK': 168, 'EURNZD': 212, 'USDSEK': 219, 'USDTRY': 220, 'MMM:US': 252, 'ABT:US': 253, 'ABBV:US': 254, 'ACN:US': 255, 'ATVI:US': 256, 'ADBE:US': 258, 'AAP:US': 259, 'AA:US': 269, 'AGN:US': 272, 'MO:US': 278, 'AMGN:US': 290, 'T:US': 303, 'ADSK:US': 304, 'BAC:US': 313, 'BBY:US': 320, 'BA:US': 324, 'BMY:US': 328, 'CAT:US': 338, 'CTL:US': 344, 'CVX:US': 349, 'CTAS:US': 356, 'CTXS:US': 360, 'CL:US': 365, 'CMCSA:US': 366, 'CXO:US': 369, 'COP:US': 370, 'ED:US': 371, 'COST:US': 374, 'CVS:US': 379, 'DHI:US': 380, 'DHR:US': 381, 'DRI:US': 382, 'DVA:US': 383, 'DAL:US': 386, 'DVN:US': 388, 'DO:US': 389, 'DLR:US': 390, 'DFS:US': 391, 'DISCA:US': 392, 'DOV:US': 397, 'DTE:US': 400, 'DNB:US': 403, 'ETFC:US': 404, 'EMN:US': 405, 'EBAY:US': 407, 'ECL:US': 408, 'EIX:US': 409, 'EMR:US': 413, 'ETR:US': 415, 'EQT:US': 417, 'EFX:US': 418, 'EQR:US': 420, 'ESS:US': 421, 'EXPD:US': 426, 'EXR:US': 428, 'XOM:US': 429, 'FFIV:US': 430, 'FAST:US': 432, 'FRT:US': 433, 'FDX:US': 434, 'FIS:US': 435, 'FITB:US': 436, 'FSLR:US': 437, 'FE:US': 438, 'FISV:US': 439, 'FLS:US': 441, 'FMC:US': 443, 'FBHS:US': 448, 'FCX:US': 450, 'FTR:US': 451, 'GILD:US': 460, 'HAS:US': 471, 'HON:US': 480, 'IBM:US': 491, 'KHC:US': 513, 'LMT:US': 528, 'MA:US': 542, 'MDT:US': 548, 'MU:US': 553, 'NFLX:US': 569, 'NEE:US': 575, 'NVDA:US': 586, 'PYPL:US': 597, 'PFE:US': 603, 'PM:US': 605, 'PG:US': 617, 'QCOM:US': 626, 'DGX:US': 628, 'RTN:US': 630, 'CRM:US': 645, 'SLB:US': 647, 'SBUX:US': 666, 'SYK:US': 670, 'DIS:US': 689, 'TWX:US': 692, 'VZ:US': 723, 'V:US': 726, 'WMT:US': 729, 'WBA:US': 730, 'WFC:US': 733, 'SNAP': 756, 'DUBAI': 757, 'TA25': 758, 'AMD': 760, 'ALGN': 761, 'ANSS': 762, 'DRE': 772, 'IDXX': 775, 'RMD': 781, 'SU': 783, 'TFX': 784, 'TMUS': 785, 'QQQ': 796, 'SPY': 808, 'BTCUSD': 816, 'XRPUSD': 817, 'ETHUSD': 818, 'LTCUSD': 819, 'DSHUSD': 821, 'BCHUSD': 824, 'OMGUSD': 825, 'ZECUSD': 826, 'ETCUSD': 829, 'BTCUSD-L': 830, 'ETHUSD-L': 831, 'LTCUSD-L': 834, 'BCHUSD-L': 836, 'BTGUSD': 837, 'QTMUSD': 845, 'XLMUSD': 847, 'TRXUSD': 858, 'EOSUSD': 864, 'USDINR': 865, 'USDPLN': 866, 'USDBRL': 867, 'USDZAR': 868, 'DBX': 889, 'SPOT': 891, 'USDSGD': 892, 'USDHKD': 893, 'LLOYL-CHIX': 894, 'VODL-CHIX': 895, 'BARCL-CHIX': 896, 'TSCOL-CHIX': 897, 'BPL-CHIX': 898, 'HSBAL-CHIX': 899, 'RBSL-CHIX': 900, 'BLTL-CHIX': 901, 'MRWL-CHIX': 902, 'STANL-CHIX': 903, 'RRL-CHIX': 904, 'MKSL-CHIX': 905, 'BATSL-CHIX': 906, 'ULVRL-CHIX': 908, 'EZJL-CHIX': 909, 'ADSD-CHIX': 910, 'ALVD-CHIX': 911, 'BAYND-CHIX': 912, 'BMWD-CHIX': 913, 'CBKD-CHIX': 914, 'COND-CHIX': 915, 'DAID-CHIX': 916, 'DBKD-CHIX': 917, 'DPWD-CHIX': 919, 'DTED-CHIX': 920, 'EOAND-CHIX': 921, 'MRKD-CHIX': 922, 'SIED-CHIX': 923, 'TKAD-CHIX': 924, 'VOW3D-CHIX': 925, 'PIRCM-CHIX': 929, 'PSTM-CHIX': 930, 'TITM-CHIX': 931, 'CSGNZ-CHIX': 933, 'NESNZ-CHIX': 934, 'ROGZ-CHIX': 935, 'UBSGZ-CHIX': 936, 'SANE-CHIX': 937, 'BBVAE-CHIX': 938, 'TEFE-CHIX': 939, 'AIRP-CHIX': 940, 'HEIOA-CHIX': 941, 'ORP-CHIX': 942, 'AUDCHF': 943, 'AUDNZD': 944, 'CADJPY': 945, 'EURCHF': 946, 'GBPNZD': 947, 'NZDCAD': 948, 'NZDJPY': 949, 'EURNOK': 951, 'CHFSGD': 952, 'EURSGD': 955, 'USDMXN': 957, 'JUVEM': 958, 'ASRM': 959, 'MANU': 966, 'UKOUSD': 969, 'XPTUSD': 970, 'USOUSD': 971, 'W1': 977, 'AUDDKK': 983, 'AUDMXN': 985, 'AUDNOK': 986, 'AUDSEK': 988, 'AUDSGD': 989, 'AUDTRY': 990, 'CADMXN': 992, 'CADNOK': 993, 'CADPLN': 994, 'CADTRY': 995, 'CHFDKK': 996, 'CHFNOK': 998, 'CHFSEK': 1000, 'CHFTRY': 1001, 'DKKPLN': 1004, 'DKKSGD': 1005, 'EURDKK': 1007, 'EURMXN': 1008, 'EURTRY': 1010, 'EURZAR': 1011, 'GBPILS': 1013, 'GBPMXN': 1014, 'GBPNOK': 1015, 'GBPPLN': 1016, 'GBPSEK': 1017, 'GBPSGD': 1018, 'GBPTRY': 1019, 'NOKDKK': 1023, 'NOKJPY': 1024, 'NOKSEK': 1025, 'NZDDKK': 1026, 'NZDMXN': 1027, 'NZDNOK': 1028, 'NZDSEK': 1030, 'NZDSGD': 1031, 'NZDTRY': 1032, 'NZDZAR': 1033, 'PLNSEK': 1036, 'SEKDKK': 1037, 'SEKJPY': 1038, 'SGDJPY': 1041, 'USDDKK': 1045, 'NZDCHF': 1048, 'GBPHUF': 1049, 'USDCZK': 1050, 'USDHUF': 1051, 'CADSGD': 1054, 'EURCZK': 1056, 'EURHUF': 1057, 'USDTHB': 1062, 'IOTUSD-L': 1116, 'XLMUSD-L': 1117, 'NEOUSD-L': 1118, 'ADAUSD-L': 1119, 'XEMUSD-L': 1120, 'XRPUSD-L': 1122, 'EEM': 1203, 'FXI': 1204, 'IWM': 1205, 'GDX': 1206, 'XOP': 1209, 'XLK': 1210, 'XLE': 1211, 'XLU': 1212, 'IEMG': 1213, 'XLY': 1214, 'IYR': 1215, 'SQQQ': 1216, 'OIH': 1217, 'SMH': 1218, 'EWJ': 1219, 'XLB': 1221, 'DIA': 1222, 'TLT': 1223, 'SDS': 1224, 'EWW': 1225, 'XME': 1227, 'QID': 1229, 'AUS200': 1230, 'FRANCE40': 1231, 'GERMANY30': 1232, 'HONGKONG50': 1233, 'SPAIN35': 1234, 'US30': 1235, 'USNDAQ100': 1236, 'JAPAN225': 1237, 'USSPX500': 1239, 'UK100': 1241, 'TRXUSD-L': 1242, 'EOSUSD-L': 1244, 'BNBUSD-L': 1279, 'ACB': 1288, 'CGC': 1289, 'CRON': 1290, 'GWPH': 1291, 'MJ': 1292, 'TLRY': 1293, 'BUD': 1294, 'LYFT': 1313, 'PINS': 1315, 'ZM': 1316, 'UBER': 1334, 'MELI': 1335, 'BYND': 1336, 'BSVUSD-L': 1338, 'ONTUSD-L': 1339, 'ATOMUSD-L': 1340, 'WORK': 1343, 'FDJP': 1350, 'CAN': 1351, 'VIAC': 1352, 'TFC': 1353} -""" \ No newline at end of file diff --git a/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/country_id.py b/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/country_id.py deleted file mode 100644 index 60bc5e4..0000000 --- a/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/country_id.py +++ /dev/null @@ -1,190 +0,0 @@ -ID = {"Worldwide":0, - "AF": 1, - "AL": 2, - "DZ": 3, - "AD": 5, - "AO": 6, - "AI": 7, - "AG": 9, - "AR": 10, - "AM": 11, - "AW": 12, - "AT": 14, - "AZ": 15, - "BS": 16, - "BH": 17, - "BD": 18, - "BB": 19, - "BY": 20, - "BZ": 22, - "BJ": 23, - "BM": 24, - "BO": 26, - "BA": 27, - "BW": 28, - "BV": 29, - "BR": 30, - "BN": 31, - "BG": 32, - "BF": 33, - "BI": 34, - "KH": 35, - "CM": 36, - "CV": 38, - "KY": 39, - "TD": 41, - "CL": 42, - "CN": 43, - "CC": 45, - "CO": 46, - "KM": 47, - "CG": 48, - "CK": 49, - "CR": 50, - "CI": 51, - "HR": 52, - "CU": 53, - "CY": 54, - "CZ": 55, - "DK": 56, - "DJ": 57, - "DM": 58, - "DO": 59, - "TL": 60, - "EC": 61, - "EG": 62, - "SV": 63, - "EE": 66, - "ET": 67, - "FO": 69, - "FJ": 70, - "FI": 71, - "FR": 72, - "GF": 73, - "PF": 74, - "GA": 75, - "GM": 76, - "GE": 77, - "DE": 78, - "GH": 79, - "GR": 81, - "GD": 83, - "GP": 84, - "GT": 86, - "GN": 87, - "GY": 88, - "HT": 89, - "HN": 90, - "HK": 91, - "HU": 92, - "IS": 93, - "ID": 94, - "IQ": 95, - "IE": 96, - "IT": 97, - "JM": 98, - "JO": 100, - "KZ": 101, - "KE": 102, - "KI": 103, - "KW": 104, - "KG": 105, - "LA": 106, - "LV": 107, - "LB": 108, - "LS": 109, - "LR": 110, - "LY": 111, - "LT": 113, - "LU": 114, - "MO": 115, - "MK": 116, - "MG": 117, - "MW": 118, - "MY": 119, - "MV": 120, - "ML": 121, - "MT": 122, - "MQ": 124, - "MR": 125, - "MU": 126, - "MX": 128, - "FM": 129, - "MD": 130, - "MC": 131, - "MN": 132, - "MA": 134, - "MZ": 135, - "MM": 136, - "NA": 137, - "NP": 139, - "NL": 140, - "AN": 141, - "NC": 142, - "NZ": 143, - "NI": 144, - "NE": 145, - "NG": 146, - "NO": 149, - "OM": 150, - "PK": 151, - "PW": 152, - "PA": 153, - "PG": 154, - "PY": 155, - "PE": 156, - "PH": 157, - "PL": 159, - "PT": 160, - "QA": 162, - "RE": 163, - "RO": 164, - "RW": 166, - "KN": 167, - "LC": 168, - "SA": 171, - "SN": 172, - "SC": 173, - "SG": 175, - "SK": 176, - "SI": 177, - "SO": 179, - "ZA": 180, - "KR": 181, - "ES": 182, - "LK": 183, - "SH": 184, - "SR": 186, - "SZ": 187, - "SE": 188, - "CH": 189, - "TW": 191, - "TJ": 192, - "TZ": 193, - "TH": 194, - "TG": 195, - "TT": 198, - "TN": 199, - "TR": 200, - "TM": 201, - "UG": 203, - "UA": 204, - "AE": 205, - "GB": 206, - "UY": 207, - "UZ": 208, - "VE": 211, - "VN": 212, - "VG": 213, - "YE": 216, - "ZM": 218, - "ZW": 219, - "RS": 220, - "ME": 221, - "IN": 225, - "TC": 234, - "CD": 235, - "GG": 236, - "IM": 237, - "JE": 239, - "CW": 246, } diff --git a/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/expiration.py b/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/expiration.py deleted file mode 100644 index 8a5dae6..0000000 --- a/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/expiration.py +++ /dev/null @@ -1,80 +0,0 @@ -# python -import time -from datetime import datetime, timedelta - -# https://docs.python.org/3/library/datetime.html -# If optional argument tz is None or not specified, the timestamp is converted to the platform's local date and time, and the returned datetime object is naive. -# time.mktime(dt.timetuple()) - - -def date_to_timestamp(dt): - # local timezone to timestamp support python2 pytohn3 - return time.mktime(dt.timetuple()) - - -def get_expiration_time(timestamp, duration): - # - now_date = datetime.fromtimestamp(timestamp) - exp_date = now_date.replace(second=0, microsecond=0) - if (int(date_to_timestamp(exp_date+timedelta(minutes=1)))-timestamp) > 30: - exp_date = exp_date+timedelta(minutes=1) - - else: - exp_date = exp_date+timedelta(minutes=2) - exp = [] - for _ in range(5): - exp.append(date_to_timestamp(exp_date)) - exp_date = exp_date+timedelta(minutes=1) - - idx = 50 - index = 0 - now_date = datetime.fromtimestamp(timestamp) - exp_date = now_date.replace(second=0, microsecond=0) - while index < idx: - if int(exp_date.strftime("%M")) % 15 == 0 and (int(date_to_timestamp(exp_date))-int(timestamp)) > 60*5: - exp.append(date_to_timestamp(exp_date)) - index = index+1 - exp_date = exp_date+timedelta(minutes=1) - - remaning = [] - - for t in exp: - remaning.append(int(t)-int(time.time())) - - close = [abs(x-60*duration) for x in remaning] - - return int(exp[close.index(min(close))]), int(close.index(min(close))) - - -def get_remaning_time(timestamp): - now_date = datetime.fromtimestamp(timestamp) - exp_date = now_date.replace(second=0, microsecond=0) - if (int(date_to_timestamp(exp_date+timedelta(minutes=1)))-timestamp) > 30: - exp_date = exp_date+timedelta(minutes=1) - - else: - exp_date = exp_date+timedelta(minutes=2) - exp = [] - for _ in range(5): - exp.append(date_to_timestamp(exp_date)) - exp_date = exp_date+timedelta(minutes=1) - idx = 11 - index = 0 - now_date = datetime.fromtimestamp(timestamp) - exp_date = now_date.replace(second=0, microsecond=0) - while index < idx: - if int(exp_date.strftime("%M")) % 15 == 0 and (int(date_to_timestamp(exp_date))-int(timestamp)) > 60*5: - exp.append(date_to_timestamp(exp_date)) - index = index+1 - exp_date = exp_date+timedelta(minutes=1) - - remaning = [] - - for idx, t in enumerate(exp): - if idx >= 5: - dr = 15*(idx-4) - else: - dr = idx+1 - remaning.append((dr, int(t)-int(time.time()))) - - return remaning diff --git a/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/global_value.py b/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/global_value.py deleted file mode 100644 index e7d5a8d..0000000 --- a/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/global_value.py +++ /dev/null @@ -1,58 +0,0 @@ - -check_websocket_if_connect={}#None -# try fix ssl.SSLEOFError: EOF occurred in violation of protocol (_ssl.c:2361) -ssl_Mutex={} - -# - -#if false websocket can sent self.websocket.send(data) -#else can not sent self.websocket.send(data) - - - -SSID={}#None - -check_websocket_if_error={}#False -websocket_error_reason={}#None - -balance_id={}#None -account_mode_isDemo={}#practice is 1, real is 0 (int) -check_auth_finish={} -balance={} - -real_balance={} -practice_balance={} - -client_callback=None -auth_send_count={} -req_mutex={}#True or object_id -req_id={} -wait_connect_sec=2 -def get_req_id(object_id): - req_mutex[object_id].acquire() - get_req_id=req_id[object_id] - req_id[object_id]=req_id[object_id]+1 - req_mutex[object_id].release() - - return str(get_req_id) - -websocket_url=[ - - "wss://api-hk.po.market/socket.io/?EIO=4&transport=websocket", - "wss://api-fr.po.market/socket.io/?EIO=4&transport=websocket", - "wss://api-sg2.po.market/socket.io/?EIO=4&transport=websocket", - "wss://api-in.po.market/socket.io/?EIO=4&transport=websocket", - "wss://api-in2.po.market/socket.io/?EIO=4&transport=websocket", - - "wss://api-msk.po.market/socket.io/?EIO=4&transport=websocket", - "wss://api-fin.po.market/socket.io/?EIO=4&transport=websocket", - "wss://api-l.po.market/socket.io/?EIO=4&transport=websocket", - "wss://api-c.po.market/socket.io/?EIO=4&transport=websocket", - "wss://api-sc.po.market/socket.io/?EIO=4&transport=websocket", - "wss://api-asia2.po.market/socket.io/?EIO=4&transport=websocket", - "wss://api-us2.po.market/socket.io/?EIO=4&transport=websocket", - "wss://api-us3.po.market/socket.io/?EIO=4&transport=websocket", - "wss://api-us4.po.market/socket.io/?EIO=4&transport=websocket", - "wss://api-latina2.po.market/socket.io/?EIO=4&transport=websocket", - "wss://api-asia.po.market/socket.io/?EIO=4&transport=websocket" - ] \ No newline at end of file diff --git a/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/http/__init__.py b/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/http/__init__.py deleted file mode 100644 index 0519ecb..0000000 --- a/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/http/__init__.py +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/http/login.py b/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/http/login.py deleted file mode 100644 index f9a88cf..0000000 --- a/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/http/login.py +++ /dev/null @@ -1,22 +0,0 @@ -from pocketoptionapi.http.resource import Resource -import json -class Login(Resource): - - def _post(self, data=None, headers=None): - headers={} - - headers = { - 'X-App-Name': 'app_ios', - 'X-Request-Type': 'Api-Request', - 'X-Request-Project': 'bo', - 'Cookie': 'guest_id=1000290216601684147969408361021491595862009238107429568028672977' - } - - - return self.api.send_http_request(method="POST", url="https://api.olymptrade.com/v3/user/login-by-password",data=data, headers=headers) - def __call__(self, username, password,token=None): - - - data= "{\"data\":{\"email\":\""+username+"\",\"password\":\""+password+"\"}}" - return self._post(data=str(data)) - \ No newline at end of file diff --git a/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/http/logout.py b/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/http/logout.py deleted file mode 100644 index 3bbb405..0000000 --- a/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/http/logout.py +++ /dev/null @@ -1,22 +0,0 @@ -"""Module for IQ Option http login resource.""" - -from pocketoptionapi.http.resource import Resource - - -class Logout(Resource): - """Class for IQ option login resource.""" - # pylint: disable=too-few-public-methods - - url = "" - - def _post(self, data=None, headers=None): - """Send get request for IQ Option API login http resource. - - :returns: The instance of :class:`requests.Response`. - """ - #return self.api.send_http_request(method="POST", url="https://auth.iqoption.com/api/v1.0/logout",data=data, headers=headers) - pass - def __call__(self): - - return self._post() - diff --git a/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/http/resource.py b/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/http/resource.py deleted file mode 100644 index e8adc5b..0000000 --- a/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/http/resource.py +++ /dev/null @@ -1,10 +0,0 @@ - -class Resource(object): - - def __init__(self, api): - - self.api = api - - def send_http_request(self, method, data=None, params=None, headers=None): - - return self.api.send_http_request(self, method, data=data, params=params, headers=headers) diff --git a/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/stable_api.py b/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/stable_api.py deleted file mode 100644 index 607a043..0000000 --- a/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/stable_api.py +++ /dev/null @@ -1,294 +0,0 @@ -# dev @vigo_walker, github: https://github.com/theshadow76 - -# python -from pocketoptionapi.v2.pocketoptionapi2.pocketoptionapi.api import pocketoptionapi -import pocketoptionapi.v2.pocketoptionapi2.pocketoptionapi.constants as OP_code -import pocketoptionapi.v2.pocketoptionapi2.pocketoptionapi.country_id as Country -import threading -import time -import logging -import operator -import pocketoptionapi.v2.pocketoptionapi2.pocketoptionapi.global_value as global_value -from pocketoptionapi.v2.pocketoptionapi2.pocketoptionapi.expiration import get_expiration_time, get_remaning_time -from datetime import datetime, timedelta,timezone -from collections import defaultdict -from collections import deque -import collections -import json -import threading -def nested_dict(n, type): - if n == 1: - return defaultdict(type) - else: - return defaultdict(lambda: nested_dict(n-1, type)) -def ping_server(self): - - t = threading.currentThread() - while getattr(t, "do_run", True): - if global_value.check_websocket_if_connect[self.api.object_id]==0: - break - time.sleep(10) - self.ping_server_go() - - - - -class PocketOption: - __version__ = "2.2" - - def __init__(self,set_ssid,proxies=None,auto_logout=True,websocket_url=None,wait_connect_sec=2): - - self.SESSION_HEADER={"Origin": "https://pocketoption.com","Sec-WebSocket-Version":"13","Connection":"Upgrade","Accept-Encoding:":"gzip, deflate, br","Sec-WebSocket-Extensions":"permessage-deflate; client_max_window_bits","User-Agent":r"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36"} - self.SESSION_COOKIE={} - self.proxies=proxies - self.set_ssid=set_ssid - self.auto_logout=auto_logout - self._2FA_TOKEN=None - self.websocket_url=websocket_url - global_value.wait_connect_sec=wait_connect_sec - # -------------------------------------------------------------------------- - def logout(self): - self.api.logout() - def ping_server_go(self): - self.api.ping_to_server() - - def set_call_back_for_client(self,function): - global_value.client_callback=function - def set_session(self,header,cookie): - self.SESSION_HEADER=header - self.SESSION_COOKIE=cookie - - def get_ssid(self): - return global_value.SSID[self.api.object_id] - - def setting_2FA_TOKEN(self,code): - self._2FA_TOKEN=code - def TWO_FA(self, token,method=None,code=None): - r=self.api.TWO_FA(token,method,code) - return json.loads(r.text) - def close(self): - - self._thread_ping_server.do_run = False - def connect(self): - - try: - self.api.close() - except: - pass - #logging.error('**warning** self.api.close() fail') - - #id-iqoption.com some country only can using this url - #Iqoption.com - try: - self.set_ssid=global_value.SSID[self.api.object_id] - except: - pass - - - if self.websocket_url==None: - for url in global_value.websocket_url: - self.api = pocketoptionapi(url,header=self.SESSION_HEADER,proxies=self.proxies,set_ssid=self.set_ssid,auto_logout=self.auto_logout,_2FA_TOKEN=self._2FA_TOKEN) - c,m=self.api.connect() - if c: - break - elif m=="""42["NotAuthorized"]""": - return False,m - else: - self.api = pocketoptionapi(self.websocket_url,header=self.SESSION_HEADER,proxies=self.proxies,set_ssid=self.set_ssid,auto_logout=self.auto_logout,_2FA_TOKEN=self._2FA_TOKEN) - c,m=self.api.connect() - - if m=="""42["NotAuthorized"]""": - return False,m - - if c: - self.change_balance("PRACTICE") - self._thread_ping_server=threading.Thread(target = ping_server, args = (self,)) - self._thread_ping_server.start() - return c,m - - - def check_connect(self): - # True/False - - if global_value.check_websocket_if_connect[self.api.object_id] == 0: - return False - else: - return True - # wait for timestamp getting - -# _________________________UPDATE ACTIVES OPCODE_____________________ - - def _init_get_raw_balance(self): - #[{"d":[{"value":3686.24}],"e":52},{"d":[{"value":20.10,"account_id":1250470807}],"e":50}] - - req_id="balance" - self.api.raw_e98[req_id]=None - self.api.Get_Balance(req_id) - - while self.api.raw_e98[req_id]==None: - pass - _tmp=self.api.raw_e98[req_id] - del self.api.raw_e98[req_id] - for d in _tmp: - try: - if "account_id" in d["d"][0]: - global_value.balance[self.api.object_id]["REAL"]["value"]=d["d"][0]["value"] - global_value.balance[self.api.object_id]["REAL"]["account_id"]=d["d"][0]["account_id"] - elif "value" in d["d"][0]: - global_value.balance[self.api.object_id]["PRACTICE"]["value"]=d["d"][0]["value"] - global_value.balance[self.api.object_id]["PRACTICE"]["account_id"]=0 - except: - pass - - - def get_balance(self): - if global_value.account_mode_isDemo[self.api.object_id]==0: - while global_value.real_balance[self.api.object_id]==None: - pass - return global_value.real_balance[self.api.object_id] - elif global_value.account_mode_isDemo[self.api.object_id]==1: - while global_value.practice_balance[self.api.object_id]==None: - pass - return global_value.practice_balance[self.api.object_id] - - def get_asset_data(self): - req_id=global_value.get_req_id(self.api.object_id) - - self.api.raw_e98["e_70"]=None - self.api.Get_Asset_Data(req_id) - while self.api.raw_e98["e_70"]==None: - pass - _tmp=self.api.raw_e98["e_70"] - del self.api.raw_e98["e_70"] - return _tmp - def change_balance(self, Balance_MODE): - - - if Balance_MODE=="REAL": - global_value.check_auth_finish[self.api.object_id]=False - while global_value.check_auth_finish[self.api.object_id]==False: - self.api.Auth_Mode(Balance_MODE) - time.sleep(0.5) - global_value.account_mode_isDemo[self.api.object_id]=0 - elif Balance_MODE=="PRACTICE": - global_value.check_auth_finish[self.api.object_id]=False - while global_value.check_auth_finish[self.api.object_id]==False: - self.api.Auth_Mode(Balance_MODE) - time.sleep(0.5) - global_value.account_mode_isDemo[self.api.object_id]=1 - else: - logging.error('**warning** change_balance() need input "REAL"/"PRACTICE" ') - - - -# ________________________________________________________________________ -# _______________________ CANDLE _____________________________ -# ________________________self.api.getcandles() wss________________________ - - def get_candle(self, Asset, _from, timeframe,request_id=""): - self.api.getcandles(Asset, _from, timeframe,request_id) - pass -####################################################### -# ______________________________________________________ -# _____________________REAL TIME CANDLE_________________ -# ______________________________________________________ -####################################################### - - def get_payment(self): - raw_asset=self.get_raw_asset() - ans=nested_dict(2,dict) - for i in raw_asset: - asset_name=i[1] - ans[asset_name]["payment"]=i[5] - ans[asset_name]["open"]=i[14] - - return ans - - def get_raw_asset(self): - while self.api.updateAssets_data==None: - pass - return self.api.updateAssets_data - def get_all_asset_name(self): - all_asset=self.get_raw_asset() - ans=[] - for i in all_asset: - ans.append(i[1]) - return ans - - def check_asset_open(self,asset): - all_asset=self.get_raw_asset() - for i in all_asset: - if i[1]==asset: - if True in i: - return True - else: - return False - - def start_candles_stream(self,asset,size): - #the list of the size - self.api.subscribe_realtime_candle(asset,size) - - def stop_candles_stream(self, asset): - self.api.unsubscribe_realtime_candle(asset) - - def get_realtime_candles(self, asset): - while True: - if asset in self.api.realtime_price: - if len(self.api.realtime_price[asset])>0: - return self.api.realtime_price[asset] - - - def buy(self,asset,amount,dir,duration): - # the min duration is 30 - #if duration<30: - # duration=30 - req_id=global_value.get_req_id(self.api.object_id) - self.api.request_data[req_id]=None - self.api.buy(asset,amount,dir,duration,req_id) - while self.api.request_data[req_id]==None: - pass - _tmp=self.api.request_data[req_id] - del self.api.request_data[req_id] - if "id" in _tmp: - self.api.buy_info[_tmp["id"]]=_tmp - return _tmp - - def sell_option(self,id): - # the min duration is 30 - self.api.sell_option(id) - - def get_candle(self,asset,time,offset,period): - req_id=global_value.get_req_id(self.api.object_id) - self.api.getcandle_data[req_id]=None - self.api.getcandles(asset,time,offset,period,req_id) - while self.api.getcandle_data[req_id]==None: - pass - return self.api.getcandle_data[req_id] - - - - def check_win(self,ticket,polling=1): - while True: - if ticket in self.api.check_win_refund_data: - return self.api.check_win_refund_data[ticket]["amount"]-self.api.buy_info[ticket] - elif ticket in self.api.check_win_close_data: - - - if self.api.check_win_close_data[ticket]["closePrice"]!=0: - return self.api.check_win_close_data[ticket]["profit"] - - time.sleep(polling) - - - - - def get_server_time(self): - req_id=global_value.get_req_id(self.api.object_id) - self.api.server_timestamp[req_id]=None - self.api.get_server_time(req_id) - while self.api.server_timestamp[req_id]==None: - pass - _tmp=self.api.server_timestamp[req_id] - del self.api.server_timestamp[req_id] - return _tmp - diff --git a/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/ws/__init__.py b/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/ws/__init__.py deleted file mode 100644 index 6c0340c..0000000 --- a/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/ws/__init__.py +++ /dev/null @@ -1 +0,0 @@ -"""Module for IQ Option API websocket.""" diff --git a/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/ws/chanels/__init__.py b/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/ws/chanels/__init__.py deleted file mode 100644 index d3d1307..0000000 --- a/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/ws/chanels/__init__.py +++ /dev/null @@ -1 +0,0 @@ -"""Module for IQ Option API websocket chanels.""" diff --git a/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/ws/chanels/auth.py b/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/ws/chanels/auth.py deleted file mode 100644 index c950bce..0000000 --- a/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/ws/chanels/auth.py +++ /dev/null @@ -1,13 +0,0 @@ -from pocketoptionapi.ws.chanels.base import Base -import pocketoptionapi.constants as OP_code -import pocketoptionapi.global_value as global_value -import json -class auth_mode(Base): - def __call__(self,account_mode): - session=global_value.SSID[self.api.object_id] - if account_mode=="REAL": - global_value.SSID[self.api.object_id]=session.replace("\"isDemo\":1","\"isDemo\":0") - elif account_mode=="PRACTICE": - global_value.SSID[self.api.object_id]=session.replace("\"isDemo\":0","\"isDemo\":1") - self.send_websocket_request(global_value.SSID[self.api.object_id]) - \ No newline at end of file diff --git a/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/ws/chanels/base.py b/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/ws/chanels/base.py deleted file mode 100644 index 2eddc3f..0000000 --- a/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/ws/chanels/base.py +++ /dev/null @@ -1,19 +0,0 @@ -"""Module for base IQ Option base websocket chanel.""" - - -class Base(object): - """Class for base IQ Option websocket chanel.""" - # pylint: disable=too-few-public-methods - - def __init__(self, api): - """ - :param api: The instance of :class:`pocketoptionapi - `. - """ - self.api = api - - def send_websocket_request(self, msg,no_force_send=True): - """Send request to IQ Option server websocket. - :returns: The instance of :class:`requests.Response`. - """ - return self.api.send_websocket_request(msg,no_force_send) diff --git a/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/ws/chanels/buy.py b/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/ws/chanels/buy.py deleted file mode 100644 index f93d951..0000000 --- a/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/ws/chanels/buy.py +++ /dev/null @@ -1,29 +0,0 @@ - - -from pocketoptionapi.ws.chanels.base import Base -import pocketoptionapi.constants as OP_code -import pocketoptionapi.global_value as global_value -import json -class buy_binary(Base): - def __call__(self,asset,amount,dir,duration,req_id): - session=global_value.SSID[self.api.object_id] - data=[] - data.append("openOrder") - openorder={} - openorder["session"]=json.loads(session[2:])[1]["session"].replace("\"","\\\"") - openorder["asset"]=asset - openorder["amount"]=amount - openorder["action"]=dir - openorder["requestId"]=req_id - openorder["isDemo"]=global_value.account_mode_isDemo[self.api.object_id] - openorder["time"]=duration#sec - openorder["optionType"]=100 - data.append(openorder) - - self.send_websocket_request("42"+str(data)) - -class cancelOrder(Base): - def __call__(self,ticket): - data=["cancelOrder",{"ticket":str(ticket)}] - self.send_websocket_request("42"+str(data)) - \ No newline at end of file diff --git a/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/ws/chanels/candle.py b/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/ws/chanels/candle.py deleted file mode 100644 index 66e414f..0000000 --- a/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/ws/chanels/candle.py +++ /dev/null @@ -1,42 +0,0 @@ - - -""" -42["loadHistoryPeriod",{"asset":"USDCAD","index":162513874160,"time":1625138122.445,"offset":1000,"period":5}] -""" - - -import collections -from pocketoptionapi.ws.chanels.base import Base -import pocketoptionapi.constants as OP_code -import pocketoptionapi.global_value as global_value -import json - - -class loadHistoryPeriod(Base): - def __call__(self,asset,time,offset,period,index): - data=["loadHistoryPeriod",{"asset":asset,"index":index,"time":time,"offset":offset,"period":period}] - self.send_websocket_request("42"+str(data)) - - -""" -42["changeSymbol",{"asset":"USDCAD","prevAsset":"USDCAD","reason":2,"otherData":{},"period":5}] -""" - - -class changeSymbol(Base): - def __call__(self,asset,size): - self.api.realtime_price[asset]=collections.deque([],size) - data=["changeSymbol",{"asset":asset,"prevAsset":asset,"reason":2,"otherData":{},"period":0}] - self.send_websocket_request("42"+str(data)) - - -""" -42["unsubfor","EURRUB_otc"] -""" - -class unsubfor(Base): - def __call__(self,asset): - data=["subfor",asset] - self.send_websocket_request("42"+str(data)) - - \ No newline at end of file diff --git a/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/ws/chanels/get_asset_data.py b/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/ws/chanels/get_asset_data.py deleted file mode 100644 index 686e55e..0000000 --- a/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/ws/chanels/get_asset_data.py +++ /dev/null @@ -1,7 +0,0 @@ -from pocketoptionapi.ws.chanels.base import Base -import datetime -import pocketoptionapi.constants as OP_code -class get_asset_data(Base): - def __call__(self,req_id): - data=[{"t":2,"e":98,"uuid":req_id,"d":[70,73,72]}] - self.send_websocket_request(data) \ No newline at end of file diff --git a/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/ws/chanels/get_balance.py b/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/ws/chanels/get_balance.py deleted file mode 100644 index a9b6999..0000000 --- a/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/ws/chanels/get_balance.py +++ /dev/null @@ -1,7 +0,0 @@ -from pocketoptionapi.ws.chanels.base import Base -import datetime -import pocketoptionapi.constants as OP_code -class get_balance(Base): - def __call__(self,req_id): - data=[{"t":2,"e":98,"uuid":req_id,"d":[52,50]}] - self.send_websocket_request(data) \ No newline at end of file diff --git a/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/ws/chanels/ping_server.py b/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/ws/chanels/ping_server.py deleted file mode 100644 index 9026079..0000000 --- a/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/ws/chanels/ping_server.py +++ /dev/null @@ -1,9 +0,0 @@ -from pocketoptionapi.ws.chanels.base import Base -import pocketoptionapi.constants as OP_code -import pocketoptionapi.global_value as global_value -import json -class Ping_To_Server(Base): - def __call__(self): - self.send_websocket_request("""42["ps"]""") - - \ No newline at end of file diff --git a/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/ws/chanels/subscribe.py b/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/ws/chanels/subscribe.py deleted file mode 100644 index fb4f8ed..0000000 --- a/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/ws/chanels/subscribe.py +++ /dev/null @@ -1,11 +0,0 @@ -from pocketoptionapi.ws.chanels.base import Base -import datetime -import pocketoptionapi.constants as OP_code -class Subscribe(Base): - def __call__(self,asset,timeframe,req_id): - #{"name":"subscribeMessage","msg":{"name":"candle-generated","params":{"routingFilters":{"active_id":1,"size":1}}}} - #data="""[{"t":2,"e":4,"uuid":"gg","d":[{"p":"EURUSD","tf":60}]}]""" - - data=[{"t":2,"e":4,"uuid":req_id,"d":[{"p":asset,"tf":timeframe}]}] - self.send_websocket_request(data) - \ No newline at end of file diff --git a/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/ws/chanels/unsubscribe.py b/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/ws/chanels/unsubscribe.py deleted file mode 100644 index ff51918..0000000 --- a/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/ws/chanels/unsubscribe.py +++ /dev/null @@ -1,9 +0,0 @@ -from pocketoptionapi.ws.chanels.base import Base -import datetime -import pocketoptionapi.constants as OP_code -class Unsubscribe(Base): - def __call__(self,sub_uid,req_id=""): - data=[{"t":2,"e":5,"uuid":req_id,"d":[{"sub_uid":sub_uid}]}] - - self.send_websocket_request(data) - \ No newline at end of file diff --git a/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/ws/client.py b/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/ws/client.py deleted file mode 100644 index 494e9a8..0000000 --- a/pocketoptionapi/v2/pocketoptionapi2/pocketoptionapi/ws/client.py +++ /dev/null @@ -1,140 +0,0 @@ -import json -import logging -import websocket -import pocketoptionapi.constants as OP_code -import pocketoptionapi.global_value as global_value -import collections - -import time -class WebsocketClient(object): - - def __init__(self, api): - - self.api = api - - self.wss = websocket.WebSocketApp( - self.api.wss_url, on_message=self.on_message, - on_error=self.on_error, on_close=self.on_close, - on_open=self.on_open,header=self.api.header) - - def on_message(self, wss,raw_message): - - global_value.ssl_Mutex[self.api.object_id].acquire() - logger = logging.getLogger(__name__) - logger.debug(raw_message) - #raw_message = json.loads(str(raw_message)) - if global_value.client_callback != None: - global_value.client_callback(raw_message) - #特殊處理 - if raw_message=="""451-["updateAssets",{"_placeholder":true,"num":0}]""": - - self.api.async_name=raw_message - - elif raw_message=="""451-["updateStream",{"_placeholder":true,"num":0}]""": - self.api.async_name=raw_message - elif raw_message=="""451-["successupdateBalance",{"_placeholder":true,"num":0}]""": - self.api.async_name=raw_message - elif raw_message=="2": - self.api.send_websocket_request("""3""",False) - elif self.api.async_name=="""451-["updateAssets",{"_placeholder":true,"num":0}]""": - - self.api.async_name="" - - ok_json=json.loads(raw_message.decode("utf-8")) - self.api.updateAssets_data=ok_json - elif self.api.async_name=="""451-["successupdateBalance",{"_placeholder":true,"num":0}]""": - - self.api.async_name="" - - ok_json=json.loads(raw_message.decode("utf-8")) - - if ok_json["isDemo"]==0: - global_value.real_balance[id(wss)]=ok_json["balance"] - elif ok_json["isDemo"]==1: - global_value.practice_balance[id(wss)]=ok_json["balance"] - - - elif self.api.async_name=="""451-["updateStream",{"_placeholder":true,"num":0}]""": - self.api.async_name="" - ok_json=json.loads(raw_message.decode("utf8")) - ans={} - ans["time"]=ok_json[0][1] - ans["price"]=ok_json[0][2] - - self.api.realtime_price[ok_json[0][0]].append(ans) - - - - - - if isinstance(raw_message,str): - if "pingTimeout" in raw_message and global_value.check_auth_finish[id(wss)]==False: - - logger.debug("40") - wss.send("40") - - - global_value.auth_send_count[self.api.object_id]=global_value.auth_send_count[self.api.object_id]+1 - elif "40" in raw_message and global_value.check_auth_finish[id(wss)]==False: - logger.debug(global_value.SSID[self.api.object_id]) - wss.send(global_value.SSID[self.api.object_id]) - pass - - - if "successauth" in raw_message: - - global_value.check_websocket_if_connect[id(wss)] = 1 - global_value.check_auth_finish[id(wss)]=True - pass - - - try: - - ok_json=json.loads(raw_message.decode("utf-8")) - - - - """ - b'\x04[["AUDCAD_otc",1625299325.048,0.87461]]' - """ - - if "index" in ok_json: - self.api.getcandle_data[ok_json["index"]]=ok_json - - if "requestId" in ok_json: - self.api.request_data[str(ok_json["requestId"])]=ok_json - if "ticket" in ok_json and "amount" in ok_json: - self.api.check_win_refund_data[ok_json["ticket"]]=ok_json - - try: - for info in ok_json: - if "id" in info and "profit" in info: - self.api.check_win_close_data[info["id"]]=info - except: - pass - - except: - pass - global_value.ssl_Mutex[self.api.object_id].release() - @staticmethod - def on_error(wss, error): - """Method to process websocket errors.""" - logger = logging.getLogger(__name__) - logger.error(error) - global_value.websocket_error_reason[id(wss)] = str(error) - global_value.check_websocket_if_error[id(wss)] = True - - @staticmethod - def on_open(wss): - """Method to process websocket open.""" - logger = logging.getLogger(__name__) - logger.debug("Websocket client connected.") - - - - @staticmethod - def on_close(wss,close_status_code,close_msg): - """Method to process websocket close.""" - logger = logging.getLogger(__name__) - logger.debug("Websocket connection closed.") - global_value.check_websocket_if_connect[id(wss)] = 0 diff --git a/pocketoptionapi/v2/pocketoptionapi2/setup.py b/pocketoptionapi/v2/pocketoptionapi2/setup.py deleted file mode 100644 index 727f663..0000000 --- a/pocketoptionapi/v2/pocketoptionapi2/setup.py +++ /dev/null @@ -1,17 +0,0 @@ - -from setuptools import (setup, find_packages) - - -setup( - name="pocketoptionapiv2", - version="2.2", - packages=find_packages(), - install_requires=["pylint","requests","websocket-client==0.58","des"], - include_package_data = True, - description="Free PoacketOption API for python", - long_description="Free pocketoptionapi API for python", - url="https://github.com/theshadow76/PocketOptionAPI", - author="Vigo Wa;ler", - author_email="vigopaul05@gmail.com", - zip_safe=False -) diff --git a/pocketoptionapi/v2/pocketoptionapi2/test.py b/pocketoptionapi/v2/pocketoptionapi2/test.py deleted file mode 100644 index 8d25ded..0000000 --- a/pocketoptionapi/v2/pocketoptionapi2/test.py +++ /dev/null @@ -1,9 +0,0 @@ -import random -import time -import asyncio -import os -import time -# dotenv.load_dotenv() -SSID=r"""42["auth",{"session":"a:4:{s:10:\"session_id\";s:32:\"0641660deb66bacfe493ee595ad5bcd6\";s:10:\"ip_address\";s:12:\"190.162.4.33\";s:10:\"user_agent\";s:120:\"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36 OPR/107.\";s:13:\"last_activity\";i:1715088712;}bf42446033b557288d0399ac1527842c","isDemo":0,"uid":27658142,"platform":2}]""" - - diff --git a/pocketoptionapi/ws/__pycache__/client.cpython-310.pyc b/pocketoptionapi/ws/__pycache__/client.cpython-310.pyc index 3228589dae59a7baef4ef528f4b74c97304634f6..38cc8ac6a45b486c22670f89666989d45d1afb80 100644 GIT binary patch literal 7015 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 KS-NG-7XBC3j)}nl diff --git a/pocketoptionapi/ws/__pycache__/client.cpython-311.pyc b/pocketoptionapi/ws/__pycache__/client.cpython-311.pyc deleted file mode 100644 index 6879654ba86d1d2af6ed4f4fbc16a2bc010b1141..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14161 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 Sqo(&RpZYJjQcP#I`+orDCIoo^ diff --git a/pocketoptionapi/ws/__pycache__/client.cpython-39.pyc b/pocketoptionapi/ws/__pycache__/client.cpython-39.pyc index 42a9c1a9ee42af347c1c2927e771f2ba1a4e307f..448012b035fdccc6adbac29bf45fd640e5209013 100644 GIT binary patch delta 1052 zcmY*YO-~b16n*!#OsCV%^lPRcPzpjZ8a@&cH#Q^?K_LMpNLUOeP2mj@YzH%pL`V&b z664B%FD9%E>yI@AG zP=%N=*1)6mIazhtyOsvk`EI6eJXKB%zb8n0< zF{_v#8@)O_ILUMLH0XSm9zpuxg6A`Z)7&q8fc}F|(wGMZ4>C#*fO#+;=myR7-m+HD ze`{DN6z^Cje-Jza3w%E~4bQl&W?_hTt2y||7u2Tp_hquEIooci3~snWoo(hTle{J{ zVm}q?p-`i!9^!Kh5pdP>hH%Ad8E(7`6#!zps3n}^zd6T3Pn3blDI)Tc_5`k}O>i>n zCylEQ!k9v%KZUcYnHL-LO?DgF)94sDDO!z%J6+#OGYecNW!TBE;4Yv#j~OjHtxVm8 zQNjWv1jr`XLs(n8MNz+B*DrMx;VGwM)gxc+<=r&)WoxL}il?XVx!*@R#(GXv)z5vbKSnf%w^W_5Q;xMzhg z#*FFeq1hvKu~CS3g_y8=>ui%?9||^QNakDM;g}#A%Qw`Fga|E5TYLe;14Kx6z}_ zES7MzDun(*xEkdUzVhd>k1)^g=?VD3AL~UJ;ne7a4&GxVl)UV7Qs_FHZ@i= g@g?I4%y2E<-!c2>!&sDE?v)f1^Yr(G{(wvnr+Cl4Ug^R*5Mm zPm;N4Vz3-c^k^_9UOZt;Of*sBrJm%X7Z2X>VB*_x!MKO-z4^Xx-kUes`P}oPN6Jc) zDB$;gr*h@jjFg5aGu?+qj35;#6dH=6(Fg+1Lq*Auc zDHY=8+?POKLlQ6HuQ#8}G+X)<+EZxRxm?uExjp3_p@lY{5z0_a)6g8CdI@*5R##DJ z4vq@6@rVF8nAMBL@9&!tw1SWDazK?||(W8TJI%I#B& zj$RR#8(A;B8C2eCiN>9VOuJR}SPfZX%be}7?s{w!XZO%J-eiQM>>V-j?}*m0=T36> zIqr+m_yBH_tplFe%tecfnzi0zQ=FaVY{F7KwuQ6zIh$fn!(X>=-?rs~jz64r)jTs< z94Qs_o|}4hV#0LvUcK*Z|4E}iQ*v^8k3MeNqa~{M?$~^bJyJSg4O>ulM{D9pwve@Q zW@ePy$MN0NSR`_qU5h*q-^A6#xcioTB8Yz09c^t35(NSv6BSYQxfmq=K!|7{5{+PF zg=jZ>5d8*M*qvAld||V(cgZ}~u)`~$xY;g*MK-M#;28Ubi&vJ{SBhbhxn1g&}r6J_{MP6yGbhA`t|Y1cB|<5`O??b_g2) diff --git a/pocketoptionapi/ws/chanels/__pycache__/base.cpython-311.pyc b/pocketoptionapi/ws/chanels/__pycache__/base.cpython-311.pyc deleted file mode 100644 index a888d709a9b7b5289d081a308fb643c6230652d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1364 zcmaJ>&rj4q6rO3j%en!V#0?xw%$!WtXcH4dNJB`Jpy42*=w-9XP}*52?zUy73%cRJ zfddEbTs`?CUOf6|pfQp3>OZh%y~xS;+HP5qb(+3;GjHDe-hA)1?Y7D5rmDD;T-VJ-A0(On6uHLxaT_&P3e?)hHC zd3OT&GY88n2vh;FPkLoiojx>uZXCYA7Jfdagdt$~HSp}9Jw0JGYj z{&(j9yR>_@DtwnovE30WVo`9RYv8gwLbAMyW;tgnt48L^J=eNuQjui7-41w2oWXFfGU z7JQ>2Q_2||2iutu-zK=ew ze!lgkviPmCcv4!F*agso68{dhA~p-ca~_vDZzmr(=;NGkckEVX8ROgy9L{A4e3DE) zkR(o;8up1qff=g>5c~OaYRsM(v%ONGFx?}$xLPheq&@OKna0Pc%QanIgE=k+>s!K! y5-5q^^LY+urMWcsc{v3J>`=7?qNh_zPlYzht6b0k diff --git a/pocketoptionapi/ws/chanels/__pycache__/base.cpython-312.pyc b/pocketoptionapi/ws/chanels/__pycache__/base.cpython-312.pyc deleted file mode 100644 index a65696f3374df689e618c64c5d00f8615f627b7f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1243 zcmZ`&y>HV%6u+~bG#E-Nh}r>xZZ(6w076k!iH{a_pcD#AmaA)DTDOj!-Z^a(bzsO) z2E^Ej9mK-O|G)xbK=sN$P|>n<;yv4Oqe7qLyLb1#e)oINU&qHy0&@3#r&ZSp`Gtp} zR0`$z7AObACrzS}C&Z@%;%kC_0)LdI*3&Jcf9GlJcSFHiv1F^R5^O2C z@~a)Os`6WJ-Hk+OdwGg{)rvz=Pmm^snwn3Wx~~mL)9@?4KA_D?&#WWM=h=2Hd!H!jw{_Zb2~wUy<8V8h*aW6o?vl{ zH9W-7SXp?UzxBb=LK%nQGr?AzkpR&)ej|>vD|YF-Xwg&$yQQUu5@AbX0~DfU?DVno zN(rf)?O-k5al=g^ot)sZrqju&ElW8&%E@U~4mQN@^wJvVK@=pM_s5Ywdw9Hrl`g~b znjD#=KD}?etsTRWcm}S8AfAk{8Bl;QvN5!b>>I^cj9ekL+MYffm}O$o{^_!ad?v+K zSEz&~@wst^X#z- z8-i0M$3T(Tv;K{&m;cW;2@dKeEYR6HnXJFteY5*>!u~#Ce@H$rf4Ti*V(wdQPT~OI z{1N!GU`Vhu=c&ngJNv6azry)e*9{BH80UWMaV~2Rn4$PcvLrbyoB@doqE(1tKn{)j zziXAs^vPATGEZ}7bXl}?c^&q&8n12$FUjI$9d6DNp4Mh^AhU7`3=}?v%8^bfJtU2j P>J*))`}h73+_Sj9b^1X` diff --git a/pocketoptionapi/ws/chanels/__pycache__/buyv3.cpython-310.pyc b/pocketoptionapi/ws/chanels/__pycache__/buyv3.cpython-310.pyc deleted file mode 100644 index ad63c18f474ecb077a3ebb6441366b2225e1feed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1629 zcmZ`(PjA~c6elT4lpH5r+pNusbUk#~;6v;cyADIw4JbNbX@PAQT?koZT_v*QlCnJq z@+tioIkd;#_IY^SDd!%BZI``ArHv7E68OmX`1tt#{2uG=?Hm9gbOokb>pIJTF)z-a}3W#h5b=aYnK@Pa;|OjM5VoYhFia`X4-KKKTYbHuAUmD z%^)@b*mFSvHiB$cxEM9;s>taKyTN3BgZRgvSkNotqfYpq5VF5h(P2$ z0#jH3zUVPCLb0`|B19W-+lsFRV30KgG1dmJ=^N4tKr0~il&bJ7!sb%(S>O@L0g)jf zGHRm@L?(x6*v!qiKKB@k#zmExmBH%=kqc+0$f5KI%!S4x3*Uy|HKsk?=?Wzqz$NUa z*XB@RInK(g%29A~r?Yp^>DeKI_JTPH9t^)81dfkuwelHv0-$OE<^y4_fq55}^->$x zpOiJ&l#8sKYuCFpZ*GECSFBIb;l$iR!B~POl;Wqc=9Ov0ye(H&HG4@8}wZa z?r7{@$B%4XnH>d#7J$Btbk4pNg^O`|wjaWg5Gu<`yHVswT4i=+ zM`jJ8@*i*%%OC6w`MF2k|DFXMySSK`Y;M&LY~ zm=T#xD$5y}>G+aT_GkPY@}Ubz7j7e6G=vQvp-uR_k_j-I1UC6!wxG^kK?!A>4qZ%e zL^!Ki2GrvP!&Z%3)gspHqFGVxV%f-d0a?X$J39xVaTghgx(zOK8D96@Mj1ip0azg7 z*;;*hfdnn1qJL^wmR2zG(g2VGZR+aI?+nN8;X=>uZvi0(E%`vj%2HpyB=mF}FmJOz z*AX^g^k#p?n&d~0&*2;@M=to*6bG&MuA~RZYFM@JtE1SFU85ro zuQ+_<^lD)D;^H=SX*bF64nizP%zy!;fsL5YtZ6bpU^l~jfz#Qq7SE>A&>}TMWm0d0t%xd;BbK?@*-iMddCr)LnOyg}Bc9UJP zvia*;#VA?X91WdhwN4aO&1}r$m_;~-(P6$m#UHZic0q|V}EaGl3j$z>Znp{yRueuta zF09GGINuIIDnP8ZWx_D30C0*8)dpu+Jz?|LL z!0tZlf!#Egy2X)(@kX-Szeq&8hI8gN%|}Ga6)PI9V;cVniHKEP%ma@o$(Iev7@4J0 zIM*m0KITQdY6HiqHBtkXs5z~qRq|A^I^*G;@Wxq5ngF_;RsK|RKEV?qXXB;9PE&{dc!nzGsd$|V=A`5;j^Cl0 z!ysrLV*dm1SfJz|rn?u*G`Lp}jS8tgZxb-Y`Wi$7bpj}~|IX)6gV9zn>K>eKrkiOu zJbvfa)9`F7Jj*oC569iu+_NL`^$XvG?uXpi@dqcrJ-HQIXvY@ZH|L+t9e?ym`|WdE zbE)=RsuPqBOmz?yW9YyscPiQ$59|YWgJ=q!N#qX?aN2%+<;l#C>QCyHa=xvcZ}ncr zs6~7fe8kk-0j?gWT`G>jH=3&x;zz*M(b7Yr^AjPWz#$qe!wXB6S;4P?n#}IWiOCf! z+0BW`9Q>a#3plxC77E2mfkgKXAG~yYnj+5Z9kTmtXMYnf|FDe>Z}ye)zL&>7z~=yn zveo(nM2F`%&P9<1dt4N3uxFq#-$FyLi^dx4anV9+_;t~l*6`brra7AJM$2aE1+%;y Xw4a{h=$Vg}U%mT+Szi8!o!!Ylvr}oJ diff --git a/pocketoptionapi/ws/chanels/__pycache__/buyv3.cpython-312.pyc b/pocketoptionapi/ws/chanels/__pycache__/buyv3.cpython-312.pyc deleted file mode 100644 index 52f9c4ea106bad1a2b1859f5f08b3e7819b6a17c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2177 zcmbVN&2JM&6rc5e`XdP?At7lXC@yK-P&<^ipsK1=2p_K6fK;kVzO2^X!8ojU&FtF7 zk)v|pklwh_1C@eWiK0~Mp*~I7dF{3%F$d@A`x<)*vc(pt5jK*L;PG!ST(Tf+pO`1lrq-QWi};o<+SBf znEQ(~FzJm-iCIC(bIqVsriBnElu}387=*^}O^?j>I3)(gq1J)Sc#$N&@=%SLK6Eq=BGN){NqO+Xaj?%Ru+ODzOL2N3^k#K84 zi;`xfDK%wVYN~dmso3&eeL=UCre2IJ7;s*E7YL|eP3&Pcg1)Y`sdmrmCR`#7l2T{a zF@$v+L`vtX<@+??npO6yF3tr^FV{-`3@v*+%INhf^@FUSh7_O74`83$sE(e?lt7+Z?|x&N(2{kf4?Gm zD+c}pmOBL4AYGe;sDQ-_x~n5QgdVY#1szxu+2ZI{#W&@-SA6XP6SCY{ex+|c6JXtn zu@{5846@a`nyuNoZQPXwBe9@%4Pc~bsXNV0BfvC@(bT$lI~WM!~95y_jc&# zr;)TBWnMm>o=(YJ$$NG~lmyp-sy@&>rL%s7R~@fT8BY`)4=~M|XDzkC!QZ5@r)$T~tQ48d~~<__BX~(A>znxm#y!qXx}0IMc_Lx^V0Y*Y$G4BGXR9&5C44- yZCR3}C#3HQiNo(1nSMfgpOF*K$OoI+u#}Y+XEq7Wo2Q1PbJ92O{!4HcN%{}WIT}*{ diff --git a/pocketoptionapi/ws/chanels/__pycache__/candles.cpython-311.pyc b/pocketoptionapi/ws/chanels/__pycache__/candles.cpython-311.pyc deleted file mode 100644 index 45610cbee6f8da698e44004dfb478d2c7268ef36..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1629 zcmb7E&2Jk;6rcUf#*Wpx35JN$u9PaU6_^$UsY+2LXqC2yq>*SZmeti{XPj)=4|isr zG?63u&_fO!03o#p4mqF#>ObS6N?3D>gg9_B3LI!JyqWbH(!hb4o%eRW-u!;=y_xSS zl@fyT=evuouPlUqmYt$NUzNifpdKND8i;5_kF;2C=$iaDBBNm_Z8l6|K12;mN7oUt z9wK5>{fU9lQ)qc<*u?l0c@sMyET^OsQMZ*ccQp+@qnVqwvoKBE04F4(+})yUJf8?Q za6+T{uhN943G)-o=}IuNsFVp(o^iMU0#ItZi0Hdorm0ya?v4MusH;8E0Tr~o03u^0 z+?z%yJn=T1p$nS!sAbRMaQtd4rRBFAY zU&__buRNaLpMO^No|nD8=^erfbi@?}&BN0$^9WJY&>(0!(I7}V1jvv9A|_C_MCm%s zuI3PSE?$i==l>@jqReSRmMQ0Wod!jsNI*6;6^=w<_-7cv^?>kcff991s74p?ePiuf zMDJSb`mWVQ`{NbTU{Sj0-Z*Go>u3-m8D(mjJ1>`MwviGyOI-=jjdO&u|DU;4D!HSw z*v1UUE)KGAllmc9bZ>9aQTKiD5F~0yXp)7kkh1!#+aOga+r&}6D?iR99fnnEzmtVA zZGrhb?=vtwLgXE@6r`Ob%gsPetWoBstzxyiop#(UoMe*I2HvD&7!XuTffSa?Ct=DX zg`KuqfLz#Z%EFY0YLsGfBjj1iwpZ2Aif0IeXH3+j&;0S_^BKM0p*$020n4Cr} zF*){+a0<@CQkaD!4X9&Hf-}rzHssD_lkh7X-w$vU`ToxI-}zTB249CI{1%8F`eO#w zW*^UfdH3tPgV){~%$y$7-W=4<49oV((hz~zGlwTp_1ymL{)zK@=7BTylQZ|DGq->3 z+ne8K&zyzl&O*QVSQ%`t00B5&Qt^FJ^8Hx7LhwK3`}aFI8qG}jK1l=LXK%nJb{51B zNEuKJSVfLXQH91Yfas0uz`WcyFAr@rHQT#3G^ec(hv>M-jY$*U1e*gT&c5(M~;ta&l&@^p;F7?r+19YK( n^c$dZPt^gc^i&<%wsszzT!>S%8W1@yzL@znN8DBYb&*yR>AG2P3&FNbWF5_h_j1` zOU-+hR?u{NRxq*s+DcA3DfQ!=`D=M}lL|j?izLtd2xlav-0#wLt`DM3oYA!Yn^F)M z(tZzfx*BP9n%cmW{^1)y0G+Xeh`D13Lmwk_!yKEW|*atBe=G$36jF(5rAq{dRI>DhrJOG{K-(e}4ry^>!z~|2BH5y0LN5E) zH|c2GfXG0BCWK}pi4)4|r=LNAP_~6r{YsnjNr&O0q+b?Ei^iZ{*Si44BSgW!G(~wQ z6Iu-v!a8Ms9*=MPy}aXhaVC^cn|O;J!+>Nu1xV=>MI>!yQo4B@19IuMDNAx9t7(qO z`w160>#Y@{)xeS#7fjYv%);ZQ3mLuDpLG8JN z+6%vz-Ls`V`{*pHUfjQa|IDR5`_P;E*_->po7=zo&GOgF--@5S*I5}d>Bc7W8d(CzxP!z~qHfy+s`Zs=(PfMO4caovtliR9gkVu>Qn*TcciN s^B_}g!(Rk)WEqC>0KNGudgUQ1KSY&3T-Uht_}r|q@Y&3t2w0)xZ(u!+^Z)<= diff --git a/pocketoptionapi/ws/chanels/__pycache__/get_balances.cpython-310.pyc b/pocketoptionapi/ws/chanels/__pycache__/get_balances.cpython-310.pyc deleted file mode 100644 index 75e0094817e5bfb30131c48e23e321ecf5eb53c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 760 zcmZ8f!EVz)5ZzsGLX^57Re*W|A2Fylxkd<;a;P{EDj_butTx_lFx}YhuG5GpoZ7zt zB)A~)OMB(SFK~ew$E_kpn$gaB=FNMat#)^Z1nka}{nHWsn7my(Mw)H&m0DdVVCGp5&Nq8-wH!-0efqB%_LCOi}Ds z!4=84;)vqIW8H`&X=Isem+d%Rs@K{%Inz0iy)lGCqA$VSV+e{O&=>ZJHb87mKa;QQ z5=gJfH@YSt*qVN4AfX3C`m50}>TFy~E9X&FH$_!CQ7AW#OyQcSvQbesH+8FUrkjIl z$7>aglBY5Ayp(h8Z(V5XpndfK*fvpD6j^<~(5`XOI#RNc<7g5GzE@j-_4iSiSn8>( z@-q&#~<%vAC{3lk}Z~G3iAytCrH7X`7z3y>D9TFHT+^jMBQj*@%&K zkuF`Dzn7&pE(QAHntoD$^aCMsX^ap9{DU}x^%(8{y&dea)xGT{B-fP_SP!(JW+D7g zhCUun-6Y$cZHpm7 z4n27E)`JQ?NUZdqNu^-eli$ z=)$%LB)Zpc;Y&j+y<`Pqb4$ojS`CY{kd>_EydGuz0K-PtR88oPSd}&B1r{s48<giuq=x-|;atWacaTade>D;tpT^qX`1Hx%YhD$K2Ky`QmN|ARFnuD)1Jl>p-jcjH%hV#%1qTH}SZ~s%P z!j3GYwJNM)+Xt#GBO`PxqL=at+J9-BnD=|E9|YI&K=q+~iV*9BkPb|>&yEfZH}`%=P1eg2ZJ{LQ~&?~ diff --git a/pocketoptionapi/ws/chanels/__pycache__/get_balances.cpython-312.pyc b/pocketoptionapi/ws/chanels/__pycache__/get_balances.cpython-312.pyc deleted file mode 100644 index c98686b4529eb1136a4a89e23fda8f39ed1be731..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 886 zcmZ8f&1=*^6n`_x*0|l)MYJk{26~VjOj_tF6cH?iQqbCqmt2O~ooS8D?xvZv%PuSQ z(1S;BJ!nBMTIrwSrGjFK2!bbXm93Yae3N9W^g-VD$L~$v$FZ?8Ak}uGm3IW-r#6OE zDwKhX$_@w+B!njM3DG(YsZS{^fH1Z}n3C)pdA@ISsZ;u;4Tq%W99MFwk%w}Qb21uC zpx6NkJ`vzkL3~5dZSc*m;h1S%Jkf(j1`vmZs3NAT_oAD zT;Gr?QFh-JJmItUl4GQ$D8{zwgnkRwk#*H>tl=XSxv_;XbzddJmDJQ_N+Y-JlZW0D zg=4(UV71-h;hK!S<*fE`2K~YEq8DX$z6y^5ucN%iQ{IxH@(?^5f_I~CYBAQ}VaQnT z^8f$H9lA9Rbr;zd9F^hPt;6f~Z-Z7ZzA%qR;QaVO)!j?>Ru0B%pRGGTtjbqw@{=|B zX8!%++r_=)i#0RAQdn|IdXRo2#?mrl&9>MGwO(OteS?R2BwISZfCV2QuA+#?HPfe? zF|DWyvTZmVy}C6&Fw3P{o~T23XE)Dm?sk-0Z0^?ac4K`hshI>#nYX=!_PljA6n^JiLYgK66=Fi-M5jn#l@f+V5fZc#>d;VBSRzX&*LO(_PMrE2BBBf# z82ATSJD>vUp9u(w$P*G1TToc+5Q1nI)F@4a_^=l6a0-g{ptX!JO+_^1ArGO>EAo>Mc0$8?g#A9 zcV5bnJ?Vt5-)0XF_nA_zU_E)Pl8Do^+tM?C=p027(MPtD&OBpmkY6mb8)!x#p+=CC zAqe6bHLAJP(t;v#I-*CIyuZEc*-HHvd_*-Z$CzVjLviW5%_^uyFo09Et1^HW3x+Tt zXPDu9nT25GkeAVK9LTWg3l{oJ$+loEsg&K2@&3|sb;?AV>VRwwS2A2-qNxK>YDN#B&E>t=RdM_JAt+w(Z@7jzTM#Wt^jZlM~& zGzV*iui4Gd+0E0vcl#g0PubF!Y-zlBXLt&##f;9S$#Nd$IB&(ngnpj$ldkQ}BUd;V zzQcL2hCc-w&Ao)Uf@F6W3VqvZ{}<{-c&h{fQS65qXq58p7e%U&vxmvfxrL=6+0PlF-n47 zAf&x^?pj8ARcB!9_A)7s#zG~jIr4@A?WPi8PgW4B(jY0lXgkl9kji-(^rMLv9t!E? zL(6A|BXio!nr)iZj-wQ*=W(_?Bd!^QOrt8Q~U{QmO#+T~$ zr|R~b_Pfs8&imwZb!Uk-=voyWL1SbrtuZ#tHVEZ9V@G2zEG(B8pT7S=l7bS3AD|uk7P*sea-4 diff --git a/pocketoptionapi/ws/chanels/buyv3.py b/pocketoptionapi/ws/chanels/buyv3.py index 07179f8..f39fa99 100644 --- a/pocketoptionapi/ws/chanels/buyv3.py +++ b/pocketoptionapi/ws/chanels/buyv3.py @@ -14,7 +14,7 @@ def __call__(self, amount, active, direction, duration, request_id): # thank Darth-Carrotpie's code # https://github.com/Lu-Yi-Hsun/iqoptionapi/issues/6 - exp = get_expiration_time(int(self.api.timesync.server_timestamp), duration) + exp = get_expiration_time(int(self.api.timesync.server_timestamps), duration) """if idx < 5: option = 3 # "turbo" else: diff --git a/pocketoptionapi/ws/chanels/get_balances.py b/pocketoptionapi/ws/chanels/get_balances.py index 627ad38..97659bb 100644 --- a/pocketoptionapi/ws/chanels/get_balances.py +++ b/pocketoptionapi/ws/chanels/get_balances.py @@ -13,6 +13,6 @@ def __call__(self): data = {"name": "get-balances", "version": "1.0" } - print(f"sent balance requests | data: {data}") + print("get_balances in get_balances.py") self.send_websocket_request(self.name, data) diff --git a/pocketoptionapi/ws/chanels/__pycache__/base.cpython-310.pyc b/pocketoptionapi/ws/channels/__pycache__/base.cpython-310.pyc similarity index 71% rename from pocketoptionapi/ws/chanels/__pycache__/base.cpython-310.pyc rename to pocketoptionapi/ws/channels/__pycache__/base.cpython-310.pyc index 6a48b8ebf4383911bd7f72f211676d48e872e287..f254efbc744b980a1a1a889f0f2f902045b85007 100644 GIT binary patch delta 139 zcmaFI@r#2upO=@50SMHp4AT@g@`^ArR!&x8)MX3EPtHy)nH!?#<`74JtQ`xS1pQ~rfeMV=|KrI=@Gjq2wL zC}3TBto8A1iTz#MSVC<9a_v48t95M_q*ywzAjOR^ZuL?N^LS)v6*+*nULQrp@Ql?i zV{`pag8hWC+eMVNHv`6a9y2EU8=x(4)L7~a46tyg@R?)Swlk1;Hu5a_6uxyopJM0f S!^a}j&S8_m5xVI@Z0j%0pei8% literal 0 HcmV?d00001 diff --git a/pocketoptionapi/ws/channels/__pycache__/buyv3.cpython-310.pyc b/pocketoptionapi/ws/channels/__pycache__/buyv3.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c5ff517d3ad7d41063ca80c5ab4a244520ecf78c GIT binary patch literal 1650 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 bvs4>yoZf8UK6l`nvX7pJmz~fF-Eip_C8b-- literal 0 HcmV?d00001 diff --git a/pocketoptionapi/ws/channels/__pycache__/change_symbol.cpython-310.pyc b/pocketoptionapi/ws/channels/__pycache__/change_symbol.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..34a0144807080ba6db9d7e6158eb6d346fc48e62 GIT binary patch literal 1034 zcma)5J#P~+7`A;*dZZ~s1xySc$#N`6l`4dQA~7XYD$^;F<(}W9SA6GSJFObRM1KYY zjQk1y1e;eTBz^${!oEw(sVrEs&+qH=^E~f|_0G-!h4Jm(WcHIF^gSBgL4)x$O#3J- z66Hu@NffR~PH@~OD#?@POLO`XNh*7nNcMnyNb;Ucj?k#T+8b-RRKRB1utQzE0rzU* zN?o(!MAUO&_M$r0ik-u;ZB83MsO(3eL?i6!b75gpM5{Z3+*aECumP0gAdg5K4=GGit`{$%fce@8n1~Y zAIY4&PuA!YTBB3EPCm!9#kA1X*D<&gEt%6S!m_Hxjdmewslfi5lEHv&#{NPWQ87`t z@(g$>_u1ZL?*I3!idc2&Fi`9g7y90ofv$;Pm${UES?AOm_9>B(zev7Ugs92Rzb-&JOz_ z=WmxnZBDj0m%8BGqyg1L{3e3VvJ-u=gW?}HE-9jzCPUJAM}4y!e4gEiC_A^=RYciw rcortU0#9SXeBXq&(NzP`p^CXPkUAU5 literal 0 HcmV?d00001 diff --git a/pocketoptionapi/ws/channels/__pycache__/change_symbol.cpython-39.pyc b/pocketoptionapi/ws/channels/__pycache__/change_symbol.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..395b0e1ad4ab77337c6b07331d5d9d33cb4c3186 GIT binary patch literal 1028 zcma)5&2AGh5cYbVG^8m9Bsg*KvAHZlLaJ0D1O$W-G*pz+Dw5@{C+QaNZfZNN8if;m z3=VMQC3p~DIU(@`91!E(w5-Ynuk4)}+w*<%W4X1}Cpfm3_oqK8A>V`29t@SoIPC*m z6iJDS6xC5dQyK+1)^Qrwf0nWrL^0L5AgTlOW1MzWd_acX<<4HE78>}pGJL`0a~;P$*YtTaD^LtF3GcF@TWge1erv!~L+I15^PAl-)AT@-+%5z?b7LOL{M zDpu@*Acan#;0L1`>Yzqi?u@jww#A26|3%1eS}4^XSSx3c#Vs-+O<|63T8@i~R?&(o z`iaiyhj>LklNC9RR`HjRwvZOK{I&<~s8ZZjJhKHON!Oj9LUcVeafAV%Rue+xyrJU!JGdl?s zOVEul1JSfvGC%h{Au_485H~}~>PN6aBm92%*z$I}U6RX_V{9b67RU?X`$80TU!yz_ z;$$K9dS^ojRb@h$9=bNcf6c$OYz15BpK!ufjN5Vaj=iMHtl0pdmu9J&W0_PRo-EucNIs>CgdWO-wENpU`Eds!MSr}k%X zphy0aublV`Twt8-R#8WqQO22h^Pb1e;o%s89d*<5Ta3_epA3ycatv;cAP6L|LKV(1 z_TNO2jLeY;1ie9mN_-t;fgqpIB>V%_Xo4L*s*mifly&`{S> znfw747co|Fr5KC+<@pgLBzW{M3Lca0>3nei>ArFSn}IejnlU$KtZKv><}(*FcDd$i z_oo-3V?gYg55j>z3m}BxW&|NZ6vw1Lo6szIARyhCbT1%X!i&;=Yx15VgHdyGqj|h+Fr-p*gT3*9f7~f+7%&D!8pyvYfSBws=2kZ-}}Ir}k%X zphy0aublV`TwrF?RI83OBac1r`Hekte}7284%^B39VO&9CVk_O9D%z-2#P3bNI?@y zam@@%*o>$^@mr#}rZ+(nDE66*2Y;ZNjH&0x(&>4IS>G5WN8s)m1WgjENWv6Fv+AVA@Ppa{uYZayiIrZsD*Fm3tFM;YH5R);VyDfy z=Snv67qR$Le?PpPrf1jL7io(#TV3j`Nlz=KjrjO}{_f4EwC;#DjmSDrS1yI(ved?< zk97D@h)fzIM2HX94Z?s?_HQQ$S^H$xd;54>Ifq{X7&a_~9|}=aYH4si65?tp&E}+Q zz>a{nQ{4-DxEDYe;GNiKNIC0v#yp80$&Xhq-pY>`FiRHy+Vdtabcg9NqkfC@K76%N N^%{qyyJJMd;6DhIyVw8# literal 0 HcmV?d00001 diff --git a/pocketoptionapi/ws/chanels/__pycache__/ssid.cpython-310.pyc b/pocketoptionapi/ws/channels/__pycache__/ssid.cpython-310.pyc similarity index 57% rename from pocketoptionapi/ws/chanels/__pycache__/ssid.cpython-310.pyc rename to pocketoptionapi/ws/channels/__pycache__/ssid.cpython-310.pyc index 7146c46d47e52222f1104d7aca63cf3f89a86a5d..0b94b8ce3a8be92612072cccdcb0dfb48dd93c6b 100644 GIT binary patch delta 100 zcmbQvHiL~fpO=@50SL6K4AX9I zT9Tihlb;t;ke{5LT9RK-l9`{ESdbZ0UK|6|ke8R5Qyeo{nQ1Pg!sLTY;*+m4IRF5b CIU}h6 delta 100 zcmbQiHl2+(pO=@50R+S)(r#?zz0PQ_A6lGRRIFc?nVw&sn3J7aq#ux^n vpXV6hscWcT02avyizF6g>X#SmCubz)rREgtPgZ7{%P2qjAd~pyn@siqDE1+H diff --git a/pocketoptionapi/ws/channels/__pycache__/ssid.cpython-39.pyc b/pocketoptionapi/ws/channels/__pycache__/ssid.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..33542f781247ffe7a636665e8e65e4eda21f478a GIT binary patch literal 784 zcmb7Cy^hmB5Z+yHLWmLy3Mz^%Xe=a4Ko=o&KOl4x7b1?zvb5UsPA)$Dce{?Fv#x^& zfs#kUEfudo#f)<~MTmxxX1udAp858hG1KXop*(G$Eq`#vev-2<5}gB7{{)R?F|*u? zoEIV%oV{f>u<{GD62#{q4(#BJg~Rs6X=T?rsAc8UqDntOqu$p|R+Z{-aiYA>tlGf2 z-$v4vDIt%3VR;tvP97N#DLMNh&^bW$kI?{&IU*63V@DCoErxio?cT{VY|uVG&W-o~ z1)-A!Eu~&Np))aXjOrhvxnW;XFZm7shVQo=-z(aSQ)pI|RZXQllvWksy}5wi|L0@J zV|6RD+Bj46oXph66<`4bflOr<$|hT8;G(shk6Mw(r*aMdNGO@i}*T)#V+zd8Jn)cqW)en6(ql8sMjCO8zI5Ft^0 z-Ho(PO`dB#AtHK)2JMuHj&_lGIHWX!p>;Rby6Bex&l9b$)+WD=+|$}tsn%|Yr5r6^ z4|C7lr@H_RWq2|pE(0n0yLl+x1H9_gU$~=zOCQq?iPM09gpiaR2}S literal 0 HcmV?d00001 diff --git a/pocketoptionapi/ws/channels/base.py b/pocketoptionapi/ws/channels/base.py new file mode 100644 index 0000000..5a93fb1 --- /dev/null +++ b/pocketoptionapi/ws/channels/base.py @@ -0,0 +1,26 @@ +"""Module for base Pocket Option base websocket chanel.""" + + +class Base(object): + """Class for base Pocket Option websocket chanel.""" + + # pylint: disable=too-few-public-methods + + def __init__(self, api): + """ + :param api: The instance of :class:`PocketOptionAPI + `. + """ + self.api = api + + def send_websocket_request(self, name, msg, request_id=""): + """Send request to Pocket Option server websocket. + + :param request_id: + :param str name: The websocket chanel name. + :param list msg: The websocket chanel msg. + + :returns: The instance of :class:`requests.Response`. + """ + + return self.api.send_websocket_request(name, msg, request_id) diff --git a/pocketoptionapi/ws/channels/buyv3.py b/pocketoptionapi/ws/channels/buyv3.py new file mode 100644 index 0000000..406ecf4 --- /dev/null +++ b/pocketoptionapi/ws/channels/buyv3.py @@ -0,0 +1,61 @@ +import datetime +import json +import time +from pocketoptionapi.ws.channels.base import Base +import logging +import pocketoptionapi.global_value as global_value +from pocketoptionapi.expiration import get_expiration_time + + +class Buyv3(Base): + name = "sendMessage" + + def __call__(self, amount, active, direction, duration, request_id): + + # thank Darth-Carrotpie's code + # https://github.com/Lu-Yi-Hsun/iqoptionapi/issues/6 + # exp = get_expiration_time(int(self.api.timesync.server_timestamps), duration) + """if idx < 5: + option = 3 # "turbo" + else: + option = 1 # "binary""" + # Construir el diccionario + data_dict = { + "asset": active, + "amount": amount, + "action": direction, + "isDemo": 1, + "requestId": request_id, + "optionType": 100, + "time": duration + } + + message = ["openOrder", data_dict] + + self.send_websocket_request(self.name, message, str(request_id)) + + +class Buyv3_by_raw_expired(Base): + name = "sendMessage" + + def __call__(self, price, active, direction, option, expired, request_id): + + # thank Darth-Carrotpie's code + # https://github.com/Lu-Yi-Hsun/iqoptionapi/issues/6 + + if option == "turbo": + option_id = 3 # "turbo" + elif option == "binary": + option_id = 1 # "binary" + data = { + "body": {"price": price, + "active_id": active, + "expired": int(expired), + "direction": direction.lower(), + "option_type_id": option_id, + "user_balance_id": int(global_value.balance_id) + }, + "name": "binary-options.open-option", + "version": "1.0" + } + self.send_websocket_request(self.name, data, str(request_id)) diff --git a/pocketoptionapi/ws/channels/candles.py b/pocketoptionapi/ws/channels/candles.py new file mode 100644 index 0000000..806ca4f --- /dev/null +++ b/pocketoptionapi/ws/channels/candles.py @@ -0,0 +1,42 @@ +"""Module for Pocket option candles websocket chanel.""" + +from pocketoptionapi.ws.channels.base import Base +import time +import random + + +def index_num(): + # El número mínimo sería 100000000000 (12 dígitos) + minimo = 5000 + # El número máximo sería 999999999999 (12 dígitos) + maximo = 10000 - 1 + # Generar y retornar un número aleatorio dentro del rango + return random.randint(minimo, maximo) + + +class GetCandles(Base): + """Class for Pocket option candles websocket chanel.""" + # pylint: disable=too-few-public-methods + + name = "sendMessage" + + def __call__(self, active_id, interval, count, end_time): + """Method to send message to candles websocket chanel. + + :param active_id: The active/asset identifier. + :param interval: The candle duration (timeframe for the candles). + :param count: The number of candles you want to have + """ + + # {"asset": "AUDNZD_otc", "index": 171201484810, "time": 1712002800, "offset": 9000, "period": 60}] + data = { + "asset": str(active_id), + "index": end_time, + "offset": count, # number of candles + "period": interval, + "time": end_time, # time size sample:if interval set 1 mean get time 0~1 candle + } + + data = ["loadHistoryPeriod", data] + + self.send_websocket_request(self.name, data) diff --git a/pocketoptionapi/ws/channels/change_symbol.py b/pocketoptionapi/ws/channels/change_symbol.py new file mode 100644 index 0000000..9f6ff97 --- /dev/null +++ b/pocketoptionapi/ws/channels/change_symbol.py @@ -0,0 +1,25 @@ +"""Module for PocketOption change symbol websocket chanel.""" + +from pocketoptionapi.ws.channels.base import Base +import time +import random + + +class ChangeSymbol(Base): + """Class for Pocket option change symbol websocket chanel.""" + # pylint: disable=too-few-public-methods + + name = "sendMessage" + + def __call__(self, active_id, interval): + """Method to send message to candles websocket chanel. + + :param active_id: The active/asset identifier. + :param interval: The candle duration (timeframe for the candles). + """ + + data_stream = ["changeSymbol", { + "asset": active_id, + "period": interval}] + + self.send_websocket_request(self.name, data_stream) diff --git a/pocketoptionapi/ws/channels/get_balances.py b/pocketoptionapi/ws/channels/get_balances.py new file mode 100644 index 0000000..377b90c --- /dev/null +++ b/pocketoptionapi/ws/channels/get_balances.py @@ -0,0 +1,18 @@ +from pocketoptionapi.ws.channels.base import Base +import time + + +class Get_Balances(Base): + name = "sendMessage" + + def __call__(self): + """ + :param options_ids: list or int + """ + + data = {"name": "get-balances", + "version": "1.0" + } + print("get_balances in get_balances.py") + + self.send_websocket_request(self.name, data) diff --git a/pocketoptionapi/ws/channels/ssid.py b/pocketoptionapi/ws/channels/ssid.py new file mode 100644 index 0000000..777d934 --- /dev/null +++ b/pocketoptionapi/ws/channels/ssid.py @@ -0,0 +1,17 @@ +"""Module for Pocket Option API ssid websocket chanel.""" + +from pocketoptionapi.ws.channels.base import Base + + +class Ssid(Base): + """Class for Pocket Option API ssid websocket chanel.""" + # pylint: disable=too-few-public-methods + + name = "ssid" + + def __call__(self, ssid): + """Method to send message to ssid websocket chanel. + + :param ssid: The session identifier. + """ + self.send_websocket_request(self.name, ssid) diff --git a/pocketoptionapi/ws/client.py b/pocketoptionapi/ws/client.py index bf85e7f..a570c56 100644 --- a/pocketoptionapi/ws/client.py +++ b/pocketoptionapi/ws/client.py @@ -1,56 +1,75 @@ import asyncio from datetime import datetime, timedelta, timezone -import websocket import websockets import json import logging import ssl -import time + # Suponiendo la existencia de estos módulos basados en tu código original import pocketoptionapi.constants as OP_code import pocketoptionapi.global_value as global_value from pocketoptionapi.constants import REGION from pocketoptionapi.ws.objects.timesync import TimeSync +from pocketoptionapi.ws.objects.time_sync import TimeSynchronizer logger = logging.getLogger(__name__) timesync = TimeSync() +sync = TimeSynchronizer() + async def on_open(): # pylint: disable=unused-argument """Method to process websocket open.""" - print("CONECTADO CON EXITO") - logger = logging.getLogger(__name__) + print("CONNECTED SUCCESSFUL") logger.debug("Websocket client connected.") global_value.websocket_is_connected = True -async def send_pin(ws): - while not global_value.websocket_is_connected: +async def send_ping(ws): + while global_value.websocket_is_connected is False: await asyncio.sleep(0.1) - print("before pass") - # pass - print("after pass") + pass while True: - await asyncio.sleep(5) - print("sent ping request") + await asyncio.sleep(20) await ws.send('42["ps"]') +async def process_message(message): + try: + data = json.loads(message) + print(f"Received message: {data}") + + # Procesa el mensaje dependiendo del tipo + if isinstance(data, dict) and 'uid' in data: + uid = data['uid'] + print(f"UID: {uid}") + elif isinstance(data, list) and len(data) > 0: + event_type = data[0] + event_data = data[1] + print(f"Event type: {event_type}, Event data: {event_data}") + # Aquí puedes añadir más lógica para manejar diferentes tipos de eventos + + except json.JSONDecodeError as e: + print(f"JSON decode error: {e}") + except KeyError as e: + print(f"Key error: {e}") + except Exception as e: + print(f"Error processing message: {e}") + + class WebsocketClient(object): def __init__(self, api) -> None: """ Inicializa el cliente WebSocket. - - :param ssid: El ID de sesión para la autenticación. - :param url: La URL del WebSocket a la que conectarse. + :param api: Instancia de la clase PocketOptionApi """ self.updateHistoryNew = None self.updateStream = None self.history_data_ready = None - self.successcloseOrder = False + self.successCloseOrder = False self.api = api self.message = None self.url = None @@ -58,66 +77,77 @@ def __init__(self, api) -> None: self.websocket = None self.region = REGION() self.loop = asyncio.get_event_loop() - self.esperar_segundo_mensaje = False - self.recibido_updateClosedDeals = False - - async def reconnect(self): - regs = self.region.get_regions() - for i in regs: - print(f"Reconnecting to {i}...") - async with websockets.connect(i, extra_headers={"Origin": "https://pocketoption.com/ "}) as ws: - print("Conectado a: ", i) - self.websocket = ws - self.url = i - on_message_task = asyncio.create_task(self.websocket_listener(ws)) - sender_task = asyncio.create_task(send_pin(ws)) - message_task = asyncio.create_task(self.send_message(self.message)) - await asyncio.gather(on_message_task, sender_task, message_task) - + self.wait_second_message = False + self._updateClosedDeals = False async def websocket_listener(self, ws): - async for message in ws: - await self.on_message(message) + try: + async for message in ws: + await self.on_message(message) + except Exception as e: + logging.warning(f"Error occurred: {e}") async def connect(self): ssl_context = ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT) ssl_context.check_hostname = False ssl_context.verify_mode = ssl.CERT_NONE - while global_value.websocket_is_connected is False: + try: + await self.api.close() + except: + pass + + while not global_value.websocket_is_connected: for url in self.region.get_regions(True): print(url) try: - async with websockets.connect(url, extra_headers={"Origin": "https://pocketoption.com/ "}) as ws: - - print("Conectado a: ", url) + async with websockets.connect( + url, + ssl=ssl_context, + extra_headers={"Origin": "https://pocketoption.com", "Cache-Control": "no-cache"}, + user_agent_header="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, " + "like Gecko) Chrome/124.0.0.0 Safari/537.36" + ) as ws: + + # print("Connected a: ", url) self.websocket = ws self.url = url + global_value.websocket_is_connected = True + + # Crear y ejecutar tareas + # process_message_task = asyncio.create_task(process_message(self.message)) on_message_task = asyncio.create_task(self.websocket_listener(ws)) - sender_task = asyncio.create_task(send_pin(ws)) - message_task = asyncio.create_task(self.send_message(self.message)) - await asyncio.gather(on_message_task, sender_task, message_task) + sender_task = asyncio.create_task(self.send_message(self.message)) + ping_task = asyncio.create_task(send_ping(ws)) + + await asyncio.gather(on_message_task, sender_task, ping_task) + except websockets.ConnectionClosed as e: + global_value.websocket_is_connected = False await self.on_close(e) + logger.warning("Trying another server") + except Exception as e: + global_value.websocket_is_connected = False await self.on_error(e) - return True + await asyncio.sleep(1) # Esperar antes de intentar reconectar + + return True async def send_message(self, message): while global_value.websocket_is_connected is False: await asyncio.sleep(0.1) - pass self.message = message - if global_value.websocket_is_connected: - - if message is not None: + if global_value.websocket_is_connected and message is not None: + try: await self.websocket.send(message) - - else: - logging.warning("WebSocked not connected") + except Exception as e: + logger.warning(f"Error sending message: {e}") + elif message is not None: + logger.warning("WebSocket not connected") @staticmethod def dict_queue_add(self, dict, maxdict, key1, key2, key3, value): @@ -139,44 +169,29 @@ def dict_queue_add(self, dict, maxdict, key1, key2, key3, value): async def on_message(self, message): # pylint: disable=unused-argument """Method to process websocket messages.""" # global_value.ssl_Mutual_exclusion = True - logger = logging.getLogger(__name__) logger.debug(message) - print(message) - - # message = json.loads(str(message)) if type(message) is bytes: - # Paso 1: Decodificar los bytes a una cadena de texto (string) message = message.decode('utf-8') message = json.loads(message) - # print(message, type(message)) # [:1000000]) + # print(message, type(message)) if "balance" in message: - global_value.balance_id = message["uid"] + if "uid" in message: + global_value.balance_id = message["uid"] global_value.balance = message["balance"] global_value.balance_type = message["isDemo"] - data = { - "balance_id" : message["uid"], - "balance" : message["balance"], - "balance_type" : message["isDemo"] - } - - with open("balance.json", "w") as f: - json.dump(data, f) - elif "requestId" in message and message["requestId"] == 'buy': global_value.order_data = message - # Supongamos que este es el segundo mensaje de interés basado en tu lógica - elif self.esperar_segundo_mensaje and isinstance(message, list): - self.esperar_segundo_mensaje = False # Restablecer para futuros mensajes - self.recibido_updateClosedDeals = False # Restablecer el estado + elif self.wait_second_message and isinstance(message, list): + self.wait_second_message = False # Restablecer para futuros mensajes + self._updateClosedDeals = False # Restablecer el estado - elif self.esperar_segundo_mensaje and isinstance(message, dict) and self.successcloseOrder: + elif isinstance(message, dict) and self.successCloseOrder: self.api.order_async = message - self.successcloseOrder = False # Restablecer para futuros mensajes - self.esperar_segundo_mensaje = False # Restablecer el estado + self.successCloseOrder = False # Restablecer para futuros mensajes elif self.history_data_ready and isinstance(message, dict): self.history_data_ready = False @@ -184,8 +199,7 @@ async def on_message(self, message): # pylint: disable=unused-argument elif self.updateStream and isinstance(message, list): self.updateStream = False - self.api.timesync.server_timestamp = message[0][1] - # print("server_timestamp asignado:", timesync.server_timestamp) + self.api.time_sync.server_timestamp = message[0][1] elif self.updateHistoryNew and isinstance(message, dict): self.updateHistoryNew = False @@ -197,27 +211,24 @@ async def on_message(self, message): # pylint: disable=unused-argument pass # print(message) - if message.startswith('0{"sid":"'): - # print(f"{self.url.split('/')[2]} got 0 sid send 40") + if message.startswith('0') and "sid" in message: await self.websocket.send("40") + elif message == "2": - # print(f"{self.url.split('/')[2]} got 2 send 3") await self.websocket.send("3") - elif message.startswith('40{"sid":"'): - print(f"{self.url.split('/')[2]} got 40 sid send session") - print(f"send: {self.ssid}") + elif "40" and "sid" in message: await self.websocket.send(self.ssid) elif message.startswith('451-['): - # Eliminar el prefijo numérico y el guion para obtener el JSON válido - json_part = message.split("-", 1)[1] + json_part = message.split("-", 1)[1] # Eliminar el prefijo numérico y el guion para obtener el JSON válido # Convertir la parte JSON a un objeto Python message = json.loads(json_part) if message[0] == "successauth": await on_open() + elif message[0] == "successupdateBalance": global_value.balance_updated = True elif message[0] == "successopenOrder": @@ -226,13 +237,13 @@ async def on_message(self, message): # pylint: disable=unused-argument # Si es el primer mensaje de interés elif message[0] == "updateClosedDeals": # Establecemos que hemos recibido el primer mensaje de interés - self.recibido_updateClosedDeals = True - self.esperar_segundo_mensaje = True # Establecemos que esperamos el segundo mensaje de interés + self._updateClosedDeals = True + self.wait_second_message = True # Establecemos que esperamos el segundo mensaje de interés await self.websocket.send('42["changeSymbol",{"asset":"AUDNZD_otc","period":60}]') elif message[0] == "successcloseOrder": - self.successcloseOrder = True - self.esperar_segundo_mensaje = True # Establecemos que esperamos el segundo mensaje de interés + self.successCloseOrder = True + self.wait_second_message = True # Establecemos que esperamos el segundo mensaje de interés elif message[0] == "loadHistoryPeriod": self.history_data_ready = True @@ -242,22 +253,19 @@ async def on_message(self, message): # pylint: disable=unused-argument elif message[0] == "updateHistoryNew": self.updateHistoryNew = True + # self.api.historyNew = None + + elif message.startswith("42") and "NotAuthorized" in message: + logging.error("User not Authorized: Please Change SSID for one valid") + global_value.ssl_Mutual_exclusion = False + await self.websocket.close() async def on_error(self, error): # pylint: disable=unused-argument - """Method to process websocket errors.""" - logger = logging.getLogger(__name__) logger.error(error) - try: - await self.reconnect() - except: - global_value.websocket_error_reason = str(error) - global_value.check_websocket_if_error = True + global_value.websocket_error_reason = str(error) + global_value.check_websocket_if_error = True async def on_close(self, error): # pylint: disable=unused-argument - """Method to process websocket close.""" - logger = logging.getLogger(__name__) - logger.debug("Websocket connection closed.") - try: - await self.reconnect() - except: - global_value.websocket_is_connected = False + # logger.debug("Websocket connection closed.") + # logger.warning(f"Websocket connection closed. Reason: {error}") + global_value.websocket_is_connected = False diff --git a/pocketoptionapi/ws/objects/__pycache__/base.cpython-310.pyc b/pocketoptionapi/ws/objects/__pycache__/base.cpython-310.pyc index 7aed546c655c8c850a81e650eadae760827e391c..277920a5b9e8d5a0023edf69054a887500b8bf36 100644 GIT binary patch delta 89 zcmbQmHj|AzpO=@50SL6K3^#HcG1|MjSj7ZXCTAoTz8Gw=a(nuWTzJC2jnMbrNm;4MCB^!iYZ&J;0sxZR9V!3- diff --git a/pocketoptionapi/ws/objects/__pycache__/base.cpython-311.pyc b/pocketoptionapi/ws/objects/__pycache__/base.cpython-311.pyc deleted file mode 100644 index 828677cc5b77135fd78edc35c616210ab6fa41bb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 969 zcma)4OK;Oa5FS7BXdbAD!l7JzLW%@N9Ez$4fuKl;10fP1Ag6te^N zyYD0y(*4}s4MH~^K{|n_&6oEcxS^6CsF}3Fu6rombQIEUV^=#oii?bO``w7KVU>vN zWmrTCSw$GZ{MP2gJT6c0S7MB=1P?rk*3S*xJtzK3sFy;pyV}fpRTnsZ=f@X9Is+FP^ zGz|qNI`TQfX!Xp^?U}iq(n xN_Yb^mp^e)e3Z&~EN)_f4oN;iNDNKW=CCz`tt4O7knk!@9-dS7=RZn{;5RuI>5%{c diff --git a/pocketoptionapi/ws/objects/__pycache__/base.cpython-312.pyc b/pocketoptionapi/ws/objects/__pycache__/base.cpython-312.pyc deleted file mode 100644 index e4a50f7087aa68d04bd9f373bc283d607a1c837d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 879 zcma)4J8u&~5T3o49XpPA1PWV1TOql*tAbF3ka$Rl0%Hkiu365$b#UVNj@>hs9f}k# zLV+k<(a}WtDKwPiTK<5+(4=DK?i^5Pm}2&uo!y!FX6AFPRsoc)k8$r41NcV9O6&qG zZy=aM2tF9_2tqc4(2(rJ%>BMGF`L%ZdlH4Cf#khN@pjbRlL>zsC;e#1?+04)vFzyl zHtOukZsK-VY3MWxV|f$793=P*(-|T2&Cr;EZ%I2eXK+$H^PP#+v{Q>BPu&NDK@7KkO$$Oly?MU72Ofq1R9y!q@Bd zBkO&2NyT;lWJc;-Yj_2Y?I1zL!6<)};lF3L7 z^)`S0N@h+T_5S(gp1)VLFsg(q?~bCKZy|6nYcY V!eoq{!q!ix#u`VregPiYuis85)A0ZR diff --git a/pocketoptionapi/ws/objects/__pycache__/base.cpython-39.pyc b/pocketoptionapi/ws/objects/__pycache__/base.cpython-39.pyc index 3b7ca3ed30069b594bf5622c03b38e9b0742a261..cd49bfbd4df103febb863d114283fb8aeb67d3b9 100644 GIT binary patch delta 57 zcmbQrHj#}xk(ZZ?0SL6K3^#HcG0Ho-Sj7ZXCTAoT1|I L25nAY+{y?5p%5~DJ_oKtk2ZJ!f}f=y(l#`@7Cn~Y?~M* zCp++oZ|-EbWn`3}e4OJ0qtavrR*A_MICB+Mffj2r6|n)SA~g`f0Vg=YVw2;zu1_}P zk(}(u?ZK!%c{=wjMh&oTFCJk=t;umbCP2~2JhP#q?z|#E(HLGiGbxaEX%Ha;B4j}X z$e%@WAOd99Ewe)-TIU&o58R$xbcO56Dl>PA%~-D9Oyv za}4m*HPkNvi{yhv5(_f*%Zv5%ld@8iON#Y3>oIk(a73}D7p11=MNQtvwuw=Eb0K>O zBctr(V;mnC6($?;selL$IKc@Pn;gq^olym>-j~~hQFZb( z?pc#fxFsih@(43(OpfI-0g6rHna!vMR^!Gi0u+trl{1q7X_o{MQXoPaM1VY5Bm*Kq zcHLqtPAw@(EhkKE7D@To5bMQW@bZ* zl|!UPY7S84Ql+YT;6xkcFR6NQkfmBHRjSkzH=|Ig<mQ=g5P|Ejk>u2uVM2b#8}Cxx!sa*>R*6Yc#FR`qC(X(!St2s|h?s#TVk%bP zVStcz_!C!3;dLt11uc17ooaSWkhoSldAVTDGReNCMpUyZdw^T@fe4XOOEnknpqk5Vf>%$-fVskg;ipalmye2O(_*HZ8H`wIu1aC)^Hw0d-$s0C10eHv>3Vfyh3%N97E%0YJ z{zS$Dg%idy^1Im!W|b^R3&enuxJ(HKmP_x2boWXY(=H>VmmP&!xhW@H=VUk~U4M2llbpQDEXpSDWTy+oNfApC z$`7twIx#j`u83N&1Y@HD8n&7StK=$ z9EmS0741Noe>ahUjD*&`e4-A41BfCwy&71&`~5N}?9vrlC|cCMtJ?*A8Wy0Kj&5gX ztwhM@B}pxNj^>%*u%V4dIK{`(4lrvH<@3ck=@hmU@ma%ROM6{#Vi*H`F=({u;){^( z-b(D~gQJz$@v?TDMxpLs0y10&^T6#GiNQ3Vz=!`(f2y` z+=J$YaDCneS0-0r*6x5cH1(1BQEWmMapT4Nm3kV3$esN!2V1+C&19!%b_cD#rH>4A z$IdasZrfvqzM+?cYoblea)tTb!K!QMqf*+U3c2xuUZp*a(E``#E-;BhuRec3+0Qh$ zU<6?9MjMSr-yCi2{NK^iyc3|7IUbiOo)MJq zwRRg6N7){1^qq#D>I?tzPEyHj^hB3>JdMHN>hFQoM293ZI z9j)kQW7>`L-vV&}Zx5q63T90t51v{nN)&E_P+&iUS@b_uC0jkS|HZi8m2*Kp?HKH}nsLg5=}mDv71B*ey~ z?OqGyA>6I|o(F!(Yk~h8m7N5-0K^oI&o2}9vw=@^?@%d>I~^jQu(;}|Yz{;NjYGXy zxLvMhVq(cVeOvc#FD}7gW1=!}Izd~Z@-qw}p%%qb#ywE#b_wyd&qeUEx550mNPg9# z_or9v4ed}xJM@b-_(&Vv(1t47P+1$Q_Vq6-_rld91E`J;mif2<tb+leoni)e+#7 zN^P>Vrxe>rqMcfyV(H!%4wS4@Sqhq7kk(eSX7kKW=Q9>+|0G|0$?Jk|KcaY+oXg(! zReEBcC0v!Ba6^(1UCv+MdS&3ccTE;~7dNLOZ#QY-)JR^Q{l;cCrSmpeC)us)BlMnAqBvZkdcSNeuGVk4E}IZ2@GU=?^9LImX)(LC7>RwkrpQ8surkK)nmSrfN~84&EAT-uO`dtaE*Y$ z+Wo#q<2{4wNR5E;d!nQJ`Bf*d*NM7b!oj^;hO@`d%JF!Rljihq`#qpO)7*d`b|_|Y zCn%DS$Sj;7{vv{h0VnO5c220u^YjDoVUA=AU}^zLlB(oPnVk8Jyj5=e)`Ce16j!rZ c{_F{QpKeu^q=W>Bn$5EL1iepNRB^EX0AK8CjQ{`u diff --git a/pocketoptionapi/ws/objects/__pycache__/candles.cpython-312.pyc b/pocketoptionapi/ws/objects/__pycache__/candles.cpython-312.pyc deleted file mode 100644 index 9ff38bcb54090978b22722b4eb9faeb763de4bd1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4603 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 diff --git a/pocketoptionapi/ws/objects/__pycache__/time_sync.cpython-310.pyc b/pocketoptionapi/ws/objects/__pycache__/time_sync.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c7b67a47a1f0c13005e723230136c818b9274c26 GIT binary patch literal 2696 zcmbVO&u`>37>%7wCY?@yh<2gCN<;_=Mo1%ZS)mG{u69>&>aNrkhp1BI#-27Mi3i(h z)zS1q_lEYqH?}u8bK|=IMXsFq4-hB5&ofCg(=I|pitRY|XXm~5Jx8vs^&Ge!{PlG7 z5w!lmhxX;d!yerF0TkTfBy*x!O(Fu%G^06N)v2Ny+hqGXXygi1(jIc(#KkKooJ6x^9Q z@vJ0?1HMw>!9jGbPfY_AmSo|*Olmc>O@~Rikuct>Q6@>^z z7ILA-8Jn;iI*f$JFk>NL!om}&m`Yh_p$bJ2YH?f^TKK?&p>g^0X zh2K)Sg*>nP(j-`~8EJsRnrb)d-EbBKFvzl7`7`P)KeJ*DLa7xfkTM-W5p)C6Cmxx6 zejD7kiXp)*)fcuKxVPb9ijs5;LC~QEDT3mh{M;aOkQRxRJVTTL?tCogP=a<_eV`gZ zR-L6>sy4D?rdV#@%;misKA%Nt&uH@!el{*4!EsJl7O-Y6v|;&pFl=@Oj-XI+m4|N? zf-|6M6{={pl}SrzR;wu6c?R#mVC_NSch||}{w+jXLl<&=L9t)L{Hb#axm`NC2Q7jv zwQeYK*(uX^9HtQ1d_ zl1gnsFK}a-=!=Yvwcu9ZzzbkMe^};a1J&Dl|1m_-c)D!+0aoa$;!%(JZk7zveV=82)C8!qA1LwKRiT*2DiOl64@o#bg%$=IapsU`6ñg1OCn zXl&Wxq47Vfo6McX#YoUNv}9$J5646&kn^Z8AuwYO!4w_0S? zBfo%MSe64npqtdP{K>zuTu;1ZX_%9i>2+uz(^GOy2xKKPS-yhKhRlaHYto5j^ z`sTMHL`MTEi&C7)+Uwdb)#hyGYlS!mc$%YoH{5^Q+_uBrkO#j33VpbCuZ^XE%Q&u< zV?@Cw%O1?r=;rJG9sboCxIgIOL0vHTw}`7=jAwkAVY?s4KY)qM-Y7(`>Vs-cn&iTq zNN&#`yFsfi^&yN<_p!i3sa4p+3X=|h0rVymffEqg>5*VH=mi`74TWz9e$~z7@o`!l mTdS}-wf{3#opwwss$B#_SHV}aJ%5eATC>9t;%}38+yj++&pO=@50SI)e3^#InG1+^%Sj7ZXCTAoTz8Gw=a(nuWTzJC2jnMbrNm;4MCB^!ir!Wb#0|2b|9TETl diff --git a/pocketoptionapi/ws/objects/__pycache__/timesync.cpython-311.pyc b/pocketoptionapi/ws/objects/__pycache__/timesync.cpython-311.pyc deleted file mode 100644 index e7553ac6da98cc5cad69f08959e1b2a9f0898757..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3518 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 diff --git a/pocketoptionapi/ws/objects/__pycache__/timesync.cpython-39.pyc b/pocketoptionapi/ws/objects/__pycache__/timesync.cpython-39.pyc index 38798ceb2c927a277ffd2901561de5aae864b7a4..c89d48d2c118c9f10425ec59e64d55a8a29a3bd0 100644 GIT binary patch delta 57 zcmdlgyiu4tk(ZZ?0SI)e3^#InG0D5SSj7ZXCTAoT1|I L25qijvSkMVxcLyh delta 61 zcmdleyj7Sxk(ZZ?0SH{?^KRt!Vp8^Wv5E<(OwLFw$_*&W&q_@$DUJ!qPtHy)@h>RJ P%+GTy$lP4QWXlc!65JCz diff --git a/pocketoptionapi/ws/objects/time_sync.py b/pocketoptionapi/ws/objects/time_sync.py new file mode 100644 index 0000000..e5d7995 --- /dev/null +++ b/pocketoptionapi/ws/objects/time_sync.py @@ -0,0 +1,70 @@ +import logging +import time +from datetime import datetime, timedelta, timezone + + +class TimeSynchronizer: + def __init__(self): + self.server_time_reference = None + self.local_time_reference = None + self.timezone_offset = timedelta(seconds=self._get_local_timezone_offset()) + + @staticmethod + def _get_local_timezone_offset(): + """ + Obtiene el desplazamiento de la zona horaria local en segundos. + + :return: Desplazamiento de la zona horaria local en segundos. + """ + local_time = datetime.now() + utc_time = datetime.utcnow() + offset = (local_time - utc_time).total_seconds() + return offset + + def synchronize(self, server_time): + """ + Sincroniza el tiempo local con el tiempo del servidor. + + :param server_time: Tiempo del servidor en segundos (puede ser un timestamp). + """ + + self.server_time_reference = server_time + self.local_time_reference = time.time() + + def get_synced_time(self): + """ + Obtiene el tiempo sincronizado basado en el tiempo actual del sistema. + + :return: Tiempo sincronizado en segundos. + """ + if self.server_time_reference is None or self.local_time_reference is None: + raise ValueError("El tiempo no ha sido sincronizado aún.") + + # Calcula la diferencia de tiempo desde la última sincronización + elapsed_time = time.time() - self.local_time_reference + # Calcula el tiempo sincronizado + synced_time = self.server_time_reference + elapsed_time + return synced_time + + def get_synced_datetime(self): + """ + Convierte el tiempo sincronizado a un objeto datetime ajustado a la zona horaria local. + + :return: Tiempo sincronizado como un objeto datetime. + """ + synced_time_seconds = self.get_synced_time() + # Redondear los segundos + rounded_time_seconds = round(synced_time_seconds) + # Convertir a datetime en UTC + synced_datetime_utc = datetime.fromtimestamp(rounded_time_seconds, tz=timezone.utc) + # Ajustar el tiempo sincronizado a la zona horaria local + synced_datetime_local = synced_datetime_utc + self.timezone_offset + return synced_datetime_local + + def update_sync(self, new_server_time): + """ + Actualiza la sincronización con un nuevo tiempo del servidor. + + :param new_server_time: Nuevo tiempo del servidor en segundos. + """ + self.synchronize(new_server_time) diff --git a/test.py b/test.py index 5e9fc5f..b71d8d3 100644 --- a/test.py +++ b/test.py @@ -1,15 +1,31 @@ import random import time -import asyncio -import os -import time -from pocketoptionapi.v2.pocketoptionapi2.pocketoptionapi.stable_api import PocketOption -# dotenv.load_dotenv() -SSID=r"""42["auth",{"session":"a:4:{s:10:\"session_id\";s:32:\"0641660deb66bacfe493ee595ad5bcd6\";s:10:\"ip_address\";s:12:\"190.162.4.33\";s:10:\"user_agent\";s:120:\"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36 OPR/107.\";s:13:\"last_activity\";i:1715088712;}bf42446033b557288d0399ac1527842c","isDemo":0,"uid":27658142,"platform":2}]""" +from pocketoptionapi.stable_api import PocketOption + +ssid = (r'') +api = PocketOption(ssid) + + +def direction(): + # Selecciona aleatoriamente entre 'call' y 'put' + return random.choice(['call', 'put']) + + +if __name__ == "__main__": + api.connect() + time.sleep(2) + + print(api.check_connect(), "check connect") -api = PocketOption() + data_candles = api.get_candles("AUDNZD_otc", 60, time.time(), count_request=1) -api.connect() + data, diff = api.process_candle(data_candles, 60) + print(data) + print(diff) + data.to_csv('datos_AUDNZD_otc_test.csv', index=False) + while api.check_connect(): + print(api.get_server_timestamp(), "server datetime") + time.sleep(1) -print(api.get_balance()) \ No newline at end of file + # Cierra la conexión con la API