//+------------------------------------------------------------------+
//|                                          ShootingStar&Hammer.mq4 |
//|                              Copyright 2005-2020, by. ganztrade. |
//|                                              http://www.mql4.com |
//+------------------------------------------------------------------+
#property copyright   "2005-2020, by. ganztrade."
#property link        "http://www.mql4.com"

input double TakeProfit    =20;
input double StopLoss      =20;
input double Lots          =0.01;

double multiplier;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//---
      if(Digits == 2 || Digits == 4) multiplier = 1;
      if(Digits == 3 || Digits == 5) multiplier = 10;
      if(Digits == 6) multiplier = 100;
//---
   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnTick(void)
  {

   int    ticket,total;
   
   double O, O1, O2, C, C1, C2, C3, L, L1, L2, L3, H, H1, H2, H3;
   double CL, CL1, CL2, BL, BLa, BL90, UW, LW, BodyHigh, BodyLow,CandleLength,Candle_WickBody_Percent;

   
      CandleLength = 12;      
      Candle_WickBody_Percent = 0.9;
      O = Open[1];
      O1 = Open[2];
      O2 = Open[3];
      H = High[1];
      H1 = High[2];
      H2 = High[3];
      H3 = High[4];
      L = Low[1];
      L1 = Low[2];
      L2 = Low[3];
      L3 = Low[4];
      C = Close[1];
      C1 = Close[2];
      C2 = Close[3];
      C3 = Close[4];
      if (O>C) {
         BodyHigh = O;
         BodyLow = C;  }
      else {
         BodyHigh = C;
         BodyLow = O; }
      CL = High[1]-Low[1];
      CL1 = High[2]-Low[2];
      CL2 = High[3]-Low[3];
      BL = Open[1]-Close[1];
      UW = High[1]-BodyHigh;
      LW = BodyLow-Low[1];
      BLa = MathAbs(BL);
      BL90 = BLa*Candle_WickBody_Percent;
      
   total=OrdersTotal();
   if(total<1)
     {
      //--- check for long position (BUY) possibility
      if ((H>=H1)&&(H>H2)&&(H>H3))  
        {
         if (((UW/4)>LW)&&(UW>(2*BL90))&&(CL>=(CandleLength*Point*multiplier))&&(O!=C)&&(L>L1)&&(L>L2))  
             {
         ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-(StopLoss*Point*multiplier),Ask+(TakeProfit*Point*multiplier),"hammer",123,0,clrLime);
             }
         return;
        }
     
      //--- check for short position (SELL) possibility
      if ((L<=L1)&&(L<L2)&&(L<L3))  
         {
      if (((LW/2)>UW)&&(LW>BL90)&&(CL>=(CandleLength*Point*multiplier))&&(O!=C)&&((LW/3)<=UW)&&((LW/4)<=UW)&&(H<H1)&&(H<H2))  
             {
         ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+(StopLoss*Point*multiplier),Bid-(TakeProfit*Point*multiplier),"shootingstar",321,0,clrRed);
             }         
      return;     
         }
     }
//---
  }
//+------------------------------------------------------------------+
