Risk percentage lot size calculation

MQL5 Experts

Job finished

Execution time 1 day
Feedback from customer
Great Developer! Code works like a charm and was delivered very quickly with useful complementary information!
Feedback from employee
Excellent customer. Wishing you success in learning MQL.

Specification

Hi All,

I would like to add to an existing and working MQL5 EA the ability to calculate the lot size based on a risk percentage. Or in other words how many percent of the account I'm willing to lose for each deal.

Here are some key elements of my EA setup:

The base currency is EUR

Trading pair is EURJPY

Leverage is 1/100

SL is fixed at 50 pips

Target risk percentage per deal should be a variable set by default on 5%  

 

The below formula seem to be the one needed to achieve my lot size calculation but I'm not sure. 

Lot Size = Amount Risked / Number of Pips x Pip Value 

 

I tried the created the code myself and here is where I stopped: 

Basically I need help to compete the "//Calculating Lot Size based on SL and Risk Percentage" part of the code. 

 

Let me know if you have any questions.  

 

Different Variables for the lot size calculation: 

input int      StopLoss=50;               // Stop Loss
input double   RiskPercentage=5;          // Lots to Trade

int STP, TKP; 
double LotSize;
double Pips;



//--- Let us handle currency pairs with 5 or 3 digit prices instead of 4
   STP = StopLoss;
   TKP = TakeProfit;
   if(_Digits==5 || _Digits==3)
     {
      STP = STP*10;
      TKP = TKP*10;
     }
   return(0);
  }

 My Buying Script

if(Buy_Condition_1 && Buy_Condition_2)
     {
         // any opened position?
         if((Buy_opened)||(Sell_opened))
           {
            //Alert("We already have an open Position. Oportuinity passed.");
            return;    // Don't open a new Buy Position
           }
           
         // Calculating Lot size based on SL and Risk Percentage
         
         MqlTick latest_price;
         SymbolInfoTick(_Symbol,latest_price);
         
         Pips = (latest_price.bid - STP)/_Point;          
         
         double AccountBalance = AccountInfoDouble(ACCOUNT_BALANCE);
         double TickValue = SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_VALUE);
         LotSize = (AccountBalance * (RiskPercentage/100))/(Pips * TickValue);  
         
         Print("Pips ", Pips, " Acc Bal: ", AccountBalance," Tick Val ", TickValue," Lot Size ", LotSize);      
         
         //Executing the Trade 
         ZeroMemory(mrequest);
         mrequest.action = TRADE_ACTION_DEAL;                                    // immediate order execution
         mrequest.price = NormalizeDouble(latest_price.ask,_Digits);             // latest ask price
         mrequest.sl = NormalizeDouble(latest_price.ask - STP*_Point,_Digits);   // Stop Loss
         mrequest.tp = NormalizeDouble(latest_price.ask + TKP*_Point,_Digits);   // Take Profit
         mrequest.symbol = _Symbol;                                              // currency pair
         mrequest.volume = LotSize;                                                  // number of lots to trade
         mrequest.magic = EA_Magic;                                              // Order Magic Number
         mrequest.type = ORDER_TYPE_BUY;                                         // Buy Order
         mrequest.type_filling = ORDER_FILLING_FOK;                              // Order execution type
         mrequest.deviation=100;                                                 // Deviation from current price
         //--- send order
         OrderSend(mrequest,mresult);
         // get the result code
         if(mresult.retcode==10009 || mresult.retcode==10008) //Request is completed or order placed
           {
            Alert("A Buy order has been successfully placed with Ticket#:",mresult.order,"!!");
            SendNotification("BBWP added a new Buy order!");
           }
         else
           {
            Alert("The Buy order request could not be completed -error:",GetLastError());
            ResetLastError();           
            return;
           }
        
     }

 

 

Responded

1
Developer 1
Rating
(182)
Projects
342
42%
Arbitration
118
12% / 73%
Overdue
104
30%
Free
Published: 4 codes
2
Developer 2
Rating
(564)
Projects
844
73%
Arbitration
15
53% / 13%
Overdue
193
23%
Free
Similar orders
Looking for an experienced developer to build a backend bot that receives TradingView webhook alerts and places LIMIT orders on XAUUSD based on a 30% candle retracement formula. Requirements: Receive and validate webhook JSON Calculate limit price from candle high/low Prevent duplicate execution (signal_id) Place LIMIT orders via broker API One-trade-at-a-time logic Cancel on opposite signal TTL expiration for
I’m looking for developer to build an AI-assisted trading system for Metatader 5 . You to deliver, working MT5 module, AI module (Python or compatible), source codes for both This phase is focused strictly on core logic and AI integration , not UI or dashboards. Kindly reach out only if you have experience on AI integration and prove of past work
​ Description: I am looking for a professional MQL4 developer/quant trader with a proven track record in EA optimization. This project involves optimizing a third-party EA that currently has a 2-year live track record. ​ The Task: ​ In-Sample Optimization: Optimize the EA parameters using historical data prior to January 1, 2024. ​ Out-of-Sample (Walk-Forward): Validate the optimized settings against the period of
Trade settings: --------------------------------- fixed lot size ….. 0.0 Buy /Sell distance market order…. 0.0 - 700.0 points Buy / Sell distance pending order Entry---- 0.0 - 700.0 points Max Trade------ 10.0 Min spread...… 0.0 points Max spread..... 3000.0 points Daily profit percentage ….. 0.0 - 100 % Global Stoploss Percentage----- 0.0 - 100 % Max Daily loss Percentage ------0.0 - 100 % Stop level = 0.0 point
📌 General 🔸 Pair: XAUUSD (Gold) 🔸 Timeframe: M1 only 🔸 Strategy: Funded account ❌ No over-trading 📊 Trade Frequency Rules 🔹 One win OR one loss per day only 🔹 If trade goes Break-Even, another trades allowed same day 🔹 If trade hits TP or SL, trading must stop for that day 🔹 Only one active trade at a time 💰 Risk & Reward 🔹 Risk per trade: 1% 🔹 Risk–Reward (RR): 1:3 🔹 Break-Even rule: At 1:1 RR SL must
Hi , I have some indicators that I want set up on my TV chart and want to create one chart for some and another chart for some others. Plus I want to set up the brackets orders so I can trade from the chart. I have these set up somewhat but need it cleaned up and the way I want them. how much would something like this cost to do? I'm in California and would like you to show me so I can learn to do this when I want to
i need EA EMA 5 to EMA 7 Cross over and in case of loss for martingale add 1 to 20 numbers we put next lots of martaingle manually not auto martaing add account no in hidden only which account only works add date of expiry in inside code add EA runinging time there is other option add on off swithch that if buy order loss than martaingle works only for recovery buy order, if sell order loss martingale works for only
Title: Creation of an EA by Breakout Fractal (without Martingale/Grille) Description: I am looking for a developer to create an Expert Advisor based on the highest and lowest (Fractals). Entry: Place Buy Stop and Sell Stop commands on the last formed peaks/hollows. Risk management: Strictly no Martingale or Grille system. Each trade must have a fixed stop loss. Features: Trailing Stop and Breakeven option. Platform
I already have programmed in MT5 EA, but I want to unfilter bad trades using Ai, about details I will tell and discuss with selected programmers, I have some ideas, prototypes, but I am open for your solutions too. I tested some time and it had possitive effects
Apply with a keen sense of responsibility . Copy the code . Both of my expert has sufficient materials . Its a simple winning strategy , therefore please be ahead of time . Code BLUE . Changing The Strategy According to what i think is correct

Project information

Budget
10 - 20 USD
Deadline
from 1 to 2 day(s)