//+--------------------------------------------------------------------------------+ //| RSIOMAv2HHLSX Kalenzo fxtsd.com | //| Hornet(i-RSI) 2007, FxTSD.com; MetaQuotes Software Corp. ik| //| Hist & Levels 20/80;30/70 CrossSig web: http://www.fxservice.eu | //| Rsioma/MaRsioma X sig email: bartlomiej.gorski@gmail.com | //| please, keep your code tidy. mladen | //+--------------------------------------------------------------------------------+ // The base for this indicator was orginal RSI attached with Metatrader. // ^^ removed ^^ :)|-< Hornet #property copyright "Copyright © 2007, MetaQuotes Software Corp." #property link "http://www.metaquotes.net/" #property indicator_separate_window #property indicator_buffers 7 #property indicator_minimum -20 #property indicator_maximum 120 #property indicator_color1 Blue #property indicator_color2 Red #property indicator_color3 Green #property indicator_color4 Magenta #property indicator_color5 DodgerBlue #property indicator_color6 BlueViolet #property indicator_color7 SlateBlue #property indicator_levelcolor SlateGray #property indicator_width1 2 #property indicator_width4 2 #property indicator_width5 2 #property indicator_width7 2 #property indicator_level1 100 #property indicator_level4 50 //---- input parameters // // // // extern int RSIOMA = 14; extern int RSIOMA_MODE = MODE_EMA; extern int RSIOMA_PRICE = PRICE_CLOSE; extern int Ma_RSIOMA = 21; extern int Ma_RSIOMA_MODE = MODE_EMA; extern double BuyTrigger = 80.00; extern double SellTrigger = 20.00; extern color BuyTriggerColor = DodgerBlue; extern color SellTriggerColor = Magenta; extern double MainTrendLong = 70.00; extern double MainTrendShort = 30.00; extern color MainTrendLongColor = Red; extern color MainTrendShortColor = Green; extern double MajorTrend = 50; extern color marsiomaXSigColor = SlateBlue; extern int BarsToCount = 500; //---- buffers // // // // double RSIBuffer[]; double MABuffer1[]; double bdn[]; double bup[]; double sdn[]; double sup[]; double marsioma[]; double marsiomaXSig[]; // // // // // datetime lastBarTime; string short_name; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { short_name = StringConcatenate("RSIOMA(",RSIOMA,")"); IndicatorShortName(short_name); // // // // // SetIndexBuffer(0,RSIBuffer); SetIndexBuffer(2,bup); SetIndexBuffer(1,bdn); SetIndexBuffer(3,sdn);//Magnet SetIndexBuffer(4,sup);//DodgerBlue SetIndexBuffer(5,marsioma); SetIndexBuffer(6,marsiomaXSig); SetIndexStyle(2,DRAW_HISTOGRAM); SetIndexStyle(1,DRAW_HISTOGRAM); SetIndexStyle(3,DRAW_HISTOGRAM); SetIndexStyle(4,DRAW_HISTOGRAM); SetIndexStyle(6,DRAW_ARROW); SetIndexArrow(6,159); SetIndexLabel(0,"Rsioma"); SetIndexLabel(5,"MaRsioma"); SetIndexLabel(1,"TrendDn"); SetIndexLabel(2,"TrendUp"); SetIndexLabel(6,"Up/DnXsig"); // // // additional buffer(s) // // BarsToCount = MathMin(Bars,BarsToCount); ArrayResize( MABuffer1,BarsToCount); ArraySetAsSeries(MABuffer1,true); lastBarTime = EMPTY_VALUE; // // // // // drawLine(BuyTrigger,"BuyTrigger", BuyTriggerColor); drawLine(SellTrigger,"SellTrigger", SellTriggerColor ); drawLine(MainTrendLong,"MainTrendLong", MainTrendLongColor ); drawLine(MainTrendShort,"MainTrendShort",MainTrendShortColor ); return(0); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int start() { int counted_bars=IndicatorCounted(); int limit,i=0; // // // // // if(counted_bars<0) return(-1); if(lastBarTime != Time[0]) { lastBarTime = Time[0]; ArrayInitialize(MABuffer1,0.0); counted_bars = 0; } if(counted_bars>0) counted_bars--; limit=Bars-counted_bars; limit=MathMin(limit,BarsToCount-1); // // // // // for(i=limit;i>=0;i--) MABuffer1[i]=iMA(Symbol(),0,RSIOMA,0,RSIOMA_MODE,RSIOMA_PRICE,i); for(i=limit;i>=0;i--) { RSIBuffer[i]=iRSIOnArray(MABuffer1,0,RSIOMA,i); // // // // // bup[i] = EMPTY_VALUE; bdn[i] = EMPTY_VALUE; sup[i] = EMPTY_VALUE; sdn[i] = EMPTY_VALUE; if(RSIBuffer[i] > 50) bup[i] = 6; if(RSIBuffer[i] < 50) bdn[i] = -6; if(RSIBuffer[i] > MainTrendLong) bup[i] = 12; if(RSIBuffer[i] < MainTrendShort) bdn[i] = -12; if(RSIBuffer[i]<20 && RSIBuffer[i]>RSIBuffer[i+1]) sup[i] = -3; if(RSIBuffer[i]>80 && RSIBuffer[i]<RSIBuffer[i+1]) sdn[i] = 4; if(RSIBuffer[i]>20 && RSIBuffer[i+1]<=20) sup[i] = 5; if(RSIBuffer[i+1]>=80 && RSIBuffer[i]<80) sdn[i] = -5; if(RSIBuffer[i+1]<=MainTrendShort && RSIBuffer[i]>MainTrendShort) sup[i] = 12; if(RSIBuffer[i]<MainTrendLong && RSIBuffer[i+1]>=MainTrendLong) sdn[i] = -12; } // // // // // for(i=limit;i>=0;i--) { marsioma[i] = iMAOnArray(RSIBuffer,0,Ma_RSIOMA,0,Ma_RSIOMA_MODE,i); marsiomaXSig[i] = EMPTY_VALUE; if(RSIBuffer[i+1]<=marsioma[i+1]&&RSIBuffer[i]>marsioma[i]) marsiomaXSig[i] = -8; if(RSIBuffer[i+1]>=marsioma[i+1]&&RSIBuffer[i]<marsioma[i]) marsiomaXSig[i] = 8; } for (i=0;i<indicator_buffers;i++) SetIndexDrawBegin(i,Bars-BarsToCount); return(0); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void drawLine(double lvl,string name, color Col ) { ObjectDelete(name); ObjectCreate(name, OBJ_HLINE, WindowFind(short_name), Time[0], lvl,Time[0], lvl); ObjectSet(name , OBJPROP_STYLE, STYLE_DOT); ObjectSet(name , OBJPROP_COLOR, Col); ObjectSet(name , OBJPROP_WIDTH, 1); }
Sample
Analysis
Market Information Used:
Series array that contains open time of each bar
Indicator Curves created:
Implements a curve of type DRAW_HISTOGRAM
Implements a curve of type DRAW_ARROW
Indicators Used:
Moving average indicator
Relative strength index
Custom Indicators Used:
Order Management characteristics:
Other Features: