Hi I have been searching the web for a golden lot sizing function. I've tried MQL libraries, and even tutorials. Nothing works right.
I'd like to be able to take the following formulas and generate a lot size that is a percentage of risk defined of the user. For example, if the user defines 5% risk on a $1000 account he will be risking $50 from the trade.
SL = 20 Points (for example)
Risk = .05 (5%)
RiskAount = AccountEquity() * Risk
PricePerPoint = unknown (?)
If RiskAmount also is,
RiskAmount = SL * PricePerPoint * Lots
Then, (using some basic Algebra)
(RiskAmount/Lots) = SL * PricePerPoint
(1/Lots) = (SL * PricePerPoint) / RiskAmount
(Lots) = RiskAmount / (SL * PricePerPoint)
Given that the lot size is unknown but the amount we'd like to risk is. This would me that the size of the SL would shorten the number of lots as the SL becomes broader and increase the lots as it tightens.
The problem is I don't know who MT4 calculates the cost per point/pip. It clearly does this in the chart but why is there no standard function to give us this much needed valuable information.
** Correct me if I made a mistake. **
Ok thanks a lot. That helped very much. This is what I came up with.
double risk=.01; // 1%
double lots=NormalizeDouble(risk_amt/sl/delta,2); // Volume
// Tested with deposit currency USD and with BIT
Note: I already have other code that verifies lot size with MODE_MINLOT and MODE_MAXLOT as well as the margin level which I use as follows.
double risk=.02; // 2%
// Trim lot
// Calculate margin level
double margin_level=margin!=0 ? (equity/margin)*100 : 0; // %
if(margin_level==0 || margin_level>=MIN_MARGIN_LEVEL)
// Place order