photo

Fórum Forex Brasil

Lugar da Comunidade Forex

+ 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,007 Tempos em 579 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. The Following User Says Thank You to jssuser 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