//æææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ // MA_RSI_BB.mq4 Èíäèêàòîð. // Ïîñòðîåí íà îñíîâå ñòàíäàðíûõ èíäèêàòîðîâ RSI è  îò MetaQuotes Software Corp. // ÌÀ ñòðîèòñÿ ïî öåíàì çàêðûòèÿ. RSI ñòðîèòñÿ íà îñíîâå ÌÀ. // Ëèíèè BB ñòðîÿòñÿ íà îñíîâå ìàññèâà RSI. // Ñåðãåé Êîâàë¸â, Äíåïðîïåòðîâñê, sk@autograf.dp.ua, ICQ 64015987, http://autograf.dp.ua //ææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ 0 ææ #property copyright "Copyright SK AutoGraf © 2008" #property link "http://autograf.dp.ua/" #property indicator_separate_window // Èíäèêàïòîð â îòäåëüíîì îêíå #property indicator_minimum 0 // Óðîâåíü ìèíèìóì #property indicator_maximum 100 // Óðîâåíü ìàêñèìóì #property indicator_buffers 6 // Êîëè÷åñòâî áóôåðîâ 6 //================================================================================== 1 == #property indicator_color1 Gold // Öâåò äëÿ RSI extern int MA_period= 2; // Ïåðèîä ÌÀ (ðàñ÷¸ò íå ïî Close,à ïî ÌÀ) extern int RSIPeriod=14; // Ïåðèîä äëÿ ðàñ÷¸òà RSI extern int Level_1 = 70; // Óðîâåíü 1 extern int Level_2 = 30; // Óðîâåíü 2 double RSIBuffer[]; // Áóôåð äëÿ ðàñ÷¸òà ëèíèè RSI double PosBuffer[]; // Òåõíè÷åñêèé áóôåð double NegBuffer[]; // Òåõíè÷åñêèé áóôåð //---------------------------------------------------------------------------------- 2 -- #property indicator_color4 Aqua // Öâåò âåðõíåé ëèíèè  #property indicator_color5 Lime // Öâåò ñðåäíåé ëèíèè  #property indicator_color6 Aqua // Öâåò íèæíåé ëèíèè  extern int BandsPeriod=20; // Ïåðèîä äëÿ ðàñ÷¸òà  extern double K_Dev=1.5; // Êîýôôèöèåíò óâåëè÷. äëÿ âíåøíèõ ëèíèé double Up_Buffer[]; // Áóôåð äëÿ ðàñ÷¸òà âåðõíåé ëèíèè  double MovingBuffer[]; // Áóôåð äëÿ ðàñ÷¸òà ñðåäíåé ëèíèè  double Dn_Buffer[]; // Áóôåð äëÿ ðàñ÷¸òà íèæíåé ëèíèè  //ææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ 3 ææ int init() { //================================================================================== 4 == string short_name="MA_RSI_BB("+MA_period+","+RSIPeriod+","+BandsPeriod+","+K_Dev+")"; IndicatorShortName(short_name); // Óñòàíîâêà êîðîòêîãî èìåíè SetLevelValue(1, Level_1); // Óñòàíîâêà óðîâíÿ 1 SetLevelValue(2, Level_2); // Óñòàíîâêà óðîâíÿ 2 //---------------------------------------------------------------------------------- 5 -- SetIndexStyle(0,DRAW_LINE); // Ñòèëü ëèíèè SetIndexBuffer(0,RSIBuffer); // Ñâÿçü íîìåðà áóôåðà ñ íàçâ. ìàññèâà SetIndexDrawBegin(0,RSIPeriod); // Íà÷àëî îòðèñîâêè ëèíèè RSI SetIndexBuffer(1,PosBuffer); // Ñâÿçü íîìåðà áóôåðà ñ íàçâ. ìàññèâà SetIndexBuffer(2,NegBuffer); // Ñâÿçü íîìåðà áóôåðà ñ íàçâ. ìàññèâà //---------------------------------------------------------------------------------- 6 -- SetIndexStyle(3,DRAW_LINE); // Ñòèëü ëèíèè SetIndexBuffer(3,Up_Buffer); // Ñâÿçü íîìåðà áóôåðà ñ íàçâ. ìàññèâà SetIndexDrawBegin(3,BandsPeriod); // Íà÷àëî îòðèñîâêè âåðõíåé ëèíèè BB SetIndexStyle(4,DRAW_LINE); // Ñòèëü ëèíèè SetIndexBuffer(4,MovingBuffer); // Ñâÿçü íîìåðà áóôåðà ñ íàçâ. ìàññèâà SetIndexDrawBegin(4,BandsPeriod); // Íà÷àëî îòðèñîâêè ñðåäíåé ëèíèè BB SetIndexStyle(5,DRAW_LINE); // Ñòèëü ëèíèè SetIndexBuffer(5,Dn_Buffer); // Ñâÿçü íîìåðà áóôåðà ñ íàçâ. ìàññèâà SetIndexDrawBegin(5,BandsPeriod); // Íà÷àëî îòðèñîâêè íèæíåé ëèíèè BB //================================================================================== 7 == return; } //ææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ 8 ææ int start() { //================================================================================== 9 == if(Bars<=RSIPeriod || Bars<=MA_period || Bars<=BandsPeriod) // Åñëè íåäîñòàòî÷íî áàðîâ return; // Óõîäèì int counted_bars=IndicatorCounted(); // Êîëè÷åñòâî íåèçìåí¸ííûõ áàðîâ int i=Bars-counted_bars-1; // Èíäåêñ ïîñëåäíåãî íåïîñ÷èòàííîãî áàðà //--------------------------------------------------------------------------------- 10 -- while(i>=0) // Öèêë äëÿ âû÷èñëåíèÿ áóôåðîâ { double sumn=0.0,sump=0.0; // Òåõíè÷åñêèå ïåðåìåííûå double MA_n = iMA(NULL, 0, MA_period, 0, MODE_SMMA, PRICE_CLOSE, i);// Òåêóùèé áàð double MA_n1= iMA(NULL, 0, MA_period, 0, MODE_SMMA, PRICE_CLOSE, i+1);// Ïðåäûäóùèé double rel = MA_n - MA_n1; // Ðàçíèöà ÌÀ if(rel>0) sump=rel; // Äâèæåíèå ââåðõ else sumn=-rel; // Äâèæåíèå âíèç double positive=(PosBuffer[i+1]*(RSIPeriod-1)+sump)/RSIPeriod;// Ìåòîä ðàñ÷¸òà íà double negative=(NegBuffer[i+1]*(RSIPeriod-1)+sumn)/RSIPeriod;// îñíîâå ñòàíä. RSI PosBuffer[i]=positive; // Òåõíè÷. áóôåð íå âûâîäèòñÿ â âèäå ëèíè NegBuffer[i]=negative; // Òåõíè÷. áóôåð íå âûâîäèòñÿ â âèäå ëèíè if(negative==0.0) RSIBuffer[i]=0.0; // Àíàëèç äåëåíèÿ íà 0 ïðè âû÷èñë. RSI else RSIBuffer[i]=100.0-100.0/(1+positive/negative);// Âû÷èñëåíèå RSI //--------------------------------------------------------------------------------- 11 -- MovingBuffer[i]= 50; // Ïðèíÿòûé âàðèàíò - ñðåäíÿÿ ãîðèçîíàëüí // MovingBuffer[i]= RSIBuffer[i]; // 2é âàðèàíò - ñðåäíÿÿ = RSI double sum=0.0; // Òåõí. ïåðåìåííàÿ int k = i+BandsPeriod-1; // Èíäåêñ ïîñëåäíåãî áàðà äëÿ ðàñ÷¸òà while(k>=i) // Öèêë äëÿ âû÷èñë. ñóììû êâàäðàòîâ îòêë. { double newres = RSIBuffer[k] - MovingBuffer[i]; // Îòêëîíåíèå sum += newres*newres; // Ñóììà êâàäðàòîâ îòêëîíåíèé k--; } double deviation=K_Dev*MathSqrt(sum/BandsPeriod); // Ñðåäíåå îòêëîíåíèå Up_Buffer[i]= MovingBuffer[i] + deviation;// Âåðõíÿÿ ëèíèÿ Dn_Buffer[i]= MovingBuffer[i] - deviation;// Íèæíÿÿ ëèíèÿ i--; } //================================================================================= 12 == return; } //ææææææææææææææææææææææææææææææææææææ Êîíåö ìîäóëÿ æææææææææææææææææææææææææææææææ 13 ææ
Sample
Analysis
Market Information Used:
Indicator Curves created:
Implements a curve of type DRAW_LINE
Indicators Used:
Moving average indicator
Custom Indicators Used:
Order Management characteristics:
Other Features: