iqoptionapi
iqoptionapi copied to clipboard
Getting the result data of trades.
Hi,
I don't have the time to fork and manually make a pull request so keep this bumped. I'll be making a couple pull requests on the weekend which add various functionalities to the API.
In order to receive the status of trades alongside the result...
- Add the following code to on line 50 inside the 'iqoptionapi/ws/client.py' file:
if message["name"] == "listInfoData":
listinfodata = lambda: None
listinfodata.__dict__ = message["msg"][0]
self.api.listinfodata.add_listinfodata(listinfodata)
- Create a new class in 'iqoptionapi/ws/objects' called 'listinfodata.py' and add the following code:
"""Module for IQ Option Candles websocket object."""
import json
from collections import OrderedDict
from iqoptionapi.ws.objects.base import Base
class ListInfoData(Base):
def __init__(self):
super(ListInfoData, self).__init__()
self.__name = "listInfoData"
self.__listinfodata_list = OrderedDict()
@property
def listinfodata_list(self):
"""Property to get listinfodata list.
:returns: The list of listinfodata.
"""
return self.__listinfodata_list
@listinfodata_list.setter
def listinfodata_list(self, listinfodata_list):
"""Method to set listinfodata list."""
self.__listinfodata_list = listinfodata_list
@property
def current_listinfodata(self):
"""Method to get current iteminfodata item.
:returns: The object of listinfodata.
"""
return self.listinfodata_list[next(reversed(self.listinfodata_list))]
def get_listinfodata(self, id):
"""Method to get iteminfodata item.
:returns: The object of listinfodata.
"""
return self.listinfodata_list[id]
def add_listinfodata(self, new_listinfodata):
"""Method to add listinfodata."""
#if new_listinfodata.id not in self.listinfodata_list:
self.listinfodata_list[new_listinfodata.id] = new_listinfodata
- Add the following code as an import inside the 'iqoptionapi/api.py' file.
from iqoptionapi.ws.objects.listinfodata import ListInfoData
- Add the following code on line 46 inside the 'iqoptionapi/api.py' file.
listinfodata = ListInfoData()
Once done, you can use the new function by doing the following format, i.e. You can give the result by using the 'win' variable which returns either 'equal' (if the trade is ongoing or a draw), 'win' (if the trade was a win), or 'loose' (if the trade was a loss)
self.api.listinfodata.current_listinfodata.win
or
self.api.listinfodata.get_listinfodata(foo)
For more information on what you can actually get, you can use this JSON data that I've extracted myself while testing.
{"name":"listInfoData","msg":[{"amount":1000000,"id":2095724656,"refund":0,"currency":"USD","currency_char":"$","active_id":1,"active":"EURUSD","value":1.07736,"exp_value":1077360,"dir":"call","created":1489706346,"expired":1489706400,"type_name":"turbo","type":"front.TU","profit":100,"profit_amount":1,"win_amount":1.74,"loose_amount":0,"sum":1,"win":"equal","now":1489706346,"user_id":0,"game_state":0,"profit_income":174,"profit_return":0,"option_type_id":3,"site_id":1,"is_demo":false,"user_balance_id":0,"client_platform_id":9,"re_track":"null","params":null}]}