void OnStart()
{
//---
string my_gann="OBJ_GANNFAN object";
if(ObjectFind(0,my_gann)<0)// objeto no encontrado
{
//--- informamos sobre el fallo
Print("Object ",my_gann," not found. Error code = ",GetLastError());
//--- obtenemos el precio máximo del gráfico
double chart_max_price=ChartGetDouble(0,CHART_PRICE_MAX,0);
//--- obtenemos el precio mínimo del gráfico
double chart_min_price=ChartGetDouble(0,CHART_PRICE_MIN,0);
//--- ¿Cuántas barras se muestra en el gráfico?
int bars_on_chart=ChartGetInteger(0,CHART_VISIBLE_BARS);
//--- creamos una matriz en la que escribimos la hora de apertura de cada barra
datetime Time[];
//--- organizamos el acceso a la matriz como en serie temporal
ArraySetAsSeries(Time,true);
//--- ahora copiamos en él los datos de barras visibles en el gráfico
int times=CopyTime(NULL,0,0,bars_on_chart,Time);
if(times<=0)
{
Print("Fallo al copiar un array con la hora de apertura!");
return;
}
//--- preparativos preliminares finalizados
//--- índice de la barra central en el gráfico
int center_bar=bars_on_chart/2;
//--- ecuador del gráfico - entre el máximo y el mínimo
double mean=(chart_max_price+chart_min_price)/2.0;
//--- establecemos las coordinadas del primer punto de enlace en el centro
ObjectCreate(0,my_gann,OBJ_GANNFAN,0,Time[center_bar],mean,
//--- el segundo punto de enlace a la derecha
Time[center_bar/2],(mean+chart_min_price)/2.0);
Print("Time[center_bar] = "+(string)Time[center_bar]+" Time[center_bar/2] = "+(string)Time[center_bar/2]);
//Print("Time[center_bar]/="+Time[center_bar]+" Time[center_bar/2]="+Time[center_bar/2]);
//--- establecemos la escala en unidades Pips/Bar
ObjectSetDouble(0,my_gann,OBJPROP_SCALE,10);
//--- definimos la tendencia de la línea
ObjectSetInteger(0,my_gann,OBJPROP_DIRECTION,GANN_UP_TREND);
//--- definimos el grosor de la línea
ObjectSetInteger(0,my_gann,OBJPROP_WIDTH,1);
//--- definimos el estilo de la línea
ObjectSetInteger(0,my_gann,OBJPROP_STYLE,STYLE_DASHDOT);
//--- y el color de la línea
ObjectSetInteger(0,my_gann,OBJPROP_COLOR,clrYellowGreen);
//--- permitimos al usuario seleccionar el objeto
ObjectSetInteger(0,my_gann,OBJPROP_SELECTABLE,true);
//--- lo seleccionamos nosotros mismos
ObjectSetInteger(0,my_gann,OBJPROP_SELECTED,true);
//--- redibujamos el gráfico
ChartRedraw(0);
}
}
|