Erros, bugs, perguntas - página 136

 
Renat:
O indicador criado a partir do Expert Advisor não será descarregado até que seja explicitamente apagado ou o Expert Advisor esteja terminado.

Obrigado por ter tido tempo para responder.

Isto muda muito, significa que podemos fazer sem separar o código para o testador e o código para o real.

 
Renat:

Conselhos sobre a melhor forma de poupar recursos se os indicadores forem necessários uma vez por hora :

deixar uma dúzia de indicadores padrão a cada vez que se faz uma carraça ou

Descarregá-los após cada utilização através de IndicatorRelease(indicator_handle), e depois carregá-los novamente após uma hora.

Mas a segunda variante aumenta o tempo dos testes.

Responder também a quanto atraso, em média, é necessário para carregar uma máscara?

 
Urain:

Conselhos sobre a melhor forma de poupar recursos se os indicadores forem necessários uma vez por hora :

deixar uma dúzia de indicadores padrão para pendurar em cada carrapato ou

A melhor coisa a fazer não é descarregá-los (os indicadores são praticamente desnecessários "uma vez por hora"), mas sim

  1. aumentar o tamanho da memória com transição para 64 bits, ou
  2. reduzir a profundidade dos gráficos de história
O tempo exacto de carregamento é impossível de dizer - depende de vários factores. É melhor não criar problemas através da descarga de indicadores - isto pode causar problemas por causa dos processos assíncronos de criação e recálculo do indicador.
 
Urain:

Conselhos sobre a melhor forma de poupar recursos se os indicadores forem necessários uma vez por hora :

deixar uma dúzia de indicadores padrão a cada vez que se faz uma carraça ou

Descarregá-los após cada utilização através de IndicatorRelease(indicator_handle), e depois carregá-los novamente após uma hora.

Mas a segunda variante aumenta o tempo dos testes.

Responder também a quanto atraso, em média, é necessário para carregar uma máscara?

Se não utilizar o temporizador para outros fins, tente enviar os dados para o temporizador no intervalo requerido.
 

Pergunta

Eu não uso configurações de compensação, mas por acaso vi uma descrição sobre jacaré, comecei a pensar... :)

Descrição de uma das configurações do jacaré:

teeth_shift

[em] Mudança de linha vermelha em relação à tabela de preços. Deve-se lembrar que o deslocamento da linha é puramente visual para exibição, e os valores no buffer do indicador são armazenados sem qualquer deslocamento. Quando os valores do buffer são obtidos utilizando a função CopyBuffer(), o valor do offset não terá qualquer efeito.

Embora não seja mencionado na descrição do MA, mas penso que é um erro e tudo é semelhante

ma_shift

[em] Mudança de indicador em relação à tabela de preços.

Na fotografia onde se encontra o passarinho amarelo, o preço atravessou o MA sem um turno. É evidente aqui, por exemplo, que o preço no fecho do bar anterior é mais elevado do que o MA e o preço na abertura do bar actual é aberto.

Mas onde está a ave verde, como é que sabemos o mesmo? Isto é, quando o preço atravessa visualmente o MA com o turno

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Линии индикаторов
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Линии индикаторов
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы индикаторов / Линии индикаторов - Документация по MQL5
 
Olá, escrevi um guião para obter um preço Ask por EURUSD
#include <Trade\SymbolInfo.mqh>
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
  CSymbolInfo SymInfo;
  Alert(SymInfo.Ask());
  }
Retorna 0 - Acho que preciso de ligar
CSymbolInfo SymInfo;
para o símbolo do gráfico, mas não sei como especificar o símbolo da classe
 
kirill190982:
Olá, eu escrevi um guião - obter Ask price for EURUSD dá 0 - Acho que preciso de ligar
para o símbolo do gráfico, mas não sei como especificar o símbolo da classe
Antes de mais, vamos descobrir do que se trata a aula. Para resolver o problema deverá utilizar os métodos Nome e taxas de actualização desta classe.
 
Interesting:
A primeira coisa a fazer é familiarizar-se com o que é a aula. Ao ligar ao símbolo, deve primeiro utilizar o método "Nome" da classe.
//+------------------------------------------------------------------+
//|                                                   SymbolInfo.mqh |
//|                      Copyright © 2010, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//|                                              Revision 2010.02.22 |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Class CSymbolInfo.                                               |
//| Appointment: Class for access to symbol info.                    |
//+------------------------------------------------------------------+
class CSymbolInfo
  {
protected:
   string                      m_name;               // symbol name
   MqlTick                     m_tick;               // structure of tick;
.....
//--- ask parameters
   double            Ask() const                      { return(m_tick.ask); 
Compreendo que Ask na aula é determinado pela estrutura do MqlTick.
#include <Trade\SymbolInfo.mqh>
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
  string Megasymbol=Symbol();
  CSymbolInfo SymInfo;
  SymInfo.Name(Megasymbol);
  Alert(SymInfo.Ask());
  }
ainda obtêm resultados zero.
 
kirill190982:
Compreendo que Ask na classe é definido pela estrutura do MqlTick; experimentei-o de ambas as maneiras e ainda assim consegui zero

Deverá fazer o seguinte

SymInfo.Name("EURUSD");
SymInfo.RefreshRates();
Print(SymInfo.Ask());
 
Interesting:

Que tal tentar desta forma?

Obrigado
Razão: