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); } } |