static void SetExitOrders(int bar, double priceStopLong, double priceStopShort)
{
// When there is a Long Position we send a Stop Order to it
if (session[bar].Summary.PosDir == PosDirection.Long)
{
double lots = session[bar].Summary.PosLots;
int ifOrder = 0;
int toPos = session[bar].Summary.PosNumb;
string note = Language.T("Exit Order to position") + " " + (toPos + 1);
if (closeStrPriceType == StrategyPriceType.Close)
OrdSellMarket(bar, ifOrder, toPos, lots, priceStopLong, OrderSender.Close, OrderOrigin.Strategy, note);
// The Stop Price can't be higher from the bar's opening price
else if (priceStopLong < Open[bar])
OrdSellStop(bar, ifOrder, toPos, lots, priceStopLong, OrderSender.Close, OrderOrigin.Strategy, note);
else
OrdSellMarket(bar, ifOrder, toPos, lots, priceStopLong, OrderSender.Close, OrderOrigin.Strategy, note);
}
// When there is a Short Position we send a Stop Order to it
if (session[bar].Summary.PosDir == PosDirection.Short)
{
double lots = session[bar].Summary.PosLots;
int ifOrder = 0;
int toPos = session[bar].Summary.PosNumb;
string note = Language.T("Exit Order to position") + " " + (toPos + 1);
if (closeStrPriceType == StrategyPriceType.Close)
OrdBuyMarket(bar, ifOrder, toPos, lots, priceStopShort, OrderSender.Close, OrderOrigin.Strategy, note);
// The Stop Price can't be lower from the bar's opening price
else if (priceStopShort > Open[bar])
OrdBuyStop(bar, ifOrder, toPos, lots, priceStopShort, OrderSender.Close, OrderOrigin.Strategy, note);
else
OrdBuyMarket(bar, ifOrder, toPos, lots, priceStopShort, OrderSender.Close, OrderOrigin.Strategy, note);
}
// We send IfOrder Order Stop for each Entry Order
for (int iOrd = 0; iOrd<session[bar].Orders; iOrd++)
{
Order entryOrder = session[bar].Order[iOrd];
if (entryOrder.OrdSender == OrderSender.Open && entryOrder.OrdStatus == OrderStatus.Confirmed)
{
int ifOrder = entryOrder.OrdNumb;
int toPos = 0;
double lots = entryOrder.OrdLots;
string note = Language.T("Exit Order to order") + " " + (ifOrder + 1);
if (entryOrder.OrdDir == OrderDirection.Buy)
OrdSellStop(bar, ifOrder, toPos, lots, priceStopLong, OrderSender.Close, OrderOrigin.Strategy, note);
else
OrdBuyStop(bar, ifOrder, toPos, lots, priceStopShort, OrderSender.Close, OrderOrigin.Strategy, note);
}
}
return;
}