Note: with CFD products you should consider taking the interest into account for both long and short positions.
Note2: that's the problem with snippet typing (as opposed to testing it), they usually contain typos. And the same applied partially to the documentation. Both posts have been corrected to avoid future confusion and the docs updated.
checksubmit controls if a submitted order can be accepted by the broker by simulating execution and with it checking if the current cash reserves are enough. It actually pseudo-executes all pending orders, because an order could actually be 1st opening a short and increasing the pseudo-cash reserves.
But this is only pseudo-execution. When the actual execution takes place, the actual cash level is checked again and execution will be rejected if not possible.
@backtrader if you don't mind I would correct your summary slightly:
@ab_trader is looking to use the signals and position sizes provided by bt, and mirror them to broker account by hands. bt will keep position sizes, cash, value and commissions.
In that scenario there is no need to load the positions, cause they are mirrored by trader and are the same in bt and at broker account. In case of the discrepancies bt strategy can be easily adjusted.
The broker is being used for signal and position sizes providing as well as for tracking of the cash and value (no need to support the real broker).
I believe this summary reflects my proposals better. :)
Choosing GPLv3 is a fully conscious decision. What other libraries may or may not do is not of much interest. Each author or organization willing to release open source code weights the pros and cons of different approaches and in this case the GPLv3 was chosen.
Having a license doesn't preclude being able to have a 2nd license for the platform. In most cases this pattern is filled with a direct negotiation between the parties (one interested in an acquisition with a different license, the other willing to re-license) Whether such a pattern fits your case is something which cannot be simply assumed.
and this is theoretically working with the demo. But the demo also runs (default, can be of course be changed) on port 7497.
Cash Products like EUR.USD-CASH-IDEALPRO are allowed (afaik) to all IB customers (as long as your account is funded I think). Whether demo, paper trading or real account, that product is available for everyone. And the code (which relies on IBPy for interfacing to TWS) doesn't know what it is connecting to. The account type is controlled by the TWS (or IbGateway) instance you connect to.