private int CalculatePositionSize(double accountBalance)
{
return (int)((accountBalance * RiskPercentage) / (StopLossDistance * RiskRewardRatio));
}
{
int positionSize = CalculatePositionSize(Account.Equity);
EnterLong(positionSize, "Long Entry", OrderType.Stop, High[0] + StopLossDistance * TickSize, 0, High[0] + (StopLossDistance * RiskRewardRatio) * TickSize, "");
}
protected override void OnOrderUpdate(IOrder order)
{
if (order.OrderState == OrderState.Filled)
{
if (order.IsLong)
{
double currentEquity = Account.Get(AccountItem.Equity);
double avgFillPrice = order.AvgFillPrice;
if ((currentEquity / avgFillPrice) / (currentEquity - avgFillPrice) < MaximumDrawdown)
{
ExitLong();
}
}
else
{
double currentEquity = Account.Get(AccountItem.Equity);
double avgFillPrice = order.AvgFillPrice;
if ((currentEquity / avgFillPrice) / (currentEquity + avgFillPrice) < MaximumDrawdown)
{
ExitShort();
}
}
}
}
}
Thanks !

Comment