Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 394

 

Olá.

Por favor, ajude-me a colorir um ziguezague.

Quero fazer com que, se a distância da calha até o topo for >=100 pontos, para colorir o segmento de cor verde.

 
Dimitry-1983:

Olá!

Eu já estou com os miolos em franja. Como posso verificar se há um certo preço na matriz dupla?

Escrevi-o assim para o teste:



O roteiro encontra 11, 22, 33, 44 sem nenhum problema (o terminal tem tais ordens). Entretanto, se o roteiro processar o preço de 45, por exemplo, ele ainda mostra 3 (posição do preço 44 na matriz).

O que eu realmente preciso é de um bool - se houver um preço do pedido sendo processado na matriz, ele deve retornar verdadeiro, se não, ele deve retornar falso. Mas eu ainda não encontrei tal função no idioma.

A funçãoretorna o índice do primeiro elemento encontrado na primeira dimensão da matriz, masse o valor procurado não for encontrado, retorna o índice do elemento com o menor valor, entre o qual se encontra o valor procurado. Portanto, para esta tarefa, devemos também verificar a igualdade do valor procurado e do valor encontrado. O resultado da comparação será verdadeiro ou falso

 
STARIJ:

Por que eu deveria imprimir algo do indicador? Tudo está na tela - isso é o que o indicador é. Quando eu preciso de uma mesa - eu executo o script com iCustom()


O que você escreveu aqui, eu não entendi nada. Estávamos falando do fato de eu criar um arquivo, que está sempre vazio por alguma razão. Não consigo obter uma matriz de dados em um arquivo.

Eu preciso que os dados sejam salvos em um arquivo. Se o indicador estiver anexado ao gráfico durante 1 ano, de modo que haja todos os registros de suas leituras para o ano!

 
Alekseu Fedotov:

Essa é uma maneira interessante de costurá-la.

Tente isto por engano.


Obrigado! Mas eu já tentei isso e não funcionou.

 

Vocês podem me informar por que os erros estão surgindo?

//--- input parameters
input int      MyLevel=100; // установка уровня (отступ) выше (ниже) текущей цены;
//--- indicator buffers
double         Label1Buffer[];
double         Label2Buffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,Label1Buffer);
   SetIndexBuffer(1,Label2Buffer);
   double R1 = 0; // служеные переменные принимаются равными 0;
   double R2 = 0; // служебные переменные; принимаются равными 0;
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---

   double i=Bid; // переменной i присваивается значение текущего курса;

   if(i>=R1) // если текущий курс >= служебной переменной R1;
     {
      R1=i+(MyLevel*Point); // то присваиваем R1 новое значение равное текущему курсу + отступ,
      R2=i-(MyLevel*Point); // также присваиваем R2 новое значение = текущий курс - отступ;
     }
   else
     {
      break;  // иначе, выходим из оператора
     }
   if(i<=R2) // если текущий курс <= служебной переменной R2;
     {
      R1=i+(MyLevel*Point); // то присваиваем R1 новое значение равное текущему курсу + отступ,
      R2=i-(MyLevel*Point); // также присваиваем R2 новое значение = текущий курс - отступ;
     }
   else
     {
      break; // иначе выходим
     }

   Label1Buffer [0] = R1; // заносим в буфер данные R1
   Label2Buffer [0] = R2; // и R2

//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+

Erros:

R1' - identificador não declarado Mylevel.mq4 61 10

possível perda de dados devido à conversão do tipo Mylevel.mq4 63 9

R2' - identificador não declarado Mylevel.mq4 64 7

";' - 'break' deve ser usado dentro de algum laço ou declaração de interruptor Mylevel.mq4 68 12

";' - 'break' deve ser usado dentro de algum laço ou declaração de interruptor Mylevel.mq4 77 12


 
YarTrade:

Vocês podem me informar por que os erros estão surgindo?

Erros:

R1' - identificador não declarado Mylevel.mq4 61 10

possível perda de dados devido à conversão do tipo Mylevel.mq4 63 9

R2' - identificador não declarado Mylevel.mq4 64 7

";' - 'break' deve ser usado dentro de algum laço ou declaração de interruptor Mylevel.mq4 68 12

";' - 'break' deve ser usado dentro de algum laço ou declaração de interruptor Mylevel.mq4 77 12


R1, R2 são declarados dentro de uma função, respectivamente - somente visível lá - são locais.
A quebra é usada em laços e swith
 

Não tenho certeza se existe um programa para combinar relatórios de testes similares ao do reportanager para mt5, oreportmanager não os abre.

 
iv1986:

Se você sabe, existe um programa para combinar relatórios de teste semelhante ao reportanager para mt5, mas oreportmanager não os abre?

É mais fácil reescrever o código e fazer testes com várias moedas em mt5. Os resultados dos testes na plataforma mt4 não são definitivamente corretos, e o resultado final será criticamente distorcido e não há sentido em analisá-lo.

Aqui está um dos 23 testes de símbolos, tudo é claro e quase óbvio


 

Posso fazer uma EA multi-instrumental se eu tiver parâmetros e estratégias diferentes para cada instrumento?

Vitaly Muzichenko:

É mais fácil reescrever o código e fazer testes com várias moedas em mt5. Os resultados dos testes na plataforma mt4 estão obviamente errados, e o resultado final será criticamente distorcido e não há sentido em analisá-lo.

Aqui está um dos testes para 23 símbolos, tudo é claro e quase óbvio


E se eu tiver uma estratégia diferente e um código correspondentemente diferente para cada símbolo, posso fazer uma EA desse tipo?

 
iv1986:

Posso fazer uma EA multi-instrumental se eu tiver parâmetros e estratégias diferentes para cada instrumento?

E se eu tiver estratégias e códigos diferentes para cada instrumento, é possível fazer tal EA?

Você pode escrever um EA com várias moedas, ele estará em um único arquivo. É possível combinar as estratégias para diferentes pares em um arquivo para o testador, e também é possível negociá-las on-line em um gráfico, mas é possível separá-las para que cada estratégia negocie no símbolo no qual a EA foi colocada. As possibilidades são ilimitadas

Razão: