In MT4 the MagicNumber can be used to prevent duplicate orders/positions.

Here is a piece of code that I use in my RangeTrader to find all orders/postions after a restart:

void Synchronize( int MagicNumber )
{
for ( int Count = OrdersTotal(); Count > 0; Count-- )
{
if ( OrderSelect( ( Count - 1 ), SELECT_BY_POS, MODE_TRADES ) != true ) continue;
if ( OrderSymbol() != Symbol() ) continue;
if ( OrderMagicNumber() != MagicNumber ) continue;

switch ( OrderType() )
{
case OP_BUY :
case OP_BUYLIMIT :
case OP_BUYSTOP : Trade.Long = OrderTicket();

break;

case OP_SELL :
case OP_SELLLIMIT:
case OP_SELLSTOP : Trade.Short = OrderTicket();

break;
}
}

LogTicket( Trade.Long, "Synchronize(Long)", ERR_NO_ERROR );
LogTicket( Trade.Short, "Synchronize(Short)", ERR_NO_ERROR );
}