MIH8
- ago
The Auto Stage and Auto Place functions are already available. Another functionality like Auto-Quote would complete the package. Even without further consideration, anyone can think of meaningful scenarios for it. Nevertheless, the following is a use case in which it is more than just "nice-to-have", but plays an important role.

The following scenario involves the record of 100 Nasdaq symbols and cash of 10000$.

WL places limit orders regardless of the cash status. By this I mean if you have 10000$ allow WL to calculate a limit and place an order for all 100 sybmols even if you set 10% in the position sizing. Now the cash is reduced by 10% with each order that is filled until you have filled 10 orders. Neat logic that also works smoothly.

The broker (IB) behaves differently in the cash account. With the 10% example it is not possible to place 100 limit orders and wait for 10 to be filled. You can only place 10 orders a 10%, the 90 overs will be canceled. There are also understandable reasons for this logic.

This fact makes a significant difference in the evaluation of a strategy and in the end simply in the execution of the orders. Apart from the results, one must also make a pre-selection of the shares that one wants to place. This also changes the basis for the backtest.

The idea now is to use the Auto-Quote function to place orders with the broker only when the limit is reached (or shortly before). A perfect job for the quote tool. In addition, all 100 limit orders can be processed without having to make a preselection.

Please let me know what you think about it. Thanks in advance.
2
688
9 Replies

Reply

Bookmark

Sort
Cone8
 ( 28.25% )
- ago
#1
Feature Request completed -
You've just described PRECISELY what the Quotes & Price Triggers tool does already. Open a Quotes tool and hit F1 to read about it.
0
MIH8
- ago
#2
Hi Cone, can it be that you missed my point? I would like to use the feature with auto-trading. Maybe i was not clear about the following point.

How do i "automatically" move the signals to the quotes tool, without manual interaction (analog auto-place and auto-stage)?

The feature request is not solved in this context unless you can show me how this is already possible.
(Please remove the solved status if there isn't an existing solution, Thank you)
0
Cone8
 ( 28.25% )
- ago
#3
Quotes is an EOD tool, so it's true that you'll always have to click a button or two to get the signals there and activate it.

Edit - always until ... WL8 Build 70
0
MIH8
- ago
#4
Ok, then the feature request can be modified slightly. Please make an intraday tool out of it and add the "auto-move" functionality. The use case i described is still a matter for automated trading.

Thank you.
0
Cone8
 ( 28.25% )
- ago
#5
Topic renamed.

I'll just offer that your intraday strategy could do most of work by just not submitting limit and stop orders that are more than 3 standard deviations (depending on the interval) from the last price. By comparing backtests you could gauge what the proper cutoff should be to minimize missed trades.
0
MIH8
- ago
#6
I already use a solution that compares current (last bars) price information with the limit price. So there is some logic to select the most reasonable transactions. It remains a preselection and the chance that a limit is triggered is significantly reduced. (In the example already 90/100 limits can not occur).

CODE:
Loop(symbols) { ExectueSymbol(s,idx) { distanceToLimit = price/limit        if(distanceToLimit < P && placedTransactionsAtDateTime < N)    {     PlaceLimitOrder()    } } }


As a temporary solution it nevertheless already improves the performance in contrast to arbitrarily selected transactions.

The best solution remains to judge which of the transactions will be placed based on the real price movements. (Quotes and Triggers)

Anyway, I would like to improve my temporary solution with your help.

Intermediate Solution 2
The idea is to compare the "distanceToLimit" prices and place the ones most likely to be reached.
So I'm thinking how to go through the list (List<BarHistory> bh = BacktestData;) for each symbol. But in the calculation I would need to access other data (timeseries), apart from the bar information. That gives me a bit of a headache.

CODE:
Loop(symbols) { ExectueSymbol(s,idx) { ComputeProbabilityToHitLimit(AllSymbols,idx)        if(ranked < N)    {     PlaceLimitOrder()    } } }


Intermediate Solution 3
An elegant intermediate solution would be to use the transaction weight (which is possible). But once all symbols are executed, I don't know how to reduce the number of transactions that are transmitted to the broker. Of course the backtest should ignore these transactions too. On the other hand, if the orders a placed in the sequence of the transaction weights, the N-first would be accepted by the broker and the rest would be cancelled.
0
MIH8
- ago
#7
Moving the pre-selection code to the PreExecute() method helped to solve intermediate solution 2. Another key point was to know about bars.Cache element which can hold the indicator data. Knowing these two elements was essential (and removed my headache :-) )

The next step to improve the intermediate solution 2 is to map it on a lower time scale. Instead of 30 minute, maybe 5 or 1 minute bars can be useful. The idea is that the limit price will be closer to the real price movement and the selection code will "simulate" the "quotes & trigger".

Let's see where it goes.
0
MIH8
- ago
#8
Hello Team.

Referring to the title, I could also imagine a lightweight solution. I am thinking of a variant of the PlaceTrade() method.
Could one introduce a PlaceTradeWithTrigger() or PlaceTrade(...,bool trigger) method? The board resources should probably already exist.

Again, briefly for context. On the one hand, I would like to use this function in auto-trading. The reason is that the broker only allows a certain number of orders related to the available capital. For this reason, I would like to place the limit orders that are triggered instead of having to make a pre-selection that will probably not be filled. The example is given in the introduction post.

What do you think?

Thanks for a short feedback.

Edit: Maybe it is even possible to use the existing implementation you are already using for the Q&T tool.
0
MIH8
- ago
#9
Hello Team.

Thank you for another improvement related to this issue, namely limiting the orders that can be used by the backtest/broker.This improvement is especially useful to get more accurate/realistic results from the backtest.

This solution with the possibility of using the transactions weights helps to better classify strategies that generate many signals but cannot be exploited in reality! (out of the box for everyone!)

However, this feature request addresses an overlying problem. I would like to consider the Concierge Support Service to get an appropriate extension.

The intended solution elegantly circumvents the broker policy. The number of limit orders must not exceed the open cash amount, e.g. 25% means four orders to be placed. This is justified because it ensures that the orders can be filled.

However, the probability of placing four orders that will be filled in one time slot is considerably reduced. This is the crucial point. The four selected orders block the places for orders filled/triggered in the same time slot. This should not happen and for this reason the four slots should be kept free until they are triggered. With a positive profit rate, you want to execute every potential trade and not miss it due to blocked, unfilled orders.

Boosting the frequence of trades ...
If your data set contains 100 symbols and triggers 10 signals per cycle, then you can place/fill 4 orders on average with the trigger.(This is necessary because the limits will re-calculated with every cycle) If you pre-select 4 orders, the probability that all of these 4 will be among the 10 is very low. Statistically you will generate a hit from time to time. The result differs not only in the backtest but ultimately also in live trading.

Status Quo is, that i can manage that with semi-automated trading. Moving the signals to the QT-Tool every cycle. This works smoothly with a scale of 30 minutes but requires active trading. Below 30/15 Minutes it is not practical. However a solution for the described use case looks like, it is important enough i consider an individual solution too, if it can not be done as common feature/extension

I kindly ask for short feedback.

Edit: A very important note about the headline. It is not only about intraday trading, but about the combination with automated trading.
0

Reply

Bookmark

Sort