Thank buy ejtraderIQ private version
last update:2019/12/5
Version:6.0
fix buy() for binary option
only support US Dollar account
https://github.com/Lu-Yi-Hsun/ejtraderIQ/issues/73#issue-406537365
#hight level api ,This api is write base on ""ejtraderIQ.api" for more easy
from ejtraderIQ.stable_api import IQ_Option
#low level api
from ejtraderIQ.api import IQOptionAPI
.
├── docs
├── ejtraderIQ(API code)
├── http(doing http get/post)
└── ws
├── chanels(Doing websocket action)
└── objects(Get back data from websocket action)
sudo pip3 uninstall websocket-client
sudo pip3 install websocket-client==0.56
if you have this problem
https://github.com/Lu-Yi-Hsun/ejtraderIQ/issues/66
fix way
sudo pip3 uninstall websocket
sudo pip3 install websocket-client==0.47.0
clone or download this repository
python setup.py install
import time
from ejtraderIQ.stable_api import IQ_Option
api=IQ_Option("email","password")
goal="EURUSD"
print("get candles")
print(api.get_candles(goal,60,111,time.time()))
from ejtraderIQ.stable_api import IQ_Option
import logging
logging.basicConfig(level=logging.DEBUG,format='%(asctime)s %(message)s')
!!!
Login NOT support SMS Authorization yet
I suggest close it because your robot will stop to wait you to check sms code (on phone)....
!!!
api=IQ_Option("email","password")
default number is 5
https://github.com/Lu-Yi-Hsun/ejtraderIQ/issues/22
Protect if you get some error (ejtraderIQ auto reconnect) too many time,IQoption will ban your IP
api.set_max_reconnect(number)
some time connect will close so this way can check connect and reconnect
try close your network and restart network in this sample
from ejtraderIQ.stable_api import IQ_Option
import logging
import time
logging.basicConfig(level=logging.DEBUG,format='%(asctime)s %(message)s')
api=IQ_Option("email","password")
api.set_max_reconnect(-1)#allow unlimited reconnect
while True:
#you can !!close yuor network!! to simulation network fails
if api.check_connect()==False:#detect the websocket is close
print("try reconnect")
api.connect()#try to connect
print("reconnect Success")
time.sleep(1)
from ejtraderIQ.stable_api import IQ_Option
print(IQ_Option.__version__)
return True/False
print(api.check_connect())
api.connect()
❗be careful get_all_open_time() is very heavy for network.
get_all_open_time() return the DICT
"cfd" is include Stock,Commodities,ETFs asset
DICT["forex"/"cfd"/"crypto"/"digital"/"turbo"/"binary"][Asset Name]["open"]
it will return True/False
from ejtraderIQ.stable_api import IQ_Option
import logging
import random
logging.basicConfig(level=logging.DEBUG,format='%(asctime)s %(message)s')
api=IQ_Option("email","password")
ALL_Asset=api.get_all_open_time()
#check if open or not
print(ALL_Asset["forex"]["EURUSD"]["open"])
print(ALL_Asset["cfd"]["FACEBOOK"]["open"])#Stock,Commodities,ETFs
print(ALL_Asset["crypto"]["BTCUSD-L"]["open"])
print(ALL_Asset["digital"]["EURUSD-OTC"]["open"])
#Binary have two diffenence type:"turbo","binary"
print(ALL_Asset["turbo"]["EURUSD-OTC"]["open"])
print(ALL_Asset["binary"]["EURUSD-OTC"]["open"])
#!!!! exception ""
print(ALL_Asset["binary"]["not exist asset"]["open"])#it will return "{}" a None of the dict
#!!!!print all!!!!
for type_name, data in ALL_Asset.items():
for Asset,value in data.items():
print(type_name,Asset,value["open"])
you will get right all ACTIVES and code
print(api.get_all_ACTIVES_OPCODE())
this api can work for option&digital&Forex&Stock&Commodities&Crypto&ETFs
get the order data by id
from ejtraderIQ.stable_api import IQ_Option
import logging
import time
#logging.basicConfig(level=logging.DEBUG,format='%(asctime)s %(message)s')
api=IQ_Option("email","password")
ACTIVES="EURUSD"
duration=1#minute 1 or 5
amount=1
action="call"#put
print("__For_Binary_Option__")
_,id=api.buy(amount,ACTIVES,action,duration)
while api.get_async_order(id)==None:
pass
print(api.get_async_order(id))
print("\n\n")
print("__For_Digital_Option__spot")
id=api.buy_digital_spot(ACTIVES,amount,action,duration)
while api.get_async_order(id)==None:
pass
order_data=api.get_async_order(id)
print(api.get_async_order(id))
print("\n\n")
print("__For_Forex_Stock_Commodities_Crypto_ETFs")
instrument_type="crypto"
instrument_id="BTCUSD"
side="buy"
amount=1.23
leverage=3
type="market"
limit_price=None
stop_price=None
stop_lose_kind="percent"
stop_lose_value=95
take_profit_kind=None
take_profit_value=None
use_trail_stop=True
auto_margin_call=False
use_token_for_commission=False
check,id=api.buy_order(instrument_type=instrument_type, instrument_id=instrument_id,
side=side, amount=amount,leverage=leverage,
type=type,limit_price=limit_price, stop_price=stop_price,
stop_lose_value=stop_lose_value, stop_lose_kind=stop_lose_kind,
take_profit_value=take_profit_value, take_profit_kind=take_profit_kind,
use_trail_stop=use_trail_stop, auto_margin_call=auto_margin_call,
use_token_for_commission=use_token_for_commission)
while api.get_async_order(id)==None:
pass
order_data=api.get_async_order(id)
print(api.get_async_order(id))
instrument_type: "binary-option"/"turbo-option"/"digital-option"/"crypto"/"forex"/"cfd"
api.subscribe_commission_changed(instrument_type) api.get_commission_change(instrument_type) api.unsubscribe_commission_changed(instrument_type)
Sample code
import time
from ejtraderIQ.stable_api import IQ_Option
api=IQ_Option("email","password")
#instrument_type: "binary-option"/"turbo-option"/"digital-option"/"crypto"/"forex"/"cfd"
instrument_type=["binary-option","turbo-option","digital-option","crypto","forex","cfd"]
for ins in instrument_type:
api.subscribe_commission_changed(ins)
print("Start stream please wait profit change...")
while True:
for ins in instrument_type:
commissio_data=api.get_commission_change(ins)
if commissio_data!={}:
for active_name in commissio_data:
if commissio_data[active_name]!={}:
the_min_timestamp=min(commissio_data[active_name].keys())
commissio=commissio_data[active_name][the_min_timestamp]
profit=(100-commissio)/100
print("instrument_type: "+str(ins)+" active_name: "+str(active_name)+" profit change to: "+str(profit))
#Data have been update so need del
del api.get_commission_change(ins)[active_name][the_min_timestamp]
time.sleep(1)
Sample
from ejtraderIQ.stable_api import IQ_Option
import logging
import time
logging.basicConfig(level=logging.DEBUG,format='%(asctime)s %(message)s')
api=IQ_Option("email","pass")
goal="EURUSD"
print("get candles")
print(api.get_candles(goal,60,111,time.time()))
Money=1
ACTIVES="EURUSD"
ACTION="call"#or "put"
expirations_mode=1
check,id=api.buy(Money,ACTIVES,ACTION,expirations_mode)
if check:
print("!buy!")
else:
print("buy fail")
api.buy(Money,ACTIVES,ACTION,expirations)
#Money:How many you want to buy type(int)
#ACTIVES:sample input "EURUSD" OR "EURGBP".... you can view by get_all_ACTIVES_OPCODE
#ACTION:"call"/"put" type(str)
#expirations:input minute,careful too large will false to buy(Closed market time)thank Darth-Carrotpie's code (int)https://github.com/Lu-Yi-Hsun/ejtraderIQ/issues/6
#return:if sucess return (True,id_number) esle return(Fale,None)
Sample
from ejtraderIQ.stable_api import IQ_Option
api=IQ_Option("email","password")
Money=[]
ACTIVES=[]
ACTION=[]
expirations_mode=[]
Money.append(1)
ACTIVES.append("EURUSD")
ACTION.append("call")#put
expirations_mode.append(1)
Money.append(1)
ACTIVES.append("EURAUD")
ACTION.append("call")#put
expirations_mode.append(1)
print("buy multi")
id_list=api.buy_multi(Money,ACTIVES,ACTION,expirations_mode)
print("check win only one id (id_list[0])")
print(api.check_win_v2(id_list[0]))
purchase time=remaning time - 30
from ejtraderIQ.stable_api import IQ_Option
api=IQ_Option("email","password")
Money=1
ACTIVES="EURUSD"
ACTION="call"#or "put"
expirations_mode=1
while True:
remaning_time=api.get_remaning(expirations_mode)
purchase_time=remaning_time-30
if purchase_time<4:#buy the binary option at purchase_time<4
api.buy(Money,ACTIVES,ACTION,expirations_mode)
break
api.sell_option(sell_all)#input int or list
Sample
from ejtraderIQ.stable_api import IQ_Option
import time
print("login...")
api=IQ_Option("email","password")
Money=1
ACTIVES="EURUSD"
ACTION="call"#or "put"
expirations_mode=1
id=api.buy(Money,ACTIVES,ACTION,expirations_mode)
id2=api.buy(Money,ACTIVES,ACTION,expirations_mode)
time.sleep(5)
sell_all=[]
sell_all.append(id)
sell_all.append(id2)
print(api.sell_option(sell_all))
(only for option)
It will do loop until get win or loose
❗
it have a little problem when network close and reconnect miss get "listInfoData"
this function will doing Infinity loop
api.check_win(23243221)
#""you need to get id_number from buy function""
#api.check_win(id_number)
#this function will do loop check your bet until if win/equal/loose
(only for option)
more better way
an other way to fix that(implement by get_betinfo)
input by int
from ejtraderIQ.stable_api import IQ_Option
api=IQ_Option("email","password")
check,id = api.buy(1, "EURUSD", "call", 1)
print("start check win please wait")
print(api.check_win_v2(id))
"get_binary_option_detail" and "get_all_profit" are base on "get_all_init()",if you want raw data you can call
api.get_all_init()
sample
from ejtraderIQ.stable_api import IQ_Option
print("login...")
api=IQ_Option("email","password")
d=api.get_binary_option_detail()
print(d["CADCHF"]["turbo"])
print(d["CADCHF"]["binary"])
sample
from ejtraderIQ.stable_api import IQ_Option
print("login...")
api=IQ_Option("email","password")
d=api.get_all_profit()
print(d["CADCHF"]["turbo"])
print(d["CADCHF"]["binary"])
(only for option)
it will get infomation about Bet by "id"
❗
if your bet(id) not have answer yet(game_state) or wrong id it will return False input by int
isSuccessful,dict=api.get_betinfo(4452272449)
#api.get_betinfo
#INPUT: int
#OUTPUT:isSuccessful,dict
input how many data you want to get from Trading History(only for binary option)
print(api.get_optioninfo(10))
input how many data you want to get from Trading History(only for binary option)
print(api.get_optioninfo_v2(10))
if your account is login in other plance/PC and doing buy option
you can get the option by this function
import time
from ejtraderIQ.stable_api import IQ_Option
api=IQ_Option("email","password")
while True:
#please open website iqoption and buy some binary option
if api.get_option_open_by_other_pc()!={}:
break
time.sleep(1)
print("Get option from other Pc and same account")
print(api.get_option_open_by_other_pc())
id=list(api.get_option_open_by_other_pc().keys())[0]
api.del_option_open_by_other_pc(id)
print("After del by id")
print(api.get_option_open_by_other_pc())
Digital options buy with actual price sample code
from ejtraderIQ.stable_api import IQ_Option
import time
import random
api=IQ_Option("email","password")
ACTIVES="EURUSD"
duration=1#minute 1 or 5
amount=1
api.subscribe_strike_list(ACTIVES,duration)
#get strike_list
data=api.get_realtime_strike_list(ACTIVES, duration)
print("get strike data")
print(data)
"""data
{'1.127100':
{ 'call':
{ 'profit': None,
'id': 'doEURUSD201811120649PT1MC11271'
},
'put':
{ 'profit': 566.6666666666666,
'id': 'doEURUSD201811120649PT1MP11271'
}
}............
}
"""
#get price list
price_list=list(data.keys())
#random choose Strategy
choose_price=price_list[random.randint(0,len(price_list)-1)]
#get instrument_id
instrument_id=data[choose_price]["call"]["id"]
#get profit
profit=data[choose_price]["call"]["profit"]
print("choose you want to buy")
print("price:",choose_price,"side:call","instrument_id:",instrument_id,"profit:",profit)
#put instrument_id to buy
buy_check,id=api.buy_digital(amount,instrument_id)
if buy_check:
print("wait for check win")
#check win
while True:
check_close,win_money=api.check_win_digital_v2(id)
if check_close:
if float(win_money)>0:
win_money=("%.2f" % (win_money))
print("you win",win_money,"money")
else:
print("you loose")
break
api.unsubscribe_strike_list(ACTIVES,duration)
else:
print("fail to buy,please run again")
{'1.127100': { 'call': {'profit': None, 'id': 'doEURUSD201811120649PT1MC11271'}, 'put': {'profit': 566.6666666666666, 'id': 'doEURUSD201811120649PT1MP11271'} }.......}
from ejtraderIQ.stable_api import IQ_Option
import time
api=IQ_Option("email","password")
ACTIVES="EURUSD"
duration=1#minute 1 or 5
api.subscribe_strike_list(ACTIVES,duration)
while True:
data=api.get_realtime_strike_list(ACTIVES, duration)
for price in data:
print("price",price,data[price])
time.sleep(5)
api.unsubscribe_strike_list(ACTIVES,duration)
buy the digit in current price
from ejtraderIQ.stable_api import IQ_Option
api=IQ_Option("email","password")
ACTIVES="EURUSD"
duration=1#minute 1 or 5
amount=1
action="call"#put
print(api.buy_digital_spot(ACTIVES,amount,action,duration))
from ejtraderIQ.stable_api import IQ_Option
api=IQ_Option("email","passord")
ACTIVES="EURUSD"
duration=1#minute 1 or 5
amount=100
action="put"#put
api.subscribe_strike_list(ACTIVES,duration)
id=api.buy_digital_spot(ACTIVES,amount,action,duration)
while True:
PL=api.get_digital_spot_profit_after_sale(id)
if PL!=None:
print(PL)
get current price profit
from ejtraderIQ.stable_api import IQ_Option
import time
import logging
#logging.basicConfig(level=logging.DEBUG,format='%(asctime)s %(message)s')
api=IQ_Option("email","password")
ACTIVES="EURUSD"
duration=1#minute 1 or 5
api.subscribe_strike_list(ACTIVES,duration)
while True:
data=api.get_digital_current_profit(ACTIVES, duration)
print(data)#from first print it may be get false,just wait a second you can get the profit
time.sleep(1)
api.unsubscribe_strike_list(ACTIVES,duration)
buy_check,id=api.buy_digital(amount,instrument_id)
#get instrument_id from api.get_realtime_strike_list
this api is implement by get_digital_position()
api.check_win_digital(id)#get the id from api.buy_digital
#return:check_close,win_money
#return sample
#if you loose:Ture,o
#if you win:True,1232.3
#if trade not clode yet:False,None
❗❗ this api is asynchronous get id data,it only can get id data before you call the buy action. if you restart the program,the asynchronous id data can not get again,so check_win_digital_v2 may not working,so you need to use "check_win_digital"!
api.check_win_digital_v2(id)#get the id from api.buy_digital
#return:check_close,win_money
#return sample
#if you loose:Ture,o
#if you win:True,1232.3
#if trade not clode yet:False,None
sample code
from ejtraderIQ.stable_api import IQ_Option
import logging
import random
import time
import datetime
#logging.basicConfig(level=logging.DEBUG,format='%(asctime)s %(message)s')
api=IQ_Option("email","password")
ACTIVES="EURUSD"
duration=1#minute 1 or 5
amount=1
action="call"#put
id=(api.buy_digital_spot(ACTIVES,amount,action,duration))
print(id)
if id !="error":
while True:
check,win=api.check_win_digital_v2(id)
if check==True:
break
if win<0:
print("you loss "+str(win)+"$")
else:
print("you win "+str(win)+"$")
else:
print("please try again")
api.close_digital_option(id)
from ejtraderIQ.stable_api import IQ_Option
import logging
import time
#logging.basicConfig(level=logging.DEBUG,format='%(asctime)s %(message)s')
api=IQ_Option("email","password")
ACTIVES="EURUSD-OTC"
duration=1#minute 1 or 5
amount=1
action="call"#put
from datetime import datetime
id=api.buy_digital_spot(ACTIVES,amount,action,duration)
while True:
check,_=api.check_win_digital(id)
if check:
break
print(api.get_digital_position(id))
print(api.check_win_digital(id))
#####sample 2
#print(api.get_order(id))#not work for digital
print(api.get_positions("digital-option"))
print(api.get_digital_position(2323433))#in put the id
print(api.get_position_history("digital-option"))
try this api get_all_open_time
you can search instrument_type and instrument_id from this file
search instrument_type and instrument_id
from ejtraderIQ.stable_api import IQ_Option
api=IQ_Option("email","password")
instrument_type="crypto"
instrument_id="BTCUSD"
side="buy"#input:"buy"/"sell"
amount=1.23#input how many Amount you want to play
#"leverage"="Multiplier"
leverage=3#you can get more information in get_available_leverages()
type="market"#input:"market"/"limit"/"stop"
#for type="limit"/"stop"
# only working by set type="limit"
limit_price=None#input:None/value(float/int)
# only working by set type="stop"
stop_price=None#input:None/value(float/int)
#"percent"=Profit Percentage
#"price"=Asset Price
#"diff"=Profit in Money
stop_lose_kind="percent"#input:None/"price"/"diff"/"percent"
stop_lose_value=95#input:None/value(float/int)
take_profit_kind=None#input:None/"price"/"diff"/"percent"
take_profit_value=None#input:None/value(float/int)
#"use_trail_stop"="Trailing Stop"
use_trail_stop=True#True/False
#"auto_margin_call"="Use Balance to Keep Position Open"
auto_margin_call=False#True/False
#if you want "take_profit_kind"&
# "take_profit_value"&
# "stop_lose_kind"&
# "stop_lose_value" all being "Not Set","auto_margin_call" need to set:True
use_token_for_commission=False#True/False
check,order_id=api.buy_order(instrument_type=instrument_type, instrument_id=instrument_id,
side=side, amount=amount,leverage=leverage,
type=type,limit_price=limit_price, stop_price=stop_price,
stop_lose_value=stop_lose_value, stop_lose_kind=stop_lose_kind,
take_profit_value=take_profit_value, take_profit_kind=take_profit_kind,
use_trail_stop=use_trail_stop, auto_margin_call=auto_margin_call,
use_token_for_commission=use_token_for_commission)
print(api.get_order(order_id))
print(api.get_positions("crypto"))
print(api.get_position_history("crypto"))
print(api.get_available_leverages("crypto","BTCUSD"))
print(api.close_position(order_id))
print(api.get_overnight_fee("crypto","BTCUSD"))
return (True/False,buy_order_id/False)
if Buy sucess return (True,buy_order_id)
"percent"=Profit Percentage
"price"=Asset Price
"diff"=Profit in Money
parameter | ||||
---|---|---|---|---|
instrument_type | instrument_type | |||
instrument_id | instrument_id | |||
side | "buy" | "sell" | ||
amount | value(float/int) | |||
leverage | value(int) | |||
type | "market" | "limit" | "stop" | |
limit_price | None | value(float/int):Only working by set type="limit" | ||
stop_price | None | value(float/int):Only working by set type="stop" | ||
stop_lose_kind | None | "price" | "diff" | "percent" |
stop_lose_value | None | value(float/int) | ||
take_profit_kind | None | "price" | "diff" | "percent" |
take_profit_value | None | value(float/int) | ||
use_trail_stop | True | False | ||
auto_margin_call | True | False | ||
use_token_for_commission | True | False |
check,order_id=api.buy_order(
instrument_type=instrument_type, instrument_id=instrument_id,
side=side, amount=amount,leverage=leverage,
type=type,limit_price=limit_price, stop_price=stop_price,
stop_lose_kind=stop_lose_kind,
stop_lose_value=stop_lose_value,
take_profit_kind=take_profit_kind,
take_profit_value=take_profit_value,
use_trail_stop=use_trail_stop, auto_margin_call=auto_margin_call,
use_token_for_commission=use_token_for_commission)
parameter | ||||
---|---|---|---|---|
ID_Name | "position_id" | "order_id" | ||
order_id | "you need to get order_id from buy_order()" | |||
stop_lose_kind | None | "price" | "diff" | "percent" |
stop_lose_value | None | value(float/int) | ||
take_profit_kind | None | "price" | "diff" | "percent" |
take_profit_value | None | value(float/int) | ||
use_trail_stop | True | False | ||
auto_margin_call | True | False |
ID_Name="order_id"#"position_id"/"order_id"
stop_lose_kind=None
stop_lose_value=None
take_profit_kind="percent"
take_profit_value=200
use_trail_stop=False
auto_margin_call=True
api.change_order(ID_Name=ID_Name,order_id=order_id,
stop_lose_kind=stop_lose_kind,stop_lose_value=stop_lose_value,
take_profit_kind=take_profit_kind,take_profit_value=take_profit_value,
use_trail_stop=use_trail_stop,auto_margin_call=auto_margin_call)
get infomation about buy_order_id
return (True/False,get_order,None)
api.get_order(buy_order_id)
you will get there data
api.get_pending(instrument_type)
you will get there data
return (True/False,get_positions,None)
❗ not support ""turbo-option""
instrument_type="crypto","forex","fx-option","multi-option","cfd","digital-option"
api.get_positions(instrument_type)
you will get there data
you will get one position by buy_order_id
return (True/False,position data,None)
api.get_positions(buy_order_id)
you will get there data
return (True/False,position_history,None)
api.get_position_history(instrument_type)
instrument_type="crypto","forex","fx-option","turbo-option","multi-option","cfd","digital-option"
get_position_history_v2(instrument_type,limit,offset,start,end)
from ejtraderIQ.stable_api import IQ_Option
import logging
import random
import time
import datetime
logging.basicConfig(level=logging.DEBUG,format='%(asctime)s %(message)s')
api=IQ_Option("email","password")
#instrument_type="crypto","forex","fx-option","turbo-option","multi-option","cfd","digital-option"
instrument_type="digital-option"
limit=2#How many you want to get
offset=0#offset from end time,if end time is 0,it mean get the data from now
start=0#start time Timestamp
end=0#Timestamp
data=api.get_position_history_v2(instrument_type,limit,offset,start,end)
print(data)
#--------- this will get data start from 2019/7/1(end) to 2019/1/1(start) and only get 2(limit) data and offset is 0
instrument_type="digital-option"
limit=2#How many you want to get
offset=0#offset from end time,if end time is 0,it mean get the data from now
start=int(time.mktime(datetime.datetime.strptime("2019/1/1", "%Y/%m/%d").timetuple()))
end=int(time.mktime(datetime.datetime.strptime("2019/7/1", "%Y/%m/%d").timetuple()))
data=api.get_position_history_v2(instrument_type,limit,offset,start,end)
print(data)
get available leverages
return (True/False,available_leverages,None)
api.get_available_leverages(instrument_type,actives)
you will do this
return (True/False)
api.cancel_order(buy_order_id)
you will do this
return (True/False)
api.close_position(buy_order_id)
return (True/False,overnight_fee,None)
api.get_overnight_fee(instrument_type,active)
❗
get_candles can not get "real time data" ,it will late about 30sec
if you very care about real time you need use
"get realtime candles" OR "collect realtime candles"
sample
""now"" time 1:30:45sec
-
you want to get candles 1:30:45sec now
you may get 1:30:15sec data have been late approximately 30sec
-
you want to get candles 1:00:33sec
you will get the right data
api.get_candles(ACTIVES,interval,count,endtime)
#ACTIVES:sample input "EURUSD" OR "EURGBP".... youcan
#interval:duration of candles
#count:how many candles you want to get from now to past
#endtime:get candles from past to "endtime"
❗ try this code to get more than 1000 candle
from ejtraderIQ.stable_api import IQ_Option
import time
api=IQ_Option("email","password")
end_from_time=time.time()
ANS=[]
for i in range(70):
data=api.get_candles("EURUSD", 60, 1000, end_from_time)
ANS =data+ANS
end_from_time=int(data[0]["from"])-1
print(ANS)
from ejtraderIQ.stable_api import IQ_Option
import logging
import time
#logging.basicConfig(level=logging.DEBUG,format='%(asctime)s %(message)s')
print("login...")
api=IQ_Option("email","password")
goal="EURUSD"
size="all"#size=[1,5,10,15,30,60,120,300,600,900,1800,3600,7200,14400,28800,43200,86400,604800,2592000,"all"]
maxdict=10
print("start stream...")
api.start_candles_stream(goal,size,maxdict)
#DO something
print("Do something...")
time.sleep(10)
print("print candles")
cc=api.get_realtime_candles(goal,size)
for k in cc:
print(goal,"size",k,cc[k])
print("stop candle")
api.stop_candles_stream(goal,size)
- input:
- goal:"EURUSD"...
- size:[1,5,10,15,30,60,120,300,600,900,1800,3600,7200,14400,28800,43200,86400,604800,2592000,"all"]
- maxdict:set max buffer you want to save
size
- input:
- goal:"EURUSD"...
- size:[1,5,10,15,30,60,120,300,600,900,1800,3600,7200,14400,28800,43200,86400,604800,2592000,"all"]
- output:
- dict
- input:
- goal:"EURUSD"...
- size:[1,5,10,15,30,60,120,300,600,900,1800,3600,7200,14400,28800,43200,86400,604800,2592000,"all"]
the get_server_timestamp time is sync with iqoption
api.get_server_timestamp()
this sample get the Purchase time clock
import time
#get the end of the timestamp by expiration time
def get_expiration_time(t):
exp=time.time()#or api.get_server_timestamp() to get more Precision
if (exp % 60) > 30:
end = exp - (exp % 60) + 60*(t+1)
else:
end = exp - (exp % 60)+60*(t)
return end
expiration_time=2
end_time=0
while True:
if end_time-time.time()-30<=0:
end_time = get_expiration_time(expiration_time)
print(end_time-time.time()-30)
time.sleep(1)
instrument_type="binary-option"/"digital-option"/"forex"/"cfd"/"crypto"
from ejtraderIQ.stable_api import IQ_Option
import logging
import time
#logging.basicConfig(level=logging.DEBUG,format='%(asctime)s %(message)s')
api=IQ_Option("email","password")
instrument_type="digital-option"#"binary-option"/"digital-option"/"forex"/"cfd"/"crypto"
api.subscribe_top_assets_updated(instrument_type)
print("__Please_wait_for_sec__")
while True:
if api.get_top_assets_updated(instrument_type)!=None:
print(api.get_top_assets_updated(instrument_type))
print("\n\n")
time.sleep(1)
api.unsubscribe_top_assets_updated(instrument_type)
https://github.com/Lu-Yi-Hsun/ejtraderIQ/issues/131
from ejtraderIQ.stable_api import IQ_Option
import logging
import time
import operator
#logging.basicConfig(level=logging.DEBUG,format='%(asctime)s %(message)s')
def opcode_to_name(opcode_data,opcode):
return list(opcode_data.keys())[list(opcode_data.values()).index(opcode)]
api=IQ_Option("email","password")
api.update_ACTIVES_OPCODE()
opcode_data=api.get_all_ACTIVES_OPCODE()
instrument_type="digital-option"#"binary-option"/"digital-option"/"forex"/"cfd"/"crypto"
api.subscribe_top_assets_updated(instrument_type)
print("__Please_wait_for_sec__")
while True:
if api.get_top_assets_updated(instrument_type)!=None:
break
top_assets=api.get_top_assets_updated(instrument_type)
popularity={}
for asset in top_assets:
opcode=asset["active_id"]
popularity_value=asset["popularity"]["value"]
try:
name=opcode_to_name(opcode_data,opcode)
popularity[name]=popularity_value
except:
pass
sorted_popularity = sorted(popularity.items(), key=operator.itemgetter(1))
print("__Popularity_min_to_max__")
for lis in sorted_popularity:
print(lis)
api.unsubscribe_top_assets_updated(instrument_type)
for now... only support get binary option mood , i will implement beterr if need..
Sample
from ejtraderIQ.stable_api import IQ_Option
api=IQ_Option("email","password")
goal="EURUSD"
api.start_mood_stream(goal)
print(api.get_traders_mood(goal))
api.stop_mood_stream(goal)
get percent of higher(call)
if you want to know percent of lower(put) just 1-higher
api.get_traders_mood(goal)
#input:input "EURUSD" OR "EURGBP".... you can view by get_all_ACTIVES_OPCODE
#output:(float) the higher(call)%
#if you want to know lower(put)% try 1-api.get_traders_mood(goal)
get all you start mood
api.get_all_traders_mood(goal)
#output:(dict) all mood you start
api.get_balance()
reset practice balance to $10000
from ejtraderIQ.stable_api import IQ_Option
api=IQ_Option("email","password")
print(api.reset_practice_balance())
api.change_balance(MODE)
#MODE: "PRACTICE"/"REAL"