I seem to have a reoccurring problem with my market exit orders acting strange. Here is some information on my strategy.
- The strategy is End of Bar. There is no OnMarketData() call or something else that is done intrabar that will allow multiple entry / exit function calls.
- I do not use setstop / settarget methods provided by NT.
- Entries and exits are limited to only once per bar.
In the OnBarUpdate() method I have the following logical structure.
The Entrance Logic
if(Position.MarketPosition == MarketPosition.Flat) { if(Conditions true to go long) { EnterLong(vQuantity, "enterLongGood"); return; } if(Conditions true to go short) { EnterShort(vQuantity, "enterShortGood"); return; } }
if(Position.MarketPosition == MarketPosition.Long) { if(Conditions true to exit Long) { ExitLong("ExitLongBreakEven", "enterLongGood"); return; } } if(Position.MarketPosition == MarketPosition.Short) { if(Conditions true to exit Short) { ExitShort("ExitShortBreakEven", "enterShortGood"); return; } }
8/29/2008 6:45:48 AM|1|32|Order='16e3db5a-acctName-b/x1234567' Name='enterShortGood' New State=PendingSubmit Instrument='$EURUSD' Action=SellShort Limit price=0 Stop price=0 Quantity=0.1M Type=Market Filled=0 Fill price=0 Error=NoError Native error=''
8/29/2008 6:45:48 AM|1|32|Order='1150201:05ph/x1234567' Name='enterShortGood' New State=Accepted Instrument='$EURUSD' Action=SellShort Limit price=0 Stop price=0 Quantity=0.1M Type=Market Filled=0 Fill price=0 Error=NoError Native error=''
8/29/2008 6:45:48 AM|1|32|Order='1150201:05ph/x1234567' Name='enterShortGood' New State=Working Instrument='$EURUSD' Action=SellShort Limit price=0 Stop price=0 Quantity=0.1M Type=Market Filled=0 Fill price=0 Error=NoError Native error=''
8/29/2008 6:45:49 AM|1|64|Instrument='$EURUSD' Account='x1234567' Avg price=1.47271 Quantity=0.1M Market position=Short Operation=Insert Currency=UsDollar
8/29/2008 6:45:49 AM|1|32|Order='1150201:05ph/x1234567' Name='enterShortGood' New State=Filled Instrument='$EURUSD' Action=SellShort Limit price=0 Stop price=0 Quantity=0.1M Type=Market Filled=100000 Fill price=1.47271 Error=NoError Native error=''
8/29/2008 6:45:49 AM|1|16|Execution='NT_20080829_0045' Instrument='$EURUSD' Account='x1234567' Exchange=Default Price=1.47271 Quantity=0.1M Market position=Short Operation=Insert Order='1150201:05ph' Time='8/29/2008 6:45:49 AM' Multiplier=1E-05
// EXIT
8/29/2008 7:31:36 AM|1|32|Order='16e3db5a-acctName-c/x1234567' Name='ExitShortBreakEven' New State=PendingSubmit Instrument='$EURUSD' Action=BuyToCover Limit price=0 Stop price=0 Quantity=0.1M Type=Market Filled=0 Fill price=0 Error=NoError Native error=''
8/29/2008 7:31:36 AM|1|32|Order='1150201:061l/x1234567' Name='ExitShortBreakEven' New State=Accepted Instrument='$EURUSD' Action=BuyToCover Limit price=0 Stop price=0 Quantity=0.1M Type=Market Filled=0 Fill price=0 Error=NoError Native error=''
8/29/2008 7:31:36 AM|1|32|Order='1150201:061l/x1234567' Name='ExitShortBreakEven' New State=Working Instrument='$EURUSD' Action=BuyToCover Limit price=0 Stop price=0 Quantity=0.1M Type=Market Filled=0 Fill price=0 Error=NoError Native error=''
8/29/2008 7:31:37 AM|1|64|Instrument='$EURUSD' Account='x1234567' Avg price=1.47271 Quantity=0.09M Market position=Short Operation=Update Currency=UsDollar
8/29/2008 7:31:37 AM|1|32|Order='1150201:061l/x1234567' Name='ExitShortBreakEven' New State=PartFilled Instrument='$EURUSD' Action=BuyToCover Limit price=0 Stop price=0 Quantity=0.01M Type=Market Filled=10000 Fill price=1.4731 Error=NoError Native error=''
8/29/2008 7:31:37 AM|1|16|Execution='NT_20080829_0049' Instrument='$EURUSD' Account='x1234567' Exchange=Default Price=1.4731 Quantity=0.01M Market position=Long Operation=Insert Order='1150201:061l' Time='8/29/2008 7:31:37 AM' Multiplier=1E-05
8/29/2008 7:31:37 AM|1|32|Order='1150201:061l/x1234567' Name='ExitShortBreakEven' New State=PendingChange Instrument='$EURUSD' Action=BuyToCover Limit price=0 Stop price=0 Quantity=0.09M Type=Market Filled=10000 Fill price=1.4731 Error=NoError Native error=''
8/29/2008 7:31:37 AM|1|64|Instrument='$EURUSD' Account='x1234567' Avg price=1.47271 Quantity=0.07M Market position=Short Operation=Update Currency=UsDollar
8/29/2008 7:31:37 AM|1|32|Order='1150201:061l/x1234567' Name='ExitShortBreakEven' New State=PartFilled Instrument='$EURUSD' Action=BuyToCover Limit price=0 Stop price=0 Quantity=0.02M Type=Market Filled=30000 Fill price=1.4731 Error=NoError Native error=''
8/29/2008 7:31:37 AM|1|16|Execution='NT_20080829_0050' Instrument='$EURUSD' Account='x1234567' Exchange=Default Price=1.4731 Quantity=0.02M Market position=Long Operation=Insert Order='1150201:061l' Time='8/29/2008 7:31:37 AM' Multiplier=1E-05
8/29/2008 7:31:37 AM|1|32|Order='1150201:061l/x1234567' Name='ExitShortBreakEven' New State=PendingChange Instrument='$EURUSD' Action=BuyToCover Limit price=0 Stop price=0 Quantity=0.07M Type=Market Filled=30000 Fill price=1.4731 Error=NoError Native error=''
8/29/2008 7:31:37 AM|1|64|Instrument='$EURUSD' Account='x1234567' Avg price=1.47271 Quantity=0.07M Market position=Short Operation=Remove Currency=UsDollar
8/29/2008 7:31:37 AM|1|32|Order='1150201:061l/x1234567' Name='ExitShortBreakEven' New State=Filled Instrument='$EURUSD' Action=BuyToCover Limit price=0 Stop price=0 Quantity=0.07M Type=Market Filled=100000 Fill price=1.4731 Error=NoError Native error=''
8/29/2008 7:31:37 AM|1|16|Execution='NT_20080829_0051' Instrument='$EURUSD' Account='x1234567' Exchange=Default Price=1.4731 Quantity=0.07M Market position=Long Operation=Insert Order='1150201:061l' Time='8/29/2008 7:31:37 AM' Multiplier=1E-05
8/29/2008 7:31:37 AM|1|32|Order='1150201:061l/x1234567' Name='ExitShortBreakEven' New State=PendingChange Instrument='$EURUSD' Action=BuyToCover Limit price=0 Stop price=0 Quantity=0.07M Type=Market Filled=30000 Fill price=1.4731 Error=UnableToChangeOrder Native error=' Replace rejected for reason: No such order'
8/29/2008 7:31:37 AM|0|32| Replace rejected for reason: No such order Affected Order: BuyToCover 70000 Market
8/29/2008 7:31:37 AM|1|32|Order='1150201:061l/x1234567' Name='ExitShortBreakEven' New State=Filled Instrument='$EURUSD' Action=BuyToCover Limit price=0 Stop price=0 Quantity=0.07M Type=Market Filled=100000 Fill price=1.4731 Error=UnableToChangeOrder Native error=' Replace rejected for reason: No such order'
8/29/2008 7:31:37 AM|0|32| Replace rejected for reason: No such order Affected Order: BuyToCover 70000 Market
The OnBarUpdate() was only executed ONCE for this exit order; the next bar time was at 7:45:11AM, so I don't believe its a multiple ExitShort() function call by my NT code.
Any ideas?
Thanks.
Comment