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

Нам очень помогут


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

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

//| 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=High[Highest(NULL,0,MODE_HIGH,Range,i)];

DnBuffer=Low[Lowest(NULL,0,MODE_LOW,Range,i)];

MdBuffer=(UpBuffer+DnBuffer)/2;

}

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;

if(high<price) high=price;

price=Low;

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);

}

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

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

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

//| 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<LL ) LL=Low;

if ( High>HH ) HH=High;

}

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);

}

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

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

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

//| 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;

}

}

}

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

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

//| 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);

}

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

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

а маленькое описание индикаторов можно?  :roll:

 

Описания нет,но можно будет по ходу дела их обсуждать на практике.В принципе они интуитивно понятны .

Утром вырисовывается ценовой канал.По тактике МФ,смотрим направление на всех временых интервалах скользящих средних и открываемся ,в низ при пробитии синих кружков,в верх при пробитии красных.Ну и ещё какой нить осцилятор прицепить,для более уверенного входа.

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

  • 1 год спустя...
×
×
  • Создать...