Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //+------------------------------------------------------------------+
- //| Indicator: Stochastic Alert.mq4 |
- //| Created with EABuilder.com |
- //| http://eabuilder.com |
- //+------------------------------------------------------------------+
- #property copyright "Created with EABuilder.com"
- #property link "http://eabuilder.com"
- #property version "1.00"
- #property description ""
- #include
- #include
- //--- indicator settings
- #property indicator_chart_window
- #property indicator_buffers 2
- #property indicator_type1 DRAW_ARROW
- #property indicator_width1 3
- #property indicator_color1 0x1A7D29
- #property indicator_label1 "Buy"
- #property indicator_type2 DRAW_ARROW
- #property indicator_width2 3
- #property indicator_color2 0x0000FF
- #property indicator_label2 "Sell"
- //--- indicator buffers
- double Buffer1[];
- double Buffer2[];
- extern int LookBack = 5000;
- datetime time_alert; //used when sending alert
- extern bool Audible_Alerts = true;
- input bool EnableNativeAlerts = true;
- input string SoundFileName = "Bicycle-Bell-Ringingt.wav";
- double myPoint; //initialized in OnInit
- void myAlert(string type, string message)
- {
- if(type == "print")
- Print(message);
- else if(type == "error")
- {
- Print(type+" | Stochastic Alert @ "+Symbol()+","+Period()+" | "+message);
- }
- else if(type == "order")
- {
- }
- else if(type == "modify")
- {
- }
- else if(type == "indicator")
- {
- if(Audible_Alerts) { PlaySound("Bicycle-Bell-Ringing.wav"); Alert(type+" | Stochastic Alert @ "+Symbol()+","+Period()+" | "+message); }
- }
- }
- //+------------------------------------------------------------------+
- //| Custom indicator initialization function |
- //+------------------------------------------------------------------+
- int OnInit()
- {
- IndicatorBuffers(2);
- SetIndexBuffer(0, Buffer1);
- SetIndexEmptyValue(0, 0);
- SetIndexArrow(0, 241);
- SetIndexBuffer(1, Buffer2);
- SetIndexEmptyValue(1, 0);
- SetIndexArrow(1, 242);
- //initialize myPoint
- myPoint = Point();
- if(Digits() == 5 || Digits() == 3)
- {
- myPoint *= 10;
- }
- return(INIT_SUCCEEDED);
- }
- //+------------------------------------------------------------------+
- //| Custom indicator iteration function |
- //+------------------------------------------------------------------+
- int OnCalculate(const int rates_total,
- const int prev_calculated,
- const datetime& time[],
- const double& open[],
- const double& high[],
- const double& low[],
- const double& close[],
- const long& tick_volume[],
- const long& volume[],
- const int& spread[])
- {
- int limit = rates_total - prev_calculated;
- //--- counting from 0 to rates_total
- ArraySetAsSeries(Buffer1, true);
- ArraySetAsSeries(Buffer2, true);
- //--- initial zero
- if(prev_calculated = 0; i--)
- {
- if (i >= MathMin(LookBack, rates_total-1-50)) continue; //omit some old rates to prevent "Array out of range" or slow calculation
- //Indicator Buffer 1
- if(iStochastic(NULL, PERIOD_CURRENT, 13, 1, 3, MODE_SMA, 0, MODE_MAIN, i) > 20
- && iStochastic(NULL, PERIOD_CURRENT, 13, 1, 3, MODE_SMA, 0, MODE_MAIN, i+1) = 20 //Stochastic Oscillator >= fixed value
- )
- {
- Buffer1[i] = Low[i] - iATR(NULL, PERIOD_CURRENT, 14, i); //Set indicator value at Candlestick Low - Average True Range
- if(i == 0 && Time[0] != time_alert) { myAlert("indicator", "Buy"); time_alert = Time[0]; PlaySound("Bicycle-Bell-Ringing.wav"); } //Instant alert, only once per bar
- }
- else
- {
- Buffer1[i] = 0;
- }
- //Indicator Buffer 2
- if(iStochastic(NULL, PERIOD_CURRENT, 13, 1, 3, MODE_SMA, 0, MODE_MAIN, i) 80 //Stochastic Oscillator crosses below fixed value
- && iStochastic(NULL, PERIOD_CURRENT, 8, 1, 3, MODE_SMA, 0, MODE_MAIN, i) <= 80 //Stochastic Oscillator <= fixed value
- )
- {
- Buffer2[i] = High[i] + iATR(NULL, PERIOD_CURRENT, 14, i); //Set indicator value at Candlestick High + Average True Range
- if(i == 0 && Time[0] != time_alert) { myAlert("indicator", "Sell"); time_alert = Time[0]; PlaySound("Bicycle-Bell-Ringing.wav"); } //Instant alert, only once per bar
- }
- else
- {
- Buffer2[i] = 0;
- }
- }
- return(rates_total);
- }
- //+------------------------------------------------------------------+
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement