Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 6. - página 560

 
Leo59:
Meu consultor especializado, em deinit() escreve 98496 linhas para logar o arquivo *.csv
Por que ele descarrega de forma diferente quando o especialista termina no testador:
- no caso de descarga no final da data do teste, tudo está normal (98496 linhas)
- no caso de descarga pelo botão "Stop", apenas cerca de 10% dos dados.
Quem sabe qual poderia ser o problema?


Rescisão forçada do Expert Advisor quando o próprio usuário descarrega o Expert Advisor.

é melhor registrar os dados diretamente no início.

 
Roman.:

Rapazes, como vocês interpretam este aviso?

Obrigado.


função deve ser definida para uma variável

por exemplo bool closee=OrderClose...........

  • ovalor de retorno da 'OrderSelect' deve ser verificado
  • ovalor de retorno da 'OrderDelete' deve ser verificado
  • ovalor de retorno do 'OrderSend ' deve ser verificado
  • valor de retorno de "OrderClose " deve ser verificado
  • ovalor de retorno de 'OrderModify' deve ser verificado


Para evitar tais avisos, o retorno à variável deve ser especificado explicitamente
por exemplo, como este:
  • bool select1=OrderSelect..........
  • bool delete1=OrderDelete..........
  • bool close1=OrderClose..........
  • bool modify1=OrderModify..........
  • int send1=OrderSend..........
 
Boa tarde. Você pode me dizer se é possível definir ou calcular a largura/altura em um gráfico de um objeto OBJ_TEXT?
 
alxm:
Boa tarde. Você pode me dizer se é possível determinar ou calcular a largura/altura em um gráfico de um objeto OBJ_TEXT?

Como calcular o número de caracteres, + tamanho da fonte ou algo parecido?
 
cipsi:

Como encontrar o OrderOpenPrice do primeiro pedido aberto, se conhecido:

1.Símbolo

2. As ordens de compra podem ser abertas de uma a muitas

3.Magic

4.Diferenças entre os pedidos, provavelmente por bilhete - encontre o menor bilhete.


double PriceOpenFirstPos(string sy="", int op=-1, int mn=-1) {
  datetime t==0;
  double   r=0;
  int      i, k=OrdersTotal();

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==sy || sy=="") {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) {
              if (t>OrderOpenTime() || t==0) {
                t=OrderOpenTime();
                r=OrderOpenPrice();
              }
            }
          }
        }
      }
    }
  }
  return(r);
}
 
psdmaster:
Leia o artigo sobre a criação de uma EA: https://book.mql4.com/ru/samples/expert

Você pode me dizer como abrir um negócio em um bar e fechá-lo quando o próximo bar aparecer?


1. Ao abrir um negócio, lembre-se do horário do bar

assim:

fora do início:

 int timeopen;

no início, onde você tem um comércio aberto:

 timeopen=Time[0];

Fechamento assim:

if(timeopen!= Time[0]) OrderClose............
 
Zolotai:
Por favor, me diga. Como posso saber o número de pedidos abertos para um determinado símbolo, sem loops...


Não há como fazer isso sem um ciclo.

 

Querida, preciso de sua ajuda.

Estou otimizando meu Expert Advisor pelo indicador, o código do indicador está abaixo.

A otimização é lenta, fiz um código no EA para recalcular o indicador em uma nova barra, o que não é muito adequado.

Consulte o código do indicador, o que pode ser feito nele para que o recálculo aconteça mais rapidamente.

#property indicator_separate_window
#property indicator_buffers 4
#property  indicator_color1 Lime
#property  indicator_color2 Yellow
#property  indicator_color3 Red
#property  indicator_color4 Aqua

//--- input parameters
extern int       Period_MA_1=14;
extern int       p2          =7;
extern int       p3          =5;
extern int       p4          =3;
extern int Limit=70;
//--- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
double ExtMapBuffer3[];
double ExtMapBuffer4[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_NONE);
   SetIndexBuffer(0,ExtMapBuffer1);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1,ExtMapBuffer2);
   SetIndexStyle(2,DRAW_LINE);
   SetIndexBuffer(2,ExtMapBuffer3);
   SetIndexStyle(3,DRAW_LINE);
   SetIndexBuffer(3,ExtMapBuffer4);
   IndicatorDigits(Digits+1);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int counted_bars=IndicatorCounted(),
   i,limit1,limit2,limit3,limit4;
   double impuls;
   if(counted_bars<0) return(-1);
   if(counted_bars>0) counted_bars--;
 
   limit1=Bars-counted_bars-1;
   if (limit1>Limit && Limit>0) limit1=Limit;
   limit2=limit1;
   limit3=limit2;
   limit4=limit3;
   if(limit1>0) 
     {
      limit1=500-Period_MA_1-1;
      limit2=limit1-p2;
      limit3=limit2-p3;
      limit4=limit3-p4;
     }
   for(i=limit1;i>=0;i--) {ExtMapBuffer1[i]=Close[i]-Close[i+Period_MA_1];}
   for(i=limit2;i>=0;i--) {ExtMapBuffer2[i]=iMAOnArray(ExtMapBuffer1, 0, p2, 0, MODE_EMA,i);}
   for(i=limit3;i>=0;i--) {ExtMapBuffer3[i]=iMAOnArray(ExtMapBuffer2, 0, p3, 0, MODE_EMA,i);}
   for(i=limit4;i>=0;i--) {ExtMapBuffer4[i]=iMAOnArray(ExtMapBuffer3, 0, p4, 0, MODE_EMA,i);}

   return(0);
  }
 

onde posso ler sobre as aulas no mt4?

Eu li a ajuda, mas ela não explica o significado destas linhas.

CArray::CArray(void) : m_step_resize(16),
                       m_data_total(0),
                       m_data_max(0),
                       m_sort_mode(-1)
  {
  }

onde ler sobre inicialização de variáveis...

 
Vladon:


função deve ser definida variável

por exemplo, bool closee=OrderClose...........

  • ovalor de retorno da 'OrderSelect' deve ser verificado
  • ovalor de retorno da 'OrderDelete' deve ser verificado
  • ovalor de retorno do 'OrderSend ' deve ser verificado
  • valor de retorno de "OrderClose " deve ser verificado
  • ovalor de retorno de 'OrderModify' deve ser verificado


para evitar tais avisos, o retorno à variável deve ser especificado explicitamente
assim:
  • bool select1=OrderSelect..........
  • bool delete1=OrderDelete..........
  • bool close1=OrderClose..........
  • bool modify1=OrderModify..........
  • int send1=OrderSend..........


Obrigado. Funcionou sem nenhum aviso:


Guiado por um exemplo do manual :-)


OrderDelete

Elimina um pedido pendente previamente colocado.

bool OrderDelete(
int ticket, // número de pedido
cor arrow_color // cor
);

Parâmetros

bilhete

[Número de série único do pedido.

arrow_color

[em] Cor da seta na tabela. Se este parâmetro estiver faltando ou seu valor for CLR_NONE, a seta não é mostrada no gráfico.

Valor retornado

Retorna verdadeiro se a função foi concluída com sucesso ou falso se houve um erro. Para obter as informações de erro, ligue para GetLastError().

Exemplo:

if(Perguntar>var1)
{
OrderDelete(order_ticket);
retorno(0);
}

Razão: