void OnStart() { //--- string my_gann="OBJ_GANNFAN object"; if(ObjectFind(0,my_gann)<0)// Objeto não encontrado { //--- Informe sobre a falha Print("Objeto ",my_gann," não encontrado. Código de erro = ",GetLastError()); //--- Obtém o preço máximo do gráfico double chart_max_price=ChartGetDouble(0,CHART_PRICE_MAX,0); //--- Obtém o preço mínimo do gráfico double chart_min_price=ChartGetDouble(0,CHART_PRICE_MIN,0); //--- Quantas barras estão exibidas no gráfico int bars_on_chart=ChartGetInteger(0,CHART_VISIBLE_BARS); //--- Cria um array, para escrever nele a hora de abertura de cada barra datetime Time[]; //--- Arruma acesso ao array como o de série de tempo ArraySetAsSeries(Time,true); //--- Agora copia dados de barras visíveis no gráfico para dentro deste array int times=CopyTime(NULL,0,0,bars_on_chart,Time); if(times<=0) { Print("Não foi possível copiar o array com o tempo aberto!"); return; } //--- Preparações preliminares concluídas //--- Índice da barra central no gráfico int center_bar=bars_on_chart/2; //--- Equador do gráfico - entre o máximo e mínimo double mean=(chart_max_price+chart_min_price)/2.0; //--- Define as coordenadas do primeiro ponto de ancoragem para o centro ObjectCreate(0,my_gann,OBJ_GANNFAN,0,Time[center_bar],mean, //--- Segundo ponto de ancoragem para a direita 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]); //--- Define a escala em unidades de Pips / Barra ObjectSetDouble(0,my_gann,OBJPROP_SCALE,10); //--- Define a tendência da linha ObjectSetInteger(0,my_gann,OBJPROP_DIRECTION,GANN_UP_TREND); //--- Define a largura da linha ObjectSetInteger(0,my_gann,OBJPROP_WIDTH,1); //--- Define o estilo da linha ObjectSetInteger(0,my_gann,OBJPROP_STYLE,STYLE_DASHDOT); //--- Define a cor da linha ObjectSetInteger(0,my_gann,OBJPROP_COLOR,clrYellowGreen); //--- Permite ao usuário selecionar um objeto ObjectSetInteger(0,my_gann,OBJPROP_SELECTABLE,true); //--- Seleciona ele você mesmo ObjectSetInteger(0,my_gann,OBJPROP_SELECTED,true); //--- Desenha ele no gráfico ChartRedraw(0); } } |