Discussão do artigo "A Implementação de um Modo Multi-currency (múltiplas moedas) no MetaTrader 5" - página 2

 
Lizar:

Mas o fato de o especialista no testador não conseguir carregar o espião é estranho. Ele funciona na demonstração?

Ele está recebendo um erro

ERR_INDICATOR_CANNOT_CREATE

4802

O indicador não pode ser criado

Veja por que o indicador não pode ser criado.
 
Yedelkin:
Ele recebe um erro

ERR_INDICATOR_CANNOT_CREATE

4802

O indicador não pode ser criado

Veja por que o indicador não pode ser criado.

Ainda não consegui descobrir. Na demonstração funciona, mas no testador não carrega (não cria). Tentei até isso:

#property tester_indicator "iSpy.ex5"
Não ajuda.
 
Lizar:

Ainda não consegui obter uma pista. Na demonstração funciona, mas no testador não carrega (não cria). Tentei até isso:

Não ajuda.

Pelo método de estímulo científico, funcionou no testador:

   if(iCustom("GBPUSD",PERIOD_M1,"iSpy.ex5",ChartID(),0)==INVALID_HANDLE) 

E foi suficiente inserir apenas a primeira condição, para "GBPUSD". Agora a pergunta: por que exatamente isso?

 
Yedelkin:

De acordo com o método científico, foi assim que funcionou no testador:

E foi suficiente inseri-lo somente na primeira condição, para "GBPUSD". Agora a pergunta é: por que exatamente assim?

Uau, a "pesquisa científica" é uma coisa ótima em nosso negócio. Bem, por que é assim é uma questão para os desenvolvedores, na minha opinião.

Obrigado por me ajudar a descobrir isso.

 
Lizar:

Há uma linha na função OnCalculate() no painel de controle do Spy MCM:

Por padrão, o preço [rates_total-1] é igual ao preço de fechamento da última barra inacabada, que, por sua vez, é igual ao último preço de oferta. Ou seja, sempre obtemos o preço de oferta do espião por padrão.

Se você quiser obter o preço de venda à força, substitua essa linha, por exemplo, por....

Obrigado, mas está um pouco errado, ou seja, você pode obter tanto o preço de compra quanto o de venda. Mas eu preciso obter os preços de compra e venda de uma só vez para analisar situações como essa.

2011.01.24 10:59:28 exSpy (GBPUSD,M5) 08:59:24 -> id=2: EURUSD PERIOD_M1 price=1.35778
2011.01.24 10:59:28 exSpy (GBPUSD,M5) 08:59:24 -> id=2: EURUSD PERIOD_M1 price=1.35778
2011.01.24 10:59:28 exSpy (GBPUSD,M5) 08:59:24 -> id=2: EURUSD PERIOD_M1 price=1.35778
três ticks e o lance não muda, portanto (possivelmente) o pedido foi alterado. eu gostaria de obter informações mais completas.

É possível?

 
Trolls:

Obrigado, mas um pouco errado, ou seja, você pode obter tanto o preço de compra quanto o de venda. Mas para obter os dois preços ao mesmo tempo, tanto o de compra quanto o de venda, você precisa analisar situações como essa.

2011.01.24 10:59:28 exSpy (GBPUSD,M5) 08:59:24 -> id=2: EURUSD PERIOD_M1 price=1.35778
2011.01.24 10:59:28 exSpy (GBPUSD,M5) 08:59:24 -> id=2: EURUSD PERIOD_M1 price=1.35778
2011.01.24 10:59:28 exSpy (GBPUSD,M5) 08:59:24 -> id=2: EURUSD PERIOD_M1 price=1.35778
três ticks e o lance não muda, portanto (possivelmente) o pedido foi alterado. gostaria de receber informações mais completas.

Isso é possível?

É possível, há várias maneiras:

1. ter dois espiões no mesmo símbolo com IDs diferentes. Um deles enviará a oferta e o outro enviará a solicitação.

2. ter um espião no mesmo símbolo, mas fazer com que ele envie dois eventos de compra e venda sequencialmente com id diferente.

3. há mais opções, mas elas já estão associadas a modificações significativas no esquema de passagem de parâmetros para OnChartEvent - não aconselho.

Документация по MQL5: Основы языка / Функции / Передача параметров
Документация по MQL5: Основы языка / Функции / Передача параметров
  • www.mql5.com
Основы языка / Функции / Передача параметров - Документация по MQL5
 
Use o espião como um "semáforo da chegada de um novo tique" e, no Expert Advisor, obtenha informações completas sobre o tique usando SymbolInfoTick.
 
Kos:
Use o espião como um "semáforo da chegada de um novo tique" e, no Expert Advisor, obtenha informações completas sobre o tique usando SymbolInfoTick.

Ótima solução.
 

Dê-me uma dica, se não se importar. O artigo contém um exemplo de uma enumeração

enum ENUM_CHART_EVENT_SYMBOL
  {
   CHARTEVENT_INIT      =0,          // Evento "Initialisation" (Inicialização)
   CHARTEVENT_NO        =0,          // Eventos desconectados

   CHARTEVENT_NEWBAR_M1 =0x00000001, // Evento "nova barra" no gráfico de 1 minuto
   CHARTEVENT_NEWBAR_M2 =0x00000002, // Evento "nova barra" no gráfico de 2 minutos
   CHARTEVENT_NEWBAR_M3 =0x00000004, // Evento "nova barra" no gráfico de 3 minutos
   CHARTEVENT_NEWBAR_M4 =0x00000008, // Evento "nova barra" no gráfico de 4 minutos
   
   ...
   
   CHARTEVENT_ALL       =0xFFFFFFFF, // Todos os eventos estão ativados
  };

e um exemplo de trabalho com os valores dessa enumeração:

if((flag_event & CHARTEVENT_NEWBAR_M1)!=0) EventCustom(CHARTEVENT_NEWBAR_M1,price_current

Construções semelhantes são observadas na biblioteca padrão. Pelo que entendi, estamos falando de números hexadecimais e operações bit a bit, mas alguns artigos gerais encontrados na Internet não ajudaram a esclarecer o significado e a finalidade de seu uso na MQL5. Você poderia me dizer onde é possível se familiarizar de forma clara e evidente com as peculiaridades da lógica hexadecimal usada em MQL5?

Документация по MQL5: Стандартная библиотека
Документация по MQL5: Стандартная библиотека
  • www.mql5.com
Стандартная библиотека - Документация по MQL5
 
Yedelkin:

Dê-me uma dica, se não se importar. O artigo contém um exemplo de uma enumeração

e um exemplo de trabalho com os valores dessa enumeração:

Construções semelhantes são observadas na biblioteca padrão. Pelo que entendi, estamos falando de números hexadecimais e operações bit a bit, mas alguns artigos gerais encontrados na Internet não ajudaram a esclarecer o significado e a finalidade de seu uso na MQL5. Você poderia me dizer onde é possível ler de forma clara e evidente as peculiaridades da lógica hexadecimal usada em MQL5?

A lógica hexadecimal é a mesma em todos os lugares. Você pode ler sobre sistemas numéricos aqui. Lá você pode ler sobre sistemas de números posicionais e ver referências aos sistemas 16 e binários. Lá também há exemplos de conversão de sistema para sistema.

Todas as operações bit a bit são destinadas ao sistema binário. Sobre operações bit a bit em MQL5 aqui.