//+------------------------------------------------------------------+
//|                                                         STOP.mq4 |
//|                                       Copyright 2022, Patiencefx |
//|                          https://www.forexfactory.com/patiencefx |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022, Patiencefx"
#property link      "https://www.forexfactory.com/patiencefx"
#property version   "1.00"
#property strict

extern string descr=" PERIOD_H1, PERIOD_H4, 0 for ucrrent TF";
extern int period= PERIOD_H1; 

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---

   double bb=0;
   double bs=0;
   
   for(int i=1; i<=OrdersTotal(); i++)          // Cycle searching in orders
   {
      if (OrderSelect(i-1,SELECT_BY_POS)==true)
      {

double pBid=MarketInfo(OrderSymbol(), MODE_BID);
double pAsk=MarketInfo(OrderSymbol(), MODE_ASK);
double pPoint=MarketInfo(OrderSymbol(), MODE_POINT);

//---------------------------
//to see your variables used for testing
string msg="pBid :"+pBid+",pAsk :"+pAsk+" pPoint :" + pPoint+"\r\n";
Comment (msg);

//----------------------------


if (OrderType() == OP_BUY)
{bb = iLow(OrderSymbol(),NULL,iLowest(OrderSymbol(),period,MODE_LOW,5,0));}

if (OrderType() == OP_SELL)
{bs = iHigh(OrderSymbol(),NULL,iHighest(OrderSymbol(),period,MODE_HIGH,5,0));}

         if (OrderType()==OP_BUY && pBid > bb && OrderStopLoss() != OrderOpenPrice())
         {
            bool bs1 = OrderModify(OrderTicket(),OrderOpenPrice(),bb,OrderTakeProfit(),0,Green);
         }
         if (OrderType()==OP_SELL && pAsk < bs && OrderStopLoss() != OrderOpenPrice())
         {
            bool ss = OrderModify(OrderTicket(),OrderOpenPrice(),bs,OrderTakeProfit(),0,Green);
         }

         if (OrderType()==OP_BUY && pBid > (OrderOpenPrice() + (150 * pPoint)) && OrderStopLoss() > OrderOpenPrice())
         {
            bool bs2 = OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0,Green);
         }
         if (OrderType()==OP_SELL && pAsk < (OrderOpenPrice() - (150 * pPoint)) && OrderStopLoss() < OrderOpenPrice())
         {
            bool ss2 = OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0,Green);
         }

         if (OrderType() == OP_BUY && pAsk < bb)
         {
            bool bc = OrderClose(OrderTicket(),OrderLots(),pBid,0,Green);
         }
         if (OrderType() == OP_SELL && pBid > bs)
         {
            bool sc = OrderClose(OrderTicket(),OrderLots(),pAsk,0,Green);
            
         }

      }
   }   

   
  }
//+------------------------------------------------------------------+

