//| Script program start function |
//+——————————————————————+
void OnStart()
{
//— auxiliary arrays
double high[],low[],price1,price2;
datetime time[],time1,time2;
//— Copy the open prices – 100 latest bars are enough
int copied=CopyHigh(Symbol(),0,0,100,high);
if(copied<=0)
{
Print(“Failed to copy the values of the High price series”);
return;
}
//— Copy the close price – 100 latest bars are enough
copied=CopyLow(Symbol(),0,0,100,low);
if(copied<=0)
{
Print(“Failed to copy the values of the Low price series”);
return;
}
//— Copy the open time for the last 100 bars
copied=CopyTime(Symbol(),0,0,100,time);
if(copied<=0)
{
Print(“Failed to copy the values of the price series of Time”);
return;
}
//— Organize access to the copied data as to timeseries – backwards
ArraySetAsSeries(high,true);
ArraySetAsSeries(low,true);
ArraySetAsSeries(time,true);
//— Coordinates of the first anchor point of the Fibo object
price1=high[70];
time1=time[70];
//— Coordinates of the second anchor point of the Fibo object
price2=low[50];
time2=time[50];
//— Time to create the Fibo object
bool created=ObjectCreate(0,“Fibo”,OBJ_FIBO,0,time1,price1,time2,price2);
if(created) // If the object is created successfully
{
//— set the color of Fibo levels
ObjectSetInteger(0,“Fibo”,OBJPROP_LEVELCOLOR,Blue);
//— by the way, how much Fibo levels do we have?
int levels=ObjectGetInteger(0,“Fibo”,OBJPROP_LEVELS);
Print(“Fibo levels before = “,levels);
//—output to the Journal => number of level:value level_desription
for(int i=0;i<levels;i++)
{
Print(i,“: “,ObjectGetDouble(0,“Fibo”,OBJPROP_LEVELVALUE,i),
” “,ObjectGetString(0,“Fibo”,OBJPROP_LEVELTEXT,i));
}
//— Try to increase the number of levels per unit
bool modified=ObjectSetInteger(0,“Fibo”,OBJPROP_LEVELS,levels+1);
if(!modified) // failed to change the number of levels
{
Print(“Failed to change the number of levels of Fibo, error “,GetLastError());
}
//— just inform
Print(“Fibo levels after = “,ObjectGetInteger(0,“Fibo”,OBJPROP_LEVELS));
//— set a value for a newly created level
bool added=ObjectSetDouble(0,“Fibo”,OBJPROP_LEVELVALUE,levels,133);
if(added) // managed to set a value for the level
{
Print(“Successfully set one more Fibo level”);
//— Also do not forget to set the level description
ObjectSetString(0,“Fibo”,OBJPROP_LEVELTEXT,levels,“my level”);
ChartRedraw(0);
//— Get the actual value of the number of levels in the Fibo object
levels=ObjectGetInteger(0,“Fibo”,OBJPROP_LEVELS);
Print(“Fibo levels after adding = “,levels);
//— once again output all levels – just to make sure
for(int i=0;i<levels;i++)
{
Print(i,“:”,ObjectGetDouble(0,“Fibo”,OBJPROP_LEVELVALUE,i),
” “,ObjectGetString(0,“Fibo”,OBJPROP_LEVELTEXT,i));
}
}
else // Fails if you try to increase the number of levels in the Fibo object
{
Print(“Failed to set one more Fibo level. Error “,GetLastError());
}
}
}
|