12 часов назад, MikR0ReR сказал:@VAS35 почему решили что проблема на 3 свече. У вас Выдает ошибку?? так дайте скрин! Я например проверил ошибок нет. И я так понимаю вы дали не весь код, урезанный?? мне нужно конкретика.
Код был без отправки на мэйл. Вот полный код. И скрин.
//+------------------------------------------------------------------+ //| Figaro.mq4 | //| Copyright 2019, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2019, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" #property strict #property indicator_chart_window #property indicator_buffers 2 #property indicator_color1 Blue #property indicator_color2 Red double Buy[]; double Sell[]; #define BUY 0 #define SELL 1 input bool EMail = false; double buy[]; double sell[]; bool AlertsON; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { AlertsON=(EMail && (!IsTesting() || IsVisualMode()) ); SetIndexBuffer (0, Buy); SetIndexBuffer (1, Sell); SetIndexEmptyValue (0, 0); SetIndexEmptyValue (1, 0); SetIndexStyle (0, DRAW_ARROW); SetIndexStyle (1, DRAW_ARROW); SetIndexArrow(0, 233); // Стрелка "вверх" для покупок SetIndexArrow(1, 234); // Стрелка "вниз" для продаж IndicatorDigits (Digits); IndicatorShortName ("FIGARO"); SetIndexLabel(0, "Покупаем"); SetIndexLabel(1, "Продаём"); 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 counted_bars = IndicatorCounted(); int limit, signal; if (counted_bars>0) counted_bars-- ; limit=Bars-counted_bars; for(int i = 2; i < limit; i++) { signal = Signal(i-1); if (signal == BUY) { Buy[i-1] = low[i-1]; } else if (signal == SELL) { Sell[i-1] = high[i-1]; } } AlertsFun(buy,sell,time[0],1); return(rates_total); } //+------------------------------------------------------------------+ void AlertsFun(double & aBuy[],double & aSell[],datetime aTime0,int aIndex) { if(AlertsON) { string mes=""; static datetime blt=0; static datetime slt=0; if(blt==0) { blt=aTime0; slt=aTime0; } if(blt!=aTime0) { if(aBuy[aIndex]!=0 && aBuy[aIndex]!=EMPTY_VALUE) { blt=aTime0; mes=WindowExpertName()+"("+Symbol()+","+(string)(PeriodSeconds()/60)+"): buy"; if(EMail) { SendMail(mes,mes); } if(IsTesting()) { Comment(TimeToStr(aTime0)+" :: "+mes); } } } if(slt!=aTime0) { if(aSell[aIndex]!=0 && aSell[aIndex]!=EMPTY_VALUE) { slt=aTime0; mes=WindowExpertName()+"("+Symbol()+","+(string)(PeriodSeconds()/60)+"): sell"; if(EMail) { SendMail(mes,mes); } if(IsTesting()) { Comment(TimeToStr(aTime0)+" :: "+mes); } } } } } int Signal(int i) { double O_1 = iOpen(Symbol(), 0, 1); double O_2 = iOpen(Symbol(), 0, 2); double O_3 = iOpen(Symbol(), 0, 3); double O_4 = iOpen(Symbol(), 0, 4); double C_1 = iClose(Symbol(), 0, 1); double C_2 = iClose(Symbol(), 0, 2); double C_3 = iClose(Symbol(), 0, 3); double C_4 = iClose(Symbol(), 0, 4); double H_1 = iHigh(Symbol(), 0, 1); double H_2 = iHigh(Symbol(), 0, 2); double L_1 = iLow(Symbol(), 0, 1); double L_2 = iLow(Symbol(), 0, 2); double S_1 = iVolume(Symbol(), 0, 1); double S_2 = iVolume(Symbol(), 0, 2); double S_3 = iVolume(Symbol(), 0, 3); if ((O_1<C_1 && S_1>=8 && S_2==0 && O_3>C_3 && O_4>C_4 && (H_2-O_2)>=6 && (C_2-L_2)>=6) || (O_1<C_1 && S_1>=10 && O_2>C_2 && S_2>=8 && O_3>C_3 && O_4>C_4 && S_3>=8 && O_1<=C_2 && O_1<C_3 && O_2<C_1 && O_3<C_1) || (O_1<C_1 && O_2>C_2 && O_3>C_3 && O_4>C_4 && S_1<=1 && (O_1-L_1)>=5 && (H_1-C_1)<=2) || (O_1<C_1 && S_1>=10 && O_2>C_2 && O_3>C_3 && S_2>=10 && S_1>=S_2*0.6 && O_1<C_2 && (H_1-C_1)<=2 && (O_1-L_1)<=2 && (H_2-O_2)<=2 && (C_2-L_2)<=2) || (O_1<C_1 && S_1>=10 && O_2>C_2 && S_2>=8 && C_1<=C_2 && (H_1-C_1)<=2 && (O_1-L_1)<=2 && (H_2-O_2)<=2 && (C_2-L_2)<=2)) return (BUY); if ((O_1>C_1 && S_1>=8 && S_2==0 && O_3<C_3 && O_4<C_4 && (H_2-O_2)>=6 && (C_2-L_2)>=6) || (O_1>C_1 && S_1>=10 && O_2<C_2 && O_3<C_3 && O_4<C_4 && S_2>=8 && S_3>=8 && O_1>=C_2 && O_1>C_3 && O_2>C_1 && O_3>C_1) || (O_1>C_1 && O_2<C_2 && O_3<C_3 && O_4<C_4 && S_1<=1 && (C_1-L_1)>=5 && (H_1-O_1)<=2) || (O_1>C_1 && S_1>=10 && O_2<C_2 && O_3<C_3 && O_4<C_4 && S_2>=10 && S_1>=S_2*0.6 && O_1>C_2 && (H_1-O_1)<=2 && (C_1-L_1)<=2 && (H_2-C_2)<=2 && (O_2-L_2)<=2) || (O_1>C_1 && S_1>=10 && O_2<C_2 && O_3<C_3 && O_4<C_4 && S_2>=8 && C_1>=C_2 && (H_1-O_1)<=2 && (C_1-L_1)<=2 && (H_2-C_2)<=2 && (O_2-L_2)<=2)) return (SELL); return(-1); }
На скрине видно, что 3 свеча небольшая. Хотя в коде пытался прописать, чтобы размер был от 8.
Отправку на почту ещё до ума не довел. Не проверил.


