Erros, bugs, perguntas - página 1545

 
Alexey Volchanskiy:
O Youtube aceita todos os ficheiros em avi desde que não haja anúncios violentos, nem pornografia, e o tamanho seja < 15 mb se não estiver em modo avançado. Além disso, não deve haver anúncios, inclusive na sua assinatura.
Enviou-lhe um e-mail no PM. Não está a funcionar para mim.
 
Karputov Vladimir:

Este é um fórum técnico e todos os comentários devem ser confirmados:

  • informação do terminal e do sistema operativo (primeiras três linhas do separador log depois de reiniciar o terminal)
  • código
  • descrição detalhada do que fez e do que obteve.

Descrição bastante detalhada do que observei. Os criadores não me devem nada e eu não lhes devo nada. Se eles estiverem interessados, falaremos com eles no Service Desk.

O código para o indicador vazio é óbvio.

 
comp:

Gravou um vídeo de como o indicador (em modo padrão - não debug) se actualiza, mas não são desenhadas novas barras. Assim que se retira o indicador do gráfico, aparecem imediatamente novas barras.

Os anfitriões não aceitam o ficheiro de vídeo. Se necessário, posso enviá-lo para o Servicedesk, tal como está.

Agrupá-lo num arquivo e enviá-lo. Os ficheiros Zip são suportados.
 
Por favor, diga-me como activar/desactivar a "Escala de tempo precisa" no MetaTrader 5 programática. Não o consigo encontrar.
Através de CHART_SHOW_DATE_SCALE - não é isto, como eu entendo.

Activar manualmente o tempo de interesse através do seguinte caminho:

Terminal -> Serviço -> Definições -> Gráficos -> Linha temporal precisa


Estou a anexar o código de teste abaixo. Se a "Escala de tempo precisa" for activada manualmente no terminal de comércio, este indicador de teste desenha segmentos de linha verticais com pontos de empate entre duas barras. Se não estiver activado, não está entre as barras.

A captura de ecrã abaixo mostra um segmento de linha vertical criado pelo código de teste entre as barras quando a "Escala de tempo precisa" está activada



Digo-lhe já a segunda coisa em que estou interessado:

Se eu executar este código no testador, as linhas não são desenhadas com pontos de ancoragem entre as barras. Não são criados como na imagem de ecrã acima, são criados como na imagem de ecrã abaixo.

MetaTrader 5 Versão: 5.00 construir 1295

Não sei como fazer aqui uma pergunta mais precisa, pois não tenho uma resposta para a primeira.



P./S..:

Fiz alguns esclarecimentos:

  • adicionou screenshots;
  • substituiu o código de teste, removendo a variável não utilizada aqui e exibindo uma janela separada;
  • esclarecimentos que fiz no texto em letra azul escura.
Arquivos anexados:
 

Como posso conseguir que o terminal ligue para a OnCalculate em MT5? O ChartRedraw não ajuda. A variante DLL não é adequada.

Por outras palavras, preciso de criar um evento Calculate: https://www.mql5.com/ru/docs/runtime/event_fire#calculate

Документация по MQL5: Программы MQL5 / События клиентского терминала
Документация по MQL5: Программы MQL5 / События клиентского терминала
  • www.mql5.com
Программы MQL5 / События клиентского терминала - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 

Dos resultados da pesquisa cheguei à conclusão de que parece não haver nenhuma função na Ajuda MQL5 que possa ser utilizada para activar/desactivar programmaticamente a "Escala de tempo precisa" no MetaTrader 5.

Por alguma razão, tive a impressão de que houve algumas mudanças a este respeito nos últimos tempos. Embora, claro, eu deva estar errado.

Em caso afirmativo, vou reafirmar a minha primeira pergunta acima:

Haverá uma função para activar/desactivar programmaticamente a "Escala de tempo precisa"?


E em qualquer dos casos (será ou não introduzido): como é que se faz este interruptor de ligar/desligar no testador?

 
comp:

Como posso conseguir que o terminal ligue para a OnCalculate em MT5? O ChartRedraw não ajuda. A DLL-versão não funciona.

Se o encontrar, diga-me também, por favor).

Neste momento, tanto quanto sei, a resposta é "nem pensar".

 
Комбинатор:

Se o encontrarem, avisem-me também).

Neste momento, tanto quanto sei, a resposta é "nem pensar".

Se eu sou um conselheiro, é assim

#define  PERIOD_NULL -1

void CallOnCalculates( void )
{
  const string Name = __FUNCTION__;

  if (GlobalVariableCheck(Name))
  {
    const int Value = (int)GlobalVariableGet(Name);

    if (Value == PERIOD_NULL)
    {
      GlobalVariableDel(Name);

      ExpertRemove();
    }
    else if (ChartSetSymbolPeriod(0, Symbol(), (ENUM_TIMEFRAMES)Value))
      GlobalVariableSet(Name, PERIOD_NULL);
  }
  else
  {
    const ENUM_TIMEFRAMES period = Period();

    if (ChartSetSymbolPeriod(0, Symbol(), (period == PERIOD_MN1) ? PERIOD_W1 : PERIOD_MN1))
    {
      GlobalVariableTemp(Name);

      GlobalVariableSet(Name, period);
    }
  }

  return;
}

void OnInit( void )
{
  CallOnCalculates();

  return;
}

Mas eu preciso dele para outra coisa e não me convém.

 
comp:

Se por Conselheiro Especialista, então assim

Se o guião, então podemos (a implementação é completamente diferente - sem alterar a TF)chamar a OnCalculate para um indicador específico no gráfico ou para todos eles de uma só vez.

Mas preciso dela para outra coisa e esta variante não é adequada.

Mas esta variante (script) também não é adequada, se o indicador deve fazer com que o terminal chame o seu próprio OnCalculate (MT5).

 
Com um indicador, preciso de um indicador.