Fixes bug in QCAlgorithm.CalculateOrderQuantity

This commit is contained in:
Stefano Raggi
2016-03-16 00:36:32 +01:00
parent 6323d01cc9
commit 5301d81149
+8 -2
View File
@@ -614,6 +614,8 @@ namespace QuantConnect.Algorithm
// continue iterating while we do not have enough margin for the order
decimal marginRequired;
var orderQuantity = 0;
decimal orderValue;
decimal orderFees;
do
{
@@ -628,11 +630,15 @@ namespace QuantConnect.Algorithm
orderQuantity--;
}
// calculate the margin required for the order
// generate the order
var order = new MarketOrder(security.Symbol, orderQuantity, UtcTime);
orderValue = order.GetValue(security);
orderFees = security.FeeModel.GetOrderFee(security, order);
// calculate the margin required for the order
marginRequired = security.MarginModel.GetInitialMarginRequiredForOrder(security, order);
} while (marginRequired > marginRemaining || marginRequired > targetOrderValue);
} while (orderQuantity > 0 && (marginRequired > marginRemaining || orderValue + orderFees > targetOrderValue));
// add directionality back in
return (direction == OrderDirection.Sell ? -1 : 1) * orderQuantity;