forked from nique_372/MQLArticles
45 lines
3.6 KiB
MQL5
45 lines
3.6 KiB
MQL5
//+------------------------------------------------------------------+
|
|
//| Get Sl by risk per operation and lot.mq5 |
|
|
//| Your name |
|
|
//| https://www.mql5.com |
|
|
//+------------------------------------------------------------------+
|
|
#property copyright "Your name"
|
|
#property link "https://www.mql5.com"
|
|
#property version "1.00"
|
|
#property strict
|
|
#property script_show_inputs
|
|
|
|
#include "..\\RM\\RiskManagement.mqh"
|
|
|
|
input ENUM_ORDER_TYPE InpOrderType = ORDER_TYPE_BUY; // Order Type:
|
|
input double InpEntryPrice = 10.0 ;// Entry price
|
|
input double InpRiskPerOperation = 1.0; // Risk per operation in %
|
|
input double InpLot = 0.01; // Lot size
|
|
input ulong InpDeviation = 0; // Deviation
|
|
input ulong InpStopLimit = 0; // StopLimit
|
|
|
|
|
|
//+------------------------------------------------------------------+
|
|
//| Main script function |
|
|
//+------------------------------------------------------------------+
|
|
void OnStart()
|
|
{
|
|
CGetLote get_lote(_Symbol);
|
|
const long calculate_sl = get_lote.CalculateSLWithLot(InpOrderType, InpRiskPerOperation, InpEntryPrice, InpLot, InpDeviation, InpStopLimit);
|
|
|
|
if(calculate_sl <= 0)
|
|
{
|
|
//--- Invalid stop loss
|
|
Comment("The lot size is too high or the risk per operation is too low. Increase the risk or decrease the lot size.");
|
|
}
|
|
else
|
|
{
|
|
//--- Display calculated values
|
|
Print("For lot: ", InpLot, ", and risk: ", InpRiskPerOperation, ", the ideal SL is: ", calculate_sl);
|
|
Comment("Ideal SL: ", calculate_sl, " Points");
|
|
}
|
|
|
|
Sleep(10000); // Sleep for 10 seconds
|
|
Comment(""); // Clean
|
|
}
|
|
//+------------------------------------------------------------------+
|