//+------------------------------------------------------------------+ //| CandleStick.mq4 | //| Copyright © 2005, Profi_R | //| rvm_fam fromru com | //+------------------------------------------------------------------+ #property copyright "Copyright © 2005, Profi_R" #property link "rvm_fam fromru com" #property indicator_chart_window #property indicator_buffers 2 #property indicator_color1 Red #property indicator_color2 Blue //---- input parameters extern int Range=50; extern int zv_amp=50; extern int dj_body=20; //---- buffers double Up[]; //çäåñü áóäåì ïèñàòü ñòðåëêè äëÿ ñèãíàëîâ âíèç double Dn[]; //çäåñü áóäåì ïèñàòü ñòðåëêè äëÿ ñèãíàëîâ ââåðõ double MAmp[]; //çäåñü áóäåì äåðæàòü ñðåäíåå çíà÷åíèå àìïëèòóäû double Character[]; //çäåñü áóäåì äåðæàòü õàðàêòåð ñâå÷è //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators IndicatorBuffers(4); SetIndexStyle(0,DRAW_ARROW); SetIndexStyle(1,DRAW_ARROW); SetIndexStyle(2,DRAW_NONE); SetIndexStyle(3,DRAW_NONE); SetIndexBuffer(0,Up); SetIndexBuffer(1,Dn); SetIndexBuffer(2,MAmp); SetIndexBuffer(3,Character); SetIndexArrow(0,242); SetIndexArrow(1,241); SetIndexDrawBegin(0,Range+1); SetIndexDrawBegin(1,Range+1); SetIndexEmptyValue(0,0.0); SetIndexEmptyValue(1,0.0); //---- return(0); } //+------------------------------------------------------------------+ //| Custor indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- ObjectsDeleteAll(0,OBJ_TEXT); ObjectsDeleteAll(0,OBJ_ARROW); //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int counted_bars=IndicatorCounted(),cb; double amp_lim,body_lim; //---- for(cb=Bars-1-counted_bars;cb>=0;cb--) { Amplitude_calc(cb); //ïîëó÷àåì çíà÷åíèå ñðåäíåé àìïëèòóäû äëÿ òåêóùåé ñâå÷è //âû÷èñëÿåì çíà÷åíèå äëÿ îïðåäåëåíèÿ çâåçä è äîæè amp_lim=NormalizeDouble(MAmp[cb]*zv_amp/100,4); body_lim=NormalizeDouble((High[cb]-Low[cb])*dj_body/100,4); //åñëè àìïëèòóäà ìåíåå èëè ðàâíà zv_amp% ñðåäíåé àìïëèòóäû if(High[cb]-Low[cb]<=amp_lim) { if(MathAbs(Open[cb]-Close[cb])<=body_lim) { Character[cb]=2; //äîæè } else { Character[cb]=1; //çâåçäà } } else { if(MathAbs(Open[cb]-Close[cb])<=body_lim) { Character[cb]=2; //äîæè } else { Character[cb]=0; //îáû÷íàÿ ñâå÷à } } //-------- äàëåå èäåò îïðåäåëåíèå ñâå÷íûõ êîíôèãóðàöèé //ìîëîò è ïîâåøåííûé âåðõíÿÿ òåíü íå áîëåå dj_body% àìïëèòóäû, íèæíÿÿ òåíü â äâà ðàçà áîëüøå òåëà if(High[cb+2]-MathMax(Open[cb+2],Close[cb+2])<NormalizeDouble((High[cb+2]-Low[cb+2])*dj_body/100,4)&& MathAbs(Open[cb+2]-Close[cb+2])*2<MathMin(Open[cb+2],Close[cb+2])-Low[cb+2]) { if(High[cb+2]==High[Highest(NULL,0,MODE_HIGH,6,cb+1)]) { //âûâîäèì òåêñò íà ÷àðò ObjectCreate("hanging "+(cb+2),OBJ_TEXT,0,Time[cb+2],High[cb+1]+10*Point); ObjectSetText("hanging "+(cb+2),"ïîâåøåííûé",9,"Times New Roman",Lime); //ïîâåøåííûé íà âåðøèíå, ñòàâèì ñòðåëêó âíèç Up[cb]=High[cb]+10*Point; } if(Low[cb+2]==Low[Lowest(NULL,0,MODE_LOW,6,cb+1)]) { //âûâîäèì òåêñò íà ÷àðò ObjectCreate("hammer "+(cb+2),OBJ_TEXT,0,Time[cb+2],Low[cb+1]-10*Point); ObjectSetText("hammer "+(cb+2),"ìîëîò",9,"Times New Roman",Lime); //ìîëîò âíèçó, ñòàâèì ñòðåëêó ââåðõ Dn[cb]=Low[cb]-10*Point; } } //âûñîêàÿ âîëíà - òðè è áîëüøåå êîëè÷åñòâî äîæè ñ äëèííûìè òåíÿìè if(Character[cb]==2&&High[cb]-Low[cb]>amp_lim&& Character[cb+1]==2&&High[cb+1]-Low[cb+1]>NormalizeDouble(MAmp[cb+1]*zv_amp/100,4)&& Character[cb+2]==2&&High[cb+2]-Low[cb+2]>NormalizeDouble(MAmp[cb+2]*zv_amp/100,4)) { if(High[cb]==High[Highest(NULL,0,MODE_HIGH,7,cb)]|| High[cb+1]==High[Highest(NULL,0,MODE_HIGH,7,cb)]|| High[cb+2]==High[Highest(NULL,0,MODE_HIGH,7,cb)]) { //âûâîäèì òåêñò íà ÷àðò ObjectCreate("high wave "+cb,OBJ_TEXT,0,Time[cb],High[cb]+10*Point); ObjectSetText("high wave "+cb,"âûñîêèå âîëíû",9,"Times New Roman",Lime); //âûñîêèå âîëíû íàâåðõó - ðàçâîðîò âíèç Up[cb]=High[cb]+10*Point; } if(Low[cb]==Low[Lowest(NULL,0,MODE_LOW,7,cb)]|| Low[cb+1]==Low[Lowest(NULL,0,MODE_LOW,7,cb)]|| Low[cb+2]==Low[Lowest(NULL,0,MODE_LOW,7,cb)]) { //âûâîäèì òåêñò íà ÷àðò ObjectCreate("high wave "+cb,OBJ_TEXT,0,Time[cb],Low[cb]-10*Point); ObjectSetText("high wave "+cb,"âûñîêèå âîëíû",9,"Times New Roman",Lime); //âûñîêèå âîëíû âíèçó - ðàçâîðîò ââåðõ Dn[cb]=Low[cb]-10*Point; } } //ïàäàþùàÿ çâåçäà if(Character[cb]==2 && MathMin(Open[cb],Close[cb])-Low[cb]<body_lim && High[cb]-MathMax(Open[cb],Close[cb])>MathAbs(Open[cb]-Close[cb])*2 && High[cb]==High[Highest(NULL,0,MODE_HIGH,4,cb)]) { //âûâîäèì òåêñò íà ÷àðò ObjectCreate("shooting star "+cb,OBJ_TEXT,0,Time[cb],High[cb]+10*Point); ObjectSetText("shooting star "+cb,"ïàäàþùàÿ çâåçäà",9,"Times New Roman",Lime); //ïàäàþùàÿ çâåçäà - ðàçâîðîò âíèç Up[cb]=High[cb]+10*Point; } //Òîë÷îê if(Character[cb]==0 && Character[cb+1]==0) { if(Close[cb]>Open[cb] && Close[cb+1]<Open[cb+1] && Close[cb]<High[cb+1]-(High[cb+1]-Low[cb+1])/2) { //âûâîäèì òåêñò íà ÷àðò ObjectCreate("thrusting fine "+cb,OBJ_TEXT,0,Time[cb],High[cb]+10*Point); ObjectSetText("thrusting fine "+cb,"òîë÷îê",9,"Times New Roman",Lime); //òîë÷îê - ïðîäîëæåíèå òåíäåíöèè âíèç Up[cb]=High[cb]+10*Point; } if(Close[cb]<Open[cb] && Close[cb+1]>Open[cb+1] && Close[cb]>Low[cb+1]+(High[cb+1]-Low[cb+1])/2) { //âûâîäèì òåêñò íà ÷àðò ObjectCreate("thrusting fine "+cb,OBJ_TEXT,0,Time[cb],Low[cb]-10*Point); ObjectSetText("thrusting fine "+cb,"òîë÷îê",9,"Times New Roman",Lime); //òîë÷îê - ïðîäîëæåíèå òåíäåíöèè ââåðõ Dn[cb]=Low[cb]-10*Point; } } //Áðîøåííûé ìëàäåíåö } //---- return(0); } //+------------------------------------------------------------------+ void Amplitude_calc(int cb) { //---- int i,S_Ampl=0; for(i=cb+1;i<cb+Range;i++) { //íàêàïëèâàåì ñóììó âñåõ àìïëèòóä S_Ampl=S_Ampl+(High[i]-Low[i]); //çàïèñûâàåì çíà÷åíèÿ â áóôåðû èíäèêàòîðà MAmp[cb]=NormalizeDouble(S_Ampl/Range,4); } //---- return(0); }
Sample
Analysis
Market Information Used:
Series array that contains the highest prices of each bar
Series array that contains the lowest prices of each bar
Series array that contains close prices for each bar
Series array that contains open prices of each bar
Series array that contains open time of each bar
Indicator Curves created:
Implements a curve of type DRAW_ARROW
Implements a curve of type DRAW_NONE
Indicators Used:
Custom Indicators Used:
Order Management characteristics:
Other Features: