public static Position operator -(Position p1, Position p2)
 {
     Position res = new Position();
     if (p1.symbol.Length != 0 && p2.symbol.Length != 0 && !p1.symbol.Equals(p2.symbol))
         throw new Exception("Position symbols not the same");
     res.symbol = p1.symbol.Length==0 ? p2.symbol : p1.symbol;
     double pd1 = p1.qty * (p1.direction == 0 ? 1.0 : -1.0);
     double pd2 = p2.qty * (p2.direction == 0 ? 1.0 : -1.0);
     res.qty = pd1 - pd2;
     res.direction = (res.qty < 0.0 ? 1 : 0);
     res.qty = Math.Abs(res.qty);
     return res;
 }
 ///<summary>
 ///Compares two Position objects. 
 ///</summary>
 ///<param name="otherPosition"> an other position to compare</param>
 ///<returns> true if this Positions is equal
 ///otherwise false</returns>
 public bool compare(Position otherPosition)
 {
     return (otherPosition.symbol.Equals(this.symbol) &&
             otherPosition.qty == this.qty &&
             otherPosition.direction == this.direction);
 }