the same problem still persist. and i have added delete function. please help.
//+------------------------------------------------------------------+//| Test.mq4 |//| Copyright 2015, MetaQuotes Software Corp. |//| https://www.mql5.com |//+------------------------------------------------------------------+#property copyright"Copyright 2015, MetaQuotes Software Corp."#property link"https://www.mql5.com"#property version"1.00"#property strict#property indicator_chart_window//--- input parametersinputbool Alerts=TRUE;
//--- input parameters of the script inputstring InpNameUP="ArrowUp"; // Sign name UPinputstring InpNameDOWN="ArrowDown"; // Sign name DOWNinputENUM_ARROW_ANCHOR InpAnchorUP=ANCHOR_TOP; // Anchor type inputENUM_ARROW_ANCHOR InpAnchorDOWN=ANCHOR_BOTTOM; // Anchor type inputcolor InpColorUP=clrGreen; // Sign color UPinputcolor InpColorDOWN=clrRed; // Sign color DOWNinputENUM_LINE_STYLE InpStyle=STYLE_DOT; // Border line style inputint InpWidth=5; // Sign size inputbool InpBack=false; // Background sign inputbool InpSelection=false; // Highlight to move inputbool InpHidden=true; // Hidden in the object list inputlong InpZOrder=0; // Priority for mouse click //+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+intOnInit(void)
{
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+//| expert start function |//+------------------------------------------------------------------+intOnCalculate(constint rates_total,
constint prev_calculated,
constdatetime &time[],
constdouble &open[],
constdouble &high[],
constdouble &low[],
constdouble &close[],
constlong &tick_volume[],
constlong &volume[],
constint &spread[])
{
staticdatetime prev;
if(time[0]>prev) // new bar
{
//----if(Alerts)
{
if(close[4]>open[4] && close[3]>open[3] && close[2]>open[2] && close[1]<open[2])
{
string SELLSIGNAL=InpNameDOWN+(string)time[1];
ArrowDownCreate(0,SELLSIGNAL,0,time[1],high[1],InpAnchorDOWN,InpColorDOWN,InpStyle,
InpWidth,InpBack,InpSelection,InpHidden);
/*if(ObjectFind(0,SELLSIGNAL)!=0)
{
ObjectCreate(SELLSIGNAL,OBJ_ARROW_DOWN,0,time[1],low[1]);
ObjectSet(SELLSIGNAL,OBJPROP_WIDTH,5);
//ObjectSet(SELLSIGNAL,OBJPROP_ARROWCODE,242);
ObjectSet(SELLSIGNAL,OBJPROP_COLOR,clrRed);
ObjectSetInteger(0,SELLSIGNAL,OBJPROP_ANCHOR,ANCHOR_TOP);
}*/
}
else {
//--- delete the sign from the chart
ArrowUpDelete(0,InpNameDOWN);
ChartRedraw();
}
if(close[4]<open[4] && close[3]<open[3] && close[2]<open[2] && close[1]>open[2])
{
string BUYSIGNAL=InpNameUP+(string)time[1];
ArrowUpCreate(0,BUYSIGNAL,0,time[1],low[1],InpAnchorUP,InpColorUP,InpStyle,
InpWidth,InpBack,InpSelection,InpHidden);
/*if(ObjectFind(0,BUYSIGNAL)!=0)
{
ObjectCreate(BUYSIGNAL,OBJ_ARROW_UP,0,time[1],high[1]);
ObjectSet(BUYSIGNAL,OBJPROP_COLOR,clrBlue);
//ObjectSet(SELLSIGNAL,OBJPROP_ARROWCODE,241);
ObjectSet(BUYSIGNAL,OBJPROP_WIDTH,10);
ObjectSetInteger(0,BUYSIGNAL,OBJPROP_ANCHOR,ANCHOR_BOTTOM);
}*/
}
else {
//--- delete the sign from the chart
ArrowUpDelete(0,InpNameUP);
ChartRedraw();
}a
}
}
prev=time[0];
//----return(rates_total);
}
//+------------------------------------------------------------------+ //| Create Array Up sign | //+------------------------------------------------------------------+ bool ArrowUpCreate(constlong chart_ID=0, // chart's ID conststring name="ArrowUp", // sign name constint sub_window=0, // subwindow index datetime time=0, // anchor point time double price=0, // anchor point price constENUM_ARROW_ANCHOR anchor=ANCHOR_BOTTOM, // anchor type constcolor clr=clrRed, // sign color constENUM_LINE_STYLE style=STYLE_SOLID, // border line style constint width=3, // sign size constbool back=false, // in the background constbool selection=true, // highlight to move constbool hidden=true, // hidden in the object list constlong z_order=0) // priority for mouse click
{
//--- reset the error value ResetLastError();
//--- create the sign if(!ObjectCreate(chart_ID,name,OBJ_ARROW_UP,sub_window,time,price))
{
Print(__FUNCTION__,
": failed to create \"Arrow Up\" sign! Error code = ",GetLastError());
return(false);
}
//--- set anchor type ObjectSetInteger(chart_ID,name,OBJPROP_ANCHOR,anchor);
//--- set a sign color ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- set the border line style ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- set the sign size ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width);
//--- display in the foreground (false) or background (true) ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- enable (true) or disable (false) the mode of moving the sign by mouse //--- when creating a graphical object using ObjectCreate function, the object cannot be //--- highlighted and moved by default. Inside this method, selection parameter //--- is true by default making it possible to highlight and move the object ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- hide (true) or display (false) graphical object name in the object list ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- set the priority for receiving the event of a mouse click in the chart ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- successful execution return(true);
}
//+------------------------------------------------------------------+ //| Create Array Down sign | //+------------------------------------------------------------------+ bool ArrowDownCreate(constlong chart_ID=0, // chart's ID conststring name="ArrowDown", // sign name constint sub_window=0, // subwindow index datetime time=0, // anchor point time double price=0, // anchor point price constENUM_ARROW_ANCHOR anchor=ANCHOR_BOTTOM, // anchor type constcolor clr=clrRed, // sign color constENUM_LINE_STYLE style=STYLE_SOLID, // border line style constint width=3, // sign size constbool back=false, // in the background constbool selection=true, // highlight to move constbool hidden=true, // hidden in the object list constlong z_order=0) // priority for mouse click
{
//--- reset the error value ResetLastError();
//--- create the sign if(!ObjectCreate(chart_ID,name,OBJ_ARROW_DOWN,sub_window,time,price))
{
Print(__FUNCTION__,
": failed to create \"Arrow Down\" sign! Error code = ",GetLastError());
return(false);
}
//--- anchor type ObjectSetInteger(chart_ID,name,OBJPROP_ANCHOR,anchor);
//--- set a sign color ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- set the border line style ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- set the sign size ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width);
//--- display in the foreground (false) or background (true) ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- enable (true) or disable (false) the mode of moving the sign by mouse //--- when creating a graphical object using ObjectCreate function, the object cannot be //--- highlighted and moved by default. Inside this method, selection parameter //--- is true by default making it possible to highlight and move the object ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- hide (true) or display (false) graphical object name in the object list ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- set the priority for receiving the event of a mouse click in the chart ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- successful execution return(true);
}
//+------------------------------------------------------------------+//| Delete Arrow Up sign |//+------------------------------------------------------------------+bool ArrowUpDelete(constlong chart_ID=0, // chart's IDconststring name="ArrowUp") // sign name
{
//--- reset the error valueResetLastError();
//--- delete the signif(!ObjectDelete(chart_ID,name))
{
Print(__FUNCTION__,
": failed to delete \"Arrow Up\" sign! Error code = ",GetLastError());
return(false);
}
//--- successful executionreturn(true);
}
//+------------------------------------------------------------------+//| Delete Arrow Down sign |//+------------------------------------------------------------------+bool ArrowDownDelete(constlong chart_ID=0, // chart's IDconststring name="ArrowDown") // sign name
{
//--- reset the error valueResetLastError();
//--- delete the signif(!ObjectDelete(chart_ID,name))
{
Print(__FUNCTION__,
": failed to delete \"Arrow Down\" sign! Error code = ",GetLastError());
return(false);
}
//--- successful executionreturn(true);
}
//+------------------------------------------------------------------+
새로운 기술로 마이그레이션: MQL5 Storage( 프로젝트 - MetaEditor )에서 프로젝트를 사용합니다. 나는 당신을 위해 프로젝트를 만들었습니다:
완료했지만 아직 작동 하지 않습니다.
Karputov Vladimir 선생님, 내 게시물에 응답해 주십시오.
도움말: ObjectsDeleteAll .
MetaEditor에서 "Projects" 폴더를 확인하십시오.
추신: 최적화를 위해 화살표를 그리는 막대의 수 를 제한해야 합니다.
하지만 오늘은 아닐 것입니다.
버전 "1.04" 파일을 첨부합니다.
막대의 수 를 제한해야 합니다.
하지만 오늘은 아닐 것입니다.
버전 "1.04" 파일을 첨부합니다.