Здравствуйте, у меня нету 3 уровня и поэтому это не совсем заказ, прошу подсказать как добавить алерт чтобы при закрытии дня выскакивал алерт если цена находится выше заданной:
ATR=ATR+MathRound((iHigh(NULL,PERIOD_D1,i)-iLow(NULL,PERIOD_D1,i))/pips);
В начало эксперта перед функцией start() (OnCalculate) я вставил следующий код:
//+======================================================================================+
//+================================ AlertArrow ==========================================+
//+======================================================================================+
extern string Alerts="Алерты и стрелки от www.expforex.com";
extern bool AlerT=true; // Выдавать алерт на экран
extern bool Mail=true; // Посылать сообщение
extern bool Push=true; // Посылать ПУШ на телефон
extern bool Arrow=true; // Ставить стрелки на сигналах
extern int shift=1; // На каком баре считать сигнал 0 - на текущем 1 - на закрытом
int timeee; // Внутренняя переменная
string nameInd;
void SetArrow(int cd, color cl,
string nm="", datetime t1=0, double p1=0, int sz=3) {
if (nm=="") nm=DoubleToStr(Time[0], 0);
if (t1<=0) t1=Time[0];
if (p1<=0) p1=Bid;
nameInd=WindowExpertName( );
int wind=WindowFind(nameInd);
wind=0;
if (ObjectFind(nm)<0) ObjectCreate(nm, OBJ_ARROW, wind, 0,0);
ObjectSet(nm, OBJPROP_TIME1 , t1);
ObjectSet(nm, OBJPROP_PRICE1 , p1);
ObjectSet(nm, OBJPROP_ARROWCODE, cd);
ObjectSet(nm, OBJPROP_COLOR , cl);
ObjectSet(nm, OBJPROP_WIDTH , sz);
}
void Expforex_AlertArrow(string text="",int arrowdir=0,bool history=false,int i=0)
{
nameInd=WindowExpertName();
int wind=WindowFind(nameInd);
if(wind==-1)wind=0;
ObjectCreate("Originalalert",OBJ_LABEL,wind,0,0);
ObjectSetText("Originalalert","AlertArrow",10,"Arial Bold",Red);
ObjectSet("Originalalert",OBJPROP_CORNER,2);
ObjectSet("Originalalert",OBJPROP_XDISTANCE,200);
ObjectSet("Originalalert",OBJPROP_YDISTANCE,10);
if(!history)
{
if(AlerT) Alert(text);
if(Arrow) if(arrowdir==1) SetArrow(241,Blue,nameInd+DoubleToStr(Time[shift],0),Time[shift],Low[shift]);
if(Arrow) if(arrowdir==2) SetArrow(242,Red,nameInd+DoubleToStr(Time[shift],0),Time[shift],High[shift]);
if(!IsTesting())if(Mail) SendMail(text,text);
if(!IsTesting())if(Push) SendNotification(text);
}
if(history)
{
if(Arrow) if(arrowdir==1) SetArrow(241,Blue,nameInd+DoubleToStr(Time[shift+i],0),Time[shift+i],Low[shift+i]);
if(Arrow) if(arrowdir==2) SetArrow(242,Red,nameInd+DoubleToStr(Time[shift+i],0),Time[shift+i],High[shift+i]);
}
}
//+======================================================================================+
//+================================ AlertArrow ==========================================+
//+======================================================================================+
Перед закрытием функции start()(OnCalculate) внутри функции перед
return(rates_total);
}
вставил следующий код:
в котором как я понял нужен чтобы при пересечении чего либо появляется алерт
как я понял вопрос у меня заключается в том какой ниже код нужно изменить
//+======================================================================================+
//+================================ AlertArrow ==========================================+
//+======================================================================================+
nameInd=WindowExpertName( );
if(timeee!=Time[0] && SarBuffer[shift+1]<=75 && SarBuffer[shift]>75)
{
Expforex_AlertArrow(Symbol()+" "+Period()+nameInd+" UP",1);
timeee=Time[0];
}
if(timeee!=Time[0] && SarBuffer[shift+1]>=25 && SarBuffer[shift]<25)
{
Expforex_AlertArrow(Symbol()+" "+Period()+nameInd+" DN",2);
timeee=Time[0];
}
//+======================================================================================+
//+================================ AlertArrow ==========================================+
//+======================================================================================+
Комментарии (1)
Может быть что то вроде:
35 AM2 Сообщений: 16285 - Андрей
Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий