106 lines
3.8 KiB
Plaintext
106 lines
3.8 KiB
Plaintext
//+------------------------------------------------------------------+
|
|
//| MarketObserverTiger.mqh |
|
|
//| Copyright 2023, MetaQuotes Ltd. |
|
|
//| https://www.mql5.com |
|
|
//+------------------------------------------------------------------+
|
|
#property copyright "Copyright 2023, MetaQuotes Ltd."
|
|
#property link "https://www.mql5.com"
|
|
//+------------------------------------------------------------------+
|
|
//| defines |
|
|
//+------------------------------------------------------------------+
|
|
// #define MacrosHello "Hello, world!"
|
|
// #define MacrosYear 2010
|
|
//+------------------------------------------------------------------+
|
|
//| DLL imports |
|
|
//+------------------------------------------------------------------+
|
|
// #import "user32.dll"
|
|
// int SendMessageA(int hWnd,int Msg,int wParam,int lParam);
|
|
// #import "my_expert.dll"
|
|
// int ExpertRecalculate(int wParam,int lParam);
|
|
// #import
|
|
//+------------------------------------------------------------------+
|
|
//| EX5 imports |
|
|
//+------------------------------------------------------------------+
|
|
// #import "stdlib.ex5"
|
|
// string ErrorDescription(int error_code);
|
|
// #import
|
|
//+------------------------------------------------------------------+
|
|
#include "Zone.mqh"
|
|
#include "ZoneContainer.mqh"
|
|
|
|
|
|
// ALGORITHM CLASSES INCLUDES
|
|
|
|
#include "NewCandleDetector.mqh"
|
|
|
|
|
|
//+------------------------------------------------------------------+
|
|
//| |
|
|
//+------------------------------------------------------------------+
|
|
class MarketObserverTiger
|
|
{
|
|
// THIS CLASS HAS ACCESS TO ZONE CONTAINER, HOWEVER IT MUST NOT CHANGE IT IT ONLY READS FROM THE ZONECONTAINER CLASS
|
|
private:
|
|
|
|
|
|
|
|
public:
|
|
MarketObserverTiger();
|
|
~MarketObserverTiger();
|
|
|
|
string zoneReached();
|
|
bool candleClosedAboveResistanceByIndex(int _index,ENUM_TIMEFRAMES tf,ZoneContainer& resistanceZoneContainer); // the index is a specific zone from the zones container
|
|
bool candleClosedBelowSupportByIndex(int _index,ENUM_TIMEFRAMES tf,ZoneContainer& supportZoneContainer); // the index is a specific zone from the zones container
|
|
|
|
|
|
|
|
|
|
};
|
|
//+------------------------------------------------------------------+
|
|
//| |
|
|
//+------------------------------------------------------------------+
|
|
MarketObserverTiger::MarketObserverTiger()
|
|
{
|
|
|
|
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| |
|
|
//+------------------------------------------------------------------+
|
|
MarketObserverTiger::~MarketObserverTiger()
|
|
{
|
|
}
|
|
|
|
|
|
|
|
|
|
//+------------------------------------------------------------------+
|
|
//| |
|
|
//+------------------------------------------------------------------+
|
|
bool MarketObserverTiger:: candleClosedAboveResistanceByIndex(int _index,ENUM_TIMEFRAMES tf,ZoneContainer& resistanceZoneContainer)
|
|
{
|
|
|
|
double previousCandleClose = iClose(_Symbol,tf,1);
|
|
|
|
if((previousCandleClose > resistanceZoneContainer.getZoneByIndex(_index).getHigherEdge()))
|
|
{
|
|
|
|
return true ;
|
|
}
|
|
|
|
return false ;
|
|
}
|
|
|
|
|
|
|
|
bool MarketObserverTiger:: candleClosedBelowSupportByIndex(int _index, ENUM_TIMEFRAMES tf, ZoneContainer& supportZoneContainer){
|
|
|
|
|
|
double previousCandleClose = iClose(_Symbol,tf,1);
|
|
if(previousCandleClose < supportZoneContainer.getZoneByIndex(_index).getLowerEdge()){
|
|
return true ;
|
|
}
|
|
|
|
return false ;
|
|
}
|