Перейти к содержанию
Форекс Форум трейдеров Академии «MasterForex-V»

Индикатор ФЗР


Рекомендуемые сообщения

Может где то уже есть, но сделал свой. http://depositfiles.com/files/2431243

Основные принципы заложенные в индикатор (для разворота вниз):

- Фрактал DOWN ниже предыдущего (-пробитие уровня);

- Фрактал UP ниже предыдущего (-коррекция 2 волны но не 100%);

- Пробитие уровня последнего DOWN-фрактала (- подтверждение)»

Не знаю насколько верна собственная интерпретация идей Мастера, но Вы, если что поправите.

Полагаю:

- обязательным использование только с учетом многомерности рынка т.е. на разных ТФ.

- использованием в сочетании Фибоначчи и с Пивотом.

- др. элементами ТС.

Плюсы: просто и наглядно дают вход в 3 волну Эллиота.

Минусы: много ложных сигналов во флэте.

Буду дорабатывать, чтобы стрелки рисовал, а также с целью получить эксперта


//+-----------------------------------------------------------------+
//|													  FZR.mq4	|
//|									   Copyright c FOREX&STOX	|
//|										roman_kr_2006@mail.ru	|
//|12.2007   Версия 1.0											 |
//+-----------------------------------------------------------------+
//| Индикатор Фрактально-зигзагового разворота.					 |
//| Написан по идеям из книги3 Masterforex-V.					   |
//| Правильность интерпретации идеи не гарантирую.				  |
//|																 |
//|																 |
//+-----------------------------------------------------------------+
#property copyright "FOREX&STOX"
#property link "roman_kr_2006@mail.ru "

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_color2 Green
//---- ВХОДНЫЕ ПАРАМЕТРЫ----//
int fPeriod=1;
int fShift=0;
extern int ДлиннаЛинии=8;
extern color ЦветВеерх=Green;
extern color ЦветВниз=Red;
extern int СтильЛиний=STYLE_SOLID;
extern int ТолщинаЛиний=2;
extern string M="FZR";
//---- БУФЕРА ----ВЫХОДНые ----//
double ExtMapBuffer1[];
double ExtMapBuffer2[];
//----
int ExtCountedBars=0;
int	  mMonth;
int	  mYear;
int	  mDay ;
datetime mDatBegin; 
//+------------------------------------------------------------------+
//|						 ИНИЦИАЛИЗАЦИЯ								 |
//+------------------------------------------------------------------+
int init()
{
int draw_begin;
string short_name;
//---- drawing settings
SetIndexStyle(0,DRAW_LINE);
SetIndexShift(0,fShift);
SetIndexStyle(1,DRAW_LINE);
SetIndexShift(1,fShift);
IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS));
if(fPeriod<2) fPeriod=13;
draw_begin=fPeriod-1;
//---- indicator short name
short_name="FZR("; draw_begin=0;
IndicatorShortName(M); 
SetIndexDrawBegin(0,draw_begin);
//---- indicator buffers mapping
SetIndexBuffer(0,ExtMapBuffer1);
SetIndexBuffer(1,ExtMapBuffer2);
//---- initialization done
return(0);
}
//+------------------------------------------------------------------+
//|						  ПОДГОТОВОЧКА							|
//+------------------------------------------------------------------+
int start()
{
if(Bars<=fPeriod) return(0);
ExtCountedBars=IndicatorCounted();
//---- check for possible errors
if (ExtCountedBars<0) return(-1);
//---- last counted bar will be recounted
if (ExtCountedBars>0) ExtCountedBars--;

//+------------------------------------------------------------------+
//|						   ГЛАВНЫЙ МОДУЛЬ						 |
//+------------------------------------------------------------------+

double FractalUPn;	 //ПОСЛЕДНИЙ UP ФРАКТАЛ
double POSFractalUPn;  //его позиция с конца
double FractalUPp;	 //ПРЕДПОСЛЕДНИЙ UP ФРАКТАЛ
double POSFractalUPp;  //его позиция с конца

double FractalDn;	  //ПОСЛЕДНИЙ DOWN ФРАКТАЛ
double POSFractalDn;   //его позиция с конца
double FractalDp;	  //ПРЕДПОСЛЕДНИЙ DOWN ФРАКТАЛ
double POSFractalDp;   //его позиция с конца

int Cond1,Cond2,Cond3,ЛинияВверх, ЛинияВниз;
string d;
int i,pos=Bars-ExtCountedBars-1,f;
//---- initial accumulation
if(pos<fPeriod) pos=fPeriod;
//---- main calculation loop
while(pos>=0)  //ВОТ ВОТ, ЗДЕСЬ ВСЁ КРУТИТСЯ
{f=0;
		 // UP & nbsp;ФРАКТАЛЫ___________________________________________________________________
_____________________________
		   if (iFractals(NULL,0,MODE_UPPER, pos)!=0)		//находим последний UP фрактал,
		   { 
		   FractalUPn=iFractals(NULL,0,MODE_UPPER, pos);	// его значение
			POSFractalUPn=pos;							  //и позицию с конца
		   } 
				i=10; //ну уж на дести то барах ранее должен появиться предыдущий фрактал
				while(i>0)
				{//=======
				  if (iFractals(NULL,0,MODE_UPPER, POSFractalUPn+i)!=0)		 //находим предпоследний UP фрактал,
				   { 
					 FractalUPp=iFractals(NULL,0,MODE_UPPER, POSFractalUPn+i);	// его значение
					 POSFractalUPp=POSFractalUPn+i;							  //и позицию с конца
				   } 
				  i--;
				}//=======
		 // DOWN ФРАКТАЛЫ________________________________________________________________________
_______________________	
		   if (iFractals(NULL,0,MODE_LOWER, pos)!=0)		//находим последний DOWN фрактал,
		   { 
		   FractalDn=iFractals(NULL,0,MODE_LOWER, pos);	// его значение
			POSFractalDn=pos;							  //и позицию с конца
		   } 
		 /**/   i=10; //ну уж на дести то барах ранее должен появиться предыдущий фрактал
		 /**/   while(i>0)
		 /**/   {//=======
		 /**/	 if (iFractals(NULL,0,MODE_LOWER, POSFractalDn+i)!=0)		 //находим предпоследний DOWN фрактал,
		 /**/	  { 
		 /**/		FractalDp=iFractals(NULL,0,MODE_LOWER, POSFractalDn+i);	// его значение
		 /**/		POSFractalDp=POSFractalDn+i;							  //и позицию с конца
		 /**/	  } 
		 /**/   i--;
		 /**/   }//=======				
		 // ЗАКОНЧИЛИ С ФРАКТАЛАМИ______________________________________________________________________
________________  
 //-- SELL SELL SELL --
  if(FractalUPp>FractalUPn){Cond1=-1;}//верхний фрактал меньше предыдущего(это коррекционное движение)
  if(FractalDp>FractalDn){Cond2=-1;}// нижний фрактал меньше предыдущего		
  if(POSFractalDn<POSFractalUPp && POSFractalDn>POSFractalUPn){Cond3=-1;}// последний нижний фрактал располагается между двумя верхними		
   if (Cond1==-1 && Cond2==-1 && Cond3==-1 && ЛинияВниз<0)//все 3 условия вместе собираем		
		 { 
		  //ExtMapBuffer1[pos]=FractalDn;
		  //Comment("ГОТОВИМСЯ ПРОДАВАТЬ!");  
		  ЛинияВниз=7;	 //- для того, чтобы несколько раз одно и тоже не рисовал
		  if (pos-ДлиннаЛинии<0){f=ДлиннаЛинии-pos;}  //- чтобы на правом краю хорошо отображался
		  //ну РИСУЕМ
		  ObjectCreate ("FZR "+TimeToStr(iTime(NULL,0, pos)), OBJ_TREND,0,iTime(NULL,0, pos+POSFractalDn-POSFractalUPn),FractalDn,iTime(NULL,0, pos-ДлиннаЛинии+f),FractalDn); 
		  
		  if (pos>10){ObjectSet ("FZR "+TimeToStr(iTime(NULL,0,pos)),OBJPROP_RAY, false);}//- чтобы на правом краю отображался как луч
		  ObjectSet ("FZR "+TimeToStr(iTime(NULL,0,pos)),OBJPROP_COLOR, ЦветВниз); 
		  ObjectSet ("FZR "+TimeToStr(iTime(NULL,0,pos)),OBJPROP_STYLE, СтильЛиний); 
		  ObjectSet ("FZR "+TimeToStr(iTime(NULL,0,pos)),OBJPROP_WIDTH, ТолщинаЛиний); 
		 }  // ОТОБРАЖАЕМ НА
 //-- BUY BUY BUY --
  if(FractalUPp<FractalUPn){Cond1=1;}//
  if(FractalDp<FractalDn){Cond2=1;}//		 
  if(POSFractalDp>POSFractalUPn && POSFractalUPn>POSFractalDn){Cond3=1;}//		 
   if (Cond1==1 && Cond2==1 && Cond3==1 && ЛинияВверх<0)		
		{  
		 //ExtMapBuffer2[pos]=FractalUPn; 
		// Comment("ГОТОВИСМСЯ ПОКУПАТЬ!");
		  ЛинияВверх=7; 
		  if (pos-ДлиннаЛинии<0){f=ДлиннаЛинии-pos;}
		   //ну РИСУЕМ
		  ObjectCreate ("FZR "+TimeToStr(iTime(NULL,0, pos)), OBJ_TREND,0,iTime(NULL,0, pos+POSFractalUPn-POSFractalDn),FractalUPn,iTime(NULL,0, pos-ДлиннаЛинии+f),FractalUPn); 
		  
		  if (pos>10){ ObjectSet ("FZR "+TimeToStr(iTime(NULL,0,pos)),OBJPROP_RAY, false);}
		  ObjectSet ("FZR "+TimeToStr(iTime(NULL,0,pos)),OBJPROP_COLOR, ЦветВеерх); 
		  ObjectSet ("FZR "+TimeToStr(iTime(NULL,0,pos)),OBJPROP_STYLE, СтильЛиний); 
		  ObjectSet ("FZR "+TimeToStr(iTime(NULL,0,pos)),OBJPROP_WIDTH, ТолщинаЛиний); 
		 }  // ОТОБРАЖАЕМ НА


 Cond1=0;Cond2=0;Cond3=0;
 ЛинияВверх--; ЛинияВниз--;
 pos--;
}

return(0);
}

//+-----------------------------+

post-13515-1195555725_thumb.jpg

post-13515-1195555734_thumb.jpg

post-13515-1195555747_thumb.jpg

Ссылка на комментарий
Поделиться на другие сайты

  • 4 недели спустя...
Мастер увязывает ФЗР с волновым анализом - тут вот проблемка и еще неплохо было бы связывать попробовать фракталы не со встроенным фрактализером а с зигзагом - он еще ко времени немного привязывается - это тоже важно для ФЗР.
Ссылка на комментарий
Поделиться на другие сайты

  • 3 недели спустя...

Попробовал скомпилировать

на фунте чтот много черточек различных получается

по евре все нормально вроде.

 

 

FOREX&STOX

а вот со стрелками входа в сделку

было б просто замечтательно.

Если доделаете,воложите на эту ветку,хочется всеж понять смысл его работы.

Ссылка на комментарий
Поделиться на другие сайты

  • 3 месяца спустя...

Может где то уже есть, но сделал свой. http://depositfiles.com/files/2431243

Основные принципы заложенные в индикатор (для разворота вниз):

- Фрактал DOWN ниже предыдущего (-пробитие уровня);

- Фрактал UP ниже предыдущего (-коррекция 2 волны но не 100%);

- Пробитие уровня последнего DOWN-фрактала (- подтверждение)»

Не знаю насколько верна собственная интерпретация идей Мастера, но Вы, если что поправите.

Полагаю:

- обязательным использование только с учетом многомерности рынка т.е. на разных ТФ.

- использованием в сочетании Фибоначчи и с Пивотом.

- др. элементами ТС.

Плюсы: просто и наглядно дают вход в 3 волну Эллиота.

Минусы: много ложных сигналов во флэте.

Буду дорабатывать, чтобы стрелки рисовал, а также с целью получить эксперта


//+-----------------------------------------------------------------+
//|													  FZR.mq4	|
//|									   Copyright c FOREX&STOX	|
//|										roman_kr_2006@mail.ru	|
//|12.2007   Версия 1.0											 |
//+-----------------------------------------------------------------+
//| Индикатор Фрактально-зигзагового разворота.					 |
//| Написан по идеям из книги3 Masterforex-V.					   |
//| Правильность интерпретации идеи не гарантирую.				  |
//|																 |
//|																 |
//+-----------------------------------------------------------------+
#property copyright "FOREX&STOX"
#property link "roman_kr_2006@mail.ru "

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_color2 Green
//---- ВХОДНЫЕ ПАРАМЕТРЫ----//
int fPeriod=1;
int fShift=0;
extern int ДлиннаЛинии=8;
extern color ЦветВеерх=Green;
extern color ЦветВниз=Red;
extern int СтильЛиний=STYLE_SOLID;
extern int ТолщинаЛиний=2;
extern string M="FZR";
//---- БУФЕРА ----ВЫХОДНые ----//
double ExtMapBuffer1[];
double ExtMapBuffer2[];
//----
int ExtCountedBars=0;
int	  mMonth;
int	  mYear;
int	  mDay;
datetime mDatBegin; 
//+------------------------------------------------------------------+
//|						 ИНИЦИАЛИЗАЦИЯ								 |
//+------------------------------------------------------------------+
int init()
{
int draw_begin;
string short_name;
//---- drawing settings
SetIndexStyle(0,DRAW_LINE);
SetIndexShift(0,fShift);
SetIndexStyle(1,DRAW_LINE);
SetIndexShift(1,fShift);
IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS));
if(fPeriod<2) fPeriod=13;
draw_begin=fPeriod-1;
//---- indicator short name
short_name="FZR("; draw_begin=0;
IndicatorShortName(M); 
SetIndexDrawBegin(0,draw_begin);
//---- indicator buffers mapping
SetIndexBuffer(0,ExtMapBuffer1);
SetIndexBuffer(1,ExtMapBuffer2);
//---- initialization done
return(0);
}
//+------------------------------------------------------------------+
//|						  ПОДГОТОВОЧКА							|
//+------------------------------------------------------------------+
int start()
{
if(Bars<=fPeriod) return(0);
ExtCountedBars=IndicatorCounted();
//---- check for possible errors
if (ExtCountedBars<0) return(-1);
//---- last counted bar will be recounted
if (ExtCountedBars>0) ExtCountedBars--;

//+------------------------------------------------------------------+
//|						   ГЛАВНЫЙ МОДУЛЬ						 |
//+------------------------------------------------------------------+

double FractalUPn;	 //ПОСЛЕДНИЙ UP ФРАКТАЛ
double POSFractalUPn;  //его позиция с конца
double FractalUPp;	 //ПРЕДПОСЛЕДНИЙ UP ФРАКТАЛ
double POSFractalUPp;  //его позиция с конца

double FractalDn;	  //ПОСЛЕДНИЙ DOWN ФРАКТАЛ
double POSFractalDn;   //его позиция с конца
double FractalDp;	  //ПРЕДПОСЛЕДНИЙ DOWN ФРАКТАЛ
double POSFractalDp;   //его позиция с конца

int Cond1,Cond2,Cond3,ЛинияВверх, ЛинияВниз;
string d;
int i,pos=Bars-ExtCountedBars-1,f;
//---- initial accumulation
if(pos<fPeriod) pos=fPeriod;
//---- main calculation loop
while(pos>=0)  //ВОТ ВОТ, ЗДЕСЬ ВСЁ КРУТИТСЯ
{f=0;
		 // UP & nbsp;ФРАКТАЛЫ___________________________________________________________________
_____________________________
		   if (iFractals(NULL,0,MODE_UPPER, pos)!=0)		//находим последний UP фрактал,
		   { 
		   FractalUPn=iFractals(NULL,0,MODE_UPPER, pos);	// его значение
			POSFractalUPn=pos;							  //и позицию с конца
		   } 
				i=10; //ну уж на дести то барах ранее должен появиться предыдущий фрактал
				while(i>0)
				{//=======
				  if (iFractals(NULL,0,MODE_UPPER, POSFractalUPn+i)!=0)		 //находим предпоследний UP фрактал,
				   { 
					 FractalUPp=iFractals(NULL,0,MODE_UPPER, POSFractalUPn+i);	// его значение
					 POSFractalUPp=POSFractalUPn+i;							  //и позицию с конца
				   } 
				  i--;
				}//=======
		 // DOWN ФРАКТАЛЫ________________________________________________________________________
_______________________	
		   if (iFractals(NULL,0,MODE_LOWER, pos)!=0)		//находим последний DOWN фрактал,
		   { 
		   FractalDn=iFractals(NULL,0,MODE_LOWER, pos);	// его значение
			POSFractalDn=pos;							  //и позицию с конца
		   } 
		 /**/   i=10; //ну уж на дести то барах ранее должен появиться предыдущий фрактал
		 /**/   while(i>0)
		 /**/   {//=======
		 /**/	 if (iFractals(NULL,0,MODE_LOWER, POSFractalDn+i)!=0)		 //находим предпоследний DOWN фрактал,
		 /**/	  { 
		 /**/		FractalDp=iFractals(NULL,0,MODE_LOWER, POSFractalDn+i);	// его значение
		 /**/		POSFractalDp=POSFractalDn+i;							  //и позицию с конца
		 /**/	  } 
		 /**/   i--;
		 /**/   }//=======				
		 // ЗАКОНЧИЛИ С ФРАКТАЛАМИ______________________________________________________________________
________________  
 //-- SELL SELL SELL --
  if(FractalUPp>FractalUPn){Cond1=-1;}//верхний фрактал меньше предыдущего(это коррекционное движение)
  if(FractalDp>FractalDn){Cond2=-1;}// нижний фрактал меньше предыдущего		
  if(POSFractalDn<POSFractalUPp && POSFractalDn>POSFractalUPn){Cond3=-1;}// последний нижний фрактал располагается между двумя верхними		
   if (Cond1==-1 && Cond2==-1 && Cond3==-1 && ЛинияВниз<0)//все 3 условия вместе собираем		
		 { 
		  //ExtMapBuffer1[pos]=FractalDn;
		  //Comment("ГОТОВИМСЯ ПРОДАВАТЬ!");  
		  ЛинияВниз=7;	 //- для того, чтобы несколько раз одно и тоже не рисовал
		  if (pos-ДлиннаЛинии<0){f=ДлиннаЛинии-pos;}  //- чтобы на правом краю хорошо отображался
		  //ну РИСУЕМ
		  ObjectCreate ("FZR "+TimeToStr(iTime(NULL,0, pos)), OBJ_TREND,0,iTime(NULL,0, pos+POSFractalDn-POSFractalUPn),FractalDn,iTime(NULL,0, pos-ДлиннаЛинии+f),FractalDn); 
		  
		  if (pos>10){ObjectSet ("FZR "+TimeToStr(iTime(NULL,0,pos)),OBJPROP_RAY, false);}//- чтобы на правом краю отображался как луч
		  ObjectSet ("FZR "+TimeToStr(iTime(NULL,0,pos)),OBJPROP_COLOR, ЦветВниз); 
		  ObjectSet ("FZR "+TimeToStr(iTime(NULL,0,pos)),OBJPROP_STYLE, СтильЛиний); 
		  ObjectSet ("FZR "+TimeToStr(iTime(NULL,0,pos)),OBJPROP_WIDTH, ТолщинаЛиний); 
		 }  // ОТОБРАЖАЕМ НА
 //-- BUY BUY BUY --
  if(FractalUPp<FractalUPn){Cond1=1;}//
  if(FractalDp<FractalDn){Cond2=1;}//		 
  if(POSFractalDp>POSFractalUPn && POSFractalUPn>POSFractalDn){Cond3=1;}//		 
   if (Cond1==1 && Cond2==1 && Cond3==1 && ЛинияВверх<0)		
		{  
		 //ExtMapBuffer2[pos]=FractalUPn; 
		// Comment("ГОТОВИСМСЯ ПОКУПАТЬ!");
		  ЛинияВверх=7; 
		  if (pos-ДлиннаЛинии<0){f=ДлиннаЛинии-pos;}
		   //ну РИСУЕМ
		  ObjectCreate ("FZR "+TimeToStr(iTime(NULL,0, pos)), OBJ_TREND,0,iTime(NULL,0, pos+POSFractalUPn-POSFractalDn),FractalUPn,iTime(NULL,0, pos-ДлиннаЛинии+f),FractalUPn); 
		  
		  if (pos>10){ ObjectSet ("FZR "+TimeToStr(iTime(NULL,0,pos)),OBJPROP_RAY, false);}
		  ObjectSet ("FZR "+TimeToStr(iTime(NULL,0,pos)),OBJPROP_COLOR, ЦветВеерх); 
		  ObjectSet ("FZR "+TimeToStr(iTime(NULL,0,pos)),OBJPROP_STYLE, СтильЛиний); 
		  ObjectSet ("FZR "+TimeToStr(iTime(NULL,0,pos)),OBJPROP_WIDTH, ТолщинаЛиний); 
		 }  // ОТОБРАЖАЕМ НА


 Cond1=0;Cond2=0;Cond3=0;
 ЛинияВверх--; ЛинияВниз--;
 pos--;
}

return(0);
}

//+-----------------------------+

день добрый:-))))

немогля бы кинуть существующую cskre на индикатор:-))))

Ссылка на комментарий
Поделиться на другие сайты

  • 1 год спустя...
Здраствуйте пробовал зайти по сылке можна сказать што неработает сылка эта .прозьба у каво есть такой индикатар вылажите штоб я мог скатать ево сибе . зараня блогадарен.
Ссылка на комментарий
Поделиться на другие сайты

  • 2 недели спустя...
У вас пардон вверху что написано- его код. зайдите в мета эдитор создайте новый индикатор введите туда его код и скомпелируйте. я знаю что скажете спасибо поэтому заранее пожалуйста :blink:
Ссылка на комментарий
Поделиться на другие сайты

Хороший индикатор!

Можно еще добавить чтобы при переходе с одного ТФ на другой, удалялись метки предыдущего. А то если постоянно прыгаешь по ТФ слишком много черточек :smile: Чтобы в настройках был такой пункт.

Ссылка на комментарий
Поделиться на другие сайты

  • 2 недели спустя...

В МЭ создать пользовательский индикатор, вставил строки кода, скомпилировал. В списке индикаторов FZR есть, но на график не устанавливается.

В чем может быть причина?

Подскажите пожалуйста

Ссылка на комментарий
Поделиться на другие сайты

В МЭ создать пользовательский индикатор, вставил строки кода, скомпилировал. В списке индикаторов FZR есть, но на график не устанавливается.

В чем может быть причина?

Подскажите пожалуйста

 

Если ошибки не выдал, то не знаю. вот попробовал, что то показывает.

 

fzr.zip (предварительно разархивировать! )

Ссылка на комментарий
Поделиться на другие сайты

  • 2 недели спустя...

Хороший индикатор!

Можно еще добавить чтобы при переходе с одного ТФ на другой, удалялись метки предыдущего. А то если постоянно прыгаешь по ТФ слишком много черточек <img src="http://forum.masterforex-v.org/public/style_emoticons/<#EMO_DIR#>/smile.gif" style="vertical-align:middle" emoid=":smile:" border="0" alt="smile.gif" /> Чтобы в настройках был такой пункт.

И впрямь чёрточек остаётся очень много даже после удаления индикатора. Не есть хорошо. Кто-нибудь может это исправить?

Ссылка на комментарий
Поделиться на другие сайты

 

И впрямь чёрточек остаётся очень много даже после удаления индикатора. Не есть хорошо. Кто-нибудь может это исправить?

 

Ловите. fzr.zip Теперь он мусор за собой убирает. При переключении таймферймов, при изменении пары, при удалении с графика.

Ссылка на комментарий
Поделиться на другие сайты

  • 1 месяц спустя...

 

И впрямь чёрточек остаётся очень много даже после удаления индикатора. Не есть хорошо. Кто-нибудь может это исправить?

 

Ловите. fzr.zip Теперь он мусор за собой убирает. При переключении таймферймов, при изменении пары, при удалении с графика.

 

Большое спасибо! Но выходит что этот индикатор вовсе не ФЗР, а чертит попросту линии поддержки и сопротивления.

Изменено пользователем just_Trader
Ссылка на комментарий
Поделиться на другие сайты

  • 1 год спустя...

Ещё по индикатору .Индикатор неплохой , но вот нельзя ли было бы привязать его обязательно к АО : есть заход за 0 на АО

-есть линия ,можно даже со стрелкой.

Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...