Welcome to the Traders Laboratory Forums.
Coding Forum Collaborate, receive help, or discuss coding related issues.

Reply
Old 10-28-2011, 08:09 PM   #1

Tradewinds's Avatar

Join Date: Nov 2008
Location: Northeast U.S.
Posts: 891
Ignore this user

Thanks: 373
Thanked 231 Times in 164 Posts
Blog Entries: 6

Object-Oriented Order Management

This thread is dedicated to Object-Oriented Order Management in tradestation. I'll start by listing the different OrderStates that can be retrieved using OO in EL. I'm not sure that any of this can be done with the procedural programing in EL. I've looked through the Reserved Words, and haven't seen any way to retrieve the following order status info except through OO.

OrderState
Indicates the state of an order as it is being processed.

Namespace: tsdata.trading

Enumerated Values

Canceled 9
Cancelpending 10
Expired 12
Filled 8
Partiallyfilled 6
Partiallyfilledurout 7
Queued 5
Received 4
Rejected 11
Sendfailed 3
Sending 1
Sent 2
unsent 0

So, with OOP in EL, I can have the code check for whether the order was sent, received, rejected or filled. I don't think I can do any of that except with OOP.
__________________
Precise, "dialed-in", targeted combination setups, like opening a combination lock; is the experience you should be having while trading. Dial left, right, left, . . . click - the lock opens.
Tradewinds is offline  
Reply With Quote
The Following 2 Users Say Thank You to Tradewinds For This Useful Post:
jswanson (11-01-2011), MadMarketScientist (10-30-2011)
Old 10-28-2011, 08:28 PM   #2

Tradewinds's Avatar

Join Date: Nov 2008
Location: Northeast U.S.
Posts: 891
Ignore this user

Thanks: 373
Thanked 231 Times in 164 Posts
Blog Entries: 6

Re: Object-Oriented Order Management

You can also retrieve the current Price Style for an order. Here is the list:

PriceStyle
Lists the types of auto price settings for an order.

Namespace: tsdata.trading

Enumerated Values
Name Value

HitOrTake 5
HitOrTakePlus 6
IfTouchPlus 9
Improve 2
Join 1
None 0
ParentPlus 7
Shave 4
Split 3
StopPlus 8

An IfTouch order will allow you to place a Market order that does not execute unless the price touches a certain price. HitOrTake executes a market order immediately I believe.
__________________
Precise, "dialed-in", targeted combination setups, like opening a combination lock; is the experience you should be having while trading. Dial left, right, left, . . . click - the lock opens.
Tradewinds is offline  
Reply With Quote
Old 10-28-2011, 10:48 PM   #3

Tradewinds's Avatar

Join Date: Nov 2008
Location: Northeast U.S.
Posts: 891
Ignore this user

Thanks: 373
Thanked 231 Times in 164 Posts
Blog Entries: 6

Re: Object-Oriented Order Management

Here is an even longer list of Order Status States that can be checked with OO. I'm quite sure that none of this is available through reserved words. In other words, if you want to be able to have you code check for these conditions, you'll need to use OO. I have no idea what a "BigBrotherRecall" is.

Namespace: tsdata.trading

Enumerated Values
Name Value

BigBrotherRecall 34
BigBrotherRecallRequest 33
BracketCancelled 28
BracketFilled 29
Broken 1
Canceled 2
CancelRequestRejected 20
CancelSent 16
Change 3
ChangeRequestRejected 23
ConditionMet 26
Dead 5
Dispatch 4
ExpirationCancelRequest 30
Expired 6
FillCorrected 17
Filled 7
OptionAssignment 27
OptionExcercise 31
OrderStatusMessage 14
OSOOrder 32
PartialFillAlive 9
PartialFillUROut 8
Queued 22
Received 0
Rejected 13
Replaced 15
ReplaceSent 25
Sending 19
Sent 11
StopHit 24
TooLateToCancel 10
TradeServerCanceled 18
UnSent 21
UROut 12
__________________
Precise, "dialed-in", targeted combination setups, like opening a combination lock; is the experience you should be having while trading. Dial left, right, left, . . . click - the lock opens.
Tradewinds is offline  
Reply With Quote
Old 10-30-2011, 12:10 AM   #4

Tradewinds's Avatar

Join Date: Nov 2008
Location: Northeast U.S.
Posts: 891
Ignore this user

Thanks: 373
Thanked 231 Times in 164 Posts
Blog Entries: 6

Re: Object-Oriented Order Management

Here is some code that should exit a current long order.


Code:
var: tsdata.trading.order OrdrInfo(Null);
var: xLng(False), xShrt(False), QtyOpen(0);

{If there is a signal to exit a long position or exit a short position, first
get the Quantity of orders currently open.  Don't need to get the qty open
unless there is a reason to exit, so make it conditional.
For this code to work, the OrderTicket1 and PositionsProvider1 must
be dragged from the toolbox into the code editor.}

If xLng or xShrt then QtyOpen = PositionsProvider1.Position[0].Quantity;

// if there is a signal to exit a long, 
//  and no other order has been placed this bar,
// and the Qty open is greater than 0, then close the long.

If xLng and xLngFired = False and QtyOpen > 0 then begin
	xLngFired = True;  // Immediately set the xLngFired variable to true
	OrderTicket1.SymbolType = 0; // Set security type to Future
	OrderTicket1.Symbol = "Symbol";  // Set symbol for order to current symbol on chart
	OrderTicket1.Quantity = QtyOpen;  // Set order qty to the qty of orders open to exit the position
	OrderTicket1.Action = 2; // Set the order to a SELL order
	OrderTicket1.Type = 2; // Set order type to Market
	OrdrInfo = OrderTicket1.Send();  // Send the order
End;

// At end of the bar reset the status of whether an order was sent on this bar or 
// not back to False

If Barstatus(1) = 2 then begin
	xLngFired = False;
	xShrtFired = False;
End;
__________________
Precise, "dialed-in", targeted combination setups, like opening a combination lock; is the experience you should be having while trading. Dial left, right, left, . . . click - the lock opens.
Tradewinds is offline  
Reply With Quote
Old 10-30-2011, 05:33 AM   #5

UrmaBlume's Avatar

Join Date: Apr 2008
Location: Las Vegas
Posts: 670
Ignore this user

Thanks: 87
Thanked 618 Times in 251 Posts

Re: Object-Oriented Order Management

These new order objects in TS finally give the developer of automated systems a way around the faulty TS Trade Manager.

The bad news about them is that they can't be used in a strategy and thus can't be used in back testing/optimization. The good news is that as they are used in an indicator you can also plot from the same code that executes your trades which you can't do from a strategy.

These objects plus the new PSP's add tremendous power and versatility for the astute TS user. The only remaining item to put TS at the top of the heap is a sub-second time stamp.
__________________
Information = Equity
UrmaBlume is offline  
Reply With Quote
The Following User Says Thank You to UrmaBlume For This Useful Post:
Tradewinds (10-30-2011)
Old 10-30-2011, 12:19 PM   #6

Tradewinds's Avatar

Join Date: Nov 2008
Location: Northeast U.S.
Posts: 891
Ignore this user

Thanks: 373
Thanked 231 Times in 164 Posts
Blog Entries: 6

Re: Object-Oriented Order Management

Quote:
Originally Posted by UrmaBlume »
The bad news about them is that they can't be used in a strategy and thus can't be used in back testing/optimization. The good news is that as they are used in an indicator you can also plot from the same code that executes your trades which you can't do from a strategy.
Yes, thank you for that. Personally, I would rather execute trades intrabar instead of waiting for the next bar for a strategy to send the order. I'm wondering if there might be some way to get the data needed to determine the profitability even without the backtesting. I'll probably be looking into the subsecond issue at some point. It seems that I've seen functions for millisecond timers.
__________________
Precise, "dialed-in", targeted combination setups, like opening a combination lock; is the experience you should be having while trading. Dial left, right, left, . . . click - the lock opens.
Tradewinds is offline  
Reply With Quote
Old 10-30-2011, 12:45 PM   #7

UrmaBlume's Avatar

Join Date: Apr 2008
Location: Las Vegas
Posts: 670
Ignore this user

Thanks: 87
Thanked 618 Times in 251 Posts

Re: Object-Oriented Order Management

Quote:
Originally Posted by Tradewinds »
Yes, thank you for that. Personally, I would rather execute trades intrabar instead of waiting for the next bar for a strategy to send the order. I'm wondering if there might be some way to get the data needed to determine the profitability even without the backtesting. I'll probably be looking into the subsecond issue at some point. It seems that I've seen functions for millisecond timers.
You can get reasonable accuracy backtesting/optimizing with intra bar executions using easy language and then re-write the strategy into an indicator using the order objects.

The issue with the millisecond timers is that they can only activate an event - they can't store data with any time granularity that is sub 1 minute.

This time stamp business is really a shame as one of TS's strongest points is their great data base - 6 mos tick data, continuous contracts even at tick level, more than a decade of 1 minute and higher data and all the great new indexes that go far beyond tick and trin.
__________________
Information = Equity
UrmaBlume is offline  
Reply With Quote
The Following User Says Thank You to UrmaBlume For This Useful Post:
getwore (10-30-2011)
Old 10-31-2011, 10:53 PM   #8

Tradewinds's Avatar

Join Date: Nov 2008
Location: Northeast U.S.
Posts: 891
Ignore this user

Thanks: 373
Thanked 231 Times in 164 Posts
Blog Entries: 6

Re: Object-Oriented Order Management

I've had trouble with this line:

QtyOpen = PositionsProvider1.Positi on[0].Quantity;

This seems to be better at getting the current quantity of your open order:

var: Ticker(" "), AccntNum(" ");

Once Begin // Run once per load
AccntNum = GetaccountID();
Ticker = Getsymbolname;
End;

QtyOpen = GetPositionQuantity(Ticke r, AccntNum);
__________________
Precise, "dialed-in", targeted combination setups, like opening a combination lock; is the experience you should be having while trading. Dial left, right, left, . . . click - the lock opens.
Tradewinds is offline  
Reply With Quote

Reply

Tags
orderstate

Thread Tools
Display Modes Help Others By Rating This Thread
Help Others By Rating This Thread:


Similar Threads
Thread Thread Starter Forum Replies Last Post
Object-Oriented Programming OOP Tradewinds Coding Forum 26 11-06-2011 11:22 AM
EasyLanguage Going Object Oriented ! Tams Tools of the Trade 24 07-03-2010 09:49 AM
Text Object PeterBrazel Coding Forum 0 01-28-2010 09:51 PM
Truncate EL Text Object PeterBrazel Coding Forum 3 08-01-2009 10:38 AM
Stop Order or Logical Order ? abam Trading and the Markets 4 04-06-2009 04:19 AM

All times are GMT -4. The time now is 11:09 AM.
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
CS to VB integration by DeskLancer
©2006-2011 Traders Laboratory, All Rights Reserved.