Files
2025-07-11 08:43:07 +03:00

119 lines
4.2 KiB
Plaintext

//+------------------------------------------------------------------+
//| SellEntryManager.mqh |
//| Copyright 2023, MetaQuotes Ltd. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2023, MetaQuotes Ltd."
#property link "https://www.mql5.com"
#property version "1.00"
#include "SellRejectionDetector.mqh"
#include <Trade/Trade.mqh>
CTrade tradeShort ;
class SellEntryManager
{
private:
bool shortTradeTaken ;
bool waitingForRejectionCandle ;
bool waitingForRetracement ;
bool liquiditySweepEntryTaken ;
public:
SellEntryManager();
~SellEntryManager();
SellRejectionDetector* sellRejectionDetector ;
bool isWaitingForRejectionCandle(){return waitingForRejectionCandle ;}
void setWaitingForRejectionCandle(bool _setting){waitingForRejectionCandle = _setting ; }
bool isWaitingForRetracement(){return waitingForRetracement;}
void setWaitingForRetracement(bool _setting){waitingForRetracement = _setting ;}
bool sellTradeTaken();
void setTradeTakenStatus(bool _status){shortTradeTaken = _status ;}
bool liqEntryIsTaken(){return liquiditySweepEntryTaken;}
void setLiquiditySweepEntryTaken(bool _entryStatus){liquiditySweepEntryTaken = _entryStatus ;}
ulong takeSellTrade(double _lots,double _stopLoss);
ulong takeSellTradeTiger(double _lots, double _stopLoss, double _takeProfit);
ulong takeSellTradeTiger(double _lots, double _stopLoss);
};
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
SellEntryManager::SellEntryManager()
{
sellRejectionDetector = new SellRejectionDetector();
shortTradeTaken = false ;
waitingForRejectionCandle = false ;
bool waitingForRetracement = false;
liquiditySweepEntryTaken = false;
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
SellEntryManager::~SellEntryManager()
{
delete sellRejectionDetector;
}
//+------------------------------------------------------------------+
bool SellEntryManager:: sellTradeTaken(){
return shortTradeTaken ;
}
ulong SellEntryManager:: takeSellTrade(double _lots, double _stopLoss){
tradeShort.Sell(NormalizeDouble(_lots,2),_Symbol,SymbolInfoDouble(_Symbol, SYMBOL_BID),_stopLoss);
ulong tradeTicket = tradeShort.ResultOrder();
Print("Sell entry manager has taken a trade, ticket: " + tradeTicket);
return tradeTicket;
}
ulong SellEntryManager:: takeSellTradeTiger(double _lots, double _stopLoss, double _takeProfit){
double netTp = SymbolInfoDouble(_Symbol, SYMBOL_BID);
netTp = netTp - _takeProfit ;
tradeShort.Sell(NormalizeDouble(_lots,2),_Symbol,SymbolInfoDouble(_Symbol, SYMBOL_BID),_stopLoss,SymbolInfoDouble(_Symbol, SYMBOL_BID) - netTp);
ulong tradeTicket = tradeShort.ResultOrder();
Print("sELL entry manager has taken a trade, ticket: " + tradeTicket);
return tradeTicket;
}
ulong SellEntryManager:: takeSellTradeTiger(double _lots, double _stopLoss){
tradeShort.Sell(NormalizeDouble(_lots,2),_Symbol,SymbolInfoDouble(_Symbol, SYMBOL_BID),_stopLoss);
ulong tradeTicket = tradeShort.ResultOrder();
Print("sELL entry manager has taken a trade, ticket: " + tradeTicket);
return tradeTicket;
}