Position Size computation for indices (US30)

 
Hi everyone, I should start by saying that I’m quite a beginner, so please forgive me if the question might seem a bit silly. Let's take an example: I have an account with 10k dollars, contract size = 1, and leverage = 1:25. I want to open a position on US30 with a 490 pip stop loss, with 1% risk. If I calculate the lot size through https://www.cashbackforex.com/tools/position-size-calculator, it tells me that the correct lot size is 2.041 Lots. It is the same result I get using this simple function that I wrote after watching some videos tutorial about how to compute it:
double calcLotUS30(double slDistancePips, double riskPerc, double& final_risk){
    double contract_size_factor = 10/SymbolInfoDouble(NULL, SYMBOL_TRADE_CONTRACT_SIZE);
    double lot_size = (AccountInfoDouble(ACCOUNT_EQUITY)*(riskPerc/100)*contract_size_factor)/(slDistancePips);
    double lotStep = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_STEP);
    lot_size = MathFloor( lot_size / lotStep ) * lotStep;
    return lot_size;
  }

The problem is that if I apply that lot size, once the stop loss is hit, it wipes out almost (not all my account cause i round the lot size to 2) my entire account. Specifically, it seems that the lot size is 100 times greater than it should be, meaning I’m risking 100% instead of 1% (lol). Can anyone help me understand what I missed? I suspect that leverage might have something to do with it since I'm not considering it in the calculations, but I'm not sure at all.

Entry: 33768.10
SL: 33719.10

--> -9900 $


Lot Size Calculator - Best Tool w/ Live Data 145K+ Symbols
  • www.cashbackforex.com
Lot size and position size risk calculator to calculate the recommended units or lot size to risk, using live market quotes, account equity, risk percentage and stop loss.
 
leverage needs to be added to the math in the computation of your lot size
You should make sure the contract size factor is returning a valid number, if it is 0.0 you know there's a problem. Keep in mind that this can easily return zero by the broker if it's not on the forex exchange 
 
Conor Mcnamara #:
leverage needs to be added to the math in the computation of your lot size
You should make sure the contract size factor is returning a valid number, if it is 0.0 you know there's a problem. Keep in mind that this can easily return zero by the broker if it's not on the forex exchange 

.... aaand how should i add the leverage to the math?? 

if the leverage take a role in this calculation, why it is not asked in the site for computing the lot size that i linked? 

I checked manually,for the contract size it returns 1 (which is the right effective value)

 
Your issue is odd and it could be caused by a lot size multiplier or...different stop losses increasing the lot risk each time?

I would personally never make a lot size based on stop loss. It's too awkward and an unneeded complexity.

See last post here how I simply base a lot size on risk percentage and always keep it within allowed limits based on conditions
https://www.mql5.com/en/forum/468180#comment_53686978


 
Conor Mcnamara #: leverage needs to be added to the math in the computation of your lot siz

Risk depends on your initial stop loss, lot size, and the value of the symbol. It does not depend on margin or leverage. No SL means you have infinite risk (on leveraged symbols). Never risk more than a small percentage of your trading funds, certainly less than 2% per trade, 6% account total.

  1. You place the stop where it needs to be — where the reason for the trade is no longer valid. E.g. trading a support bounce, the stop goes below the support. Then you compute your lot size.

  2. AccountBalance * percent/100 = RISK = OrderLots * (|OrderOpenPrice - OrderStopLoss| * DeltaPerLot + CommissionPerLot) (Note OOP-OSL includes the spread, and DeltaPerLot is usually around $10/PIP, but it takes account of the exchange rates of the pair vs. your account currency.)

  3. Do NOT use TickValue by itself - DeltaPerLot and verify that MODE_TICKVALUE is returning a value in your deposit currency, as promised by the documentation, or whether it is returning a value in the instrument's base currency.
              MODE_TICKVALUE is not reliable on non-fx instruments with many brokers - MQL4 programming forum (2017)
              Is there an universal solution for Tick value? - Currency Pairs - General - MQL5 programming forum (2018)
              Lot value calculation off by a factor of 100 - MQL5 programming forum (2019)

  4. You must normalize lots properly and check against min and max.

  5. You must also check Free Margin to avoid stop out

  6. For MT5, see 'Money Fixed Risk' - MQL5 Code Base (2017)

Most pairs are worth about $10 per PIP. A $5 risk with a (very small) 5 PIP SL is $5/$10/5 or 0.1 Lots maximum.