/*Тут покумекал и сделал на индикаторе уровни ещё один сигнализатор входов. Похоже он самый надёжный из ранее предложенных, но и самый опаздывающий. Подробнее о его использовании. Выставляете три индикатора на чарт(ADXCross, NDuet и SUrovny) Два первых ставят стрелки на входы в интервале 1-2 бара друг от друга - это вход с перекресным подтверждение и по нему входим. Также на чарте строим ЕМА55 (она участвует, но буфера не хватает для неё) Третий индикатор будет ставить свою стрелку с подтверждение много позже, но надёжно. Если подтверждения первых 2-х сигналов от третьего индикатора не поступило и цена развернулась и ЕМА55 ушла внутрь канала - закрыться по рынку - это будет или ноль или небольшой плюс или небольшой минус и ждать следующего сигнала. Такая тактика даёт возможность избежать больших рисков и просадок, а также не нужен стоп - стопом будет положение ЕМА55 по отношению к каналу. */ //+------------------------------------------------------------------+ //| NDuet.mq4 | //| Copyright © 2006, Tartan | //+------------------------------------------------------------------+ #property copyright "Copyright © 2005, MetaQuotes Software Corp." #property link "http://www.metaquotes.net" //---- #property indicator_separate_window #property indicator_buffers 4 //---- extern int sper=55; extern int fper=21; extern int nBar=300; extern int depth=15; extern int deviation=5; extern int backstep=3; extern int per=14; //+------------------------------------------------------------------+ //| Local variables | //+------------------------------------------------------------------+ //double Close = 0; //double High = 0; //double Low = 0; int shift=0; double i=0; double mas=0; double maf=0; double zz=0; double zzold=0; double mstwo=0; double mftwo=0; double blokb=0; double bloks=0; double cci=0; double trend=0; //---- buffers double ExtMapBuffer[]; double ExtMapBuffer2[]; double ExtMapBuffer3[]; double ExtMapBuffer4[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators IndicatorBuffers(2); SetIndexStyle(0,DRAW_LINE,EMPTY,EMPTY,Lime); SetIndexStyle(1,DRAW_LINE,EMPTY,EMPTY,Red); SetIndexBuffer(0,ExtMapBuffer); SetIndexBuffer(1,ExtMapBuffer2); SetIndexStyle(3,DRAW_ARROW,EMPTY,1,Aqua); SetIndexArrow(3,241); SetIndexBuffer(3,ExtMapBuffer3); SetIndexLabel(3,"UpArrow"); // SetIndexEmptyValue(3,0.0); SetIndexStyle(4,DRAW_ARROW,EMPTY,1,Red); SetIndexArrow(4,242); SetIndexBuffer(4,ExtMapBuffer4); SetIndexLabel(4,"DownArrow"); // SetIndexEmptyValue(4,0.0); //---- 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(); //---- for(shift=nBar;shift>=0 ;shift--) { if(zz!=0 && zzold!=zz)zzold=zz; zz=iCustom(NULL, 0, "ZigZag",depth,deviation,backstep,shift); cci=iCCI(NULL, 0, per, PRICE_CLOSE, shift); trend=((Close[shift+fper]-Close[shift])/Point); mas=iMA(NULL, 0, sper, 0, MODE_EMA, PRICE_CLOSE, shift); mstwo=iMA(NULL, 0, sper, 0, MODE_EMA, PRICE_CLOSE, shift+2); //---- maf=iMA(NULL, 0, fper, 0, MODE_EMA, PRICE_CLOSE, shift); mftwo=iMA(NULL, 0, fper, 0, MODE_EMA, PRICE_CLOSE, shift+2); //---- ExtMapBuffer[shift]=mas; ExtMapBuffer2[shift]=maf; //---- if(mas>maf && ((mas-maf)/Point)<10 && ((mas-maf)/Point)>0 && mstwo0 && bloks==0) { bloks=1;blokb=0; ExtMapBuffer3[shift]=High[shift]+3*Point; } if(mas0 && mstwo>mftwo && cci>0 && trend<0 && blokb==0 ) { blokb=1;bloks=0; ExtMapBuffer4[shift]=Low[shift]-3*Point; } } //---- return(0); } //+------------------------------------------------------------------+