Vadmin Опубликовано 19 октября, 2005 Жалоба Поделиться Опубликовано 19 октября, 2005 //+------------------------------------------------------------------+//| 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//---- buffersdouble 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); }//+------------------------------------------------------------------+ Ссылка на комментарий Поделиться на другие сайты Поделиться
Vadmin Опубликовано 19 октября, 2005 Автор Жалоба Поделиться Опубликовано 19 октября, 2005 //+------------------------------------------------------------------+//| 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 parametersextern int ChannelPeriod=5;extern double Risk=0.10;extern int Signal=1;extern int Line=1;extern int Nbars=1000;//---- indicator buffersdouble 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); }//+------------------------------------------------------------------+ Ссылка на комментарий Поделиться на другие сайты Поделиться
Vadmin Опубликовано 19 октября, 2005 Автор Жалоба Поделиться Опубликовано 19 октября, 2005 //+------------------------------------------------------------------+//| ZZZ.mq4 |//+------------------------------------------------------------------+#property copyright "Istoniz"#property link "http://www.kg/" #property indicator_chart_window#property indicator_buffers 1#property indicator_color1 Aqua//---- input parametersextern int Length=6; //---- buffersdouble 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); }//+------------------------------------------------------------------+ Ссылка на комментарий Поделиться на другие сайты Поделиться
Vadmin Опубликовано 19 октября, 2005 Автор Жалоба Поделиться Опубликовано 19 октября, 2005 //+------------------------------------------------------------------+//| 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 parametersextern int ExtDepth=12;extern int ExtDeviation=5;extern int ExtBackstep=3;//---- indicator buffersdouble 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; } } } Ссылка на комментарий Поделиться на другие сайты Поделиться
Demix Опубликовано 19 октября, 2005 Жалоба Поделиться Опубликовано 19 октября, 2005 а маленькое описание индикаторов можно? :roll: Ссылка на комментарий Поделиться на другие сайты Поделиться
Vadmin Опубликовано 19 октября, 2005 Автор Жалоба Поделиться Опубликовано 19 октября, 2005 //+------------------------------------------------------------------+//| 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 parametersextern int Lines_Break=3;//---- buffersdouble 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 hereif (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); }//+------------------------------------------------------------------+ Ссылка на комментарий Поделиться на другие сайты Поделиться
Кислотный Опубликовано 19 октября, 2005 Жалоба Поделиться Опубликовано 19 октября, 2005 http://img394.imageshack.us/img394/1899/v1b9cw.gifТАК примерно выглядят?Спасибо. Ссылка на комментарий Поделиться на другие сайты Поделиться
Vadmin Опубликовано 19 октября, 2005 Автор Жалоба Поделиться Опубликовано 19 октября, 2005 а маленькое описание индикаторов можно? :roll: Описания нет,но можно будет по ходу дела их обсуждать на практике.В принципе они интуитивно понятны .Утром вырисовывается ценовой канал.По тактике МФ,смотрим направление на всех временых интервалах скользящих средних и открываемся ,в низ при пробитии синих кружков,в верх при пробитии красных.Ну и ещё какой нить осцилятор прицепить,для более уверенного входа. Ссылка на комментарий Поделиться на другие сайты Поделиться
Prophet Опубликовано 11 июня, 2007 Жалоба Поделиться Опубликовано 11 июня, 2007 Спаисбо Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения