| TradeStation Custom Programming Discuss projects, ideas, obstacles in programming with TradeStation. |
![]() | | Tweet | |
| | #1 | ||
![]() | PlaceOrder - Execute an Order from an Indicator The Place Order command allows orders to be sent to the market inside of an indicator. There is no backtesting capability for this function though. It allows orders to be placed intrabar, as opposed to "Next Bar" which a strategy does. One issue is that orders could be placed on EVERY TICK of the bar if the conditions are met. So you MUST be very careful, and make sure that your code has some way of limiting true conditions to once per bar, or as needed. Quote:
__________________ 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. | ||
| |
|
| The Following User Says Thank You to Tradewinds For This Useful Post: | ||
trade-samarai (10-28-2011) | ||
| | #2 | ||
![]() | Re: PlaceOrder - Execute an Order from an Indicator LimitIfTouchedOrder MarketIfTouchedOrder MarketOrder StopLimitOrder StopMarketOrder TrailingStopOrder LimitOrder(Frequency,Acco unt,Action,SymbolCategory ,Symbol,Quantity,Duration ,GTDDate,LimitPrice) MarketIfTouchedOrder(Freq uency,Account,Action,Symb olCategory,Symbol,Quantit y,Duration,GTDDate,IfTouc hed) 'IfTouched' = Sets the IfTouched price to be used for this order.
__________________ 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. | ||
| |
|
| | #3 | ||
![]() | Re: PlaceOrder - Execute an Order from an Indicator xLngFired = True; The Exit Long Order fired. This variable tells me that the conditions were met, and the order was sent. But I still seem to be getting multiple orders being sent per bar. I'm not sure what is wrong. The following code is not the entire code, it is a representation of the basic structure that I have. In my code I have multiple data sources, six data sources in the same indicator. I don't know if the multiple data sources are causing a problem. I'm just making wild guesses at this point. When I study the code below, it seems like it should prohibit the order from being sent more than once per bar, but it doesn't seem to be working. Code: Input: AccntNum("SIM99999F"),
Ticker("ESZ11");
var: QtyOpen(0),
xLng(False),
xLng1(False),
xLng2(False),
xShrt(False),
xShrt1(False),
xShrt2(False),
Peak(False),
Bttm(False),
CrrntHi(0),
CrrntLw(0),
HigherHigh(False),
LowerLow(False),
HigherHighData2(False),
LowerLowData2(False),
IntrabarPersist xLngFired(True),
IntrabarPersist xShrtFired(True);
Peak = H[1] > H[2];
Bttm = L[1] < L[2];
If Peak then CrrntHi = H[1];
If Bttm then CrrntLw = L[1];
HigherHigh = H > CrrntHi;
LowerLow = L < CrrntLw;
xLng1 = HigherHigh;
xShrt1 = LowerLow;
xLng2= HigherHighData2 and HigherHighData2[1] = False;
xShrt2 = LowerLowData2 and LowerLowData2[1] = False;
xLng = xLng1 or xLng2;
xShrt = xShrt1 or xShrt2;
If xLng or xShrt then QtyOpen = GetPositionQuantity(Ticker, AccntNum);
If xLng and QtyOpen > 0 and xLngFired = False then begin
xLngFired = True; // Immediately indicate that the conditions have been met.
value1 = MarketOrder("OncePerBar", AccntNum, "Sell", "Future", Ticker, QtyOpen);
Condition1 = (PlaySound("c:\Wave\Sell.wav"));
End;
If xShrt and QtyOpen < 0 and xShrtFired = False then begin
xShrtFired = True;
value2 = MarketOrder("OncePerBar", AccntNum, "Buy", "Future", Ticker, absValue(QtyOpen));
Condition2 = (PlaySound("c:\Wave\Buy.wav"));
End;
If Barstatus(1) = 2 then begin // At the end of the bar, reset the variables to False
if xLngFired = True then xLngFired = False;
if xShrtFired = True then 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. | ||
| |
|
| The Following User Says Thank You to Tradewinds For This Useful Post: | ||
trade-samarai (10-28-2011) | ||
| | #4 | ||
![]() | Re: PlaceOrder - Execute an Order from an Indicator
__________________ 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. | ||
| |
|
| | #5 | ||
![]() | Re: PlaceOrder - Execute an Order from an Indicator var: intrabarpersist done(false); if H>H[1] then done=true; if barstatus(1)=2 then done=false; | ||
| |
|
| | #6 | ||
![]() | Re: PlaceOrder - Execute an Order from an Indicator if c>H[1] then done=true; // edited to enable multiple_intrabar_states if barstatus(1)=2 then done=false; Last edited by onesmith; 10-28-2011 at 12:49 PM. | ||
| |
|
| | #7 | ||
![]() | Re: PlaceOrder - Execute an Order from an Indicator P.S. the new OOEL also has an OrderTicket in the ToolBox that you can use instead of macros. Last edited by trade-samarai; 10-28-2011 at 12:40 PM. | ||
| |
|
| | #8 | ||
![]() | Re: PlaceOrder - Execute an Order from an Indicator Quote:
tsdata.Trading.OrderTicke t Quote:
Code: {
This example uses an OrderTicket component to send a Buy at Market order for
the current stock symbol based on a specified account and quantity. All of
the order properities must consistent with the asset class of the symbol.
NOTE: After inserting an indicator containing an order object to an analysis
window, you'll need to go to the Format-General tab and check 'Enable order
placements objects' to allow orders to be sent from the indicator.
You'll need to enter your own equities account number and change the quanitity
as appropriate. To place the order, change the PlaceOrderNow input to TRUE.
Once set to TRUE, orders will also be sent when a RadarScreen refresh occurs.
The following items were created or modified:
Component tray: OrderTicket1 dragged into document from the Toolbox
Properties editor: Symbol assigned to current Symbol (current row in RS).
Properties editor: Account and Quantity get their values from inputs
These additional properties specify related order assumptions:
Properties editor: SymbolType set to Stock (must compatible with the asset type of the account)
Properties editor: Action set to Buy
Properties editor: Type set to Market
Properties editor: Duration set to Day
}
Input: string iAccount1( "Enter Your Equities Account Number" ), int iQuantity1(100), PlaceOrderNow(FALSE);
{The MyOrder variable will refer to the Order instance after the order is sent}
vars: tsdata.trading.Order MyOrder(NULL);
{Called whenever the order status is updated}
Method void OrderStatusUpdate(elsystem.Object sender, tsdata.trading.OrderUpdatedEventArgs args)
begin
UpdatePlots();
end;
{Plots the order status}
method void UpdatePlots()
begin
Plot1(MyOrder.State.ToString());
end;
{Send the order when TRUE and sets the method used to handle Order Status Updated events}
If PlaceOrderNow then begin
{Order sent only once per load in this example}
once MyOrder = OrderTicket1.Send();
MyOrder.Updated += OrderStatusUpdate;
UpdatePlots();
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. | ||
| |
|
![]() |
| Thread Tools | |
| Display Modes | Help Others By Rating This Thread |
| |
| ∧ Similar Threads | ||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| When Your Stop Loss Doesn't Execute | JLJ | Beginners Forum | 39 | 03-12-2012 10:38 AM |
| Execute Orders on Data2 Subchart | skan | Coding Forum | 7 | 12-07-2010 06:39 AM |
| Divergences in Order Flow As a Very Reliable Longer Term Indicator | UrmaBlume | Technical Analysis | 0 | 10-02-2009 12:39 PM |
| Stop Order or Logical Order ? | abam | Trading and the Markets | 4 | 04-06-2009 04:19 AM |
| Order spoofing | notouch | Market Analysis | 12 | 03-20-2007 08:07 AM |