Indicators Used
Miscellaneous
0
Views
0
Downloads
0
Favorites
RSIOMA_v3_alerts
//+--------------------------------------------------------------------------------+
//| RSIOMA_v3 by Mladen & fxbs Kalenzo fxtsd.com |
//| Hornet(RSIOnArray) 2007, FxTSD.com MetaQuotes Software Corp. |
//| Hist & Levels 20/80;30/70 CrossSig web: http://www.fxservice.eu |
//| Rsioma/MaRsioma X sig () + alerts email: bartlomiej.gorski@gmail.com |
//+--------------------------------------------------------------------------------+
#property copyright "Copyright © 2007, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net/ Kalenzo|bartlomiej.gorski@gmail.com "
#property indicator_separate_window
#property indicator_buffers 8
#property indicator_minimum -20
#property indicator_maximum 110
#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 Aqua//DeepSkyBlue
#property indicator_color8 DeepPink //Crimson
//
#property indicator_width1 2
#property indicator_width4 2
#property indicator_width5 2
#property indicator_width7 1
#property indicator_width8 1
//
#property indicator_level1 100
#property indicator_level2 80 //76.4
#property indicator_level3 70 //61.8
#property indicator_level4 50
#property indicator_level5 30 //38.2
#property indicator_level6 20 //23.6
#property indicator_levelcolor DarkSlateGray
//------------------------------------------
//---- 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 SellTrigger_OBLevel = 80.00;
extern double BuyTrigger_OSLevel = 20.00;
extern color SellTriggerLevelColor = DodgerBlue;
extern color BuyTriggerLevelColor = Magenta;
extern double MainTrend_OBLevel = 70.00;
extern double MainTrend_OSLevel = 30.00;
extern color MainTrend_OBLevelColor = Green;
extern color MainTrend_OSLevelColor = Red;
extern double MajorTrend = 50;
extern color marsiomaXupSigColor = Aqua; //DeepSkyBlue
extern color marsiomaXdnSigColor = DeepPink; //Crimson
extern int BarsToCount = 1500;
extern bool SoundOnly_WarningAlerts = false; //Alerts
extern bool BoxAlerts = true;
extern bool EmailAlerts = false;
extern bool RSIOMA_MaRsiomaCross = true;
extern bool RSIOMA_TriggerLevelCross = true;
extern bool RSIOMA_MainTrendLevelCross = false;
//---- buffers
//
//
// "indexes"
//
double MABuffer1[];
double RSIBuffer1[];
//
//
// indexes
//
//
double RSIBuffer[];
double bdn[];
double bup[];
double sdn[];
double sup[];
double marsioma[];
double marsiomaXupSig[];
double marsiomaXdnSig[];
//
//
//
//
//
int correction;
datetime lastBarTime;
string short_name;
datetime TimeStamp, TimeStamp1, TimeStamp2;
datetime TimeStampS, TimeStampS1, TimeStampS2;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
short_name = StringConcatenate("RSIOMA [",RSIOMA,"] (",Ma_RSIOMA,")");
IndicatorShortName(short_name);
//
//
//
//
//
SetIndexBuffer(0,RSIBuffer);
SetIndexBuffer(2,bup);
SetIndexBuffer(1,bdn);
SetIndexBuffer(3,sdn);//Magneta
SetIndexBuffer(4,sup);//DodgerBlue
SetIndexBuffer(5,marsioma);
SetIndexBuffer(6,marsiomaXupSig);
SetIndexBuffer(7,marsiomaXdnSig);
SetIndexStyle(2,DRAW_HISTOGRAM);
SetIndexStyle(1,DRAW_HISTOGRAM);
SetIndexStyle(3,DRAW_HISTOGRAM);
SetIndexStyle(4,DRAW_HISTOGRAM);
SetIndexStyle(6,DRAW_ARROW);
SetIndexArrow(6,159);
SetIndexStyle(7,DRAW_ARROW);
SetIndexArrow(7,159);
SetIndexLabel(0,"Rsioma("+RSIOMA+")");
SetIndexLabel(5,"MaRsioma("+Ma_RSIOMA+")");
SetIndexLabel(1,"TrendDn");
SetIndexLabel(2,"TrendUp");
SetIndexLabel(6,"UpXsig");
SetIndexLabel(7,"DnXsig");
//
//
// additional buffer(s)
//
//
correction = RSIOMA+RSIOMA+Ma_RSIOMA;
BarsToCount = MathMin(Bars,MathMax(BarsToCount,300));
ArrayResize( MABuffer1 ,BarsToCount+correction);
ArrayResize( RSIBuffer1,BarsToCount+correction);
ArraySetAsSeries(MABuffer1 ,true);
ArraySetAsSeries(RSIBuffer1,true);
lastBarTime = EMPTY_VALUE;
//
//
//
//
//
return(0);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int start()
{
static bool init=false;
int counted_bars=IndicatorCounted();
int limit,i=0;
//
//
//
//
//
if(!init) {
init=true;
drawLine(BuyTrigger_OSLevel,"BuyTrigger", BuyTriggerLevelColor);
drawLine(SellTrigger_OBLevel,"SellTrigger", SellTriggerLevelColor);
drawLine(MainTrend_OBLevel,"MainTrendLong", MainTrend_OBLevelColor);
drawLine(MainTrend_OSLevel,"MainTrendShort",MainTrend_OSLevelColor);
}
//
//
//
//
//
if(counted_bars<0) return(-1);
if(lastBarTime != Time[0]) {
lastBarTime = Time[0];
counted_bars = 0;
}
if(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;
limit=MathMin(limit,BarsToCount+correction);
//
//
//
//
//
for(i=limit;i>=0;i--)
MABuffer1[i] = iMA(Symbol(),0,RSIOMA,0,RSIOMA_MODE,RSIOMA_PRICE,i);
for(i=limit;i>=0;i--)
RSIBuffer1[i] = iRSIOnArray(MABuffer1,0,RSIOMA,i);
for(i=limit;i>=0;i--)
{
RSIBuffer[i]= RSIBuffer1[i];
marsioma[i] = iMAOnArray(RSIBuffer1,0,Ma_RSIOMA,0,Ma_RSIOMA_MODE,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] > MainTrend_OBLevel) bup[i] = 12;
if(RSIBuffer[i] < MainTrend_OSLevel) 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]<=MainTrend_OSLevel && RSIBuffer[i]>MainTrend_OSLevel) sup[i] = 12;
if(RSIBuffer[i+1]>=MainTrend_OBLevel && RSIBuffer[i]<MainTrend_OBLevel ) sdn[i] = -12;
marsiomaXupSig[i] = EMPTY_VALUE;
marsiomaXdnSig[i] = EMPTY_VALUE;
if(RSIBuffer[i+1]<=marsioma[i+1] && RSIBuffer[i]>marsioma[i]) marsiomaXupSig[i] = -11;
if(RSIBuffer[i+1]>=marsioma[i+1] && RSIBuffer[i]<marsioma[i]) marsiomaXdnSig[i] = 11;
//-------------- Alerts -------------
// warning alerts, sound only (open bar)
if(RSIBuffer[1]<=marsioma[1] && RSIBuffer[0]>marsioma[0]
&& TimeStampS != Time[0]&& Volume[0]>1)
{
if (SoundOnly_WarningAlerts) PlaySound("alert2.wav");
TimeStampS = Time[0];
}
if(RSIBuffer[1]>=marsioma[1] && RSIBuffer[0]<marsioma[0]
&& TimeStampS != Time[0]&& Volume[0]>1)
{
if (SoundOnly_WarningAlerts) PlaySound("alert2.wav");
TimeStampS = Time[0];
}
if(RSIBuffer[1]>=SellTrigger_OBLevel && RSIBuffer[0]<SellTrigger_OBLevel
&& TimeStampS1 != Time[0]&& Volume[0]>1)
{
if (SoundOnly_WarningAlerts) PlaySound("alert2.wav");
TimeStampS1 = Time[0];
}
if(RSIBuffer[1]<=BuyTrigger_OSLevel && RSIBuffer[0]>BuyTrigger_OSLevel
&& TimeStampS1 != Time[0]&& Volume[0]>1)
{
if (SoundOnly_WarningAlerts) PlaySound("alert2.wav");
TimeStampS1 = Time[0];
}
if(RSIBuffer[1]>=MainTrend_OBLevel && RSIBuffer[0]<MainTrend_OBLevel
&& TimeStampS2 != Time[0]&& Volume[0]>1)
{
if (SoundOnly_WarningAlerts) PlaySound("alert2.wav");
TimeStampS2 = Time[0];
}
if(RSIBuffer[2]<=MainTrend_OSLevel && RSIBuffer[1]>MainTrend_OSLevel
&& TimeStampS2 != Time[0]&& Volume[0]>1)
{
if (SoundOnly_WarningAlerts) PlaySound("alert2.wav");
TimeStampS2 = Time[0];
}
//-- Box with e-male
string alertmessage = "RSIOMA " +Symbol()+" chart M"+Period()+" Bid price "+DoubleToStr(Bid,4)+" " ;
if(RSIBuffer[2]<=marsioma[2] && RSIBuffer[1]>marsioma[1]
&& TimeStamp != Time[0]&& Volume[0]>1)
{
alertmessage = (alertmessage +" RSIOMA_Crossed_MaRsioma_Up");
if (BoxAlerts && RSIOMA_MaRsiomaCross) Alert (alertmessage);
if (EmailAlerts) SendMail (alertmessage,"");
TimeStamp = Time[0];
}
if(RSIBuffer[2]>=marsioma[2] && RSIBuffer[1]<marsioma[1]
&& TimeStamp != Time[0]&& Volume[0]>1)
{
alertmessage = (alertmessage +" RSIOMA_Crossed_MaRsioma_Dn");
if (BoxAlerts && RSIOMA_MaRsiomaCross) Alert (alertmessage);
if (EmailAlerts) SendMail (alertmessage,"");
TimeStamp = Time[0];
}
if(RSIBuffer[2]>=SellTrigger_OBLevel && RSIBuffer[1]<SellTrigger_OBLevel
&& TimeStamp1 != Time[0]&& Volume[0]>1)
{
alertmessage = (alertmessage +" RSIOMA_Crossed_SellTriggerOBLevel_Dn");
if (BoxAlerts && RSIOMA_TriggerLevelCross) Alert (alertmessage);
if (EmailAlerts) SendMail (alertmessage,"");
TimeStamp1 = Time[0];
}
if(RSIBuffer[2]<=BuyTrigger_OSLevel && RSIBuffer[1]>BuyTrigger_OSLevel
&& TimeStamp1 != Time[0]&& Volume[0]>1)
{
alertmessage = (alertmessage +" RSIOMA_Crossed_BuyTriggerOSLevel_Up");
if (BoxAlerts && RSIOMA_TriggerLevelCross) Alert (alertmessage);
if (EmailAlerts) SendMail (alertmessage,"");
TimeStamp1 = Time[0];
}
if(RSIBuffer[2]>=MainTrend_OBLevel && RSIBuffer[1]<MainTrend_OBLevel
&& TimeStamp2 != Time[0]&& Volume[0]>1)
{
alertmessage = (alertmessage +" RSIOMA_Crossed_MainTrend_OBLevel_Dn");
if (BoxAlerts && RSIOMA_TriggerLevelCross) Alert (alertmessage);
if (EmailAlerts) SendMail (alertmessage,"");
TimeStamp2 = Time[0];
}
if(RSIBuffer[2]<=MainTrend_OSLevel && RSIBuffer[1]>MainTrend_OSLevel
&& TimeStamp2 != Time[0]&& Volume[0]>1)
{
alertmessage = (alertmessage +" RSIOMA_Crossed_MainTrend_OSLevel_Up");
if (BoxAlerts && RSIOMA_TriggerLevelCross) Alert (alertmessage);
if (EmailAlerts) SendMail (alertmessage,"");
TimeStamp2 = Time[0];
}
//--------------
//
//
//
//
//
}
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);
}
Comments
Markdown Formatting Guide
# H1
## H2
### H3
**bold text**
*italicized text*
[title](https://www.example.com)

`code`
```
code block
```
> blockquote
- Item 1
- Item 2
1. First item
2. Second item
---