Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 755

 

Boa tarde!

Precisa de alguma ajuda/aconselhamento. No terminal há uma opção para misturar vários indicadores. Neste caso, é possível fixar as gamas.

Por exemplo, CCI min=-300 max=300 e RSI min=0 max=100.

É possível implementar no Expert Advisor para cruzar 2 indicadores. Suponha que a CCI cruza o RSI de baixo para cima => abra uma ordem de baía.

Será possível?

Ou não é possível uma vez que estes indicadores têm uma gama de valores diferente. Com rsi a gama de valores é limitada de 0 a 100, e com cci os valores podem ser tanto positivos como negativos e não estão limitados ao valor máximo/min...

 
lomaxx7:

Boa tarde!

Precisa de alguma ajuda/aconselhamento. No terminal há uma opção para misturar vários indicadores. Neste caso, é possível fixar as gamas.

Por exemplo, CCI min=-300 max=300 e RSI min=0 max=100.

É possível implementar no Expert Advisor para cruzar 2 indicadores. Suponha que a CCI cruza o RSI de baixo para cima => abra uma ordem de baía.

Será possível?

Ou não é possível uma vez que estes indicadores têm uma gama de valores diferente. Com rsi a gama de valores é limitada de 0 a 100, e com cci os valores podem ser tanto positivos como negativos e não estão limitados ao valor máximo/min...

Se escrever o seu próprio iRSI para este fim, pode subtrair 50 do valor iRSI e obter um indicador com nível zero. Resta uma questão: qual é a utilização de indicadores de mistura desta forma?

 
Alexey Viktorov:

Se escrever o seu próprio iRSI para este mesmo fim, pode subtrair 50 do valor iRSI e obter um indicador de nível zero. Resta uma questão: qual é a utilização de indicadores de mistura desta forma?

Obrigado. Há algumas ideias que precisam de ser trabalhadas.
 

lomaxx7:

É possível implementar numa EA a função de cruzamento de 2 indicadores. Suponha que a CCI cruza RSI de baixo para cima => abre ordem de baía...

Será isto possível?

Ou não é possível uma vez que estes indicadores têm uma gama de valores diferente. Com rsi a gama de valores é limitada de 0 a 100, e com cci os valores podem ser tanto positivos como negativos e não estão limitados ao valor máximo/min...

Não é complicado. Pode calculara CCI através doRSI e vice-versa. Veja a documentação. Existe uma explicação para cada indicador, quais os preços que podem ser utilizados.

https://www.mql5.com/ru/docs/indicators/irsi

preço_aplicado

[em]Preçoutilizado .Pode ser qualquer uma das constantes de preço ENUM_APPLIED_PRICE ou pode ser um cabo de outro indicador.

Por exemplo, substituímos o cabo CCI noRSI:

int OnInit()
h_cci=iCCI(_Symbol, _Period, cci_ma_period, cci_applied_price);
h_rsi=iRSI(_Symbol, _Period, rsi _ma_period, h_cci);
Далее
void OnTick() 
if(CopyBuffer(h_cci,0,0,to_copy, cci_buf)<=0) return(0);
if(CopyBuffer(h_rsi,0,0,to_copy, rsi _buf)<=0) return(0);
Далее сравниваете значения:
if(cci_buf>rsi_buf) {...ваши действия; ...buy; ...sell;} 
else
if(cci_buf<rsi_buf) {...ваши действия; ...buy; ...sell;}

A gama de valores neste caso não é importante uma vez que o oscilador seguinte já utiliza os valores do oscilador anterior.

Документация по MQL5: Технические индикаторы / iRSI
Документация по MQL5: Технические индикаторы / iRSI
  • www.mql5.com
Технические индикаторы / iRSI - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
 //+------------------------------------------------------------------+
class A
  {
public: int       propA;
public:
                     A(void) {propA = 15;};
                    ~A(void) {};
  };
//+------------------------------------------------------------------+
class B: public A
  {
public:
                     B(void){};
                    ~B(void){};
  };
//+------------------------------------------------------------------+
void OnStart()
  {
   B newObj;
   GetA(newObj);
//---
   //B newObjArray[3];
   //GetA_Array(newObjArray);
  }
//+------------------------------------------------------------------+
void GetA(A &obj)
  {
   Print(obj.propA);
  }
//+------------------------------------------------------------------+
void GetA_Array(A &obj[])
  {
   for(int i=0;i<ArraySize(obj);i++)
      Print(obj[i].propA);
  }
//+------------------------------------------------------------------+

Se descomentarmos as restantes linhas em OnStart() obtemos "newObjArray - conversão de parâmetros não permitida".

Duas questões: porquê, e como resolvê-lo?
 

Pode dizer-me, por favor, como obter um relatório de posição do terminal?

O problema é que no terminal vejo uma posição normal, mas no relatório Excel está dividido em partes, o que não é conveniente para mim.

 

Olá 2017.06.30_18:11 GMT+3. Conhecedores do fórum. Testei a minha EA em MT5 no testador de estratégia. Abre e fecha negócios, mas parece estar apenas na primeira condição para abrir e fechar negócios. Por isso, decidi testar a EA numa conta de demonstração. No entanto, a EA desaparece imediatamente do gráfico da conta de demonstração. Acontece que tem um erro na conta de demonstração: 2017.06.30 18:08:17.878 Late_raw3 (GOLD,M1) fora do intervalo em 'Cross.mqh' (18,12).
Estranhamente, nenhum erro deste tipo foi encontrado no testador de estratégias. Tentei procurar o erro mas não consegui compreendê-lo. A questão é o mais estúpida que se pode fazer. Foi muito confuso para mim. Os programadores da MetaQuotes poderiam fazer asneira neste caso? O Expert Advisor padrão Moving Average.mq5 tem o mesmo código (eu reescrevi-o a partir daí). Não tem erro na conta de demonstração. Mas não foi comercializado. Negociei em М1. Não esperei muito, no entanto. Qual é o problema? Ficarei à espera das vossas respostas. Aguardo com expectativa. Em anexo encontram-se os ficheiros, embora nem todos eles sejam exaustivos. 18:26 GMT+3. Tentei diferentes formas de alterar o código, mas o resultado são duas: ou sai da matriz, ou escreve o erro "Sem dados indicadores". E no diário do testador de estratégias pode ver como se obtêm os "excessos". É tomado o preço de abertura da primeira transacção. É diferente do preço de abertura da segunda transacção. Este "desvio" (é maior do que os meus 130 pontos) chama-se "overhoot". Também deveria dizer "obrigado" aos programadores da MetaQuotes? Não ficará aborrecido. Tudo o que se faz é lento. Vou terminar o Expert Advisor mais cedo. 18:45 GMT+3. Se precisar de qualquer esclarecimento, por favor não hesite em contactar-me. E é tudo. 18:51 GMT+3.

Arquivos anexados:
 
Николай Никитюк:

Olá 2017.06.30_18:11 GMT+3. Conhecedores do fórum. Testei a minha EA em MT5 no testador de estratégia. Abre e fecha negócios, mas parece estar apenas na primeira condição para abrir e fechar negócios. Por isso, decidi testar a EA numa conta de demonstração. No entanto, a EA desaparece imediatamente do gráfico da conta de demonstração. Acontece que tem um erro na conta de demonstração: 2017.06.30 18:08:17.878 Late_raw3 (GOLD,M1) fora do intervalo em 'Cross.mqh' (18,12).
Estranhamente, nenhum erro deste tipo foi encontrado no testador de estratégias. Tentei procurar o erro mas não consegui compreendê-lo. A questão é o mais estúpida que se pode fazer. Foi muito confuso para mim. Os programadores da MetaQuotes poderiam fazer asneira neste caso? O Expert Advisor padrão Moving Average.mq5 tem o mesmo código (eu reescrevi-o a partir daí). Não tem erro na conta de demonstração. Mas não foi comercializado. Negociei em М1. Não esperei muito, no entanto. Qual é o problema? Ficarei à espera das vossas respostas. Aguardo com expectativa. Em anexo encontram-se os ficheiros, embora nem todos eles sejam exaustivos. 18:26 GMT+3. Tentei diferentes formas de alterar o código, mas o resultado são duas: ou sai da matriz, ou escreve o erro "Sem dados indicadores". E no diário do testador de estratégias pode ver como se obtêm os "excessos". É tomado o preço de abertura da primeira transacção. É diferente do preço de abertura da segunda transacção. Este "desvio" (é maior do que os meus 130 pontos) chama-se "overhoot". Também deveria dizer "obrigado" aos programadores da MetaQuotes? Não ficará aborrecido. Tudo o que se faz é lento. Vou terminar o Expert Advisor mais cedo. 18:45 GMT+3. Se precisar de qualquer esclarecimento, por favor não hesite em contactar-me. E é tudo. 18:51 GMT+3.


Até agora parece que "taxas" (ficheiro "Cross.mqh", linha 18, posição 12 do cursor) é declarado algures a nível global - por isso todas as questões se resumem a: "Como é que esta "tarifa" é realmente preenchida?".

 

Estou a tentar calcular o ângulo de intersecção de duas curvas. A tarefa não é sequer encontrar o ângulo em si, mas sim verificar se é agudo ou obtuso. Até desenhei isto. Posso encontrar a tangente de B e a tangente de C. Como conheço estas tangentes, para determinar se o ângulo A é agudo. Ajude-me, eu não sou muito bom em trigonometria. Naturalmente, sem encontrar os ângulos em si - devido à diferença de escalas, os seus valores são inadequados.


 
igorbel:

Estou a tentar calcular o ângulo de intersecção de duas curvas. A tarefa não é sequer encontrar o ângulo em si, mas sim verificar se é agudo ou obtuso. Até desenhei isto. Posso encontrar a tangente de B e a tangente de C. Como conheço estas tangentes para determinar se o ângulo A é agudo. Ajude-me, eu não sou muito bom em trigonometria. Naturalmente, sem encontrar os ângulos em si - devido à diferença de escalas, os seus valores são inadequados.


Para encontrar tangentes, tem um triângulo direito?