SCT_PriceAction_AllPotentialEntries

Author: Copyright 2019, MetaQuotes Software Corp.
0 Views
0 Downloads
0 Favorites
SCT_PriceAction_AllPotentialEntries
//+------------------------------------------------------------------+
//|                          SCT_PriceAction_AllPotentialEntries.mq4 |
//|                        Copyright 2019, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict

class cCandlestick {

   public:

      double dOpenPrice, dHighPrice, dLowPrice, dClosePrice, dRangeCandle, dBodyCandle, dUpperWickCandle, dLowerWickCandle;
      
      bool bBullCandle;
      bool bBearCandle;
      bool bDojiCandle;
      
      void mvGetCandleStickCharateristics (string s, int i) {
         
         dOpenPrice = iOpen(s, PERIOD_CURRENT,i);
         dHighPrice = iHigh(s, PERIOD_CURRENT,i);
         dLowPrice = iLow(s, PERIOD_CURRENT,i);
         dClosePrice = iClose(s, PERIOD_CURRENT,i);
         
         dRangeCandle = NormalizeDouble(MathAbs(dHighPrice-dLowPrice)/SymbolInfoDouble(s,SYMBOL_POINT),_Digits);
         dBodyCandle = NormalizeDouble(MathAbs(dOpenPrice-dClosePrice)/SymbolInfoDouble(s,SYMBOL_POINT),_Digits);
         dUpperWickCandle = NormalizeDouble(MathAbs(dHighPrice-MathMax(dClosePrice,dOpenPrice))/SymbolInfoDouble(s,SYMBOL_POINT),_Digits);
         dLowerWickCandle = NormalizeDouble(MathAbs(MathMin(dClosePrice,dOpenPrice)-dLowPrice)/SymbolInfoDouble(s,SYMBOL_POINT),_Digits);
         
         if (dBodyCandle<=1.0 && dUpperWickCandle>dBodyCandle && dLowerWickCandle>dBodyCandle) {
            bDojiCandle=true; bBullCandle=false; bBearCandle=false;}
         else if (dOpenPrice<dClosePrice) {
            bDojiCandle=false; bBullCandle=true; bBearCandle=false;}
         else if (dOpenPrice>dClosePrice) {
            bDojiCandle=false; bBullCandle=false; bBearCandle=true;}
      }
};

cCandlestick cCS1, cCS2;

void OnStart()
  {
   int z=1;
   long chartid=0;

   int HowManySymbols=SymbolsTotal(true);

   int counter;

   for(int i=0;i<HowManySymbols;i++) {

      counter=0;
      string sArrowBuy1="", sArrowBuy2="", sArrowSell1="", sArrowSell2="";

      cCS1.mvGetCandleStickCharateristics(SymbolName(i,true),z);
      cCS2.mvGetCandleStickCharateristics(SymbolName(i,true),z+1);


   // OPEN CHART TO DOWNLOAD DATA                    |

      chartid=ChartOpen(SymbolName(i,true), PERIOD_CURRENT);  

      // ===============================================|
      // ===============================================|
      
      if (cCS1.bBullCandle && cCS2.bBullCandle && cCS1.dRangeCandle>cCS2.dRangeCandle && cCS1.dBodyCandle>=cCS2.dBodyCandle) {
         sArrowBuy1 = StringConcatenate("sArrowBuy1 ",SymbolName(i,true), string(iTime(SymbolName(i,true),PERIOD_CURRENT,z)));
         ObjectCreate(chartid,sArrowBuy1,OBJ_ARROW_BUY,0,iTime(SymbolName(i,true),PERIOD_CURRENT,z),cCS1.dLowPrice);
         ObjectSet(sArrowBuy1,OBJPROP_COLOR,clrGreen);
         sArrowBuy2 = StringConcatenate("sArrowBuy2 ",SymbolName(i,true), string(iTime(SymbolName(i,true),PERIOD_CURRENT,z+1)));
         ObjectCreate(chartid,sArrowBuy2,OBJ_ARROW_BUY,0,iTime(SymbolName(i,true),PERIOD_CURRENT,z+1),cCS2.dLowPrice);
         ObjectSet(sArrowBuy2,OBJPROP_COLOR,clrGreen);
         counter++;
      }

      // ===============================================|
      // ===============================================|
   
      if (cCS1.bBearCandle && cCS2.bBearCandle && cCS1.dBodyCandle>cCS2.dBodyCandle && cCS1.dRangeCandle>=cCS2.dRangeCandle) {
         sArrowSell1= StringConcatenate("sArrowSell1 ",SymbolName(i,true),string(iTime(SymbolName(i,true),PERIOD_CURRENT,z)));
         ObjectCreate(chartid,sArrowSell1,OBJ_ARROW_SELL,0,iTime(SymbolName(i,true),PERIOD_CURRENT,z),cCS1.dHighPrice);
         ObjectSet(sArrowSell1,OBJPROP_COLOR,clrRed);
         sArrowSell2 = StringConcatenate("sArrowSell2 ",SymbolName(i,true), string(iTime(SymbolName(i,true),PERIOD_CURRENT,z+1)));
         ObjectCreate(chartid,sArrowSell2,OBJ_ARROW_SELL,0,iTime(SymbolName(i,true),PERIOD_CURRENT,z+1),cCS2.dHighPrice);
         ObjectSet(sArrowSell2,OBJPROP_COLOR,clrRed);
         counter++;
      }

      if (counter==0)
         ChartClose(chartid);
   }

   
  }
//+------------------------------------------------------------------+

Comments