shi_mod_vline.mq5
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «shi_mod_vline.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
SHI_Mod_vLine — пользовательский индикатор для платформы MetaTrader 4 (MQL4). Индикатор отображает на графике аналитические линии поддержки и сопротивления, создавая объекты трендовых линий и вертикальную линию на текущем баре для визуальной оценки динамики цены. Он использует массивы ценовых данных и функции поиска экстремумов для определения ключевых уровней.
Индикатор работает с таймфреймами M1, M5, M15, M30, H1, H4 и D1. На еженедельных и месячных графиках его работа блокируется с соответствующим предупреждением. Результатом является отрисовка нескольких трендовых линий и вертикальной линии, отражающих выявленные уровни. Все объекты создаются средствами графического API MetaTrader 4 и удаляются при перерисовке индикатора.
Настройки программы
| Настройка | Описание |
|---|---|
| BarsForFract | Бары для фрактала — Количество баров для определения фрактальных уровней. При значении 0 используются стандартные значения, зависящие от таймфрейма графика. |
Поиск по коду файла
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Red
double ExtMapBuffer1[];
double UpLabel[];
extern int BarsForFract=0;
int CurrentBar=0;
double Step=0;
int B1=-1,B2=-1,iB1=0,iB2=0,flag=0;
int UpDown=0;
double P1=0,P2=0,PP=0,P1f=0,PPf=0;
int i=0,AB=300,BFF=0;
int ishift=0;
double iprice=0;
datetime T1,T2,Tf,myTime;
string fileNAME;
int myYear,myMonth,myDay,myHour,myMinute;
int init()
{
// код доступен только после оплаты
}
int deinit()
{
FileDelete(fileNAME);
return(0);
}
void DelObj()
{
ObjectDelete("TL1"); ObjectDelete("TL2"); ObjectDelete("MIDL");
ObjectDelete("Lab1");ObjectDelete("Lab2");ObjectDelete("Lab3");
ObjectDelete("TL1f");ObjectDelete("TL2f");
}
int start()
{
// код доступен только после оплаты
}
double iPP,Lab1Val,Lab2Val,Lab3Val;
int MyBar,lastBarTime,h1,ii;
string v1,fileFrame;
ObjectCreate("MyBarLine",OBJ_VLINE,0,Time[1],High[1]);
ObjectSet("MyBarLine",OBJPROP_COLOR,MediumOrchid);
ObjectSet("MyBarLine",OBJPROP_WIDTH,1);
ObjectSet("MyBarLine",OBJPROP_STYLE,STYLE_DOT);
/* // ????? ?????? MetaClick ?? ????????????
switch (Period()) // ???????????? ????? ????? ???????? ?????
{
case PERIOD_M1: fileFrame=",M1";break;
case PERIOD_M5: fileFrame=",M5";break;
case PERIOD_M15: fileFrame=",M15";break;
case PERIOD_M30: fileFrame=",M30";break;
case PERIOD_H1: fileFrame=",H1";break;
case PERIOD_H4: fileFrame=",H4";break;
case PERIOD_D1: fileFrame=",Daily";break;
case PERIOD_W1: fileFrame=",Weekly";break;
case PERIOD_MN1: fileFrame=",Monthly";break;
}
fileNAME=Symbol()+fileFrame+".csv";
h1=FileOpen(Symbol()+fileFrame+".csv",FILE_CSV,";");
v1 = FileReadString(h1);
FileClose(h1);
Comment(v1);
lastBarTime=StrToTime(v1);
i=0;
while (i<=Bars-1 )
{if (lastBarTime==Time[i])
{ MyBar=i;break;}
i++;
}
*/
myTime=ObjectGet("MyBarLine",OBJPROP_TIME1);
if(myTime>Time[0] || myTime< Time[Bars-1])
{ObjectDelete("MyBarLine"); Alert("SHI_Mod_vLine: TimeFrames are not correct"); return(0); }
myYear=TimeYear(myTime); myMonth=TimeMonth(myTime);myDay=TimeDay(myTime);
myHour=TimeHour(myTime); myMinute=TimeMinute(myTime);
if (Period()==PERIOD_MN1 || Period()==PERIOD_W1)
{Alert("SHI_Mod_vLine can''t work with Weekly and Monthly charts");
ObjectDelete("MyBarLine"); return(0);}
switch (Period()) //
{
case PERIOD_M1: break;
case PERIOD_M5: myMinute=MathFloor(myMinute/5)*5; break;
case PERIOD_M15: myMinute=MathFloor(myMinute/15)*15; break;
case PERIOD_M30: myMinute=MathFloor(myMinute/30)*30; break;
case PERIOD_H1: myMinute=0; break;
case PERIOD_H4: myHour=MathFloor(myHour/4)*4; myMinute=0; break;
case PERIOD_D1: myHour=0; myMinute=0; break;
case PERIOD_W1: /*i=0; while(i<=Bars-1)
{
if (TimeYear(Time[i])==myYear && TimeMonth(Time[i])==myMonth &&
myDay-TimeDay(Time[i])<=6 && myDay-TimeDay(Time[i])>=0)
myDay=TimeDay(Time[i]); break;
i++; //???????????!!
}*/
break;
case PERIOD_MN1: break;
}
ObjectDelete("MyBarLine");
myTime=StrToTime(myYear + "." + myMonth + "." + myDay + " " + myHour + ":" + myMinute);
ObjectCreate("MyBarLine",OBJ_VLINE,0,myTime,High[0]);
ObjectSet("MyBarLine",OBJPROP_COLOR,MediumOrchid);
ObjectSet("MyBarLine",OBJPROP_WIDTH,1);
ObjectSet("MyBarLine",OBJPROP_STYLE,STYLE_DOT);
/*
Alert(myYear + "." + myMonth + "." + myDay + " " + myHour + ":" + myMinute);
myYear=TimeYear(myTime); myMonth=TimeMonth(myTime);myDay=TimeDay(myTime);
myHour=TimeHour(myTime); myMinute=TimeMinute(myTime);
Alert(myYear + "." + myMonth + "." + myDay + " " + myHour + ":" + myMinute);
*/
i=0;
while(Time[i]!=myTime) {i++;}
MyBar=i;
ArrayInitialize(Показано первые 50% кода (символов: 6964)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.