- Новый контент
- Книга Masterforex-V
-
Академия
- Как стать слушателем Академии
- ⇒ ТС Masterforex-V - Интенсивный Курс Онлайн
- ⇒ Факультет Форекс Скальпинга Magister
- ⇒ Факультет СРЕДНЕсрочной торговли и паттернов ГОСТ
- ⇒ Кафедра ДФВА
- ⇒ Кафедра Опционной Торговли
- ⇒ Факультет биржевой торговли "Futures Trade and Stock Exchange"
- ⇒ Факультет торговли объёмом"
- ⇒ Факультет Инвестиций
- ⇒ ФАКУЛЬТЕТ Пробой Флета, Автоматизация, Автотрейдинг
- ⇒ Кафедра Спектрального Анализа FOREX и ИНДЕКСОВ валют
- ⇒ Система раннего прогнозирования в ТС МФ на основе модернизации АО и WPR
- ⇒ Кафедра FMA_Sar
- ⇒ Кафедра синергетического объемно-волнового анализа (СОВА)
- ⇒Кафедра бинарных опционов
- Как продлить доступ в закрытую часть Академии?
- Форумы
- Галерея
- Блоги
- Скачать
- Контакты
- Личный кабинет
- Больше
|
Нам очень помогут
Автор темы:
Vadmin
, окт 19 2005 08:36
8 ответов в этой теме
#1
Опубликовано 19 Октябрь 2005 - 08:36
//+------------------------------------------------------------------+
//| PChannel_m.mq4 |
//+------------------------------------------------------------------+
#property indicator_chart_window //Назначаем окно для вывода графика (там, где бары)
#property indicator_buffers 3 //Выделяем для индикатора три буфера
#property indicator_color1 DodgerBlue //Назначаем цвет для отображения данных 1 буфера
#property indicator_color2 DodgerBlue //Назначаем цвет для отображения данных 2 буфера
#property indicator_color3 DodgerBlue //Назначаем цвет для отображения данных 3 буфера
//---- input parameters //объявление вводимых внешних параметров
extern int Range=14; //по умолчанию вводимое значение равно 14
//---- buffers
double UpBuffer[]; //обявление переменной UpBuffer типа "массив с плавающей точкой"
double DnBuffer[]; //обявление переменной DnBuffer типа "массив с плавающей точкой"
double MdBuffer[]; //обявление переменной MdBuffer типа "массив с плавающей точкой"
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init() //инициализация переменных
{
string short_name; //обявление переменной short_name типа "строковый"
//---- indicator line
SetIndexStyle(0,DRAW_LINE,1,2); //установка стиля для первого значения индикатора
SetIndexStyle(1,DRAW_LINE,1,2); //установка стиля для второго значения индикатора
SetIndexStyle(2,DRAW_LINE,2); //установка стиля для третьего значения индикатора
SetIndexBuffer(0,UpBuffer); //значение записываемое в 0 буфер равно переменной UpBuffer
SetIndexBuffer(1,DnBuffer); //значение записываемое в 1 буфер равно переменной DnBuffer
SetIndexBuffer(2,MdBuffer); //значение записываемое в 2 буфер равно переменной MdBuffer
//---- name for DataWindow and indicator subwindow label
short_name="PriceChannel("+Range+")"; //переменной short_name присваиваем строковое
//значение равное выражению
IndicatorShortName(short_name); //для отображения на графике присвоим индикатору краткое
//наименование
SetIndexLabel(0,"Up Channel"); //для отображения на графике присвоим метке отображающей
//значения 0 буфера имя Up Channel
SetIndexLabel(1,"Down Channel"); //для отображения на графике присвоим метке отображающей
//значения 1 буфера имя Down Channel
SetIndexLabel(2,"Middle Channel"); //для отображения на графике присвоим метке отображающей
//значения 2 буфера имя Middle Channel
//----
SetIndexDrawBegin(0,0); //установка начальной точки прорисовки для 0 буфера
SetIndexDrawBegin(1,0); //установка начальной точки прорисовки для 1 буфера
SetIndexDrawBegin(2,0); //установка начальной точки прорисовки для 2 буфера
//----
return(0); //возврат из секции инициализации
}
//+------------------------------------------------------------------+
//| PriceChannel |
//+------------------------------------------------------------------+
int start() //начало программы (расчета)
{
int i; //объявление целочисленной переменной i,k,sch
//----
for(i=Bars-1;i>=0;i--)
{
UpBuffer[i]=High[Highest(NULL,0,MODE_HIGH,Range,i)];
DnBuffer[i]=Low[Lowest(NULL,0,MODE_LOW,Range,i)];
MdBuffer[i]=(UpBuffer[i]+DnBuffer[i])/2;
}
return(0);
}
//+------------------------------------------------------------------+
//| PChannel_m.mq4 |
//+------------------------------------------------------------------+
#property indicator_chart_window //Назначаем окно для вывода графика (там, где бары)
#property indicator_buffers 3 //Выделяем для индикатора три буфера
#property indicator_color1 DodgerBlue //Назначаем цвет для отображения данных 1 буфера
#property indicator_color2 DodgerBlue //Назначаем цвет для отображения данных 2 буфера
#property indicator_color3 DodgerBlue //Назначаем цвет для отображения данных 3 буфера
//---- input parameters //объявление вводимых внешних параметров
extern int Range=14; //по умолчанию вводимое значение равно 14
//---- buffers
double UpBuffer[]; //обявление переменной UpBuffer типа "массив с плавающей точкой"
double DnBuffer[]; //обявление переменной DnBuffer типа "массив с плавающей точкой"
double MdBuffer[]; //обявление переменной MdBuffer типа "массив с плавающей точкой"
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init() //инициализация переменных
{
string short_name; //обявление переменной short_name типа "строковый"
//---- indicator line
SetIndexStyle(0,DRAW_LINE,1,2); //установка стиля для первого значения индикатора
SetIndexStyle(1,DRAW_LINE,1,2); //установка стиля для второго значения индикатора
SetIndexStyle(2,DRAW_LINE,2); //установка стиля для третьего значения индикатора
SetIndexBuffer(0,UpBuffer); //значение записываемое в 0 буфер равно переменной UpBuffer
SetIndexBuffer(1,DnBuffer); //значение записываемое в 1 буфер равно переменной DnBuffer
SetIndexBuffer(2,MdBuffer); //значение записываемое в 2 буфер равно переменной MdBuffer
//---- name for DataWindow and indicator subwindow label
short_name="PriceChannel("+Range+")"; //переменной short_name присваиваем строковое
//значение равное выражению
IndicatorShortName(short_name); //для отображения на графике присвоим индикатору краткое
//наименование
SetIndexLabel(0,"Up Channel"); //для отображения на графике присвоим метке отображающей
//значения 0 буфера имя Up Channel
SetIndexLabel(1,"Down Channel"); //для отображения на графике присвоим метке отображающей
//значения 1 буфера имя Down Channel
SetIndexLabel(2,"Middle Channel"); //для отображения на графике присвоим метке отображающей
//значения 2 буфера имя Middle Channel
//----
SetIndexDrawBegin(0,0); //установка начальной точки прорисовки для 0 буфера
SetIndexDrawBegin(1,0); //установка начальной точки прорисовки для 1 буфера
SetIndexDrawBegin(2,0); //установка начальной точки прорисовки для 2 буфера
//----
return(0); //возврат из секции инициализации
}
//+------------------------------------------------------------------+
//| PriceChannel |
//+------------------------------------------------------------------+
int start() //начало программы (расчета)
{
int i; //объявление целочисленной переменной i,k,sch
//----
for(i=Bars-1;i>=0;i--)
{
UpBuffer[i]=High[Highest(NULL,0,MODE_HIGH,Range,i)];
DnBuffer[i]=Low[Lowest(NULL,0,MODE_LOW,Range,i)];
MdBuffer[i]=(UpBuffer[i]+DnBuffer[i])/2;
}
return(0);
}
//+------------------------------------------------------------------+
#2
Опубликовано 19 Октябрь 2005 - 08:37
//+------------------------------------------------------------------+
//| PriceChannel_Stop_v1.mq4 |
//| Copyright © 2005, TrendLaboratory Ltd. |
//| E-mail: igorad2004@list.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2005, TrendLaboratory Ltd."
#property link "E-mail: igorad2004@list.ru"
#property indicator_chart_window
#property indicator_buffers 6
#property indicator_color1 Blue
#property indicator_color2 Red
#property indicator_color3 Blue
#property indicator_color4 Red
#property indicator_color5 Blue
#property indicator_color6 Red
//---- input parameters
extern int ChannelPeriod=5;
extern double Risk=0.10;
extern int Signal=1;
extern int Line=1;
extern int Nbars=1000;
//---- indicator buffers
double UpTrendBuffer[];
double DownTrendBuffer[];
double UpTrendSignal[];
double DownTrendSignal[];
double UpTrendLine[];
double DownTrendLine[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
string short_name;
//---- indicator line
SetIndexBuffer(0,UpTrendBuffer);
SetIndexBuffer(1,DownTrendBuffer);
SetIndexBuffer(2,UpTrendSignal);
SetIndexBuffer(3,DownTrendSignal);
SetIndexBuffer(4,UpTrendLine);
SetIndexBuffer(5,DownTrendLine);
SetIndexStyle(0,DRAW_ARROW);
SetIndexStyle(1,DRAW_ARROW);
SetIndexStyle(2,DRAW_ARROW);
SetIndexStyle(3,DRAW_ARROW);
SetIndexStyle(4,DRAW_LINE);
SetIndexStyle(5,DRAW_LINE);
SetIndexArrow(0,159);
SetIndexArrow(1,159);
SetIndexArrow(2,241);
SetIndexArrow(3,242);
//---- name for DataWindow and indicator subwindow label
short_name="PriceChannel_Stop_v1("+ChannelPeriod+")";
IndicatorShortName(short_name);
SetIndexLabel(0,"UpTrend Stop");
SetIndexLabel(1,"DownTrend Stop");
SetIndexLabel(2,"UpTrend Signal");
SetIndexLabel(3,"DownTrend Signal");
SetIndexLabel(4,"UpTrend Line");
SetIndexLabel(5,"DownTrend Line");
//----
SetIndexDrawBegin(0,ChannelPeriod);
SetIndexDrawBegin(1,ChannelPeriod);
SetIndexDrawBegin(2,ChannelPeriod);
SetIndexDrawBegin(3,ChannelPeriod);
SetIndexDrawBegin(4,ChannelPeriod);
SetIndexDrawBegin(5,ChannelPeriod);
//----
return(0);
}
//+------------------------------------------------------------------+
//| PriceChannel_Stop_v1 |
//+------------------------------------------------------------------+
int start()
{
int i,shift,trend;
double high, low, price;
double smax[5000],smin[5000],bsmax[5000],bsmin[5000];
for (shift=Nbars-1;shift>=0;shift--)
{
UpTrendBuffer[shift]=EMPTY_VALUE;
DownTrendBuffer[shift]=EMPTY_VALUE;
UpTrendSignal[shift]=EMPTY_VALUE;
DownTrendSignal[shift]=EMPTY_VALUE;
UpTrendLine[shift]=EMPTY_VALUE;
DownTrendLine[shift]=EMPTY_VALUE;
}
for (shift=Nbars-ChannelPeriod-1;shift>=0;shift--)
{
high=High[shift]; low=Low[shift]; i=shift-1+ChannelPeriod;
while(i>=shift)
{
price=High[i];
if(high<price) high=price;
price=Low[i];
if(low>price) low=price;
i--;
}
smax[shift]=high;
smin[shift]=low;
bsmax[shift]=smax[shift]-(smax[shift]-smin[shift])*Risk;
bsmin[shift]=smin[shift]+(smax[shift]-smin[shift])*Risk;
if (Close[shift]>bsmax[shift+1]) trend=1;
if (Close[shift]<bsmin[shift+1]) trend=-1;
if(trend>0 && bsmin[shift]<bsmin[shift+1]) bsmin[shift]=bsmin[shift+1];
if(trend<0 && bsmax[shift]>bsmax[shift+1]) bsmax[shift]=bsmax[shift+1];
if (trend>0)
{
if (Signal>0 && UpTrendBuffer[shift+1]==-1.0)
{
UpTrendSignal[shift]=bsmin[shift];
if(Line>0) UpTrendLine[shift]=bsmin[shift];
}
else
{
UpTrendBuffer[shift]=bsmin[shift];
if(Line>0) UpTrendLine[shift]=bsmin[shift];
UpTrendSignal[shift]=-1;
}
if (Signal==2) UpTrendBuffer[shift]=0;
DownTrendBuffer[shift]=-1.0;
DownTrendLine[shift]=EMPTY_VALUE;
}
if (trend<0)
{
if (Signal>0 && DownTrendBuffer[shift+1]==-1.0)
{
DownTrendSignal[shift]=bsmax[shift];
if(Line>0) DownTrendLine[shift]=bsmax[shift];
}
else
{
DownTrendBuffer[shift]=bsmax[shift];
if(Line>0)DownTrendLine[shift]=bsmax[shift];
DownTrendSignal[shift]=-1;
}
if (Signal==2) DownTrendBuffer[shift]=0;
UpTrendBuffer[shift]=-1.0;
UpTrendLine[shift]=EMPTY_VALUE;
}
}
/*
Comment("UpTrendLine[] = ",UpTrendLine[0], " DownTrendLine[] = ",DownTrendLine[0],"n",
"UpTrendSignal[] = ",UpTrendSignal[0], " DownTrendSignal[] = ",DownTrendSignal[0],"n",
"UpTrendBuffer[] = ",UpTrendBuffer[0], " DownTrendBuffer[] = ",DownTrendBuffer[0],"n",
"EMPTY_VALUE = ",EMPTY_VALUE);*/
return(0);
}
//+------------------------------------------------------------------+
//| PriceChannel_Stop_v1.mq4 |
//| Copyright © 2005, TrendLaboratory Ltd. |
//| E-mail: igorad2004@list.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2005, TrendLaboratory Ltd."
#property link "E-mail: igorad2004@list.ru"
#property indicator_chart_window
#property indicator_buffers 6
#property indicator_color1 Blue
#property indicator_color2 Red
#property indicator_color3 Blue
#property indicator_color4 Red
#property indicator_color5 Blue
#property indicator_color6 Red
//---- input parameters
extern int ChannelPeriod=5;
extern double Risk=0.10;
extern int Signal=1;
extern int Line=1;
extern int Nbars=1000;
//---- indicator buffers
double UpTrendBuffer[];
double DownTrendBuffer[];
double UpTrendSignal[];
double DownTrendSignal[];
double UpTrendLine[];
double DownTrendLine[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
string short_name;
//---- indicator line
SetIndexBuffer(0,UpTrendBuffer);
SetIndexBuffer(1,DownTrendBuffer);
SetIndexBuffer(2,UpTrendSignal);
SetIndexBuffer(3,DownTrendSignal);
SetIndexBuffer(4,UpTrendLine);
SetIndexBuffer(5,DownTrendLine);
SetIndexStyle(0,DRAW_ARROW);
SetIndexStyle(1,DRAW_ARROW);
SetIndexStyle(2,DRAW_ARROW);
SetIndexStyle(3,DRAW_ARROW);
SetIndexStyle(4,DRAW_LINE);
SetIndexStyle(5,DRAW_LINE);
SetIndexArrow(0,159);
SetIndexArrow(1,159);
SetIndexArrow(2,241);
SetIndexArrow(3,242);
//---- name for DataWindow and indicator subwindow label
short_name="PriceChannel_Stop_v1("+ChannelPeriod+")";
IndicatorShortName(short_name);
SetIndexLabel(0,"UpTrend Stop");
SetIndexLabel(1,"DownTrend Stop");
SetIndexLabel(2,"UpTrend Signal");
SetIndexLabel(3,"DownTrend Signal");
SetIndexLabel(4,"UpTrend Line");
SetIndexLabel(5,"DownTrend Line");
//----
SetIndexDrawBegin(0,ChannelPeriod);
SetIndexDrawBegin(1,ChannelPeriod);
SetIndexDrawBegin(2,ChannelPeriod);
SetIndexDrawBegin(3,ChannelPeriod);
SetIndexDrawBegin(4,ChannelPeriod);
SetIndexDrawBegin(5,ChannelPeriod);
//----
return(0);
}
//+------------------------------------------------------------------+
//| PriceChannel_Stop_v1 |
//+------------------------------------------------------------------+
int start()
{
int i,shift,trend;
double high, low, price;
double smax[5000],smin[5000],bsmax[5000],bsmin[5000];
for (shift=Nbars-1;shift>=0;shift--)
{
UpTrendBuffer[shift]=EMPTY_VALUE;
DownTrendBuffer[shift]=EMPTY_VALUE;
UpTrendSignal[shift]=EMPTY_VALUE;
DownTrendSignal[shift]=EMPTY_VALUE;
UpTrendLine[shift]=EMPTY_VALUE;
DownTrendLine[shift]=EMPTY_VALUE;
}
for (shift=Nbars-ChannelPeriod-1;shift>=0;shift--)
{
high=High[shift]; low=Low[shift]; i=shift-1+ChannelPeriod;
while(i>=shift)
{
price=High[i];
if(high<price) high=price;
price=Low[i];
if(low>price) low=price;
i--;
}
smax[shift]=high;
smin[shift]=low;
bsmax[shift]=smax[shift]-(smax[shift]-smin[shift])*Risk;
bsmin[shift]=smin[shift]+(smax[shift]-smin[shift])*Risk;
if (Close[shift]>bsmax[shift+1]) trend=1;
if (Close[shift]<bsmin[shift+1]) trend=-1;
if(trend>0 && bsmin[shift]<bsmin[shift+1]) bsmin[shift]=bsmin[shift+1];
if(trend<0 && bsmax[shift]>bsmax[shift+1]) bsmax[shift]=bsmax[shift+1];
if (trend>0)
{
if (Signal>0 && UpTrendBuffer[shift+1]==-1.0)
{
UpTrendSignal[shift]=bsmin[shift];
if(Line>0) UpTrendLine[shift]=bsmin[shift];
}
else
{
UpTrendBuffer[shift]=bsmin[shift];
if(Line>0) UpTrendLine[shift]=bsmin[shift];
UpTrendSignal[shift]=-1;
}
if (Signal==2) UpTrendBuffer[shift]=0;
DownTrendBuffer[shift]=-1.0;
DownTrendLine[shift]=EMPTY_VALUE;
}
if (trend<0)
{
if (Signal>0 && DownTrendBuffer[shift+1]==-1.0)
{
DownTrendSignal[shift]=bsmax[shift];
if(Line>0) DownTrendLine[shift]=bsmax[shift];
}
else
{
DownTrendBuffer[shift]=bsmax[shift];
if(Line>0)DownTrendLine[shift]=bsmax[shift];
DownTrendSignal[shift]=-1;
}
if (Signal==2) DownTrendBuffer[shift]=0;
UpTrendBuffer[shift]=-1.0;
UpTrendLine[shift]=EMPTY_VALUE;
}
}
/*
Comment("UpTrendLine[] = ",UpTrendLine[0], " DownTrendLine[] = ",DownTrendLine[0],"n",
"UpTrendSignal[] = ",UpTrendSignal[0], " DownTrendSignal[] = ",DownTrendSignal[0],"n",
"UpTrendBuffer[] = ",UpTrendBuffer[0], " DownTrendBuffer[] = ",DownTrendBuffer[0],"n",
"EMPTY_VALUE = ",EMPTY_VALUE);*/
return(0);
}
//+------------------------------------------------------------------+
#3
Опубликовано 19 Октябрь 2005 - 08:40
//+------------------------------------------------------------------+
//| ZZZ.mq4 |
//+------------------------------------------------------------------+
#property copyright "Istoniz"
#property link "http://www.kg/"
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Aqua
//---- input parameters
extern int Length=6;
//---- buffers
double ExtMapBuffer1[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
SetIndexStyle(0,DRAW_SECTION);
SetIndexBuffer(0,ExtMapBuffer1);
SetIndexEmptyValue(0,0.0);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int barn=300;
/*
//--------------------------
int counted_bars=IndicatorCounted();
limit,barn=Bars-Length;
if (counted_bars<0) return(-1);
if (counted_bars>0) counted_bars--;
limit=Bars-counted_bars+4*Length;
//Comment(" limit = ",limit, " Bars = ",Bars);
//--------------------------
*/
//--------------------------
int shift,Swing,Swing_n,i,zu,zd,uzl;
double LL,HH,BH,BL,NH,NL;
Swing_n=0; Swing=0; uzl=0;
BH =High[barn]; BL=Low[barn];
zu=barn; zd=barn;
for ( shift=barn; shift>0 ; shift--)
{
LL=10000000; HH=-100000000;
for ( i=shift+Length; i>shift+1 ; i--)
{
if ( Low[i]<LL ) LL=Low[i];
if ( High[i]>HH ) HH=High[i];
}
if ( Low[shift]<LL && High[shift]>HH )
{
Swing=2;
if ( Swing_n==1 ) zu=shift+1;
if ( Swing_n==-1 ) zd=shift+1;
} else
{
if ( Low[shift]<LL ) Swing=-1;
if ( High[shift]>HH ) Swing=1;
}
if ( Swing!=Swing_n && Swing_n!=0 )
{
if ( Swing==2 )
{
Swing=-Swing_n;
BH=High[shift];
BL=Low[shift];
}
uzl=uzl+1;
if ( Swing==1 )
{
ExtMapBuffer1[zd]=BL;
}
if ( Swing==-1 )
{
ExtMapBuffer1[zu]=BH;
}
BH=High[shift];
BL=Low[shift];
}
if ( Swing==1 )
{
if ( High[shift]>=BH )
{
BH=High[shift];
zu=shift;
}
}
if ( Swing==-1 )
{
if ( Low[shift]<=BL )
{
BL=Low[shift];
zd=shift;
}
}
Swing_n=Swing;
}
//----
return(0);
}
//+------------------------------------------------------------------+
//| ZZZ.mq4 |
//+------------------------------------------------------------------+
#property copyright "Istoniz"
#property link "http://www.kg/"
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Aqua
//---- input parameters
extern int Length=6;
//---- buffers
double ExtMapBuffer1[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
SetIndexStyle(0,DRAW_SECTION);
SetIndexBuffer(0,ExtMapBuffer1);
SetIndexEmptyValue(0,0.0);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int barn=300;
/*
//--------------------------
int counted_bars=IndicatorCounted();
limit,barn=Bars-Length;
if (counted_bars<0) return(-1);
if (counted_bars>0) counted_bars--;
limit=Bars-counted_bars+4*Length;
//Comment(" limit = ",limit, " Bars = ",Bars);
//--------------------------
*/
//--------------------------
int shift,Swing,Swing_n,i,zu,zd,uzl;
double LL,HH,BH,BL,NH,NL;
Swing_n=0; Swing=0; uzl=0;
BH =High[barn]; BL=Low[barn];
zu=barn; zd=barn;
for ( shift=barn; shift>0 ; shift--)
{
LL=10000000; HH=-100000000;
for ( i=shift+Length; i>shift+1 ; i--)
{
if ( Low[i]<LL ) LL=Low[i];
if ( High[i]>HH ) HH=High[i];
}
if ( Low[shift]<LL && High[shift]>HH )
{
Swing=2;
if ( Swing_n==1 ) zu=shift+1;
if ( Swing_n==-1 ) zd=shift+1;
} else
{
if ( Low[shift]<LL ) Swing=-1;
if ( High[shift]>HH ) Swing=1;
}
if ( Swing!=Swing_n && Swing_n!=0 )
{
if ( Swing==2 )
{
Swing=-Swing_n;
BH=High[shift];
BL=Low[shift];
}
uzl=uzl+1;
if ( Swing==1 )
{
ExtMapBuffer1[zd]=BL;
}
if ( Swing==-1 )
{
ExtMapBuffer1[zu]=BH;
}
BH=High[shift];
BL=Low[shift];
}
if ( Swing==1 )
{
if ( High[shift]>=BH )
{
BH=High[shift];
zu=shift;
}
}
if ( Swing==-1 )
{
if ( Low[shift]<=BL )
{
BL=Low[shift];
zd=shift;
}
}
Swing_n=Swing;
}
//----
return(0);
}
//+------------------------------------------------------------------+
#4
Опубликовано 19 Октябрь 2005 - 08:41
//+------------------------------------------------------------------+
//| Custom Moving Average.mq4 |
//| Copyright © 2005, MetaQuotes Software Corp. |
//| http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2005, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net/"
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Red
//---- indicator parameters
extern int ExtDepth=12;
extern int ExtDeviation=5;
extern int ExtBackstep=3;
//---- indicator buffers
double ExtMapBuffer[];
double ExtMapBuffer2[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
IndicatorBuffers(2);
//---- drawing settings
SetIndexStyle(0,DRAW_SECTION);
//---- indicator buffers mapping
SetIndexBuffer(0,ExtMapBuffer);
SetIndexBuffer(1,ExtMapBuffer2);
SetIndexEmptyValue(0,0.0);
ArraySetAsSeries(ExtMapBuffer,true);
ArraySetAsSeries(ExtMapBuffer2,true);
//---- indicator short name
IndicatorShortName("ZigZag("+ExtDepth+","+ExtDeviation+","+ExtBackstep+")");
//---- initialization done
return(0);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int start()
{
int shift, back,lasthighpos,lastlowpos;
double val,res;
double curlow,curhigh,lasthigh,lastlow;
for(shift=Bars-ExtDepth; shift>=0; shift--)
{
val=Low[Lowest(NULL,0,MODE_LOW,ExtDepth,shift)];
if(val==lastlow) val=0.0;
else
{
lastlow=val;
if((Low[shift]-val)>(ExtDeviation*Point)) val=0.0;
else
{
for(back=1; back<=ExtBackstep; back++)
{
res=ExtMapBuffer[shift+back];
if((res!=0)&&(res>val)) ExtMapBuffer[shift+back]=0.0;
}
}
}
ExtMapBuffer[shift]=val;
//--- high
val=High[Highest(NULL,0,MODE_HIGH,ExtDepth,shift)];
if(val==lasthigh) val=0.0;
else
{
lasthigh=val;
if((val-High[shift])>(ExtDeviation*Point)) val=0.0;
else
{
for(back=1; back<=ExtBackstep; back++)
{
res=ExtMapBuffer2[shift+back];
if((res!=0)&&(res<val)) ExtMapBuffer2[shift+back]=0.0;
}
}
}
ExtMapBuffer2[shift]=val;
}
// final cutting
lasthigh=-1; lasthighpos=-1;
lastlow=-1; lastlowpos=-1;
for(shift=Bars-ExtDepth; shift>=0; shift--)
{
curlow=ExtMapBuffer[shift];
curhigh=ExtMapBuffer2[shift];
// if((curlow==0.0)||(curhigh==0.0)) continue;
//---
if(curhigh!=0)
{
if(lasthigh>0)
{
if(lasthigh<curhigh) ExtMapBuffer2[lasthighpos]=0;
else ExtMapBuffer2[shift]=0;
};//я
//---
if(lasthigh<curhigh || lasthigh<0)
{
lasthigh=curhigh;
lasthighpos=shift;
};// я
lastlow=-1;
};//я
//----
if(curlow!=0)
{
if(lastlow>0)
{
if(lastlow>curlow) ExtMapBuffer[lastlowpos]=0;
else ExtMapBuffer[shift]=0;
};//z
//---
if((curlow<lastlow)||(lastlow<0))
{
lastlow=curlow;
lastlowpos=shift;
};//z
lasthigh=-1;
};//
}
for(shift=Bars-1; shift>=0; shift--)
{
if(shift>=Bars-ExtDepth) ExtMapBuffer[shift]=0.0;
else
{
res=ExtMapBuffer2[shift];
if(res!=0.0) ExtMapBuffer[shift]=res;
//if(res>0.0) ExtMapBuffer[shift]=res;
}
}
}
//| Custom Moving Average.mq4 |
//| Copyright © 2005, MetaQuotes Software Corp. |
//| http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2005, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net/"
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Red
//---- indicator parameters
extern int ExtDepth=12;
extern int ExtDeviation=5;
extern int ExtBackstep=3;
//---- indicator buffers
double ExtMapBuffer[];
double ExtMapBuffer2[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
IndicatorBuffers(2);
//---- drawing settings
SetIndexStyle(0,DRAW_SECTION);
//---- indicator buffers mapping
SetIndexBuffer(0,ExtMapBuffer);
SetIndexBuffer(1,ExtMapBuffer2);
SetIndexEmptyValue(0,0.0);
ArraySetAsSeries(ExtMapBuffer,true);
ArraySetAsSeries(ExtMapBuffer2,true);
//---- indicator short name
IndicatorShortName("ZigZag("+ExtDepth+","+ExtDeviation+","+ExtBackstep+")");
//---- initialization done
return(0);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int start()
{
int shift, back,lasthighpos,lastlowpos;
double val,res;
double curlow,curhigh,lasthigh,lastlow;
for(shift=Bars-ExtDepth; shift>=0; shift--)
{
val=Low[Lowest(NULL,0,MODE_LOW,ExtDepth,shift)];
if(val==lastlow) val=0.0;
else
{
lastlow=val;
if((Low[shift]-val)>(ExtDeviation*Point)) val=0.0;
else
{
for(back=1; back<=ExtBackstep; back++)
{
res=ExtMapBuffer[shift+back];
if((res!=0)&&(res>val)) ExtMapBuffer[shift+back]=0.0;
}
}
}
ExtMapBuffer[shift]=val;
//--- high
val=High[Highest(NULL,0,MODE_HIGH,ExtDepth,shift)];
if(val==lasthigh) val=0.0;
else
{
lasthigh=val;
if((val-High[shift])>(ExtDeviation*Point)) val=0.0;
else
{
for(back=1; back<=ExtBackstep; back++)
{
res=ExtMapBuffer2[shift+back];
if((res!=0)&&(res<val)) ExtMapBuffer2[shift+back]=0.0;
}
}
}
ExtMapBuffer2[shift]=val;
}
// final cutting
lasthigh=-1; lasthighpos=-1;
lastlow=-1; lastlowpos=-1;
for(shift=Bars-ExtDepth; shift>=0; shift--)
{
curlow=ExtMapBuffer[shift];
curhigh=ExtMapBuffer2[shift];
// if((curlow==0.0)||(curhigh==0.0)) continue;
//---
if(curhigh!=0)
{
if(lasthigh>0)
{
if(lasthigh<curhigh) ExtMapBuffer2[lasthighpos]=0;
else ExtMapBuffer2[shift]=0;
};//я
//---
if(lasthigh<curhigh || lasthigh<0)
{
lasthigh=curhigh;
lasthighpos=shift;
};// я
lastlow=-1;
};//я
//----
if(curlow!=0)
{
if(lastlow>0)
{
if(lastlow>curlow) ExtMapBuffer[lastlowpos]=0;
else ExtMapBuffer[shift]=0;
};//z
//---
if((curlow<lastlow)||(lastlow<0))
{
lastlow=curlow;
lastlowpos=shift;
};//z
lasthigh=-1;
};//
}
for(shift=Bars-1; shift>=0; shift--)
{
if(shift>=Bars-ExtDepth) ExtMapBuffer[shift]=0.0;
else
{
res=ExtMapBuffer2[shift];
if(res!=0.0) ExtMapBuffer[shift]=res;
//if(res>0.0) ExtMapBuffer[shift]=res;
}
}
}
#5
Опубликовано 19 Октябрь 2005 - 08:41
а маленькое описание индикаторов можно? :roll:
#6
Опубликовано 19 Октябрь 2005 - 08:42
//+------------------------------------------------------------------+
//| 3LineBreak.mq4 |
//| Copyright © 2004, Poul_Trade_Forum |
//| Aborigen |
//| http://forex.kbpauk.ru/ |
//+------------------------------------------------------------------+
#property copyright "Poul Trade Forum"
#property link "http://forex.kbpauk.ru/"
#property indicator_chart_window
#property indicator_buffers 2
//---- input parameters
extern int Lines_Break=3;
//---- buffers
double HighBuffer[];
double LowBuffer[];
double VALUE1,VALUE2,Swing=1,OLDSwing;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
string short_name;
//---- indicator line
SetIndexStyle(0,DRAW_HISTOGRAM,EMPTY,2,Blue);
SetIndexStyle(1,DRAW_HISTOGRAM,EMPTY,2,Red);
SetIndexBuffer(0,HighBuffer);
SetIndexBuffer(1,LowBuffer);
SetIndexEmptyValue(0,0);
SetIndexEmptyValue(1,0);
//---- name for DataWindow and indicator subwindow label
short_name="3LineBreak";
IndicatorShortName(short_name);
SetIndexLabel(0,short_name);
//----
SetIndexDrawBegin(0,10);
SetIndexDrawBegin(1,10);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//---- TODO: add your code here
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted(),i,shift;
//---- TODO: add your code here
if (counted_bars==0) counted_bars=Lines_Break+1;
i=(Bars-counted_bars);
for (shift=i; shift>=0;shift--)
{
OLDSwing=Swing;
VALUE1=High[Highest(NULL,0,MODE_HIGH,Lines_Break,shift+1)];
VALUE2= Low[Lowest(NULL,0,MODE_LOW,Lines_Break,shift+1)];
if (OLDSwing==1 && Low[shift]<VALUE2) Swing=-1;
if (OLDSwing==-1 && High[shift]>VALUE1 ) Swing=1;
if (Swing==1)
{ HighBuffer[shift]=High[shift]; LowBuffer[shift]=Low[shift]; }
if (Swing==-1)
{ LowBuffer[shift]=High[shift]; HighBuffer[shift]=Low[shift]; }
//----
}
return(0);
}
//+------------------------------------------------------------------+
//| 3LineBreak.mq4 |
//| Copyright © 2004, Poul_Trade_Forum |
//| Aborigen |
//| http://forex.kbpauk.ru/ |
//+------------------------------------------------------------------+
#property copyright "Poul Trade Forum"
#property link "http://forex.kbpauk.ru/"
#property indicator_chart_window
#property indicator_buffers 2
//---- input parameters
extern int Lines_Break=3;
//---- buffers
double HighBuffer[];
double LowBuffer[];
double VALUE1,VALUE2,Swing=1,OLDSwing;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
string short_name;
//---- indicator line
SetIndexStyle(0,DRAW_HISTOGRAM,EMPTY,2,Blue);
SetIndexStyle(1,DRAW_HISTOGRAM,EMPTY,2,Red);
SetIndexBuffer(0,HighBuffer);
SetIndexBuffer(1,LowBuffer);
SetIndexEmptyValue(0,0);
SetIndexEmptyValue(1,0);
//---- name for DataWindow and indicator subwindow label
short_name="3LineBreak";
IndicatorShortName(short_name);
SetIndexLabel(0,short_name);
//----
SetIndexDrawBegin(0,10);
SetIndexDrawBegin(1,10);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//---- TODO: add your code here
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted(),i,shift;
//---- TODO: add your code here
if (counted_bars==0) counted_bars=Lines_Break+1;
i=(Bars-counted_bars);
for (shift=i; shift>=0;shift--)
{
OLDSwing=Swing;
VALUE1=High[Highest(NULL,0,MODE_HIGH,Lines_Break,shift+1)];
VALUE2= Low[Lowest(NULL,0,MODE_LOW,Lines_Break,shift+1)];
if (OLDSwing==1 && Low[shift]<VALUE2) Swing=-1;
if (OLDSwing==-1 && High[shift]>VALUE1 ) Swing=1;
if (Swing==1)
{ HighBuffer[shift]=High[shift]; LowBuffer[shift]=Low[shift]; }
if (Swing==-1)
{ LowBuffer[shift]=High[shift]; HighBuffer[shift]=Low[shift]; }
//----
}
return(0);
}
//+------------------------------------------------------------------+
#8
Опубликовано 19 Октябрь 2005 - 09:03
а маленькое описание индикаторов можно? :roll:
Описания нет,но можно будет по ходу дела их обсуждать на практике.В принципе они интуитивно понятны .
Утром вырисовывается ценовой канал.По тактике МФ,смотрим направление на всех временых интервалах скользящих средних и открываемся ,в низ при пробитии синих кружков,в верх при пробитии красных.Ну и ещё какой нить осцилятор прицепить,для более уверенного входа.
#9
Опубликовано 11 Июнь 2007 - 08:09
Спаисбо
Посетителей, читающих эту тему: 0
0 пользователей, 0 гостей, 0 анонимных пользователей