/*Тут покумекал и сделал на индикаторе уровни ещё один сигнализатор входов. Похоже он самый надёжный из ранее предложенных, но и самый опаздывающий. Подробнее о его использовании. Выставляете три индикатора на чарт(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); } //+------------------------------------------------------------------+