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 $

Documentation on MQL5: Constants, Enumerations and Structures / Environment State / Symbol Properties
Documentation on MQL5: Constants, Enumerations and Structures / Environment State / Symbol Properties
  • www.mql5.com
To obtain the current market information there are several functions: SymbolInfoInteger() , SymbolInfoDouble() and SymbolInfoString() . The first...
 
Конечно очень много русских знающих английский и даже итальянский язык. Но всё-же вам лучше писать в английской части форума…
 
Alexey Viktorov #:
Конечно очень много русских знающих английский и даже итальянский язык. Но всё-же вам лучше писать в английской части форума…

Да переводчик, встроенный в форум, хорошо справляется.

 
Alexey Viktorov #:
Конечно очень много русских знающих английский и даже итальянский язык. Но всё-же вам лучше писать в английской части форума…
I tried in both italian and english forum, i got no answers :(
 
fabio_marinelli #:
I tried in both italian and english forum, i got no answers :(

хорошо

используйте 

riskPerc

который присутствует в Вашем листинге, от 1 до 100

при этом

если 100, то это значит, что у Вас на маржу будет использовано 100% депозита

также, в расчете лота, не учтено плечо

лучше всего изменить функцию расчета лота на другую и сначала попробовать на демосчетах с разным плечом

 
fabio_marinelli :
SYMBOL_TRADE_CONTRACT_SIZE

Each market has its own calculation formula

https://www.mql5.com/en/docs/constants/environment_state/marketinfoconstants

Documentation on MQL5: Constants, Enumerations and Structures / Environment State / Symbol Properties
Documentation on MQL5: Constants, Enumerations and Structures / Environment State / Symbol Properties
  • www.mql5.com
To obtain the current market information there are several functions: SymbolInfoInteger() , SymbolInfoDouble() and SymbolInfoString() . The first...
 
fabio_marinelli:

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:

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 $

Приведенный код написан странно.

Посмотрите готовый пример из книги LotMarginExposureTable.mq5 (https://www.mql5.com/en/book/automation/experts/experts_ordercalcmargin) - все исходники есть в кодебазе.

В частности, для US30m при заявленном депозите, риске 1% и дистанции стоп-лосса (490 пунктов - если отличаете от пипсов, то сами сконвертируйте), получаем лот 0.2

Результат работы LotMarginExposureTable.mq5 для US30m

MQL5 Book: Trading automation / Creating Expert Advisors / Margin calculation for a future order: OrderCalcMargin
MQL5 Book: Trading automation / Creating Expert Advisors / Margin calculation for a future order: OrderCalcMargin
  • www.mql5.com
Before sending a trade request to the server, an MQL program can calculate the margin required for a planned trade using the OrderCalcMargin...
 
thank you all very much guys!! i think the resources you gave me will help me to understand, thank you again