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

Thread: OBJ_TEXT Objeto Texto.

  1. #1 Fechar a publicação
    Senior Member jssuser's Avatar jssuser's Avatar
    Data de afiliação
    Aug 2018
    Postagens
    1,503
    Obrigado
    209
    Agradecimentos 1,952 Tempos em 1,062 Postagens
    AssinarAssinar
    subscritar: 0

    OBJ_TEXT Objeto Texto.

    Name:  objtext.png
Views: 647
Size:  11.2 KB

    Observação

    Posição de ponto de ancoragem em relação ao texto pode ser selecionado a partir do enumerador ENUM_ANCHOR_POINT. Você também pode alterar o ângulo de inclinação de texto usando a propriedade OBJPROP_ANGLE.

    Exemplo

    O seguinte o script cria vários objetos de texto 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 cria objeto gráfico de \"Texto\"."
    //--- 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 InpFont="Arial"; // Fonte
    input int InpFontSize=10; // Tamanho da fonte
    input color InpColor=clrRed; // Cor
    input double InpAngle=90.0; // Ângulo de inclinação em graus
    input ENUM_ANCHOR_POINT InpAnchor=ANCHOR_LEFT; // Tipo de ancoragem
    input bool InpBack=false; // Objeto de fundo
    input bool InpSelection=false; // Destaque para mover
    input bool InpHidden=true; // Ocultar na lista de objetos
    input long InpZOrder=0; // Prioridade para clique do mouse
    //+------------------------------------------------------------------+
    //| Criando objeto Texto |
    //+------------------------------------------------------------------+
    bool TextCreate(const long chart_ID=0, // ID do gráfico
    const string name="Text", // nome do objeto
    const int sub_window=0, // índice da sub-janela
    datetime time=0, // ponto de ancoragem do tempo
    double price=0, // ponto de ancoragem do preço
    const string text="Text", // o próprio texto
    const string font="Arial", // fonte
    const int font_size=10, // tamanho da fonte
    const color clr=clrRed, // cor
    const double angle=0.0, // inclinação do texto
    const ENUM_ANCHOR_POINT anchor=ANCHOR_LEFT_UPPER, // tipo de ancoragem
    const bool back=false, / no fundo
    const bool selection=false, // destaque para mover
    const bool hidden=true, // ocultar na lista de objetos
    const long z_order=0) // prioridade para clicar no mouse
    {
    //--- definir as coordenadas de pontos de ancoragem, se eles não estão definidos
    ChangeTextEmptyPoint(time,price);
    //--- redefine o valor de erro
    ResetLastError();
    //--- criar objeto Texto
    if(!ObjectCreate(chart_ID,name,OBJ_TEXT,sub_window ,time,price))
    {
    Print(__FUNCTION__,
    ": falha ao criar objeto \"Texto\"! Código de erro = ",GetLastError());
    return(false);
    }
    //--- definir o texto
    ObjectSetString(chart_ID,name,OBJPROP_TEXT,text);
    //--- definir o texto fonte
    ObjectSetString(chart_ID,name,OBJPROP_FONT,font);
    //--- definir tamanho da fonte
    ObjectSetInteger(chart_ID,name,OBJPROP_FONTSIZE,fo nt_size);
    //--- definir o ângulo de inclinação do texto
    ObjectSetDouble(chart_ID,name,OBJPROP_ANGLE,angle) ;
    //--- tipo de definição de ancoragem
    ObjectSetInteger(chart_ID,name,OBJPROP_ANCHOR,anch or);
    //--- definir cor
    ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
    //--- exibir em primeiro plano (false) ou fundo (true)
    ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
    //--- habilitar (true) ou desabilitar (false) o modo de mover o objeto com o mouse
    ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE, selection);
    ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,se lection);
    //--- 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 ponto de ancoragem |
    //+------------------------------------------------------------------+
    bool TextMove(const long chart_ID=0, // ID do gráfico
    const string name="Text", // nome do objeto
    datetime time=0, // coordenada do ponto de ancoragem do tempo
    double price=0) // coordenada do ponto de ancoragem do preço
    {
    //--- se a posição do ponto não está definida, mover para a barra atual tendo o preço Bid
    if(!time)
    time=TimeCurrent();
    if(!price)
    price=SymbolInfoDouble(Symbol(),SYMBOL_BID);
    //--- redefine o valor de erro
    ResetLastError();
    //--- mover o ponto de ancoragem
    if(!ObjectMove(chart_ID,name,0,time,price))
    {
    Print(__FUNCTION__,
    ": falha ao mover o ponto de ancoragem! Código de erro = ",GetLastError());
    return(false);
    }
    //--- sucesso na execução
    return(true);
    }
    //+------------------------------------------------------------------+
    //| Alterar o texto do objeto |
    //+------------------------------------------------------------------+
    bool TextChange(const long chart_ID=0, // ID do Gráfico
    const string name="Text", // nome do objeto
    const string text="Text") // texto
    {
    //--- redefine o valor de erro
    ResetLastError();
    //--- alterar texto do objeto
    if(!ObjectSetString(chart_ID,name,OBJPROP_TEXT,tex t))
    {
    Print(__FUNCTION__,
    ": falha ao alterar texto! Código de erro = ",GetLastError());
    return(false);
    }
    //--- sucesso na execução
    return(true);
    }
    //+------------------------------------------------------------------+
    //| Excluir objeto Texto |
    //+------------------------------------------------------------------+
    bool TextDelete(const long chart_ID=0, // Id do Gráfico
    const string name="Text") // nome do objeto
    {
    //--- redefine o valor de erro
    ResetLastError();
    //--- excluir o objeto
    if(!ObjectDelete(chart_ID,name))
    {
    Print(__FUNCTION__,
    ": falha ao excluir o objeto \"Texto\"! Código de erro = ",GetLastError());
    return(false);
    }
    //--- sucesso na execução
    return(true);
    }
    //+------------------------------------------------------------------+
    //| Verificar valores de ponto de ancoragem e definir valores padrão |
    //| para aqueles vazios |
    //+------------------------------------------------------------------+
    void ChangeTextEmptyPoint(datetime &time,double &price)
    {
    //--- se o tempo do ponto não está definido, será na barra atual
    if(!time)
    time=TimeCurrent();
    //--- se o preço do ponto não está definido, ele terá valor Bid
    if(!price)
    price=SymbolInfoDouble(Symbol(),SYMBOL_BID);
    }
    //+------------------------------------------------------------------+
    //| Programa Script da função start (iniciar) |
    //+------------------------------------------------------------------+
    void OnStart()
    {
    datetime date[]; // array para armazenar datas das barras visíveis
    double low[]; // array para armazenar preços Baixos das barras visíveis
    double high[]; // array para armazenar preços Altos das barras visíveis
    //--- número de barras visíveis na janela do gráfico
    int bars=(int)ChartGetInteger(0,CHART_VISIBLE_BARS);
    //--- alocação de memória
    ArrayResize(date,bars);
    ArrayResize(low,bars);
    ArrayResize(high,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;
    }
    //--- preencher o array dos preços Baixos
    if(CopyLow(Symbol(),Period(),0,bars,low)==-1)
    {
    Print("Falha ao copiar os valores dos preços Baixos! Código de erro = ",GetLastError());
    return;
    }
    //--- preencher o array dos preços Altos
    if(CopyHigh(Symbol(),Period(),0,bars,high)==-1)
    {
    Print("Falha ao copiar os valores dos preços Altos! Código de erro = ",GetLastError());
    return;
    }
    //--- definir a forma como muitas vezes os textos serão exibidos
    int scale=(int)ChartGetInteger(0,CHART_SCALE);
    //--- definir o passo
    int step=1;
    switch(scale)
    {
    case 0:
    step=12;
    break;
    case 1:
    step=6;
    break;
    case 2:
    step=4;
    break;
    case 3:
    step=2;
    break;
    }
    //--- criar textos para os valores de barras de Alta e de Baixa (com intervalos)
    for(int i=0;i<bars;i+=step)
    {
    //--- criar os textos
    if(!TextCreate(0,"TextHigh_"+(string)i,0,date[i],high[i],DoubleToString(high[i],5),InpFont,InpFontSize,
    InpColor,InpAngle,InpAnchor,InpBack,InpSelection,I npHidden,InpZOrder))
    {
    return;
    }
    if(!TextCreate(0,"TextLow_"+(string)i,0,date[i],low[i],DoubleToString(low[i],5),InpFont,InpFontSize,
    InpColor,-InpAngle,InpAnchor,InpBack,InpSelection,InpHidden, InpZOrder))
    {
    return;
    }
    //--- verificar se o funcionamento do script foi desativado a força
    if(IsStopped())
    return;
    //--- redesenhar o gráfico
    ChartRedraw();
    // 0.05 segundos de atraso
    Sleep(50);
    }
    //--- meio segundo de atraso
    Sleep(500);
    //--- excluir os textos
    for(int i=0;i<bars;i+=step)
    {
    if(!TextDelete(0,"TextHigh_"+(string)i))
    return;
    if(!TextDelete(0,"TextLow_"+(string)i))
    return;
    //--- redesenhar o gráfico
    ChartRedraw();
    // 0.05 segundos de atraso
    Sleep(50);
    }
    //---
    }

    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 jssuser For This Useful Post:

    Unregistered (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