Perguntas de um "boneco" - página 66

 
Yedelkin:

Tudo depende da lógica do indicador personalizado. Em princípio, pode recalcular os seus valores uma vez por dia, saltando todas as outras carraças. De acordo com a vontade do autor, por assim dizer.

Basicamente, algumas pessoas tentam utilizar esta abordagem monstro: criar uma cópia do indicador através do iCustom, copiar os dados necessários, apagar a cópia do indicador. O procedimento é repetido sempre que necessário.

Existe também a função OnTimer(), eu próprio não trabalhei com ela, mas talvez possa adaptá-la à sua tarefa.

Obrigado. Foi o que eu pensei. O OnTimer não é adequado.

Há uma situação em que o indicador está em M5 mas é chamado uma vez por hora, por exemplo. Acontece que o indicador será calculado no Expert Advisor em inactividade de 5 em 5 minutos, para o chamar uma vez por hora. É por isso que me pergunto se existe a possibilidade de pausar o recálculo do indicador.

 
masharov:

Há uma situação em que o indicador está em M5, mas é chamado uma vez por hora, por exemplo. Acontece que o indicador será calculado no Consultor Especialista ociosamente a cada 5 minutos, para o chamar uma vez por hora.

E não se pode reescrever o indicador para que seja chamado de hora a hora?
 
Yedelkin:
Posso reescrever o indicador para que ele calcule também de hora em hora?
O comércio é em M5. Não se sabe quando é que o indicador será chamado. Pode ser uma vez de duas em duas horas, ou pode ser três vezes por hora. O indicador é utilizado para confirmar a decisão de fazer uma troca.
Способы вызова индикаторов в MQL5
Способы вызова индикаторов в MQL5
  • 2010.03.09
  • KlimMalgin
  • www.mql5.com
C появлением новой версии языка MQL, не только изменился подход к работе с индикаторами, но и появились новые способы создания индикаторов. Кроме того, появилась дополнительная гибкость при работе с индикаторными буферами - теперь вы можете самостоятельно указать нужное направление индексации и получать ровно столько значений индикатора, сколько вам требуется. В этой статье рассмотрены базовые методы вызова индикаторов и получения данных из индикаторных буферов.
 
masharov:
O comércio está a decorrer em M5. Não se sabe quando é que o indicador será chamado. Pode ser uma vez de duas em duas horas, ou pode ser três vezes de hora em hora. O indicador é utilizado para confirmar a decisão de comércio.
A lógica é clara. Nestes casos, fi-lo de uma forma inteligente e simples: transferi o bloco de cálculos do indicador directamente para o Expert Advisor. Ou seja, em vez da fonte de dados externa (indicador), o consultor especializado utilizou uma das suas funções - a que reproduzia o algoritmo de cálculo do indicador. Neste caso, esta função foi chamada conforme necessário, com um recálculo completo dos valores requeridos.
 

Olá, poderia dizer-me, por favor?

1)O que fazer com erros comoTRADE_RETCODE_LOCKED,TRADE_RETCODE_FROZENe em que caso o pedido é bloqueado ou a posição/ordem é congelada?

2)Também me pergunto o que fazer comTRADE_RETCODE_INVALID_FILLe em que caso ocorre?

 
PunkBASSter:

Olá, poderia dizer-me, por favor?

1)O que fazer com erros comoTRADE_RETCODE_LOCKED,TRADE_RETCODE_FROZENe em que caso o pedido é bloqueado ou a posição/ordem é congelada?

2)Também se pergunta o que fazer com TRADE_RETCODE_INVALID_FILLe em que caso ocorre?

1) Verificar a pesquisa do fórum. Foi discutido há cerca de um ano.

2) Ver na referência ENUM_ORDER_TYPE_FILLING . Provavelmente um desajuste no pedido comercial para o "tipo de ordem de execução" especificado para o modo de execução e resultará no código de retorno especificado.

Por exemplo, ORDER_FILLING_FOK e SYMBOL_TRADE_EXECUTION_MARKET.

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров - Документация по MQL5
 
Yedelkin, muito obrigado)
 
masharov:

Tenho a suspeita de que se o indicador for activado através do iCustom, ele é calculado em cada tick. E não depende das chamadas que lhe são feitas através do CopyBuffer. É correcto?

Se estiver correcto, então é possível desactivar o cálculo do indicador e activá-lo apenas antes de chamar o CopyBuffer?

Se o entendi correctamente, então pode tentar limitar os cálculos nos próximos ticks através do exemplo da ajuda do iFractals (ver várias condições em OnCalculate).

Talvez, pode também assinalar no OnCalculate a execução inicial dos cálculos do indicador para todas as barras necessárias e verificar o tempo do servidor do terminal, e depois de isso acontecer, para repor a bandeira em falso, permitindo assim o recálculo, e colocá-la novamente em verdadeiro... e assim por diante.

Ou mesmo assim: escrever uma função externa com cálculos, chamá-la no OnInit, onde será executada uma vez no primeiro início do indicador (assim como ao mudar as TF e etc., que ocorre por iniciativa do utilizador), e depois chamar a mesma função no OnCalculate da segunda forma (no momento especificado no servidor e por marcação).

Mas o primeiro método é bom, não só não carrega o processador com recálculos completos (muitas vezes sem resultados novos) a cada tick, como nem sequer faz recálculos completos num dado intervalo de tempo, e só calcula as barras mais recentes (se a cada tick, então um novo, e se uma vez t, então vários acumulados durante este tempo)... Embora esta versão seja melhor para verificar pessoalmente, posso estar enganado... Além disso, tudo depende da finalidade específica do indicador. Se depender de um grande ou mesmo de toda a história do mercado, então não se pode livrar de recálculos de toda a história.

 

Não teve o humor da piada (escrever um indicador, embora não faça diferença):

struct TBuffer
{
  double buffer[];
};

TBuffer BuffArray[4];

Compila sem erros ou avisos.

int elements=4;

struct TBuffer
{
  double buffer[];
};

TBuffer BuffArray[elements];

Compilado com1 erro(s), 0 aviso(s): 'elementos' - valor do índice inválido.

O que pode ser ultrapassado pelo óbvio senso comum aqui?

 
x100intraday:


O que pode ser ultrapassado pelo óbvio senso comum aqui?

o número de elementos da matriz é especificado por uma constante

Se o número de elementos não for conhecido de antemão, usar o ArrayResize para definir o tamanho usando variáveis.

Esta é a base do c+++.

Portanto, ou

#define  elements 4
Razão: