Keyboard Shortcuts
Likes
- Twsapi
- Messages
Search
Re: Pulling reqMktData for multiple tickers
Hi Patrick,
Have you considered using input to get the symbols? That way, no need to change any code with cut and paste. And, you can loop for as many symbols as you need, each day having a different set of symbols. Maybe something like: sym = '' req_id = 0 while not sym=='0': ??? sym = input("Please enter symbol or 0 to end") ??? print(f'symbol is: {sym}') ??? req_id += 1 ??? app.reqMktData(req_id, usTechStk(sym), "", False, False, []) ? ? ? |
Re: Pulling reqMktData for multiple tickers
Victems of Python?
Regarding this discussion, I recalled, how `IB-Ruby` does it: # define symbos > symbols = %W( ANW? AEB? AED? AEG? AEH AER? HIVE AJRD AET? AMG? AFL? MITT? AGCO? A? AEM? ADC? AL? APD? AYR ) # put into a file-database > IB::Symbols.allocate_collection :w20???????????????????????????????????????????? ? => IB::Symbols::W20 > symbols.each_with_index{ |s,i| IB::Symbols::W20.add_contract i, IB::Stock.new( symbol: s? ) } # call threaded market-price method and wait for all threads to finish > prices = Symbols::W20.map{|x| x.market_price(thread: true )}.each( &:join); Documentation: https://ib-ruby.github.io/ib-doc/market_price.html |
Re: Pulling reqMktData for multiple tickers
Ray, that's a pretty good description of why you use a threadpool. For reference, here is how the Java API works (different from what Ray described which I suspect is how it works in Python).? Note, this is more to reduce future questions than for this question. There is an IB thread that loops over the socket waiting for either requests from your program and/or responses from IB.? This is internal to IB's API.? Then there is a thread created by IB's API that handles callbacks for that socket.? Finally, there is your main thread (probably created when the program started).? Your main thread makes the calls to the API to register handlers for ticks for specific tickers.? The internal thread gets those messages and uses the socket to write messages requesting specific data feeds to the network (to IB).? When IB responds, the internal thread packages up the response and gives it to the IB callback thread which calls your callback you registered with your main thread.? You do your work on this callback thread and make your orders from this callback thread (synchronously, IB's API isn't thread-safe).? Your main thread waits for you to tell it to quit the program or for the connection to IB breaks (at which time you can reconnect or relaunch your program). Ray is right.? You can add the complexity of a threadpool and have the callback thread create task objects (containing the ticker and tick) which run on the threadpool but that probably isn't necessary unless you are doing something very computational intensive. I hope this clarifies things for you.? Concurrency is hard and it is very easy to get lost in the weeds when working out a design. Hunter PS don't write to a DB, use a queue in those cases
On Wednesday, May 5, 2021, 12:07:37 PM PDT, Ray Racine <ray.racine@...> wrote:
So lets step back a bit.? Conceptually any regular old program you wirte wiith the standard IBK client library (there are other ways to do it) has two (2) threads of execution.? The first is the main thread that starts running when you run your Python program.? The second is a looping "Inbound" thread created by the IBK client library on the socket connection that reads any incoming messages from IBK, parses them, and calls the appropriate "callback" function for that particular message. So this is Asychronous in the sense that the first thread can and will freely fire off requests to IBK and meanwhile the second thread is happily reading in all the responses and invoking the callback functions.??? An analogy is if you are the first thread you can write a bunch of letters to IBK and drop them off in the mailbox then the Postal Service delivers them to IBK.? Eventually, at some point, at their convience, IBK will answer those letters and the Postal Service will evenutally deliver them to your mailbox where, lets say your Wife gets all the mail in your home and distributes all the letters to the family.? The Postal Service is the internet and your Wife is the Second Thread. Notice, unless you the Thread 1, the sender,? and your Wife, Thread 2, somehow "meetup" you will never know IBK responsed to your letters. This is actually somewhat key, but I'll not get into it now. OK, so lets talk threads: Should you create N threads to fire off N requests?? Not really necessary.? To send a Request Msg to IBK is a few 10s of bytes pushed over the socket and over the internet which a single thread can do Bang, Bang, Bang in a few milliseconds.? Could you spawn a dedicated thread for each individual and every individual request?? Yes, but the overhead in creating a thread is probably on par with just sending a request alone. So given Thread Main ?- Send Req 1 - Send Req 2 - Send Req 3 versus Thread Main ?- Spawn Thread to Send Req 1 ?- Spawn Thread? to Send Req 2 - Spane Thread to Send Req 3 Is a lot of compexity for little to no gain.? In fact the second will be longer.? Sending a request is a near nothing in time so in this example the first approach is fine. OK so what about in the Inbound side after you ripped through your requests bang, bang, bang.?? IBK will start sending responses for all three request which will arrive in some arbitrary and mixed order.? So for three reqMktData requests you are going to get a stream of incoming TickXXX msgs all mixed together.? Say TickPrice, TickSize, ... for? AAPL, SPY,? AAPL, AMD, SPY, SPY, AMD, ... ticks etc. So these are all coming in and are handled by the Inbound Thread, Thread 2.? However, you know that you used ReqId 101, 102 and 103 respectively for each request. So if a TickSize msg shows up, you know that if the ReqId is 101 that that was the AAPL mktDataReq TickSize etc. So what to do?? Well as each message comes in you do whatever you like with each one.? Only interest in the BID and ASK,? then throw all the others away.? You could write the Bid and Ask values into a DB.? Or you put them into a hashmap into a vector/list ...? When you get the Bid and Ask msgs for each stock you can happily send a cancel mktDataReq message for ReqId XXX.? Notice you are donig N requests with N streamed reponses and we haven't created a bunch of threads. We certainly could. No need!! (so far) as we are just doing: Send mktDataReq, Wait on Bid and Ask Tick msgs, Write to a file,? Cancel Req. So when we would ever need threads at all. ? Yea, this would start to get a little subtle.? You might create and use a Native Thread Pool if say you were to stream N reqMktData requests for N stocks and you were doing complex computational Time Series Analysis on each data stream.? You might create N Green Threads if say you structured your code into Agent Classes where each Agent did a series of work requests and processing.? For example, say I have a OptionChainAgent where creating and running an Agent with a given symbol would call ReqMktData on the underlying stock, collect some data, cancel the request, request a ContractDetails to get the ConId, they use the ConId to get the Options with 1.5 StdDevs from a set number of Exchanges for a given date, then for each stirke do a reqMktData to some data.?? Here I might run _each_ Agent on its own thread and then each Agent may create even more threads to do some parts of the above work stream. Mine do. So one final thought as ti whether it is ever dealing with threads at all.? Yes, but avoid if at all possible.? Consider a Watchlist you created in the IBK's TWS with 50 stocks.?? IBK could loop through each one, one-by-one, creating a reqMktData, geting some data, canceling the request, update the Watchlist, loop to the next symbol, forever.? Very inefficient.? Sloooow.? Insteak IBK probably fires off 50 reqMktData requests bang, bang, bang, .... and as a msg arrives for? a particlur symbol updates the Watchlist immediately.??? Basically there is a crossover point where threads become necessary. Sorry I know this is fustrating because you'd be a lot happier if I just answered with a nice snippit of working code.? But I don't use Python.? And I did offer the opinion that for your (from what I know) very simple case you don't need to deal with Threads? at all.? Final Thougt: IF YOU ARE NOT AN EXPERIENCED PROGRAMMER WITH CONCURRENT AND PARALLEL PROGRAMS THEN JUST DON"T USE THREADS UNLESS YOU REALLY REALLY REALLY HAVE TO. On Wed, May 5, 2021 at 2:02 PM Patrick C <zenfiretrading@...> wrote:
|
Re: Pulling reqMktData for multiple tickers
So lets step back a bit.? Conceptually any regular old program you wirte wiith the standard IBK client library (there are other ways to do it) has two (2) threads of execution.? The first is the main thread that starts running when you run your Python program.? The second is a looping "Inbound" thread created by the IBK client library on the socket connection that reads any incoming messages from IBK, parses them, and calls the appropriate "callback" function for that particular message. So this is Asychronous in the sense that the first thread can and will freely fire off requests to IBK and meanwhile the second thread is happily reading in all the responses and invoking the callback functions.??? An analogy is if you are the first thread you can write a bunch of letters to IBK and drop them off in the mailbox then the Postal Service delivers them to IBK.? Eventually, at some point, at their convience, IBK will answer those letters and the Postal Service will evenutally deliver them to your mailbox where, lets say your Wife gets all the mail in your home and distributes all the letters to the family.? The Postal Service is the internet and your Wife is the Second Thread. Notice, unless you the Thread 1, the sender,? and your Wife, Thread 2, somehow "meetup" you will never know IBK responsed to your letters. This is actually somewhat key, but I'll not get into it now. OK, so lets talk threads: Should you create N threads to fire off N requests?? Not really necessary.? To send a Request Msg to IBK is a few 10s of bytes pushed over the socket and over the internet which a single thread can do Bang, Bang, Bang in a few milliseconds.? Could you spawn a dedicated thread for each individual and every individual request?? Yes, but the overhead in creating a thread is probably on par with just sending a request alone. So given Thread Main ?- Send Req 1 - Send Req 2 - Send Req 3 versus Thread Main ?- Spawn Thread to Send Req 1 ?- Spawn Thread? to Send Req 2 - Spane Thread to Send Req 3 Is a lot of compexity for little to no gain.? In fact the second will be longer.? Sending a request is a near nothing in time so in this example the first approach is fine. OK so what about in the Inbound side after you ripped through your requests bang, bang, bang.?? IBK will start sending responses for all three request which will arrive in some arbitrary and mixed order.? So for three reqMktData requests you are going to get a stream of incoming TickXXX msgs all mixed together.? Say TickPrice, TickSize, ... for? AAPL, SPY,? AAPL, AMD, SPY, SPY, AMD, ... ticks etc. So these are all coming in and are handled by the Inbound Thread, Thread 2.? However, you know that you used ReqId 101, 102 and 103 respectively for each request. So if a TickSize msg shows up, you know that if the ReqId is 101 that that was the AAPL mktDataReq TickSize etc. So what to do?? Well as each message comes in you do whatever you like with each one.? Only interest in the BID and ASK,? then throw all the others away.? You could write the Bid and Ask values into a DB.? Or you put them into a hashmap into a vector/list ...? When you get the Bid and Ask msgs for each stock you can happily send a cancel mktDataReq message for ReqId XXX.? Notice you are donig N requests with N streamed reponses and we haven't created a bunch of threads. We certainly could. No need!! (so far) as we are just doing: Send mktDataReq, Wait on Bid and Ask Tick msgs, Write to a file,? Cancel Req. So when we would ever need threads at all. ? Yea, this would start to get a little subtle.? You might create and use a Native Thread Pool if say you were to stream N reqMktData requests for N stocks and you were doing complex computational Time Series Analysis on each data stream.? You might create N Green Threads if say you structured your code into Agent Classes where each Agent did a series of work requests and processing.? For example, say I have a OptionChainAgent where creating and running an Agent with a given symbol would call ReqMktData on the underlying stock, collect some data, cancel the request, request a ContractDetails to get the ConId, they use the ConId to get the Options with 1.5 StdDevs from a set number of Exchanges for a given date, then for each stirke do a reqMktData to some data.?? Here I might run _each_ Agent on its own thread and then each Agent may create even more threads to do some parts of the above work stream. Mine do. So one final thought as ti whether it is ever dealing with threads at all.? Yes, but avoid if at all possible.? Consider a Watchlist you created in the IBK's TWS with 50 stocks.?? IBK could loop through each one, one-by-one, creating a reqMktData, geting some data, canceling the request, update the Watchlist, loop to the next symbol, forever.? Very inefficient.? Sloooow.? Insteak IBK probably fires off 50 reqMktData requests bang, bang, bang, .... and as a msg arrives for? a particlur symbol updates the Watchlist immediately.??? Basically there is a crossover point where threads become necessary. Sorry I know this is fustrating because you'd be a lot happier if I just answered with a nice snippit of working code.? But I don't use Python.? And I did offer the opinion that for your (from what I know) very simple case you don't need to deal with Threads? at all.? Final Thougt: IF YOU ARE NOT AN EXPERIENCED PROGRAMMER WITH CONCURRENT AND PARALLEL PROGRAMS THEN JUST DON"T USE THREADS UNLESS YOU REALLY REALLY REALLY HAVE TO. On Wed, May 5, 2021 at 2:02 PM Patrick C <zenfiretrading@...> wrote:
|
Re: Pulling reqMktData for multiple tickers
Oops.? Sorry for the second post. Make that 'a callback for each ticker' and register said callback using reqMktData (or whichever API call you are using).? Basically, don't use threads unless you know you need them. Hunter
On Wednesday, May 5, 2021, 12:04:32 PM PDT, Hunter C Payne <hunterpayne2001@...> wrote:
I'm not a Python programmer.? I would hope that Python has some stock threadpool library for you to use.? Perhaps some of the Python folks could recommend one to you.? Concurrent programming is hard; most professional programmers can't do it.? You can still handle multiple tickers without concurrent programming though.? There is no reason you need multiple threads.? Just make a callback for each thread (it will run on the TCP socket's thread).? That's far easier and will work well enough.? Like I said, it isn't assured that this single threaded way won't be faster.? Unless you are doing lots of work in your callback (as in doing matrix multiplies or DB queries or something like that), then you are fine. Hunter
On Wednesday, May 5, 2021, 11:24:56 AM PDT, Patrick C <zenfiretrading@...> wrote:
Hunter, thank you so much. But I've got no idea what you just said to me haha. I am a prime example of a "shade tree" python mechanic. I got no idea how to build an alternator in a car, but I know where it goes haha. I'm trying to build this program for my buddy but I might just tell him that its over my head with multiple stocks that change amount each day. I can actually build this program with multiple stocks. IF.. they didnt change. OR.. IF the number amount didnt change. And I would just tell him... ok copy/paste the new stock name here, here, here, ect ect. But since one day it could be 1 stock, next day 7 stocks. I'm trying to make it so the program just reacts accordingly. I think it might be over my head right now.?
|
Re: Pulling reqMktData for multiple tickers
I'm not a Python programmer.? I would hope that Python has some stock threadpool library for you to use.? Perhaps some of the Python folks could recommend one to you.? Concurrent programming is hard; most professional programmers can't do it.? You can still handle multiple tickers without concurrent programming though.? There is no reason you need multiple threads.? Just make a callback for each thread (it will run on the TCP socket's thread).? That's far easier and will work well enough.? Like I said, it isn't assured that this single threaded way won't be faster.? Unless you are doing lots of work in your callback (as in doing matrix multiplies or DB queries or something like that), then you are fine. Hunter
On Wednesday, May 5, 2021, 11:24:56 AM PDT, Patrick C <zenfiretrading@...> wrote:
Hunter, thank you so much. But I've got no idea what you just said to me haha. I am a prime example of a "shade tree" python mechanic. I got no idea how to build an alternator in a car, but I know where it goes haha. I'm trying to build this program for my buddy but I might just tell him that its over my head with multiple stocks that change amount each day. I can actually build this program with multiple stocks. IF.. they didnt change. OR.. IF the number amount didnt change. And I would just tell him... ok copy/paste the new stock name here, here, here, ect ect. But since one day it could be 1 stock, next day 7 stocks. I'm trying to make it so the program just reacts accordingly. I think it might be over my head right now.?
|
Re: Pulling reqMktData for multiple tickers
Hunter, thank you so much. But I've got no idea what you just said to me haha. I am a prime example of a "shade tree" python mechanic. I got no idea how to build an alternator in a car, but I know where it goes haha. I'm trying to build this program for my buddy but I might just tell him that its over my head with multiple stocks that change amount each day. I can actually build this program with multiple stocks. IF.. they didnt change. OR.. IF the number amount didnt change. And I would just tell him... ok copy/paste the new stock name here, here, here, ect ect. But since one day it could be 1 stock, next day 7 stocks. I'm trying to make it so the program just reacts accordingly. I think it might be over my head right now.?
|
Re: Pulling reqMktData for multiple tickers
So what you want to do is to have a threadpool so that when you get ticks from the TCP socket, you can launch a task on that threadpool (the size of the pool should be the core count - 1 for the TCP socket's thread).? This is quite easy in the JVM languages, but you are out in Python land.? So you want to do something where you generate a Task on each tick and that task contains the ticker and tick pricing information.? The threadpool schedules that task, it is executed and in a synchronized way would do whatever action is necessary (make an order, etc).? Make sure to synchronize your access to IB and the TCP socket to take those actions to avoid synch bugs. As a side note, I doubt this scheme is worthwhile.? The overhead of making the tasks is likely more than the CPU usage by your task.? Unless you are doing something very computational intensive in your tasks, the CPU would likely completely the work before a task could be created and executed.? IB is very slow, CPUs are very fast. Hunter
On Wednesday, May 5, 2021, 11:02:06 AM PDT, Patrick C <zenfiretrading@...> wrote:
I'm not picking this method for any reason other then my mind cant figure out any other way to do it. LOL? |
Re: Pulling reqMktData for multiple tickers
I'm not picking this method for any reason other then my mind cant figure out any other way to do it. LOL? |
Re: Pulling reqMktData for multiple tickers
Hi Patric, I have one thread and keep sequential thread IDs in DB as I corelate them to data received. The TCP socket is not asynchronous so I am not sure if your threading separately for each request doest anything because you still go through same TCP socket. It probably saves you some microsecond which might be significant if doing HFT. Otherwise, sending requests one after other should be fast too.? Callbacks keep receiving data in no order (out of our control) so again not sure if threading helps. So yeah, maybe you are over complicating. ^^^ I am talking in context of C++ and not Python. I would be interested to hear a senior person defend your method as better as it may be somehow future proofing and something I am missing. Aha, if you will have multiple account support in future ;) this may help. - Bruce On Wed, May 5, 2021, 1:18 PM Patrick C <zenfiretrading@...> wrote:
|
Re: Submit orders to TWS via API
Nich Thanks for your reply...?? i am using the correct port for the live environment...? ?I am able to connect in live mode but it appears that order placed not getting confirmed in live like in demo! mode...i am connecting via TWS so was not?aware that i also needed to configure?the IB gateway but will give that a try too regards Ed On Wed, May 5, 2021 at 6:13 PM Nich Overend <nich@...> wrote:
|
Pulling reqMktData for multiple tickers
Hey guys, what I am trying to perform is a reqMktData pull (I'm pulling the bid,ask,last prices) for multiple tickers. Normally I would just change the ID number for each ticker.. but for this specific program I am building. The ticker amounts are going to change each day. One day it could be 3 stocks, next day it could be 7.? tickerId = 0 tickers = ["JG", "AAPL", "FB"] ? ? global tickerId ? ? for ticker in tickers: ? ? ? ? tickerId += 1 ? ? ? ? app.reqMktData(tickerId, usTechStk(ticker), "", False, False, []) ? ? ? ? time.sleep(5) #Add some breathing room for testing ? ? ? ?? threads = [] for ticker in tickers: ? ? tickercount += 1 ? ? ? ?? for _ in range(tickercount): ? ? t = threading.Thread(target=dataReturn, args=(app,)) ? ? t.start() ? ? ? threads.append(t) |
Re: Submit orders to TWS via API
开云体育The basic things that I would check are: ? Usually TWS has one port for paper (7497) and a different port for live (7496). ? Also, in IB Gateway you have to set the account options to allow login and non-read-only access separately. ? Nich ? From: [email protected] <[email protected]>
On Behalf Of Ed Bell via groups.io
Sent: 05 May 2021 18:09 To: [email protected] Subject: [TWS API] Submit orders to TWS via API ? Hi , I am attempting to use the piece of code (see below) to place orders to TWS.? ?it works fine executing the orders on the demo account with confirmation?from TWS as expected...? However when connected to live mode it does not execute successfully although connection to?TWS is confirmed..? The objective is to have this code running?continuously in the background executing trade files from a trade folder.... ? Not a python expert so excuse minor details!..? just concentrating on getting this to work in the live mode ? Any help appreciated..? thanks ? regards ed ? ? # ib_api_demo.py#### |
Submit orders to TWS via API
Hi , I am attempting to use the piece of code (see below) to place orders to TWS.? ?it works fine executing the orders on the demo account with confirmation?from TWS as expected...? However when connected to live mode it does not execute successfully although connection to?TWS is confirmed..? The objective is to have this code running?continuously in the background executing trade files from a trade folder.... Not a python expert so excuse minor details!..? just concentrating on getting this to work in the live mode Any help appreciated..? thanks regards ed # ib_api_demo.py#### from ib.ext.Contract import Contract from ib.ext.Order import Order from ib.opt import Connection, message import sys import time import os import os.path import shutil import _winapi ? ? def error_handler(msg): ? ? """Handles the capturing of error messages""" ? ? print ("Server Error: %s" % msg) def reply_handler(msg): ? ? """Handles of server replies""" ? ? print ("Server Response: %s, %s" % (msg.typeName, msg)) def nextValid(self, orderId): ? ? self.nextOrderId=orderId ? ? self.start() def create_contract(symbol, sec_type, exch, prim_exch, curr): ? ? contract = Contract() ? ? contract.m_symbol = symbol ? ? contract.m_secType = sec_type ? ? contract.m_exchange = exch ? ? contract.m_primaryExch = prim_exch ? ? contract.m_currency = curr ? ? return contract def create_order(order_type, quantity, action): ? ? """Create an Order object (Market/Limit) to go long/short. ? ? ? order_type - 'MKT', 'LMT' for Market or Limit orders ? ? quantity - Integral number of assets to order ? ? action - 'BUY' or 'SELL'""" ? ? order = Order() ? ? order.m_orderType = order_type ? ? order.m_totalQuantity = quantity ? ? order.m_action = action ? ? return order def GetFileDetails(): ? ? myList = [] ? ? global my_path ? ? my_path = os.path.join('C:\\', ? ? ? ? ? ? ? ? ? ? ? trade_path, ? ? ? ? ? ? ? ? ? ? ? ? 'trade.txt') ? ? with open(my_path , "r") as file: ? ? ? ? first_line = file.readline() ? ? ? ? print(first_line) ? ? myList=first_line.split(',') ? ? return myList ? ? ? ? ? ? contract_detail=[] a=1 while True: #if __name__ == "__main__": ? ? try: ? ? ? ? # Connect to the Trader Workstation (TWS) running on the ? ? ? ? # usual port of 7496, with a clientId of 100 ? ? ? ? tws_conn = Connection.create(port=7496, clientId=100) ? ? ? ? tws_conn.connect() ? ? ? ? print ("connected!" + "\n") ? ? ? ? # Assign the error handling function defined above ? ? ? ? # to the TWS connection ? ? ? ? tws_conn.register(error_handler, 'Error') ? ? ? ? # Assign all of the server reply messages to the ? ? ? ? # reply_handler function defined above ? ? ? ? tws_conn.registerAll(reply_handler) ? ? ? ? contract_detail=GetFileDetails() ? ? ? ? # Create an order ID which is 'global' for this session. This ? ? ? ? # will need incrementing once new orders are submitted. ? ? ? ? order_id = contract_detail[9] ? ? ? ? ? ? ? ? # Create a contract in stock via SMART order routing ? ? ? ? eur_contract= create_contract(contract_detail[1], contract_detail[2], contract_detail[3], contract_detail[4], contract_detail[5]) ? ? ? ? # Go long 100 shares of Google ? ? ? ? #aapl_order = create_order('MKT', 10, 'BUY') ? ? ? ? eur_order = create_order(contract_detail[6], contract_detail[7], contract_detail[8]) ? ? ? ? # Use the connection to the send the order to IB ? ? ? ? tws_conn.placeOrder(order_id, eur_contract, eur_order) ? ? ? ? ? ? ? ? # Disconnect from TWS ? ? ? ? ? ? ? ? ? ? ? ? ? tws_conn.disconnect() ? ? ? ? print ("execution complete") ? ? ? ? os.rename(r'trade_folder\trade.txt',r'traded_folder\traded.txt') ? ? ? ? time.sleep(0.5) ? ? ? ? ? ? ? ? except: # catch *all* exceptions ? ? ? ? #e = sys.exc_info()[0] ? ? ? ? #print( "<p>Error: %s</p>" % e ) ? ? ? ? print (file=sys.stderr) ? ? time.sleep(5) ? ? os.execv(sys.executable, ['python'] + sys.argv) #re-execute script!!! ? ?? |
Re: options order
Pankaj Agarwal
In your order code object specify transmit as false. It will show in TWS but not send it to exchange. Hope it helps. Thanks, Pankaj Agarwal On Sun, May 2, 2021 at 10:58 AM <moshe.peled@...> wrote: Is there a way to create the order through the API and the confirmation through the IB workstation? |
Re: options order
开云体育So you want to create an order that does not execute, then view in TWS ?? Then what ? |
Re: Long on the stock, want to exit but: Order rejected The contract is not available for short sale
On Fri, Apr 30, 2021 at 07:47 PM, Ace wrote:
Are there other major quirks of the paper trading I should be aware of?In fairness, it's likely one of the best paper systems out there these days.? I just seem to have a nack for finding it's flaws.? Often where permissions from the prod account don't map the same to the paper one.? Family account permissions, and Volatility/leveraged eft trading auth were recent troubles.? Had troubles last week with short term VWAP orders where the orders were canceled instead of filled if they were small (100 shares) with a short duration (1 minute).? I'm also often using Prime accounts, which is likely a small subset of the overall account base.? Helps with market data lines (+30k is typical), but some bits are less polished than other vendors in the Prime world.?? -Peter |