//+------------------------------------------------------------------+ //| ExCandles.mq4 | //| Copyright © 2006, Alex Sidd (Executer) | //| http://www.metaquotes.net/ | //+------------------------------------------------------------------+ #property copyright "Copyright © 2006, Alex Sidd (Executer)" #property link "mailto:work_st@mail.ru" //---- #property indicator_chart_window #property indicator_buffers 1 #property indicator_color1 Black //---- input parameters int ExPeriod = 10; //---- buffers double CCodeBuffer[]; //+------------------------------------------------------------------+ //| initialization function | //+------------------------------------------------------------------+ int init() { string short_name; IndicatorBuffers(1); SetIndexStyle(0, DRAW_NONE); SetIndexBuffer(0, CCodeBuffer); SetIndexDrawBegin(0, ExPeriod); short_name = "ExCandles"; IndicatorShortName(short_name); SetIndexLabel(0, short_name); //---- return(0); } //+------------------------------------------------------------------+ //| deinitialization function | //+------------------------------------------------------------------+ int deinit() { ObjectsDeleteAll(0, OBJ_ARROW); //---- return(0); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ bool IsViselnik(int i1, int i2) { if((Open[i1] - Close[i1] > 0) && ((High[i1] - Open[i1])*100 / (Open[i1] - Close[i1] + 0.0000001) < 15) && ((Close[i1] - Low[i1])*100 / (Open[i1] - Close[i1] + 0.0000001) > 200) && (Open[i2] - Close[i2] < 0)) return(true); else return(false); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ bool IsHummer(int i1, int i2) { if((Open[i1] - Close[i1] < 0) && ((High[i1] - Close[i1])*100 / (Close[i1] - Open[i1] + 0.0000001) > 200) && ((Open[i1] - Low[i1])*100 / (Close[i1] - Open[i1] + 0.0000001) < 15) && (Open[i2] - Close[i2] > 0)) return(true); else return(false); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ bool IsBear(int i1, int i2, int i3) { if((Open[i2] - Close[i2] > 0) && (Open[i2] >= Close[i3]) && (Close[i2] <= Open[i3]) && (Open[i3] - Close[i3] < 0) && ((Open[i2] - Close[i2]) / (Close[i3] - Open[i3] + 0.0000001) > 1.5)) return(true); else return(false); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ bool IsBull(int i1, int i2, int i3) { if((Open[i2] - Close[i2] < 0) && (Open[i3] - Close[i3] > 0) && (Close[i2] >= Open[i3]) && (Open[i2] <= Close[i3]) && ((Close[i2] - Open[i2]) / (Open[i3] - Close[i3] + 0.0000001) > 1.5)) return(true); else return(false); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ bool Zavesa_black(int i1, int i2) { if((Open[i1] - Close[i1] > 0) && (Open[i2] - Close[i2] < 0) && ((Close[i2] - Open[i2]) / (High[i2] - Low[i2]) > 0.6) && (Open[i1] > High[i2]) && (Close[i1] < (Open[i2] + (Close[i2] - Open[i2])/2))) return(true); else return(false); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ bool Prosvet(int i1, int i2, int i3) { if((Open[i1] - Close[i1] < 0) && (Open[i2] - Close[i2] > 0) && ((Open[i2] - Close[i2]) / (High[i2] - Low[i2]) > 0.6) && (Open[i1] < Low[i2]) && (Close[i1] > (Close[i2] + (Open[i2] - Close[i2]) / 2))) return(true); else return(false); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ bool morning_star(int i1, int i2, int i3) { if((Open[i3] - Close[i3] > 0) && (Close[i2] - Open[i2] > 0) && (Close[i1] - Open[i1] > 0) && (Close[i2] < Close[i3]) && (Open[i1] > Close[i2]) && (((MathAbs(Open[i3] - Close[i1]) + MathAbs(Open[i1] - Close[i3])) / (Open[i3] - Close[i3] + 0.0000001)) < 0.1) && ((Open[i3] - Close[i3]) / (High[i3] - Low[i3]) > 0.8) && ((Close[i2] - Open[i2]) / (High[i2] - Low[i2]) < 0.3) && (Close[i1] - Open[i1]) / (High[i1] - Low[i1]) > 0.8) return(true); else return(false); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ bool evening_star(int i1, int i2, int i3) { if((Open[i3] - Close[i3] < 0) && (Close[i2] - Open[i2] < 0) && (Close[i1] - Open[i1] < 0) && (Close[i2] > Close[i3]) && (Open[i1] < Close[i2]) && (((MathAbs(Open[i3] - Close[i1]) + MathAbs(Open[i1] - Close[i3])) / (Close[i3] - Open[i3] + 0.0000001)) < 0.1) && ((Close[i3] - Open[i3]) / (High[i3] - Low[i3]) > 0.8) && ((Open[i2] - Close[i2]) / (High[i2] - Low[i2]) < 0.3) && ((Open[i1] - Close[i1]) / (High[i1] - Low[i1]) > 0.8)) return(true); else return(false); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ bool IsEveningDodgiStar(int i1, int i2, int i3) { if((Open[i3] - Close[i3] < 0) && (Close[i2] - Open[i2] == 0) && (Close[i1] - Open[i1] < 0) && (Close[i2] >= Close[i3]) && (Open[i1] <= Close[i2]) && (((MathAbs(Open[i3] - Close[i1]) + MathAbs(Open[i1] - Close[i3])) / (Open[i3] - Close[i3] + 0.0000001)) < 0.1)) return(true); else return(false); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ bool IsMorningDodgiStar(int i1, int i2, int i3) { if((Open[i3] - Close[i3] > 0) && (Close[i2] - Open[i2] == 0) && (Close[i1] - Open[i1] > 0) && (Close[i2] <= Close[i3]) && (Open[i1] >= Close[i2]) && (((MathAbs(Open[i3] - Close[i1]) + MathAbs(Open[i1] - Close[i3])) / (Open[i3] - Close[i3] + 0.0000001)) < 0.1)) return(true); else return(false); } //+------------------------------------------------------------------+ //| Executer Candles Indicator | //+------------------------------------------------------------------+ int start() { int i, counted_bars = IndicatorCounted(); double negative = 0, positive = 0; //---- if(Bars <= ExPeriod) return(0); if(counted_bars < 1) for(i = 1; i <= ExPeriod; i++) CCodeBuffer[Bars-i] = 0.0; //---- i = Bars - ExPeriod - 1; if(counted_bars >= ExPeriod) i = Bars - counted_bars - 1; while(i >= 0) { if(IsViselnik(i, i + 1) == true) { ObjectCreate("Âèñåëüíèê" + i, OBJ_ARROW, 0, Time[i], High[i] + 20*Point); ObjectSet("Âèñåëüíèê" + i, OBJPROP_ARROWCODE, SYMBOL_ARROWDOWN); ObjectSet("Âèñåëüíèê" + i, OBJPROP_COLOR, Red); CCodeBuffer[i] = 1; } if(IsHummer(i, i + 1) == true) { ObjectCreate("Ìîëîò" + i, OBJ_ARROW, 0, Time[i], Low[i] - 20*Point); ObjectSet("Ìîëîò" + i, OBJPROP_ARROWCODE, SYMBOL_ARROWUP); ObjectSet("Ìîëîò" + i, OBJPROP_COLOR, Blue); CCodeBuffer[i] = 2; } if(IsBear(i - 1, i, i + 1) == true) { ObjectCreate("Ìåäâåæüå ïîãëîùåíèå" + i, OBJ_ARROW, 0, Time[i], High[i] + 20*Point); ObjectSet("Ìåäâåæüå ïîãëîùåíèå" + i, OBJPROP_ARROWCODE, SYMBOL_ARROWDOWN); ObjectSet("Ìåäâåæüå ïîãëîùåíèå" + i, OBJPROP_COLOR, Red); CCodeBuffer[i] = 3; } if(IsBull(i - 1, i, i + 1) == true) { ObjectCreate("Áû÷üå ïîãëîùåíèå" + i, OBJ_ARROW, 0, Time[i], Low[i] - 20*Point); ObjectSet("Áû÷üå ïîãëîùåíèå" + i, OBJPROP_ARROWCODE, SYMBOL_ARROWUP); ObjectSet("Áû÷üå ïîãëîùåíèå" + i, OBJPROP_COLOR, Blue); CCodeBuffer[i] = 4; } if(Zavesa_black(i, i + 1) == true) { ObjectCreate("Çàâåñà èç òåìíûõ îáëàêîâ" + i, OBJ_ARROW, 0, Time[i], High[i] + 20*Point); ObjectSet("Çàâåñà èç òåìíûõ îáëàêîâ" + i, OBJPROP_ARROWCODE, SYMBOL_ARROWDOWN); ObjectSet("Çàâåñà èç òåìíûõ îáëàêîâ" + i, OBJPROP_COLOR, Red); CCodeBuffer[i] = 5; } if(Prosvet(i - 1, i, i + 1) == true) { ObjectCreate("Ïðîñâåò â îáëàêàõ" + i, OBJ_ARROW, 0, Time[i], Low[i] - 20*Point); ObjectSet("Ïðîñâåò â îáëàêàõ" + i, OBJPROP_ARROWCODE, SYMBOL_ARROWUP); ObjectSet("Ïðîñâåò â îáëàêàõ" + i, OBJPROP_COLOR, Blue); CCodeBuffer[i] = 6; } if(evening_star(i - 1, i, i + 1) == true) { ObjectCreate("Âå÷åðíÿÿ çâåçäà" + i, OBJ_ARROW, 0, Time[i], High[i] + 20*Point); ObjectSet("Âå÷åðíÿÿ çâåçäà" + i, OBJPROP_ARROWCODE, SYMBOL_ARROWDOWN); ObjectSet("Âå÷åðíÿÿ çâåçäà" + i, OBJPROP_COLOR, Red); CCodeBuffer[i] = 7; } if(morning_star(i - 1, i, i + 1) == true) { ObjectCreate("Óòðåííÿÿ çâåçäà" + i, OBJ_ARROW, 0, Time[i], Low[i] - 20*Point); ObjectSet("Óòðåííÿÿ çâåçäà" + i, OBJPROP_ARROWCODE, SYMBOL_ARROWUP); ObjectSet("Óòðåííÿÿ çâåçäà" + i, OBJPROP_COLOR, Blue); CCodeBuffer[i] = 8; } if(IsEveningDodgiStar(i - 1, i, i + 1) == true) { ObjectCreate("Âå÷åðíÿÿ äîäæè çâåçäà" + i, OBJ_ARROW, 0, Time[i], High[i] + 20*Point); ObjectSet("Âå÷åðíÿÿ äîäæè çâåçäà" + i, OBJPROP_ARROWCODE, SYMBOL_ARROWDOWN); ObjectSet("Âå÷åðíÿÿ äîäæè çâåçäà" + i, OBJPROP_COLOR, Red); CCodeBuffer[i] = 9; } if(IsMorningDodgiStar(i - 1, i, i + 1) == true) { ObjectCreate("Óòðåííÿÿ äîäæè çâåçäà" + i, OBJ_ARROW, 0, Time[i], Low[i] - 20*Point); ObjectSet("Óòðåííÿÿ äîäæè çâåçäà" + i, OBJPROP_ARROWCODE, SYMBOL_ARROWUP); ObjectSet("Óòðåííÿÿ äîäæè çâåçäà" + i, OBJPROP_COLOR, Blue); CCodeBuffer[i] = 10; } i--; } //---- return(0); } //+------------------------------------------------------------------+
Sample
Analysis
Market Information Used:
Series array that contains close prices for each bar
Series array that contains open prices of each bar
Series array that contains the highest prices of each bar
Series array that contains the lowest prices of each bar
Series array that contains open time of each bar
Indicator Curves created:
Implements a curve of type DRAW_NONE
Indicators Used:
Custom Indicators Used:
Order Management characteristics:
Other Features: