0 Views
0 Downloads
0 Favorites
AA HHLL
//+------------------------------------------------------------------+
//|   Support Ressistance HHLL                                       |
//|                                                                  | 
//|   Apit IB Trade                                                  |  
//+------------------------------------------------------------------+ 

#property  copyright "Copyright © 2009 Apit" 

#property indicator_chart_window
 


//---- input parameters 

extern bool Show.Labels = true ;
extern bool Show.Gauge  = true ;

extern bool Show.Proj   = true ;

extern double    myUpper      = 0 ; 
extern double    myLower      = 0 ;
extern double    myWindow     = 0.77 ;
extern int       myBars       = 3 ;
extern int       myShift      = 1 ;

extern int myChartY = 200 ;
extern bool Horizontal = true ;


extern int myPctHi = 66 ;
extern int myPctLo = 34 ;

extern color myPctHiColor = Red ; 
extern color myPctMidColor = DimGray ; 
extern color myPctLoColor = Blue ; 

extern color myProjColor = Magenta ; 


extern int myHighMark = 225 ; // 218 = dn arrowhead, 242 = dn arrow, 226, 233 dn arrow solid, 201, 202 dn arrow twist 
extern int myLowMark  = 225 ; // 217 = up arrowhead, 241 = up arrow, 225, 233 up arrow solid, 199, 200 up arrow twist 
extern int myBackMark = 225 ;


extern color ColorHeading = DimGray;
extern color ColorUpper = Red ;
extern color ColorShort = Crimson ;
extern color ColorLong  = Green ;
extern color ColorLower = Blue ;

//---- buffers


int i;
  
double R1, R2, R3 ;  

double X05 ;
double X06 ;   
double X07 ;
double X08, XRN ; 
double xRet ;
double xRetPct;    
  
string tChartPeriod ; 

string tLabel01, tLabel02, tLabel03, tLabel04, tLabel05, tLabel06, tLabel07  ;   
string tRes0 = "hhRes_0" ;
string tSup0 = "hhSup_0" ;
string tFib1 = "hhFib1_0" ;
string tFib2 = "hhFib2_0" ;

string tResP = "hhRes_P" ;
string tSupP = "hhSup_P" ;

double range , point ;
double DynR; 
double DynS;  
datetime StartTime;
int digits2, digits ;

double Entry, work, goShort, goLong, reward, risk, ratio, Pct, ResP, SupP  ;

bool xAutoCalc = false;
int nHH, nLL; 
string tPIVOT0 ="fgres" ;
string tPIVOT1 ="fgsup" ; 
string tPIVOT2 ="fgslo" ;
string shortName, OBJ001, OBJ002,OBJ003,OBJ004,OBJ005,OBJ006,OBJ007,OBJ008,OBJ009;
string OBJ010, OBJ011, OBJ012,OBJ013,OBJ014,OBJ015,OBJ016,OBJ017,OBJ018,OBJ019;
string OBJ020, OBJ021, OBJ022,OBJ023,OBJ024,OBJ025,OBJ026,OBJ027,OBJ028,OBJ029;

color colorPct ;

//+------------------------------------------------------------------+
   
int init()
  {

  shortName  = MakeUniqueName("srhl ","") + myBars ;
  tChartPeriod =  TimeFrameToString(Period()) ;
  IndicatorShortName(shortName);
  
  tLabel01 = "1Resistance" + tChartPeriod ;
  tLabel02 = "2Support" + tChartPeriod ;
  tLabel03 = "3Short" + tChartPeriod ; 
  tLabel04 = "4Long" + tChartPeriod ;

   tResP = shortName + "Res_P" ;
   tSupP = shortName + "Sup_P" ;

   tRes0 = shortName + "Res_0" ;
   tSup0 = shortName + "Sup_0" ;
   tFib1 = shortName + "Fib1_0" ;
   tFib2 = shortName + "Fib2_0" ;

 tPIVOT0 = shortName + "fgres" ;
 tPIVOT1 = shortName + "fgsup" ; 
 tPIVOT2 = shortName + "fgslo" ;


  OBJ001 = shortName + "001" ;
  OBJ002 = shortName + "002" ;
  OBJ003 = shortName + "003" ;
  OBJ004 = shortName + "004" ;
  OBJ005 = shortName + "005" ;
  OBJ006 = shortName + "006" ;
  OBJ007 = shortName + "007" ;
  OBJ008 = shortName + "008" ;
  OBJ009 = shortName + "009" ;
  OBJ010 = shortName + "010" ;
  OBJ011 = shortName + "0011" ;
  OBJ012 = shortName + "0012" ;
  OBJ013 = shortName + "0013" ;
  OBJ014 = shortName + "0014" ;
  OBJ015 = shortName + "0015" ;
  OBJ016 = shortName + "0016" ;
  OBJ017 = shortName + "0017" ;
  OBJ018 = shortName + "0018" ;
  OBJ019 = shortName + "0019" ;
  OBJ020 = shortName + "0020" ;
  OBJ021 = shortName + "0021" ;
  OBJ022 = shortName + "0022" ;
  OBJ023 = shortName + "0023" ;
  OBJ024 = shortName + "0024" ;  
  
  digits = Digits ;
  point  = Point ;   


   if(digits == 5 || digits == 3) { digits2 = 0 ; point = point * 10 ; } else { digits2 = 0 ; }
  
  if( myUpper == 0 ) { xAutoCalc = true ; }   
      
 work    = ( myUpper  - myLower ) * myWindow  ; 
   
 goShort = myLower  + work   ;
 goLong  = myUpper  - work   ;
 

 reward   = myUpper - goLong ;
 risk     = goLong - myLower ;
 ratio    = reward / risk ;
 range    = ( myUpper  - myLower ) / point ;




   return(0);
  }

//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
   ObjectsDeleteAll( 0, OBJ_FIBO ) ;
   ObjectDelete(tPIVOT0);
   ObjectDelete(tPIVOT1); 
   ObjectDelete(tPIVOT2);      
   ObjectDelete(OBJ001);
   ObjectDelete(OBJ002);
   ObjectDelete(OBJ003);
   ObjectDelete(OBJ004);  
   ObjectDelete(OBJ005); 
   ObjectDelete(OBJ006);
   ObjectDelete(OBJ007);
   ObjectDelete(OBJ008);
   ObjectDelete(OBJ009);
   ObjectDelete(OBJ010);
   ObjectDelete( OBJ021 );
   ObjectDelete(  OBJ020 );   
   ObjectDelete(  OBJ019 );
   ObjectDelete(  OBJ018 );
   ObjectDelete(  OBJ017 );
   ObjectDelete(  OBJ016 );
   ObjectDelete(  OBJ015 );
   ObjectDelete( OBJ011 );
   ObjectDelete(OBJ013);      
   ObjectDelete(OBJ013);           
   ObjectDelete(OBJ014); 
   ObjectDelete(OBJ022);  
   ObjectDelete(OBJ023);           
   ObjectDelete(OBJ024);
   ObjectDelete(tRes0);           
   ObjectDelete(tSup0);
   ObjectDelete(tResP);           
   ObjectDelete(tSupP);
   
       
   return(0);
  }

int start()
{

if( xAutoCalc == true ) DoWork() ;  

if( Show.Labels) DoShowLabels() ;

if( Show.Gauge ) DoShowGauge() ;

if( Show.Proj ) DoShowProj() ; 
 
   return(0); 
} 
//+------------------------------------------------------------------+ 

void DoWork()
{
  
/*   
Reward = Target Point - Entry Point = 1.9869-1.9782 = 87 pips

Risk= Entry Point - Stop Loss = 1.9782 - 1.9747 = 35pips

Risk to Reward Ratio = 87 / 35 = 1:2.5

*/
 
 nHH      =  Highest(NULL,0,MODE_HIGH,myBars,myShift); 
 nLL      =  Lowest(NULL,0,MODE_LOW,myBars,myShift); 
 
 myUpper      = High[nHH]; 
 myLower      = Low[nLL]; 

      
 work     = ( myUpper  - myLower ) * myWindow  ; 
   
 goShort  = myLower  + work   ;
 goLong   = myUpper  - work   ;
 
 reward   = myUpper - goLong ;
 risk     = goLong - myLower ;
 ratio    = reward / risk ;
 range    = (myUpper - myLower)  ; 

 ResP     = myUpper + range ;   
 SupP     = myLower - range ;
  
   if( range != 0) { Pct = 100 * ( Close[0]  - myLower ) / range ; } else {Pct = 0 ;} 

   if(Pct > myPctHi ) { colorPct = myPctHiColor ; } else  
   if(Pct < myPctLo ) { colorPct = myPctLoColor ; } else { colorPct = myPctMidColor ; }


  if (ObjectFind(tPIVOT0) != 0)
      {
          ObjectCreate(tPIVOT0,OBJ_ARROW,0,Time[nHH],myLower);
          ObjectSet(tPIVOT0,OBJPROP_ARROWCODE,myHighMark);
//          ObjectSet(tPIVOT0,OBJPROP_WIDTH,myBoxWidth);  
          ObjectSet(tPIVOT0,OBJPROP_COLOR,ColorUpper);  
      } 
      else
      {
         ObjectMove(tPIVOT0,0,Time[nHH],myLower);
      }

 
  if (ObjectFind(tPIVOT1) != 0)
      {
          ObjectCreate(tPIVOT1,OBJ_ARROW,0,Time[myBars],myLower);
          ObjectSet(tPIVOT1,OBJPROP_ARROWCODE,myBackMark);
//          ObjectSet(tPIVOT1,OBJPROP_WIDTH,myBoxWidth);  
          ObjectSet(tPIVOT1,OBJPROP_COLOR,ColorHeading);  
      } 
      else
      {
         ObjectMove(tPIVOT1,0,Time[myBars],myLower);
      }

  if (ObjectFind(tPIVOT2) != 0)
      {
          ObjectCreate(tPIVOT2,OBJ_ARROW,0,Time[nLL],myLower);
          ObjectSet(tPIVOT2,OBJPROP_ARROWCODE,myLowMark);
//          ObjectSet(tPIVOT2,OBJPROP_WIDTH,myBoxWidth);  
          ObjectSet(tPIVOT2,OBJPROP_COLOR,ColorLower);  
      } 
      else
      {
         ObjectMove(tPIVOT2,0,Time[nLL],myLower);
      }


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

 
void DoShowGauge()
{

string StrX05 = "+Fib618" ; 
string StrX06 = "+Fib382" ; 
string StrX07 = "-Fib382" ; 
string StrX08 = "-Fib618" ;  
string StrXRN = "Range" ;  
  
        
	
	int Precision, dig;	

   dig = Digits ;

 
int sPeriod= Period();
     	
//---- Set Pivots labels

   int WindowToUse;
   int Corner_line, Xdist_line;
   int Corner_text, Corner_vHHLLFP, Xdist_text, Xdist_vHHLLFP;
   int Ydist_line5;
   int Corner_pivots, Xdist_pivots, Ydist_pivots;
   int Ydist_R3, Ydist_R2, Ydist_R1, Ydist_PV, Ydist_S1, Ydist_S2, Ydist_S3, Ydist_X05, Ydist_X06, Ydist_X07, Ydist_X08, Ydist_X09,Ydist_XRN ;
  
   int YdistInc ;
    WindowToUse =  0;
    Corner_line = 1;
    Corner_text = 1; Corner_vHHLLFP = 1;
    Xdist_line = 21; Xdist_text = 93; Xdist_vHHLLFP = 23;
    Corner_pivots = 1; Xdist_pivots = 21; 
    Ydist_pivots = myChartY;  
    Ydist_line5 = Ydist_pivots + 11; YdistInc = 15 ;
    Ydist_R3 = Ydist_pivots + 25; 
    Ydist_R2 = Ydist_R3 + YdistInc; 
    Ydist_R1 = Ydist_R3 + YdistInc*2; 
    Ydist_PV = Ydist_R3 + YdistInc*3; 
    Ydist_X05 = Ydist_R3 + YdistInc*4;
    Ydist_X06 = Ydist_R3 + YdistInc*5;    
    Ydist_X07 = Ydist_R3 + YdistInc*6;
    Ydist_X08 = Ydist_R3 + YdistInc*7;    
    Ydist_X09 = Ydist_R3 + YdistInc*8;    

 


      
 
   
      
 
} 



//+------------------------------------------------------------------+ 

void DoShowProj()
{
  
	if(ObjectFind(tResP) == -1)
		ObjectCreate(tResP,OBJ_FIBO,0,StartTime,ResP,StartTime,ResP);
	else
	{
		ObjectSet(tResP,OBJPROP_TIME2, StartTime);
		ObjectSet(tResP,OBJPROP_TIME1, StartTime);
		ObjectSet(tResP,OBJPROP_PRICE1,ResP);
		ObjectSet(tResP,OBJPROP_PRICE2,ResP);
	}
   ObjectSet(tResP,OBJPROP_LEVELCOLOR,myProjColor);
   ObjectSet(tResP,OBJPROP_FIBOLEVELS,1);
   ObjectSet(tResP,OBJPROP_FIRSTLEVEL+0,0.0);	
   ObjectSetFiboDescription(tResP,0, DoubleToStr(ResP,digits)+ " Projection  "); 
   ObjectSet(tResP,OBJPROP_RAY,true);
   ObjectSet(tResP,OBJPROP_BACK,true);

	if(ObjectFind(tSupP) == -1)
		ObjectCreate(tSupP,OBJ_FIBO,0,StartTime,ResP,StartTime,SupP);
	else
	{
		ObjectSet(tSupP,OBJPROP_TIME2, StartTime);
		ObjectSet(tSupP,OBJPROP_TIME1, StartTime);
		ObjectSet(tSupP,OBJPROP_PRICE1,SupP);
		ObjectSet(tSupP,OBJPROP_PRICE2,SupP);
	}
   ObjectSet(tSupP,OBJPROP_LEVELCOLOR,myProjColor);
   ObjectSet(tSupP,OBJPROP_FIBOLEVELS,1);
   ObjectSet(tSupP,OBJPROP_FIRSTLEVEL+0,0.0);	
   ObjectSetFiboDescription(tSupP,0, DoubleToStr(SupP,digits)+ " Projection  "); 
   ObjectSet(tSupP,OBJPROP_RAY,true);
   ObjectSet(tSupP,OBJPROP_BACK,true);

} 

//+------------------------------------------------------------------+ 

void DoShowLabels()
{
   range = myUpper  - myLower  ;
	if(ObjectFind(tRes0) == -1)
		ObjectCreate(tRes0,OBJ_FIBO,0,StartTime,myUpper+range,StartTime,myUpper);
	else
	{
		ObjectSet(tRes0,OBJPROP_TIME2, StartTime);
		ObjectSet(tRes0,OBJPROP_TIME1, StartTime);
		ObjectSet(tRes0,OBJPROP_PRICE1,myUpper+range);
		ObjectSet(tRes0,OBJPROP_PRICE2,myUpper);
	}
   ObjectSet(tRes0,OBJPROP_LEVELCOLOR,ColorUpper);
   ObjectSet(tRes0,OBJPROP_FIBOLEVELS,1);
   ObjectSet(tRes0,OBJPROP_FIRSTLEVEL+0,0.0);	
   ObjectSetFiboDescription(tRes0,0, DoubleToStr(myUpper,digits)+ " Resistance  "); 
   ObjectSet(tRes0,OBJPROP_RAY,true);
   ObjectSet(tRes0,OBJPROP_BACK,true);


		if(ObjectFind(tSup0) == -1)
			ObjectCreate(tSup0,OBJ_FIBO,0,StartTime,myLower-range,StartTime+PERIOD_H4*60,myLower);
		else
		{
			ObjectSet(tSup0,OBJPROP_TIME2, StartTime);
			ObjectSet(tSup0,OBJPROP_TIME1, StartTime);
			ObjectSet(tSup0,OBJPROP_PRICE1,myUpper);
			ObjectSet(tSup0,OBJPROP_PRICE2,myLower);
		}
   	ObjectSet(tSup0,OBJPROP_LEVELCOLOR,ColorLower); 
   	ObjectSet(tSup0,OBJPROP_FIBOLEVELS,1);
   
   	ObjectSet(tSup0,OBJPROP_FIRSTLEVEL+0,0.000);	
   	ObjectSetFiboDescription(tSup0,0,DoubleToStr(myLower,digits)+ " Support  "); 

   	ObjectSet(tSup0,OBJPROP_RAY,true);
   	ObjectSet(tSup0,OBJPROP_BACK,true);

   
		if(ObjectFind(tFib1) == -1)
			ObjectCreate(tFib1,OBJ_FIBO,0,StartTime,myUpper,StartTime+PERIOD_H4*60,myLower);
		else
		{
			ObjectSet(tFib1,OBJPROP_TIME2, StartTime);
			ObjectSet(tFib1,OBJPROP_TIME1, StartTime);
			ObjectSet(tFib1,OBJPROP_PRICE1,myUpper);
			ObjectSet(tFib1,OBJPROP_PRICE2,myLower);
		}
   	ObjectSet(tFib1,OBJPROP_LEVELCOLOR,ColorShort); 
   	ObjectSet(tFib1,OBJPROP_FIBOLEVELS,1);
   
   	ObjectSet(tFib1,OBJPROP_FIRSTLEVEL+0,myWindow);	
   	ObjectSetFiboDescription(tFib1,0,DoubleToStr(goShort,digits)+ " go Short  "); 

   	ObjectSet(tFib1,OBJPROP_RAY,true);
   	ObjectSet(tFib1,OBJPROP_BACK,true);
  
   
		if(ObjectFind(tFib2) == -1)
			ObjectCreate(tFib2,OBJ_FIBO,0,StartTime,myUpper,StartTime+PERIOD_H4*60,myLower);
		else
		{
			ObjectSet(tFib2,OBJPROP_TIME2, StartTime);
			ObjectSet(tFib2,OBJPROP_TIME1, StartTime);
			ObjectSet(tFib2,OBJPROP_PRICE1,myUpper);
			ObjectSet(tFib2,OBJPROP_PRICE2,myLower);
		}
   	ObjectSet(tFib2,OBJPROP_LEVELCOLOR,ColorLong); 
   	ObjectSet(tFib2,OBJPROP_FIBOLEVELS,2);
   
   	ObjectSet(tFib2,OBJPROP_FIRSTLEVEL+0,1-myWindow);	
   	ObjectSetFiboDescription(tFib2,0,DoubleToStr(goLong,digits)+ " go Long  "); 

   	ObjectSet(tFib2,OBJPROP_RAY,true);
   	ObjectSet(tFib2,OBJPROP_BACK,true);



      
}

//+------------------------------------------------------------------+ 

string TimeFrameToString(int tf)
{
   string tfs;
   switch(tf) {
      case PERIOD_M1:  tfs="M1"  ; break;
      case PERIOD_M5:  tfs="M5"  ; break;
      case PERIOD_M15: tfs="M15" ; break;
      case PERIOD_M30: tfs="M30" ; break;
      case PERIOD_H1:  tfs="H1"  ; break;
      case PERIOD_H4:  tfs="H4"  ; break;
      case PERIOD_D1:  tfs="D1"  ; break;
      case PERIOD_W1:  tfs="W1"  ; break;
      case PERIOD_MN1: tfs="MN";
   }
   return(tfs);
}
//+------------------------------------------------------------------+
 
string MakeUniqueName(string first, string rest)
{
   string result = first+(MathRand()%1001)+rest;

   while (WindowFind(result)> 0)
          result = first+(MathRand()%1001)+rest;
   return(result);
}
//+------------------------------------------------------------------+ 

/*
Comment(
"myUpper = ", DoubleToStr( myUpper, Digits), "\n",
"myLower = ", DoubleToStr( myLower, Digits), "\n",
"reward = ", DoubleToStr( reward, Digits), "\n",
"risk = ", DoubleToStr( risk, Digits), "\n",
"ratio = ", DoubleToStr( ratio, Digits), "\n",

"") ;

   ObjectCreate(OBJ020, OBJ_LABEL, WindowToUse, 0, 0);
   ObjectSetText(OBJ020,"WINDOW",9, "Verdana", ColorHeading );
   ObjectSet(OBJ020, OBJPROP_CORNER, Corner_text);
   ObjectSet(OBJ020, OBJPROP_XDISTANCE, Xdist_text);
   ObjectSet(OBJ020, OBJPROP_YDISTANCE, Ydist_X08);
   
   ObjectCreate(OBJ021, OBJ_LABEL, WindowToUse, 0, 0);
   ObjectSetText(OBJ021," "+DoubleToStr(myWindow,2),9, "Verdana", ColorHeading);
   ObjectSet(OBJ021, OBJPROP_CORNER, Corner_vHHLLFP);
   ObjectSet(OBJ021, OBJPROP_XDISTANCE, Xdist_vHHLLFP);
   ObjectSet(OBJ021, OBJPROP_YDISTANCE, Ydist_X08);

*/

Comments

Markdown supported. Formatting help

Markdown Formatting Guide

Element Markdown Syntax
Heading # H1
## H2
### H3
Bold **bold text**
Italic *italicized text*
Link [title](https://www.example.com)
Image ![alt text](image.jpg)
Code `code`
Code Block ```
code block
```
Quote > blockquote
Unordered List - Item 1
- Item 2
Ordered List 1. First item
2. Second item
Horizontal Rule ---