← К каталогу
Исходный код · ID 4590

TRO_SupResHHLL

tro_supreshhll.mq5
Вы автор или правообладатель?

Сообщите нам, если считаете, что материал размещён без разрешения.

Краткий обзор

О программе

TRO_SupResHHLL — пользовательский индикатор для MetaTrader 5, отображающий уровни поддержки и сопротивления, рассчитанные по экстремумам за заданное число баров. Индикатор работает в окне графика и не создаёт отдельного подокна.

Верхняя и нижняя границы диапазона определяются по максимальной и минимальной цене за указанное количество баров с учётом сдвига. На основе этих границ и коэффициента окна формируются дополнительные ценовые ориентиры, которые выводятся на график в виде горизонтальных линий и меток. Также отображается информационная панель с числовыми значениями риска, вознаграждения, их отношения, диапазона и текущего положения цены внутри диапазона.

Индикатор поддерживает настройку цветов и кодов стрелок для визуальных маркеров, а также управление отображением меток, панели и проекционных уровней. Все вычисления выполняются на основе данных текущего символа и таймфрейма.

Настройки программы

НастройкаОписание
myUpper Значение верхней границы диапазона. Если равно нулю, граница рассчитывается автоматически.
myLower Значение нижней границы диапазона. Если равно нулю, граница рассчитывается автоматически.
myWindow Коэффициент, задающий положение дополнительных уровней внутри диапазона.
myBars Количество баров, по которым определяются максимум и минимум для расчёта уровней.
myShift Сдвиг в барах от текущего бара при поиске экстремумов.
myChartY Вертикальное смещение информационной панели на графике.
Horizontal Переключатель горизонтального отображения линий.
myPctHi Порог в процентах, выше которого положение цены в диапазоне считается высоким.
myPctLo Порог в процентах, ниже которого положение цены в диапазоне считается низким.
myPctHiColor Цвет индикации процента при положении цены выше верхнего порога.
myPctMidColor Цвет индикации процента при положении цены между порогами.
myPctLoColor Цвет индикации процента при положении цены ниже нижнего порога.
myProjColor Цвет проекционных уровней, отображаемых на графике.
myHighMark Код стрелки для маркера верхнего уровня.
myLowMark Код стрелки для маркера нижнего уровня.
myBackMark Код стрелки для фонового маркера на графике.
ColorHeading Цвет заголовков и текстовых элементов информационной панели.
ColorUpper Цвет верхней границы диапазона и связанных с ней меток.
ColorShort Цвет элементов, относящихся к уровню для коротких позиций.
ColorLong Цвет элементов, относящихся к уровню для длинных позиций.
ColorLower Цвет нижней границы диапазона и связанных с ней меток.
Получить полный код

Поиск по коду файла

#property indicator_chart_window

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       = 21 ;
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 ;

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()
  {
      // код доступен только после оплаты
   }

void ObDeleteObjectsByPrefix(string Prefix)
  {
   int L = StringLen(Prefix);
   int i = 0; 
   while(i < ObjectsTotal())
     {
       string ObjName = ObjectName(i);
       if(StringSubstr(ObjName, 0, L) != Prefix) 
         { 
           i++; 
           continue;
         }
       ObjectDelete(ObjName);
     }
  }

int deinit()
{
   ObDeleteObjectsByPrefix("sr");   
/*  
   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()
{
      // код доступен только после оплаты
   } 

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_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_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_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();

   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;    

   ObjectCreate(OBJ001, OBJ_LABEL, WindowToUse, 0, 0);
   ObjectSetText(OBJ001, tChartPeriod + " SupResHHLL("+myBars+")."+myShift,9, "Verdana", ColorHeading);
   ObjectSet(OBJ001, OBJPROP_CORNER, Corner_pivots);
   ObjectSet(OBJ001, OBJPROP_XDISTANCE, Xdist_pivots);
   ObjectSet(OBJ001, OBJPROP_YDISTANCE, Ydist_pivots);

   ObjectCreate(OBJ002, OBJ_LABEL, WindowToUse, 0, 0);
   ObjectSetText(OBJ002,"-----------------------------",7, "Verdana", ColorHeading);
   ObjectSet(OBJ002, OBJPROP_CORNER, Corner_line);
   ObjectSet(OBJ002, OBJPROP_XDISTANCE, Xdist_line);
   ObjectSet(OBJ002, OBJPROP_YDISTANCE, Ydist_line5);

   ObjectCreate(OBJ003, OBJ_LABEL, WindowToUse, 0, 0);
   ObjectSetText(OBJ003,"Resistance",9, "Verdana", ColorUpper);
   ObjectSet(OBJ003, OBJPROP_CORNER, Corner_text);
   ObjectSet(OBJ003, OBJPROP_XDISTANCE, Xdist_text);
   ObjectSet(OBJ003, OBJPROP_YDISTANCE, Ydist_R3);

   ObjectCreate(OBJ004, OBJ_LABEL, WindowToUse, 0, 0);
   ObjectSetText(OBJ004," "+DoubleToStr(myUpper,dig),9, "Verdana", ColorUpper);
   ObjectSet(OBJ004, OBJPROP_CORNER, Corner_vHHLLFP);
   ObjectSet(OBJ004, OBJPROP_XDISTANCE, Xdist_vHHLLFP);
   ObjectSet(OBJ004, OBJPROP_YDISTANCE, Ydist_R3);

   ObjectCreate(OBJ005, OBJ_LABEL, WindowToUse, 0, 0);
   ObjectSetText(OBJ005,"Go Short",9, "Verdana", 

Показано первые 50% кода (символов: 15838)

Открыть по тарифу

Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.

Разовая покупка файла

На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.

Чтобы оформить заказ, введите email и перейдите к оплате.

Стоимость полного кода
1 583,80₽ ≈ $19.63