_StochSlave





#property indicator_separate_window // â ïîäîêíå
#property indicator_buffers 6
#property indicator_color1 Blue // ñòîõàñòèê
#property indicator_color2 Magenta // óïðàâëÿþùèé ñèãíàë
#property indicator_color3 Green // óðîâåíü ïåðåêóïëåííîñòè
#property indicator_color4 Red // óðîâåíü ïåðåïðîäàííîñòè
#property indicator_maximum 100
#property indicator_minimum 0

// Âîõîäíûå ïàðàìåòðû MasterSlave
extern int Source=1; // 0 - îáúåì; 1 - ñò.äåâèàöèÿ öåíû; 2 - ATR; 3 - öåíà; 
extern int SourcePeriod=88; // ïåðèîä âõîäíîãî èíäèêàòîðà
extern int Window=111; // äëèíà âûáîðêè íîðìèðîâàíèÿ
extern double Sensitivity=0; // ÷óâñòâèòåëüíîñòü
extern int Signal=55; // ñãëàæèâàíèå íîðìèðîâàííîãî èíäèêàòîðà (ñèãíàëüíàÿ)
// Âõîäíûå ïàðàìåòðû ñòîõàñòèêà
extern int KperiodFrom=22; // íà÷àëüíîå çíà÷åíèå %K
extern int KperiodTo=5; // êîíå÷íîå
extern int SlowingFrom=12; // íà÷àëüíîå çíà÷åíèå Slowing
extern int SlowingTo=3; // êîíå÷íîå
extern int OverSoldFrom=3; // íà÷àëüíîå çíà÷åíèå óðîâíÿ ïåðåïðîäàííîñòè
extern int OverSoldTo=22; // êîíå÷íîå

// èíäèêàòîðíûå áóôåðû
double Stoch[]; // ñòîõàñòèê
double Master[]; // óïðàâëÿþùèé ñèãíàë
double OB[]; // óðîâåíü ïåðåêóïëåííîñòè
double OS[]; // óðîâåíü ïåðåïðîäàííîñòè
double K[]; // %Ê ñòîõàñòèêà
double Slow[]; // Slowing ñòîõàñòèêà

bool first=1; // ôëàã ïåðâîãî çàïóñêà èíäèêàòîðà

int init() {
   SetIndexBuffer(0,Stoch); SetIndexStyle(0,DRAW_LINE); SetIndexLabel(0,"Stoch");
   SetIndexBuffer(1,Master); SetIndexStyle(1,DRAW_LINE); SetIndexLabel(1,"Master");
   SetIndexBuffer(2,OB); SetIndexStyle(2,DRAW_LINE,2); SetIndexLabel(2,"OB");
   SetIndexBuffer(3,OS); SetIndexStyle(3,DRAW_LINE,2); SetIndexLabel(3,"OS");
   SetIndexBuffer(4,K); SetIndexStyle(4,DRAW_NONE); SetIndexLabel(4,"%K");
   SetIndexBuffer(5,Slow); SetIndexStyle(5,DRAW_NONE); SetIndexLabel(5,"Slow");
   return(0);
  }

int start() {
   int ic=IndicatorCounted();
   if(!first && Bars-ic>2) ic=reinit(); // åñëè åñòü ïðîïóùåííûå áàðû íå íà ïîäêëþ÷åíèè (â ðàáîòå)
   
   int limit=Bars-ic-1;
   for(int i=limit; i>=0; i--) {
      // óïðàâëÿþùèé ñèãíàë
      double k=iCustom(NULL,0,"_MasterSlave",Source,SourcePeriod,Window,Sensitivity,Signal, 0,i); Master[i]=100*k;
      // Óïðàâëÿåìûå ïàðàìåòðû Ñòîõàñòèêà
      int Kperiod=KperiodFrom+k*(KperiodTo-KperiodFrom); K[i]=Kperiod; // %K ñòîõàñòêà
      int Slowing=SlowingFrom+k*(SlowingTo-SlowingFrom); Slow[i]=Slowing; // Slowing ñòîõàñòèêà
      OS[i]=OverSoldFrom+k*(OverSoldTo-OverSoldFrom); OB[i]=100-OS[i]; // óðîâíè ÏÏ/ÏÊ
      // Ñòîõàñòèê
      Stoch[i]=iStochastic(NULL,0,Kperiod,1,Slowing,0,0, 0,i);
     }
   first=0; // ñáðîñ ôëàãà ïåðâîãî ïîäêëþ÷åíèÿ
   return(0);
  }
//+------------------------------------------------------------------+
  
int reinit() { // äîïîëíèòåëüíàÿ èíèöèàëèçàöèÿ
   ArrayInitialize(Stoch,0.0); 
   ArrayInitialize(Master,0.0); 
   ArrayInitialize(OB,0.0); 
   ArrayInitialize(OS,0.0); 
   ArrayInitialize(K,0.0); 
   ArrayInitialize(Slow,0.0); 
   
   return(0);
  }



Sample





Analysis



Market Information Used:



Indicator Curves created:

Implements a curve of type DRAW_LINE

Implements a curve of type DRAW_NONE

Indicators Used:


Stochastic oscillator


Custom Indicators Used:
_MasterSlave

Order Management characteristics:

Other Features: