×

Sign up and get MultiCharts free

Use its powerful simulation mode with data included out of the box. Just fill out the form and start honing your trading skills with a few clicks.

Changes - MultiCharts
Open main menu

Changes

Trades vs Orders With PosTrade Keywords

3,014 bytes added, 15:00, 27 January 2012
Created page with "Each of the Strategy Position Trades keywords refer to trades and not to orders. This article highlights the difference between ''orders'' and ''trades''. == Trades versus or..."
Each of the Strategy Position Trades keywords refer to trades and not to orders. This article highlights the difference between ''orders'' and ''trades''.

== Trades versus orders ==

Since the Strategy Position Trades keywords refer to trades, and not orders, one order can open two different trades.

For example, if you open a position with a buy order for 2 contracts, and close the position with two orders, both with a different name, there are for the entry into the position two trades (but not two entries), that were opened by one order (buy 2 contracts) and closed by two different orders.

So, the PosTradeEntryName() will in that case return values for two trades, both with the same entry name, though you entered the position with one order. In other words, the multiple exit orders will each get matched with an entry order.

== Trade example ==

For example:

[[File:ExampleTradeTradesVsOrders.PNG‎]]

In this position there is an entry named “ES MKT” for 1000 forex units, and two separate exits (an “XS MKT1” for 500 units and an “XS MKT2” for the remaining 500 units). Now, note that this position is opened with '''one''' entry order and closed with '''two''' exit orders. However, since trades are something different than orders, the position pictured above consists of 2 entry trades and 2 exit trades.

This can be shown by calling the Strategy Position Trades keywords for this position by:
<syntaxhighlight>
Variables: MP(0), posAgo(0), numOfTrades(0);

MP = MarketPosition;

if MP[0] <> MP[1] and MP[1] <> 0 then begin

Print(Date:0:0, " - ", time_s:0:0, " Position closed:");

pasAgo = 1; // get the data for the latest position
numOfTrades = PosTradeCount(posAgo); // get the number of trades for that position

// Loop through the entry orders
for value1 = 0 to (numOfTrades - 1) begin

Print(Spaces(3), "EntryOrder: ", PosTradeEntryName(posAgo, value1),
" units: ", NumToStr(PosTradeSize(posAgo, value1), 0),
" @ ", NumToStr(PosTradeEntryPrice(posAgo, value1), 5),
" PosTradeCount: ", PosTradeCount(posAgo));

end;

// Loop through the exit trades
for value5 = 0 to (numOfTrades - 1) begin

Print(Spaces(3), "ExitOrder: ", PosTradeExitName(posAgo, value5),
" units: ", NumToStr(PosTradeSize(posAgo, value5), 0),
" @ ", NumToStr(PosTradeExitPrice(posAgo, value5), 5),
" PosTradeCount: ", PosTradeCount(posAgo));

end;
end
</syntaxhighlight>

Which returns the following.

<syntaxhighlight>
1110720 - 114600 Position closed:
EntryOrder: ES MKT units: 500 @ 1.41798 PosTradeCount: 2.00
EntryOrder: ES MKT units: 500 @ 1.41798 PosTradeCount: 2.00
ExitOrder: XS MKT1 units: 500 @ 1.42037 PosTradeCount: 2.00
ExitOrder: XS MKT2 units: 500 @ 1.42043 PosTradeCount: 2.00
</syntaxhighlight>

Here you can see that there are two different exit orders in two trades (one @ 1.42037 and one @ 1.42043), and there are two entry trades but one entry order.