- #property strict
- #property script_show_inputs
- input string InpName="LeftPrice";
- input int InpDate=100;
- input int InpPrice=10;
- input color InpColor=clrRed;
- input ENUM_LINE_STYLE InpStyle=STYLE_SOLID;
- input int InpWidth=2;
- input bool InpBack=false;
- input bool InpSelection=true;
- input bool InpHidden=true;
- input long InpZOrder=0;
- bool ArrowLeftPriceCreate(const long chart_ID=0,
- const string name="LeftPrice",
- const int sub_window=0,
- datetime time=0,
- double price=0,
- const color clr=clrRed,
- const ENUM_LINE_STYLE style=STYLE_SOLID,
- const int width=1,
- const bool back=false,
- const bool selection=true,
- const bool hidden=true,
- const long z_order=0)
- {
-
- ChangeArrowEmptyPoint(time,price);
-
- ResetLastError();
-
- if(!ObjectCreate(chart_ID,name,OBJ_ARROW_LEFT_PRICE,sub_window,time,price))
- {
- Print(__FUNCTION__,
- ": failed to create the left price label! Error code = ",GetLastError());
- return(false);
- }
-
- ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
-
- ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
-
- ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width);
-
- ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
- ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
- ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
-
- ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
-
- ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
-
- return(true);
- }
- bool ArrowLeftPriceMove(const long chart_ID=0,
- const string name="LeftPrice",
- datetime time=0,
- double price=0)
- {
-
- if(!time)
- time=TimeCurrent();
- if(!price)
- price=SymbolInfoDouble(Symbol(),SYMBOL_BID);
-
- ResetLastError();
-
- if(!ObjectMove(chart_ID,name,0,time,price))
- {
- Print(__FUNCTION__,
- ": failed to move the anchor point! Error code = ",GetLastError());
- return(false);
- }
-
- return(true);
- }
- bool ArrowLeftPriceDelete(const long chart_ID=0,
- const string name="LeftPrice")
- {
-
- ResetLastError();
-
- if(!ObjectDelete(chart_ID,name))
- {
- Print(__FUNCTION__,
- ": failed to delete the left price label! Error code = ",GetLastError());
- return(false);
- }
- //--- successful execution
- return(true);
- }
- void ChangeArrowEmptyPoint(datetime &time,double &price)
- {
-
- if(!time)
- time=TimeCurrent();
-
- if(!price)
- price=SymbolInfoDouble(Symbol(),SYMBOL_BID);
- }
- void OnStart()
- {
-
- if(InpDate<0 || InpDate>100 || InpPrice<0 || InpPrice>100)
- {
- Print("Error! Incorrect values of input parameters!");
- return;
- }
-
- int bars=(int)ChartGetInteger(0,CHART_VISIBLE_BARS);
-
- int accuracy=1000;
- datetime date[];
- double price[];
-
- ArrayResize(date,bars);
- ArrayResize(price,accuracy);
-
- ResetLastError();
- if(CopyTime(Symbol(),Period(),0,bars,date)==-1)
- {
- Print("Failed to copy time values! Error code = ",GetLastError());
- return;
- }
- double max_price=ChartGetDouble(0,CHART_PRICE_MAX);
- double min_price=ChartGetDouble(0,CHART_PRICE_MIN);
-
- double step=(max_price-min_price)/accuracy;
- for(int i=0;i<accuracy;i++)
- price=min_price+i*step;
-
- int d=InpDate*(bars-1)/100;
- int p=InpPrice*(accuracy-1)/100;
-
- if(!ArrowLeftPriceCreate(0,InpName,0,date[d],price[p],InpColor,
- InpStyle,InpWidth,InpBack,InpSelection,InpHidden,InpZOrder))
- {
- return;
- }
-
- ChartRedraw();
- Sleep(1000);
-
-
- int v_steps=accuracy*4/5;
-
- for(int i=0;i<v_steps;i++)
- {
-
- if(p<accuracy-1)
- p+=1;
-
- if(!ArrowLeftPriceMove(0,InpName,date[d],price[p]))
- return;
-
- if(IsStopped())
- return;
-
- ChartRedraw();
- }
-
- Sleep(1000);
-
- ArrowLeftPriceDelete(0,InpName);
- ChartRedraw();
-
- Sleep(1000);
-
- }
-
-
复制代码
|