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

Thread: OBJ_BITMAP Objeto Bitmap.

  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,574 Tempos em 856 Postagens
    AssinarAssinar
    subscritar: 0

    OBJ_BITMAP Objeto Bitmap.

    Name:  objbitmap.png
Views: 729
Size:  19.7 KB

    Observação

    Para objeto Bitmap, você pode selecionar o escopo de visibilidade de uma imagem.

    Exemplo

    O seguinte script cria vários bitmaps 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 um bitmap na janela do gráfico."
    //--- 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 InpFile="\\Images\\dollar.bmp"; // Nome do arquivo Bitmap
    input int InpWidth=24; // Coordenada X do escopo de visibilidade
    input int InpHeight=24; // Coordenada Y do escopo de visibilidade
    input int InpXOffset=4; // Deslocamento do escopo de visibilidade pelo eixo X
    input int InpYOffset=4; // Deslocamento do escopo de visibilidade pelo eixo Y
    input color InpColor=clrRed; // Cor da borda quando destacada
    input ENUM_LINE_STYLE InpStyle=STYLE_SOLID; // Estilo de linha quando destacada
    input int InpPointWidth=1; // Tamanho do ponto para movimento
    input bool InpBack=false; // Objeto de Fundo
    input bool InpSelection=false; // Destaque para mover
    input bool InpHidden=true; // Ocultar na lista de objeto
    input long InpZOrder=0; // Prioridade para clicar no mouse
    //+------------------------------------------------------------------+
    //| Criar um bitmap na janela do gráfico |
    //+------------------------------------------------------------------+
    bool BitmapCreate(const long chart_ID=0, // ID do gráfico
    const string name="Bitmap", // nome do bitmap
    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 file="", // nome do arquivo bitmap
    const int width=10, // coordenada X do escopo de visibilidade
    const int height=10, // coordenada Y do escopo de visibilidade
    const int x_offset=0, // escopo de visibilidade deslocado pelo eixo X
    const int y_offset=0, // escopo de visibilidade deslocado pelo eixo Y
    const color clr=clrRed, // cor da borda quando destacada
    const ENUM_LINE_STYLE style=STYLE_SOLID, // estilo de linha quando destacada
    const int point_width=1, // mover tamanho do ponto
    const bool back=false, // no fundo
    const bool selection=false, // destaque para mover
    const bool hidden=true, // ocultar na lista de objetot
    const long z_order=0) // prioridade para clicar no mouse
    {
    //--- definir as coordenadas de pontos de ancoragem, se eles não estão definidos
    ChangeBitmapEmptyPoint(time,price);
    //--- redefine o valor de erro
    ResetLastError();
    //--- criar um bitmap
    if(!ObjectCreate(chart_ID,name,OBJ_BITMAP,sub_wind ow,time,price))
    {
    Print(__FUNCTION__,
    ": falha ao criar um bitmap na janela do gráfico! Código de erro = ",GetLastError());
    return(false);
    }
    //--- definir o caminho para o arquivo da imagem
    if(!ObjectSetString(chart_ID,name,OBJPROP_BMPFILE, file))
    {
    Print(__FUNCTION__,
    ": falha ao carregar a imagem! Código de erro = ",GetLastError());
    return(false);
    }
    //--- definir escopo de visibilidade para a imagem, se os valores da largura ou altura
    //--- excederem a largura e a altura (respectivamente) de uma imagem de origem,
    //--- não será desenhada, no caso oposto
    //--- apenas a parte correspondente a esses valores será desenhada
    ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width );
    ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,heigh t);
    //--- definir a parte de uma imagem que está sendo exibida no escopo de visibilidade,
    //--- a parte padrão é a área superior esquerda de uma imagem, os valores permitem
    //--- realizar uma mudança a partir desta área de exibição de uma outra parte da imagem
    ObjectSetInteger(chart_ID,name,OBJPROP_XOFFSET,x_o ffset);
    ObjectSetInteger(chart_ID,name,OBJPROP_YOFFSET,y_o ffset);
    //--- definir a cor da borda quando o modo de destaque do objeto é habilitado
    ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
    //--- definir o estilo de linha quando o modo de destaque do objeto é habilitado
    ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style );
    //--- definir o tamanho do ponto de ancoragem para movimentar o objeto
    ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,point _width);
    //--- exibir em primeiro plano (false) ou fundo (true)
    ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
    //--- Habilitar (true) ou desabilitar (false) o modo de movimento da etiqueta pelo 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);
    }
    //+------------------------------------------------------------------+
    //| Definir uma nova imagem para o bitmap |
    //+------------------------------------------------------------------+
    bool BitmapSetImage(const long chart_ID=0, // ID do gráfico
    const string name="Bitmap", // nome do bitmap
    const string file="") // caminho para o arquivo
    {
    //--- redefine o valor de erro
    ResetLastError();
    //--- definir o caminho para o arquivo da imagem
    if(!ObjectSetString(chart_ID,name,OBJPROP_BMPFILE, file))
    {
    Print(__FUNCTION__,
    ": falha ao carregar a imagem! Código de erro = ",GetLastError());
    return(false);
    }
    //--- sucesso na execução
    return(true);
    }
    //+------------------------------------------------------------------+
    //| Criar um bitmap na janela do gráfico |
    //+------------------------------------------------------------------+
    bool BitmapMove(const long chart_ID=0, // ID do gráfico
    const string name="Bitmap", // nome do bitmap
    datetime time=0, // ponto de ancoragem do tempo
    double price=0) // 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 tamanho do escopo de visibilidade (objeto) |
    //+------------------------------------------------------------------+
    bool BitmapChangeSize(const long chart_ID=0, // ID do gráfico
    const string name="Bitmap", // nome do bitmap
    const int width=0, // largura do bitmap
    const int height=0) // altura do bitmap
    {
    //--- redefine o valor de erro
    ResetLastError();
    //--- alterar tamanho do bitmap
    if(!ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,w idth))
    {
    Print(__FUNCTION__,
    ": falha ao alterar a largura do bitmap! Código de erro = ",GetLastError());
    return(false);
    }
    if(!ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,h eight))
    {
    Print(__FUNCTION__,
    ": falha ao alterar a altura do bitmap! Código de erro = ",GetLastError());
    return(false);
    }
    //--- sucesso na execução
    return(true);
    }
    //+--------------------------------------------------------------------+
    //| Mudar coordenada canto superior esquerdo do escopo de visibilidade |
    //+--------------------------------------------------------------------+
    bool BitmapMoveVisibleArea(const long chart_ID=0, // ID do gráfico
    const string name="Bitmap", // nome do bitmap
    const int x_offset=0, // coordenada X do escopo de visibilidade
    const int y_offset=0) // coordenada Y do escopo de visibilidade
    {
    //--- redefine o valor de erro
    ResetLastError();
    //--- alterar as coordenadas do escopo de visibilidade do bitmap
    if(!ObjectSetInteger(chart_ID,name,OBJPROP_XOFFSET ,x_offset))
    {
    Print(__FUNCTION__,
    ": falha para alterar coordenada X do escopo de visibilidade! Código de erro = ",GetLastError());
    return(false);
    }
    if(!ObjectSetInteger(chart_ID,name,OBJPROP_YOFFSET ,y_offset))
    {
    Print(__FUNCTION__,
    ": falha para alterar coordenada Y do escopo de visibilidade! Código de erro = ",GetLastError());
    return(false);
    }
    //--- sucesso na execução
    return(true);
    }
    //+------------------------------------------------------------------+
    //| Excluir um bitmap |
    //+------------------------------------------------------------------+
    bool BitmapDelete(const long chart_ID=0, // ID do gráfico
    const string name="Bitmap") // nome do bitmap
    {
    //--- redefine o valor de erro
    ResetLastError();
    //--- excluir a etiqueta
    if(!ObjectDelete(chart_ID,name))
    {
    Print(__FUNCTION__,
    ": falha ao excluir um bitmap! 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 ChangeBitmapEmptyPoint(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 close[]; // array para armazenar Fechamento de preços
    //--- nome do arquivo bitmap
    string file="\\Images\\dollar.bmp";
    //--- 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(close,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(CopyClose(Symbol(),Period(),0,bars,close)==-1)
    {
    Print("Falha ao copiar os valores dos preços Baixos! Código de erro = ",GetLastError());
    return;
    }
    //--- definir como frequentemente as imagens devem ser exibidas
    int scale=(int)ChartGetInteger(0,CHART_SCALE);
    //--- definir o passo
    int step=1;
    switch(scale)
    {
    case 0:
    step=27;
    break;
    case 1:
    step=14;
    break;
    case 2:
    step=7;
    break;
    case 3:
    step=4;
    break;
    case 4:
    step=2;
    break;
    }
    //--- criar bitmaps para valores de barra Alta e Baixa (com intervalos)
    for(int i=0;i<bars;i+=step)
    {
    //--- criar os bitmaps
    if(!BitmapCreate(0,"Bitmap_"+(string)i,0,date[i],close[i],InpFile,InpWidth,InpHeight,InpXOffset,
    InpYOffset,InpColor,InpStyle,InpPointWidth,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 sinal Sell
    for(int i=0;i<bars;i+=step)
    {
    if(!BitmapDelete(0,"Bitmap_"+(string)i))
    return;
    if(!BitmapDelete(0,"Bitmap_"+(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. Os seguintes 2 Usuários Dizem Obrigado o a jssuser por este post útil:

    Não registrado (2 )

+ 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