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? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.