На сколько сигнал открытия сделки запаздывает ?
анализ происходит при закрытии свечи, получается, что на 1 свечу идет запаздывание.
Вопрос к автору, а можно избавиться от перерисовки ?
А где он перерисовывается? Можно увидеть это на скринах?
Для оперативности отправьте картинки сюда:
email: cmillion@narod.ru
Skype: mqlcmillion
Предлагаю сделать опцию - краткое именование свечного сигнала - чтобы названия не накладываличись. А в лог писать полное название и силу сигнала.
//+------------------------------------------------------------------+ //| FiguresCandle.mq4 | //| Copyright © 2012, Vladivir Hlystov | //| http://cmillion@narod.ru | //+------------------------------------------------------------------+ #property copyright "Copyright © 2012, Vladivir Hlystov" #property link "http://cmillion@narod.ru" #property indicator_chart_window #property indicator_buffers 2 #property indicator_color1 Blue #property indicator_color2 Red #property indicator_width1 1 #property indicator_width2 1 extern bool AlertON = true; extern color colorBulls = Blue; extern color colorBears = Red; extern bool DrawCandle = true; extern bool ShortNames = true; double BufferUP[],P; double BufferDN[]; int candle[],Timei; color Color; //+------------------------------------------------------------------+ int init() { SetIndexStyle(0,DRAW_ARROW); SetIndexStyle(1,DRAW_ARROW); SetIndexArrow(0,236); SetIndexArrow(1,238); SetIndexBuffer(0,BufferUP); SetIndexBuffer(1,BufferDN); SetIndexLabel(0,"UP"); SetIndexLabel(1,"DOWN"); SetIndexEmptyValue(0,0.0); IndicatorShortName("FiguresCandle"); return(0); } //+------------------------------------------------------------------+ int deinit() { ObjectsDeleteAll(0,OBJ_TREND); ObjectsDeleteAll(0,OBJ_TEXT); return(0); } //+------------------------------------------------------------------+ int start() { int limit=Bars-IndicatorCounted(); string NameFigur; for(int i=1; i<limit; i++) { bool up=false,down=false; double MA0 = iMA(NULL,0,5,0,MODE_EMA,PRICE_CLOSE,i); double MA1 = iMA(NULL,0,5,0,MODE_EMA,PRICE_CLOSE,i); double MA2 = iMA(NULL,0,5,0,MODE_EMA,PRICE_CLOSE,i+1); double MA3 = iMA(NULL,0,5,0,MODE_EMA,PRICE_CLOSE,i+2); if (MA0>MA1 && MA1>MA2 && MA2>MA3) up=true; else up=false; if (MA0<MA1 && MA1<MA2 && MA2<MA3) down=true; else down=false; //--- NameFigur=""; if (Close[i]>Close[i+1] && Close[i]>Open[i+1]) { if (down && Open[i+1]>Close[i+1] && Open[i]>Close[i+1] && Close[i]<Open[i+1] && Close[i]>Open[i]) { if (ShortNames==true) NameFigur="BuH"; else NameFigur="BullHarami"; Print("BullHarami"); Redraw(i,colorBulls,NameFigur); Redraw(i+1,colorBulls,NameFigur); } if (Open[i+1]>Close[i+1] && Open[i]>Close[i+1] && Open[i]<Open[i+1] && Close[i]>Open[i+1]) { if (ShortNames==true) NameFigur="BuC"; else NameFigur="BullCross"; Print("BullCross"); Redraw(i,colorBulls,NameFigur); Redraw(i+1,colorBulls,NameFigur); } if (Close[i+1]<Open[i+1] && Open[i]<Close[i+1] && Close[i]>Open[i+1]) { if (ShortNames==true) NameFigur="BuE"; else NameFigur="Bullish Engulfing"; Print("Bullish Engulfing"); if (Close[i+1]<Open[i+1] && Close[i]>Open[i] && Open[i]<Close[i+1] && Close[i]>Close[i+1]+((Open[i+1]-Close[i+1])/2)) { if (ShortNames==true) NameFigur="BuP"; else NameFigur="BullPierce"; Print("BullPierce"); } Redraw(i,colorBulls,NameFigur); Redraw(i+1,colorBulls,NameFigur); } if (Close[i+2]<Open[i+2] && Open[i+1]<Close[i+2] && Close[i+1]<Close[i+2] && Open[i]>Close[i+1] && Open[i]>Open[i+1] && Close[i]>=Close[i+2]) { if (ShortNames==true) NameFigur="MS"; else NameFigur="Morning Star"; Print("Morning Star"); Redraw(i,colorBulls,NameFigur); Redraw(i+1,colorBulls,NameFigur); Redraw(i+2,colorBulls,NameFigur); } } if (Open[i]-Low[i]>MathMax(High[i]-Close[i],Close[i]-Open[i])*3 && Close[i]-Low[i]>MathMax(High[i]-Close[i],Close[i]-Open[i])*3) { if (ShortNames==true) NameFigur="Ha"; else NameFigur="Hammer"; Print("Hammer"); if (up) {Redraw(i,colorBulls,NameFigur); Redraw(i+1,colorBulls,NameFigur);} if (down) {Redraw(i,colorBears,NameFigur); Redraw(i+1,colorBears,NameFigur);} } ///// ìåäâåäè ///// ìåäâåäè ///// ìåäâåäè ///// ìåäâåäè ///// ìåäâåäè ///// ìåäâåäè ///// ìåäâåäè ///// ìåäâåäè ///// ìåäâåäè if (Close[i]<Close[i+1] && Close[i]<Open[i+1]) { if (up && Open[i+1]<Close[i+1] && Open[i]<Close[i+1] && Close[i]>Open[i+1] && Close[i]<Open[i]) { if (ShortNames==true) NameFigur="BeH"; else NameFigur="BearHarami"; Print("BearHarami"); Redraw(i,colorBears,NameFigur); Redraw(i+1,colorBears,NameFigur); } if (Open[i+1]<Close[i+1] && Open[i]<Close[i+1] && Open[i]>Open[i+1] && Close[i]<Open[i+1]) { if (ShortNames==true) NameFigur="BeC"; else NameFigur="BearCross"; Print("BearCross"); Redraw(i,colorBears,NameFigur); Redraw(i+1,colorBears,NameFigur); } if (Close[i+1]>Open[i+1] && Close[i]<Open[i] && Open[i]>Close[i+1] && Close[i]<Open[i+1]) { if (ShortNames==true) NameFigur="BeE"; else NameFigur="BearEngulf"; Print("BearEngulf"); if (Close[i+1]>Open[i+1] && Open[i]>Close[i+1] && Close[i]<Close[i+1]-((Close[i+1]-Open[i+1])/2)) { if (ShortNames==true) NameFigur="DC"; else NameFigur="DarkCloud"; Print("DarkCloud"); } Redraw(i,colorBears,NameFigur); Redraw(i+1,colorBears,NameFigur); } if (Close[i+2]>Open[i+2] && Open[i+1]>Close[i+2] && Close[i+1]>Close[i+2] && Open[i]<Close[i+1] && Open[i]<Open[i+1] && Close[i]<Close[i+2]) { if (ShortNames==true) NameFigur="ES"; else NameFigur="EveningStar"; Print("EveningStar"); Redraw(i,colorBears,NameFigur); Redraw(i+1,colorBears,NameFigur); Redraw(i+2,colorBears,NameFigur); } if (up && High[i]-Open[i]>MathMax(Close[i]-Low[i],Open[i]-Close[i])*3 && High[i]-Close[i]>MathMax(Close[i]-Low[i],Open[i]-Close[i])*3) { if (ShortNames==true) NameFigur="Sh"; else NameFigur="Shooter"; Print("Shooter"); Redraw(i,colorBears,NameFigur); Redraw(i+1,colorBears,NameFigur); } } if (NameFigur!="") { double DELTA = (MathMax(High[i],High[i+1])-MathMin(Low[i],Low[i+1]))/2; if (Color==colorBears) {BufferDN[i]=MathMax(High[i],High[i+1]);P=BufferDN[i]+DELTA;} else {BufferUP[i]=MathMin(Low[i],Low[i+1]);P=BufferUP[i]-DELTA;} DrawTEXT(StringConcatenate(NameFigur," ",TimeToStr(Time[i],TIME_DATE|TIME_MINUTES)),NameFigur, Color, Time[i+1], P); } } if (Timei!=Time[0]&&AlertON&&i==0&&NameFigur!="") {Alert(Symbol()+" FiguresCandle = "+NameFigur);Timei=Time[0];} return(0); } //------------------------------------------------------------------- int Redraw(int i,color col,string name) { Color=col; if (!DrawCandle) return; name = StringConcatenate(name," ",TimeToStr(Time[i],TIME_DATE|TIME_SECONDS)); ObjectCreate(name, OBJ_TREND, 0,Time[i],High[i],Time[i],Low[i]); ObjectSet (name, OBJPROP_COLOR, col); ObjectSet (name, OBJPROP_STYLE, STYLE_SOLID); ObjectSet (name, OBJPROP_BACK, false); ObjectSet (name, OBJPROP_RAY, false); ObjectSet (name, OBJPROP_WIDTH, 2); name=StringConcatenate(name," o"); ObjectCreate(name, OBJ_TREND, 0,Time[i],Open[i],Time[i],Open[i]); ObjectSet (name, OBJPROP_COLOR, col); ObjectSet (name, OBJPROP_STYLE, STYLE_SOLID); ObjectSet (name, OBJPROP_BACK, false); ObjectSet (name, OBJPROP_RAY, false); ObjectSet (name, OBJPROP_WIDTH, 2); name=StringConcatenate(name," c"); ObjectCreate(name, OBJ_TREND, 0,Time[i],Close[i],Time[i]+Period()*60,Close[i]); ObjectSet (name, OBJPROP_COLOR, col); ObjectSet (name, OBJPROP_STYLE, STYLE_SOLID); ObjectSet (name, OBJPROP_BACK, false); ObjectSet (name, OBJPROP_RAY, false); ObjectSet (name, OBJPROP_WIDTH, 2); } //------------------------------------------------------------------- int DrawTEXT(string NT, string Name, color col, datetime t1, double p1) { ObjectDelete (NT); ObjectCreate (NT, OBJ_TEXT,0,t1,p1,0,0,0,0); ObjectSet (NT, OBJPROP_COLOR, col); ObjectSetText(NT, Name ,10,"Arial"); } //--------------------------------------------------------------------
Автор кодит неустанно. Молодец!
Хочу спросить не приходилось ли уже, и, если нет, нет ли желания сделать одну очень простенькую вещь - подсвечивать свечу в которой длина пути цены (исходя из меньшего ТФ) больше чем в обычной. То есть цена прошла путь не OHLC для медвежей, а OLHC. Таких свечей не много, было бы любопытно посмотреть где они таки есть.
Автор кодит неустанно. Молодец!
Хочу спросить не приходилось ли уже, и, если нет, нет ли желания сделать одну очень простенькую вещь - подсвечивать свечу в которой длина пути цены (исходя из меньшего ТФ) больше чем в обычной. То есть цена прошла путь не OHLC для медвежей, а OLHC. Таких свечей не много, было бы любопытно посмотреть где они таки есть.
Написать такой не сложно, но это отдельная тема.
Создавать ее здесь не вижу смысла, могу написать в ветке моих бесплатных индикаторов.
Разместите здесь Вашу просьбу : indikatori-ot-cmillion
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Свечной анализ:
Author: Vladimir Khlystov