//+------------------------------------------------------------------+ //| PositionInfo.mqh | //| Copyright 2021, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2021, MetaQuotes Ltd." #property link "https://www.mql5.com" #property version "1.00" struct PositionInfo { long ticket; double position; double amplitude; double lotage; double riskInMoney; int periodInBars; datetime openPositionTime; int signal; double takeProfit; double takeProfitLevel; double stopLoss; double stopLossLevel; }; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ bool exitPositionByPeriodInBars(PositionInfo &positionsInfoParam[], int index) { return positionsInfoParam[index].amplitude != 0; } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ bool madeTradeInPosition(PositionInfo &positionsInfoParam[], int index) { return positionsInfoParam[index].ticket != -1; } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ PositionInfo createEmptyPosition(datetime initTimeParam) { datetime currentTime = initTimeParam; return createPositionInfo(-1,0,0,0,0,0,currentTime,0,0,0,0,0); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ PositionInfo createPositionInfo(long ticket, double position, double amplitude, double lotage, double riskInMoneyParam, int periodInBarsParam, datetime openPositionTime, int signal, double takeProfit, double takeProfitLevel, double stopLoss, double stopLossLevel) { PositionInfo positionInfo; positionInfo.ticket = ticket; positionInfo.amplitude = amplitude; positionInfo.openPositionTime = openPositionTime; positionInfo.lotage = lotage; positionInfo.riskInMoney = riskInMoneyParam; positionInfo.periodInBars = periodInBarsParam; positionInfo.position = position; positionInfo.signal = signal; positionInfo.stopLoss = stopLoss; positionInfo.stopLossLevel = stopLossLevel; positionInfo.takeProfit = takeProfit; positionInfo.takeProfitLevel = takeProfitLevel; return positionInfo; }