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

shi_mod.mq5

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

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

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

О программе

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

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

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

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

НастройкаОписание
BarsForFract 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;
string fileNAME;

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");
   ObjectDelete("MyBarLine");
}

int start()
  {
      // код доступен только после оплаты
   }
   double iPP,Lab1Val,Lab2Val,Lab3Val;
   int MyBar,lastBarTime,h1,ii;
   string v1,fileFrame;

      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++;
      }

   ArrayInitialize(UpLabel,0.0);
   if (Bars<MyBar+303) {Alert("Too little history");return(-1);}
   int    counted_bars=IndicatorCounted();

	if (BarsForFract>0) 
		BFF=BarsForFract; 
	else
	{
		switch (Period())
		{
			case 1: BFF=12; break;
			case 5: BFF=48; break;
			case 15: BFF=24; break;
			case 30: BFF=24; break;
			case 60: BFF=12; break;
			case 240: BFF=15; break;
			case 1440: BFF=10; break;
			case 10080: BFF=6; break;
			default: DelObj(); return(-1); break;
		}
	}
	CurrentBar=2+MyBar; //??????? ? ???????? ????, ????? ??????? "??????????
	B1=-1; B2=-1; UpDown=0; flag=0;

	while(((B1==-1) || (B2==-1)) && (CurrentBar<(AB+MyBar)))
	{

		if((UpDown<1) && (CurrentBar==Lowest(Symbol(),Period(),MODE_LOW,BFF*2+1,CurrentBar-BFF))) 

		{
		  if(UpDown==0) { UpDown=-1; B1=CurrentBar; iB1=CurrentBar; P1=Low[B1];}
			else { B2=CurrentBar; iB2=CurrentBar; P2=Low[B2];}
		}
		if((UpDown>-1) && (CurrentBar==Highest(Symbol(),Period(),MODE_HIGH,BFF*2+1,CurrentBar-BFF))) 

		{
			if(UpDown==0) { UpDown=1; B1=CurrentBar; iB1=CurrentBar; P1=High[B1];}
			else { B2=CurrentBar; iB2=CurrentBar; P2=High[B2];}
		}
		CurrentBar++;
	}
	if((B1==-1) || (B2==-1)) {DelObj(); return(-1);} // ?????? ?? ????? ???

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

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

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

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

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

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

Стоимость полного кода
514,10₽ ≈ $6.28