//+------------------------------------------------------------------+ //| TigerObserver.mq5 | //| 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 "Algo_Skeleton_Functions.mqh" long H4_SUPPORT_ZONE_CLR ; long H4_RESISTANCE_ZONE_CLR ; long H1_SUPPORT_ZONE_CLR; long H1_RESISTANCE_ZONE_CLR; long M30_SUPPORT_ZONE_CLR ; long M30_RESISTANCE_ZONE_CLR ; int OnInit() { //--- create timer EventSetTimer(60); // ONLY FOR VISULAZITAION ON STRATEGY TESTER iClose(_Symbol,PERIOD_W1,1); iClose(_Symbol,PERIOD_D1,1); iClose(_Symbol,PERIOD_H4,5); iClose(_Symbol,PERIOD_H1,5); iClose(_Symbol,PERIOD_M30,5); iClose(_Symbol,PERIOD_M15,5); H4_SUPPORT_ZONE_CLR = clrBlack ; H4_RESISTANCE_ZONE_CLR = clrBlack ; if(ENTRY_BASED_H1_STRUCTURE == true && ENTRY_BASED_M30_STRUCTURE == false){ M30_SUPPORT_ZONE_CLR = clrBlack ; M30_RESISTANCE_ZONE_CLR = clrBlack ; H1_SUPPORT_ZONE_CLR = clrAliceBlue ; H1_RESISTANCE_ZONE_CLR = clrDarkGray ; } else if(ENTRY_BASED_H1_STRUCTURE == false && ENTRY_BASED_M30_STRUCTURE == true){ M30_SUPPORT_ZONE_CLR = clrAliceBlue ; M30_RESISTANCE_ZONE_CLR = clrDarkGray ; H1_SUPPORT_ZONE_CLR = clrBlack ; H1_RESISTANCE_ZONE_CLR = clrBlack ; } objectsManager.addTextTiger(); for(int i=0; i0){ updateNormalZonesSupport(zoneContainerSupport_M30,PERIOD_M30,"PERIOD_M30",M30_SUPPORT_ZONE_CLR,rangeDistanceBetweenZonesActual_M30,0); } if(zoneContainer_M30.getNumberOfActiveZones()> 0){ updateNormalZonesResistance(zoneContainer_M30,PERIOD_M30,"PERIOD_M30",M30_RESISTANCE_ZONE_CLR,rangeDistanceBetweenZonesActual_M30,0); } } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ if(newCandleDetector30M.isNewCandle()) { if(trail_based_m30){ trailAllOpenPositionsIfNeeded(PERIOD_M30); } datetime currTime = TimeCurrent(); ObjectSetString(0,"clockTextTiger",OBJPROP_TEXT,TimeToString(currTime,TIME_MINUTES)); detectAndDrawResistanceOnTimeFrame(PERIOD_M30,"PERIOD_M30",M30_RESISTANCE_ZONE_CLR,zoneContainer_M30,rangeDistanceBetweenZonesActual_M30,0); detectAndDrawSupportOnTimeFrame(PERIOD_M30,"PERIOD_M30",M30_SUPPORT_ZONE_CLR,zoneContainerSupport_M30,rangeDistanceBetweenZonesActual_M30,0); if(ENTRY_BASED_M30_STRUCTURE){ handleBuys(zoneContainer_M30,PERIOD_M30,"PERIOD_M30",cleanRangeUponEntryActual); handleSells(zoneContainerSupport_M30,PERIOD_M30,"PERIOD_M30",cleanRangeUponEntryActual); } else{ handleBullishBreakouts(zoneContainer_M30,PERIOD_M30,"PERIOD_M30"); handleBearishBreakouts(zoneContainerSupport_M30,PERIOD_M30,"PERIOD_M30"); } // UPDATING H1 ZONES if(zoneContainerSupport_H1.getNumberOfActiveZones()>0){ updateNormalZonesSupport(zoneContainerSupport_H1,PERIOD_H1,"PERIOD_H1",H1_SUPPORT_ZONE_CLR,rangeDistanceBetweenZonesActual_H1,1000); } if(zoneContainer_H1.getNumberOfActiveZones()> 0){ updateNormalZonesResistance(zoneContainer_H1,PERIOD_H1,"PERIOD_H1",H1_RESISTANCE_ZONE_CLR,rangeDistanceBetweenZonesActual_H1,1000); } zoneContainerSupport_M30.printZonesSortedArray(); zoneContainer_M30.printZonesSortedArray(); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ if(newCandleDetector1H.isNewCandle()){ if(trail_based_h1){ trailAllOpenPositionsIfNeeded(PERIOD_H1); } detectAndDrawResistanceOnTimeFrame(PERIOD_H1,"PERIOD_H1",H1_RESISTANCE_ZONE_CLR,zoneContainer_H1,rangeDistanceBetweenZonesActual_H1,1000); detectAndDrawSupportOnTimeFrame(PERIOD_H1,"PERIOD_H1",H1_SUPPORT_ZONE_CLR,zoneContainerSupport_H1,rangeDistanceBetweenZonesActual_H1,1000); if(ENTRY_BASED_H1_STRUCTURE){ handleBuys(zoneContainer_H1,PERIOD_H1,"PERIOD_H1",cleanRangeUponEntryActual); handleSells(zoneContainerSupport_H1,PERIOD_H1,"PERIOD_H1",cleanRangeUponEntryActual); } else{ handleBullishBreakouts(zoneContainer_H1,PERIOD_H1,"PERIOD_H1"); handleBearishBreakouts(zoneContainerSupport_H1,PERIOD_H1,"PERIOD_H1"); } // UPDATING H4 ZONES if(zoneContainerSupport_H4.getNumberOfActiveZones()>0){ updateNormalZonesSupport(zoneContainerSupport_H4,PERIOD_H4,"PERIOD_H4",H4_SUPPORT_ZONE_CLR,rangeDistanceBetweenZonesActual_H4,2000); } if(zoneContainer_H4.getNumberOfActiveZones()> 0){ updateNormalZonesResistance(zoneContainer_H4,PERIOD_H4,"PERIOD_H4",H4_RESISTANCE_ZONE_CLR,rangeDistanceBetweenZonesActual_H4,2000); } Print("H1 zones :"); //zoneContainerSupport_H1.printZonesSortedArray(); //zoneContainer_H1.printZonesSortedArray(); } if(newCandleDetector4H.isNewCandle()){ last_H4_candle_broke_structure = false ; if(trail_based_h4){ trailAllOpenPositionsIfNeeded(PERIOD_H4); } detectAndDrawResistanceOnTimeFrame(PERIOD_H4,"PERIOD_H4",H4_RESISTANCE_ZONE_CLR,zoneContainer_H4,rangeDistanceBetweenZonesActual_H4,2000); detectAndDrawSupportOnTimeFrame(PERIOD_H4,"PERIOD_H4",H4_SUPPORT_ZONE_CLR,zoneContainerSupport_H4,rangeDistanceBetweenZonesActual_H4,2000); // BREAK OF STRUCTURE HANDLING handleBullishBreakouts(zoneContainer_H4,PERIOD_H4,"PERIOD_H4"); handleBearishBreakouts(zoneContainerSupport_H4,PERIOD_H4,"PERIOD_H4"); //handleBuys(zoneContainer_H4,PERIOD_H4,"PERIOD_H4",cleanRangeUponEntryActual); //handleSells(zoneContainerSupport_H4,PERIOD_H4,"PERIOD_H4",cleanRangeUponEntryActual); //Print("H4, Zones:"); //zoneContainerSupport_H4.printZonesSortedArray(); //zoneContainer_H4.printZonesSortedArray(); } if(newCandleDetectorDaily.isNewCandle()) { //detectAndDrawResistanceOnTimeFrame(PERIOD_D1,"PERIOD_D1",clrYellow,clrYellow,zoneContainer_D1); //updateBreakAboveStructureAndDelete(zoneContainer_D1,PERIOD_D1,"PERIOD_D1"); objectsManager.drawVerticalLine(clrAqua, TimeCurrent()); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ if(newCandleDetectorWeekly.isNewCandle()) { objectsManager.drawVerticalLine(clrRed, TimeCurrent()); weekCounter++ ; if(weekCounter == deleteAllZonesAfter_Weeks){ //deleteAllzonesWithGUI(); weekCounter = 0; } } } //+------------------------------------------------------------------+ //| Timer function | //+------------------------------------------------------------------+ void OnTimer() { //--- } //+------------------------------------------------------------------+ //| Trade function | //+------------------------------------------------------------------+ void OnTrade() { //--- } //+------------------------------------------------------------------+ //| TradeTransaction function | //+------------------------------------------------------------------+ void OnTradeTransaction(const MqlTradeTransaction& trans, const MqlTradeRequest& request, const MqlTradeResult& result) { //--- } //+------------------------------------------------------------------+ //| Tester function | //+------------------------------------------------------------------+ double OnTester() { //--- double ret=0.0; //--- //--- return(ret); } //+------------------------------------------------------------------+ //| TesterInit function | //+------------------------------------------------------------------+ void OnTesterInit() { //--- } //+------------------------------------------------------------------+ //| TesterPass function | //+------------------------------------------------------------------+ void OnTesterPass() { //--- } //+------------------------------------------------------------------+ //| TesterDeinit function | //+------------------------------------------------------------------+ void OnTesterDeinit() { //--- } //+------------------------------------------------------------------+ //| ChartEvent function | //+------------------------------------------------------------------+ void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) { //--- } //+------------------------------------------------------------------+ //| BookEvent function | //+------------------------------------------------------------------+ void OnBookEvent(const string &symbol) { //--- }