1 (edited by Roughey 2024-09-09 13:25:03)

Topic: LotSize Calculation Percentage of Balance

I try to find out how we can use Lotsize calculation of x percent of Account Balance.

Here is my code

// Function to calculate lot size based on account balance and risk percentage
double CalculateLotSize(double risk_percentage)
{
    // Get the current account balance
    double account_balance = AccountInfoDouble(ACCOUNT_BALANCE);
    
    // Define the amount of balance to risk (risk_percentage of the balance)
    double risk_amount = (risk_percentage / 100.0) * account_balance;

    // Get the tick value and point size for the symbol
    double tick_value = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_VALUE);
    double tick_size = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_SIZE);
    
    // Risk per lot (pip value per lot)
    double risk_per_lot = tick_value / tick_size;

    // Assuming 100 pips as stop loss (modify this based on your strategy)
    double stop_loss_pips = 100;
    
    // Calculate lot size based on risk amount and stop loss
    double lot_size = risk_amount / (stop_loss_pips * risk_per_lot);
    
    // Ensure the lot size is within the broker's minimum and maximum allowed limits
    double min_lot = SymbolInfoDouble(symbol, SYMBOL_VOLUME_MIN);
    double max_lot = SymbolInfoDouble(symbol, SYMBOL_VOLUME_MAX);
    double step_lot = SymbolInfoDouble(symbol, SYMBOL_VOLUME_STEP);
    
    // Round the lot size to the nearest lot step
    lot_size = MathMax(min_lot, MathMin(max_lot, NormalizeDouble(lot_size, int(log10(1.0/step_lot)))));

    return lot_size;
}

The problem here is that the Lotsize Calculation depends of the stopLoss. So i ask how i can get the stoploss of the strategy which will open a trade next time. Maybe someone have idea or a better solution

    // Calculate lot size based on risk amount and stop loss
    double lot_size = risk_amount / (stop_loss_pips * risk_per_lot);

How can i get the stopLoss out of the signal ? someone have an idea..