Risk percentage lot size calculation

MQL5 Experts

Tâche terminée

Temps d'exécution 1 jour
Commentaires du client
Great Developer! Code works like a charm and was delivered very quickly with useful complementary information!
Commentaires de l'employé
Excellent customer. Wishing you success in learning MQL.

Spécifications

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;
           }
        
     }

 

 

Répondu

1
Développeur 1
Évaluation
(182)
Projets
342
42%
Arbitrage
118
12% / 73%
En retard
104
30%
Gratuit
Publié : 4 codes
2
Développeur 2
Évaluation
(564)
Projets
844
73%
Arbitrage
15
53% / 13%
En retard
193
23%
Gratuit
Commandes similaires
Manly 30 - 200 USD
ZigZag based on oscillators is needed The idea of ​​the indicator Create a ZigZag indicator, which is constructed based on extreme values determined using oscillators. It can use any classical normalized oscillator, which has overbought and oversold zones. The algorithm should first be executed with the WPR indicator, then similarly add the possibility to draw a zigzag using the following indicators: CCI Chaikin RSI
AI Trading Bot 30 - 80 USD
Essential Components for Indicator Specification Objective & Overview: Briefly describe what the indicator calculates (e.g., trend, momentum, volatility) and its main purpose. Input Parameters (Variables): List all user-definable inputs (e.g., Moving Average periods, ATR multiplier) to avoid hardcoding values. Detailed Logic/Calculation Rules: Explain the formula or logic to calculate indicator values. Define
Hi, I hope you’re doing great. I’d like to share the project details. The original EA is already working, but I need you to first review and verify that all existing features are functioning correctly. After confirming everything works properly, the next task is to add a simple user dashboard that shows the number of detected zones, buy/sell/none status, and includes an ON/OFF button. Also, please make sure that
looking for Expert to create or ready made solution for bonus hedge auto set cross trading of opposite trading strategy. the expert may guide what max and best he can do to make the EA perfect
Set specific time to run this function(order). The time can be hard-coded or inputted by user. Time format: HH:MM:SS:ss Example: 17:58:48:59 -> This means an order will be triggered at 5 pm 58min 48sec 59 today. Set “Stop loss” and order a Sell stop. “At price” triggered automatically: current(specific time set above 1) Gold price - 2$ Stop loss: current Gold price + 2$ Volume: 0.1 (It can be hard-coded or inputted
Simplebot 30+ USD
#include <Trade/Trade.mqh> CTrade trade; input double LotSize = 0.1; input int FastMA = 10; input int SlowMA = 20; int fastHandle, slowHandle; // Initialize indicators int OnInit() { fastHandle = iMA(_Symbol, PERIOD_CURRENT, FastMA, 0, MODE_SMA, PRICE_CLOSE); slowHandle = iMA(_Symbol, PERIOD_CURRENT, SlowMA, 0, MODE_SMA, PRICE_CLOSE); return(INIT_SUCCEEDED); } void OnTick() { double fastMA[2]; double
I need an Expert Advisor (EA) for MetaTrader (MT4 or MT5) based on the following scalping strategy. Platform: MT4 or MT5 Symbol: EURUSD (should work on other pairs as well) Timeframe: M1 or M5 Indicators: - EMA 9 - EMA 21 - RSI (14) Buy Conditions: - EMA 9 crosses above EMA 21 - RSI > 55 - Spread < 1.5 pips - Only one trade at a time Sell Conditions: - EMA 9 crosses below EMA 21 - RSI < 45 - Spread < 1.5 pips -
In need of an automated bot that strongly detect support and resistance zones where price has a high probability of reacting ,rejecting or reversing. The zones should be built on combibation of of : (a)swing high and swing low.(b)repeated price reaction c)rejection strength (d)break and retest behaviour (e) consolidation origin before implusive move (f) strong displacement candles
I need a mt5 Expert advisor ea to manage intraday trades with strict risk management. The EA must -Handle between 5 to 8 clean trades a day max altogether throughout all 3 sessions. no big news trading times and no overnight trades -Use 1% on forex pairs and upto 2% on XAUUSD risk per trade - Automatically calculate lot size based on stop loss -use fixed RR ratio [1:2] For forex pairs, the stop loss should be
I need a clean, bug-free MT5 Expert Advisor (MQL5) based on this exact mechanical scalping strategy on M5 timeframe for EURUSD. Indicators (built-in): - EMA 9 and EMA 21 on M5 - RSI 14 - ADX 14 (>25 for strong trend) - H1 EMA 21 above/below H1 EMA 9 for trend alignment Entry Rules (ALL must be true): BUY: EMA9 crosses above EMA21 (on closed bar) + RSI > 50 + ADX > 25 + H1 EMA21 > H1 EMA9 SELL: Mirror (cross below

Informations sur le projet

Budget
10 - 20 USD
Délais
de 1 à 2 jour(s)