iqoptionapi icon indicating copy to clipboard operation
iqoptionapi copied to clipboard

Getting the result data of trades.

Open frxncisjoseph opened this issue 7 years ago • 16 comments

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...

  1. 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)
  1. 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
  1. Add the following code as an import inside the 'iqoptionapi/api.py' file.
from iqoptionapi.ws.objects.listinfodata import ListInfoData
  1. 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}]}

frxncisjoseph avatar Mar 16 '17 23:03 frxncisjoseph