//+------------------------------------------------------------------+
//|                                            ObjectTest.mq4|
//+------------------------------------------------------------------+

#include <stderror.mqh>
#include <stdlib.mqh>

#import "user32.dll"
bool      GetAsyncKeyState(int nVirtKey);
#import

#define KEYEVENTF_EXTENDEDKEY          0x0001
#define KEYEVENTF_KEYUP                0x0002
#define VK_T   84
#define VK_LBUTTON         1     //Left mouse button


//----
string Trendline = "BS";
string TrendlineTarget = "TA";
string TrendlineStop = "ST";

bool ReDraw = false;

static int ChartID;


//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int init()
  {
 
   if(ObjectFind(Trendline + ChartID) != 0){
      SetTrendlineObject(Trendline + ChartID,Time[50],Close[5],Time[0],Close[5],Aqua);
     }
   
   if(ObjectFind(TrendlineTarget) != 0){
      SetTrendlineObject(TrendlineTarget,Time[50],Close[9],Time[0],Close[9],Green);
     }
   
   
   if(ObjectFind(TrendlineStop) != 0)  {
      SetTrendlineObject(TrendlineStop,Time[50],Close[18],Time[0],Close[18],Red);
     }



   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int deinit()
  {
  
   Comment("");
   

   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
  {
   double vH, vL, BS, ST, TA, BF, check, sl, tp;


   //Get values of Trendlines
   if(ObjectFind(TrendlineTarget) == 0)TA = NormalizeDouble(ObjectGetValueByShift(TrendlineTarget,0),Digits);
   if(ObjectFind(TrendlineStop) == 0)  ST = NormalizeDouble(ObjectGetValueByShift(TrendlineStop,0),Digits);
   if(ObjectFind(Trendline + ChartID) == 0)      BS = NormalizeDouble(ObjectGetValueByShift(Trendline + ChartID,0),Digits);


   if (GetAsyncKeyState(VK_LBUTTON) && GetAsyncKeyState(VK_T))    ReDraw = true;

   if(ReDraw == true  ){// need to re-think this, perhaps pressign cntl and a key to redraw trendlines.  what can this be used for? just setting up trendlines?
  
      
      if(ObjectFind("Control_Panel") == 0)ObjectDelete("Control_Panel");
      if(ObjectFind("Control_Panel_Bk") == 0)ObjectDelete("Control_Panel_Bk");
      if(ObjectFind("Settings") == 0)ObjectDelete("Settings");
      if(ObjectFind(Trendline + ChartID) == 0)ObjectDelete(Trendline + ChartID);
      if(ObjectFind(TrendlineTarget) == 0)ObjectDelete(TrendlineTarget);
      if(ObjectFind(TrendlineStop) == 0) ObjectDelete(TrendlineStop);
      if(ObjectFind("PlaceOrderBuffer" + Trendline + ChartID) == 0) ObjectDelete("PlaceOrderBuffer" + Trendline + ChartID);   
      if(ObjectFind(Trendline + ChartID) != 0){
         SetTrendlineObject(Trendline + ChartID,Time[100],Close[5],Time[0],Close[5],Aqua);
      }
      if(ObjectFind(TrendlineTarget) != 0){
         SetTrendlineObject(TrendlineTarget,Time[100],(Close[5]+2*iATR(NULL,0,14,0)) ,Time[0],(Close[5]+2*iATR(NULL,0,14,0)),Green);
      }
      if(ObjectFind(TrendlineStop) != 0)  {
         SetTrendlineObject(TrendlineStop,Time[100],(Close[5]-2*iATR(NULL,0,14,0)),Time[0],(Close[5]-2*iATR(NULL,0,14,0)),Red);
      }
      ReDraw = false;
   }



    

    
   return(0);
  }



//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void SetTrendlineObject(string name,datetime T1,double P1,datetime T2,double P2,color clr)
  {
   if(ObjectFind(name) == -1)
     {
       ObjectCreate(name, OBJ_TREND, 0, T1, P1, T2, P2);
       ObjectSet(name, OBJPROP_COLOR, clr);
       ObjectSet(name, OBJPROP_WIDTH, 2);       
       ObjectSet(name, OBJPROP_STYLE, STYLE_SOLID);
       ObjectSet(name, OBJPROP_BACK, true);
     }
   else
     {
       ObjectSet(name, OBJPROP_TIME1, T1);
       ObjectSet(name, OBJPROP_PRICE1, P1);
       ObjectSet(name, OBJPROP_TIME2, T2);
       ObjectSet(name, OBJPROP_PRICE2, P2);
       ObjectSet(name, OBJPROP_COLOR, clr);
       ObjectSet(name, OBJPROP_WIDTH, 2);  
       ObjectSet(name, OBJPROP_STYLE, STYLE_SOLID);
       ObjectSet(name, OBJPROP_BACK, true);
       
       
     } 
  }
//+------------------------------------------------------------------+




