photo
+ Responder ao Tópico
Resultados de 1 a 1 de 1

Thread: Obj_vline

  1. #1 Fechar a publicação
    Banned
    Data de afiliação
    Aug 2018
    Postagens
    343
    Obrigado
    91
    Agradecimentos 207 Tempos em 139 Postagens

    Obj_vline

    Linha vertical.
    Name:  objvline.png
Views: 66
Size:  5.0 KB

    Observação

    Ao desenhar uma linha vertical, é possível definir o modo de exibição de linha para todas as janelas do (propriedade OBJPROP_RAY).

    Exemplo

    O seguinte script cria e move a linha vertical no gráfico. Funções especiais têm sido desenvolvidas para criar e alterar as propriedades do objeto gráfico. Você pode utilizar estas funções "as is" em seus próprios aplicativos.

    //--- descrição
    #property description "Script desenha objeto gráfico \" Linha Vertical\"."
    #property description "Coordenadas do ponto de ancoragem é configurado em porcentagem da"
    #property description "largura da janela do gráfico em barras."
    //--- janela de exibição dos parâmetros de entrada durante inicialização do script
    #property script_show_inputs
    //--- entrada de parâmetros do script
    input string InpName="VLine"; // Nome da Linha
    input int InpDate=25; // Data do Evento, %
    input color InpColor=clrRed; // Cor da linha
    input ENUM_LINE_STYLE InpStyle=STYLE_DASH; // Estilo da linha
    input int InpWidth=3; // Largura da linha
    input bool InpBack=false; // Linha de fundo
    input bool InpSelection=true; // Destaque para mover
    input bool InpRay=true; // Continuação da linha para baixo
    input bool InpHidden=true; // Ocultar na lista de objeto
    input long InpZOrder=0; // Prioridade para clicar no mouse
    //+------------------------------------------------------------------+
    //| Criar a linha vertical |
    //+------------------------------------------------------------------+
    bool VLineCreate(const long chart_ID=0, // ID do gráfico
    const string name="VLine", // nome da linha
    const int sub_window=0, // índice da sub-janela
    datetime time=0, // tempo da linha
    const color clr=clrRed, // cor da linha
    const ENUM_LINE_STYLE style=STYLE_SOLID, // estilo da linha
    const int width=1, // largura da linha
    const bool back=false, // no fundo
    const bool selection=true, // destaque para mover
    const bool ray=true, // continuação da linha para baixo
    const bool hidden=true, //ocultar na lista de objetos
    const long z_order=0) // prioridade para clique do mouse
    {
    //--- se o tempo de linha não está definido, desenhá-lo através da última barra
    if(!time)
    time=TimeCurrent();
    //--- redefine o valor de erro
    ResetLastError();
    //--- criar uma linha vertical
    if(!ObjectCreate(chart_ID,name,OBJ_VLINE,sub_windo w,time,0))
    {
    Print(__FUNCTION__,
    ": falha ao criar uma linha vertical! Código de erro = ",GetLastError());
    return(false);
    }
    //--- definir cor da linha
    ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
    //--- definir o estilo de exibição da linha
    ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style );
    //--- definir a largura da linha
    ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width );
    //--- exibir em primeiro plano (false) ou fundo (true)
    ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
    //--- habilitar (true) ou desabilitar (false) o modo do movimento da seta com o mouse
    //--- ao criar um objeto gráfico usando a função ObjectCreate, o objeto não pode ser
    //--- destacado e movimentado por padrão. Dentro deste método, o parâmetro de seleção
    //--- é verdade por padrão, tornando possível destacar e mover o objeto
    ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE, selection);
    ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,se lection);
    //--- habilitar (verdadeiro) ou desabilitar (falso) o modo de exibição da linha no gráfico sub-janelas
    ObjectSetInteger(chart_ID,name,OBJPROP_RAY,ray);
    //--- ocultar (true) ou exibir (false) o nome do objeto gráfico na lista de objeto
    ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidd en);
    //--- definir a prioridade para receber o evento com um clique do mouse no gráfico
    ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_or der);
    //--- sucesso na execução
    return(true);
    }
    //+------------------------------------------------------------------+
    //| Mover a linha vertical |
    //+------------------------------------------------------------------+
    bool VLineMove(const long chart_ID=0, // ID do gráfico
    const string name="VLine", // nome da linha
    datetime time=0) // tempo da linha
    {
    //--- se o tempo de linha não está definido, mover a linha para a última barra
    if(!time)
    time=TimeCurrent();
    //--- redefine o valor de erro
    ResetLastError();
    //--- mover a linha vertical
    if(!ObjectMove(chart_ID,name,0,time,0))
    {
    Print(__FUNCTION__,
    ": falhou ao mover a linha vertical! Código de erro = ",GetLastError());
    return(false);
    }
    //--- sucesso na execução
    return(true);
    }
    //+------------------------------------------------------------------+
    //| Excluir a linha vertical |
    //+------------------------------------------------------------------+
    bool VLineDelete(const long chart_ID=0, // ID do gráfico
    const string name="VLine") // nome da linha
    {
    //--- redefine o valor de erro
    ResetLastError();
    //--- excluir a linha vertical
    if(!ObjectDelete(chart_ID,name))
    {
    Print(__FUNCTION__,
    ": falha ao deletar a linha vertical! Código de erro = ",GetLastError());
    return(false);
    }
    //--- sucesso na execução
    return(true);
    }
    //+------------------------------------------------------------------+
    //| Programa Script da função start (iniciar) |
    //+------------------------------------------------------------------+
    void OnStart()
    {
    //--- verificar a exatidão dos parâmetros de entrada
    if(InpDate<0 || InpDate>100)
    {
    Print("Erro! Valores incorretos dos parâmetros de entrada!");
    return;
    }
    //--- número de barras visíveis na janela do gráfico
    int bars=(int)ChartGetInteger(0,CHART_VISIBLE_BARS);
    //--- array para armazenar a data de valores a serem utilizados
    //--- para definir e alterar as coordenadas de pontos de ancoragem
    datetime date[];
    //--- alocação de memória
    ArrayResize(date,bars);
    //--- preencher o array das datas
    ResetLastError();
    if(CopyTime(Symbol(),Period(),0,bars,date)==-1)
    {
    Print("Falha ao copiar valores de tempo! Código de erro = ",GetLastError());
    return;
    }
    //--- definir os pontos para desenhar a linha
    int d=InpDate*(bars-1)/100;
    //--- criar uma linha vertical
    if(!VLineCreate(0,InpName,0,date[d],InpColor,InpStyle,InpWidth,InpBack,
    InpSelection,InpRay,InpHidden,InpZOrder))
    return;
    //--- redesenhar o gráfico e esperar por um segundo
    ChartRedraw();
    Sleep(1000);
    //--- agora, mover a linha
    //--- contador de loop
    int h_steps=bars/2;
    //--- mover a linha
    for(int i=0;i<h_steps;i++)
    {
    //--- usar o seguinte valor
    if(d<bars-1)
    d+=1;
    //--- mover o ponto
    if(!VLineMove(0,InpName,date[d]))
    return;
    //--- verificar se o funcionamento do script foi desativado a força
    if(IsStopped())
    return;
    //--- redesenhar o gráfico
    ChartRedraw();
    // 0.03 segundos de atraso
    Sleep(30);
    }
    //--- 1 segundo de atraso
    Sleep(1000);
    //--- excluir o canal do gráfico
    VLineDelete(0,InpName);
    ChartRedraw();
    //--- 1 segundo de atraso
    Sleep(1000);
    //---
    }

    Though trading on financial markets involves high risk, it can still generate extra income in case you apply the right approach. By choosing a reliable broker such as InstaForex you get access to the international financial markets and open your way towards financial independence. You can sign up here.


  2. The Following User Says Thank You to forumforex For This Useful Post:

    Não registrado (1 )

+ Responder ao Tópico

Permissões de postagens

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts