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

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 и перейдите к оплате.

Стоимость полного кода
696,40₽ ≈ $8.51