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

 

Karputov Vladimir:
Высылайте.

Enviado

 
Karputov Vladimir:
Enviem-mo.
Acrescentaria também que se os parâmetros de entrada forem alterados, o indicador também funciona correctamente e sem erros
 

Com a ajuda deKarputov Vladimir. Resolvi o problema obtendo o manípulo indicador na função OnInit() e depois apagando-o no OnDeinit().

Pode fazer o indicador desenhar linhas a partir de uma determinada barra, não em toda a história?

 

Boa tarde. Tenho um problema destes. Comecei a estudar MQL e estou a escrever um EA. Quando compilar e depois executar a minha EA, abre o gráfico EURUSD de uma hora, mas não especifiquei qual o gráfico a abrir. Prescrevi a abertura do euro-dólar durante 5 minutos. Primeiro abre o euro-dólar por uma hora, e depois por 5 minutos. Como posso apagar o gráfico das horas? Aqui está o código do Consultor Especialista. Obrigado pelo conselho com antecedência.


//+------------------------------------------------------------------+
//|а.mq4 |
//|Valery Wilkes |
//|https://wwww.mql5.com |||||
//+------------------------------------------------------------------+
#propriedade copyright "Valery Wilkes"
#ligação de propriedade "https://www.mql5.com"
#propriedade versão "1.00"
#propriedade rigorosa
duplo iAlligator();
bool ObjectSetInteger();
long a=ChartOpen("EURUSD",PERÍODO_M5);
//+------------------------------------------------------------------+
//| Função de iniciação de peritos|
//+------------------------------------------------------------------+
int OnInit()
{
//--- criar temporizador
EventSetTimer(5);

//---
return(INIT_SUCCEED);
}
//+------------------------------------------------------------------+
//| Função de desinicialização de peritos|
//+------------------------------------------------------------------+
nulo OnDeinit(const int razão)
{
//--- destruir o temporizador
EventKillTimer();

}
//+------------------------------------------------------------------+
//| função tick expert|
//+------------------------------------------------------------------+
nulo OnTick()
{


for(int f=3;; f++)
{
double val=iFractals("EURUSD",15,1,f);
if(val!=0)
{
Alerta("Comprar Fractal",val, "Bar Left",f);
pausa;
}
}
for(int f1=3;; f1++)
{
double val1=iFractals("EURUSD",15,2,f1);
if(val1!=0)
{
Alerta("Fractal para vender ",val1, "Barra à esquerda",f1);
pausa;
}
Alerta(Licitação);
}


}
//+------------------------------------------------------------------+
//| Função temporizador|
//+------------------------------------------------------------------+

nulo OnTimer()
{


}
//+------------------------------------------------------------------+
//| Função do testador|
//+------------------------------------------------------------------+
duplo OnTester()
{
//---
duplo ret=0,0;
//---

//---
return(ret);
}
//+------------------------------------------------------------------+

Автоматический трейдинг и тестирование торговых стратегий
Автоматический трейдинг и тестирование торговых стратегий
  • www.mql5.com
MQL5: язык торговых стратегий для MetaTrader 5, позволяет писать собственные торговые роботы, технические индикаторы, скрипты и библиотеки функций
 
valeravilks:

Boa tarde. Tenho um problema destes. Comecei a estudar MQL, e estou a escrever um Expert Advisor. Quando compilei e executei o Expert Advisor, ele abre o gráfico horário EURUSD, mas ainda não especifiquei qual o gráfico a abrir. Prescrevi a abertura do euro-dólar durante 5 minutos. Primeiro abre o euro-dólar por uma hora, e depois por 5 minutos. Como posso apagar o gráfico das horas? Aqui está o código do Consultor Especialista. Obrigado pela dica com antecedência.



Deve estar a permitir a depuração e depois a sua EA começa com o símbolo predefinido. Especificar o símbolo requerido e TF nas definições do metaeditor. (Ver foto em anexo).

Arquivos anexados:
kagfqct9ki.png  28 kb
 
Boa tarde.
int maxValueIdx= ArraySort(INDEX,WHOLE_ARRAY,ArrayMaximum(INDEX,WHOLE_ARRAY,0),MODE_ASCEND);
int minValueIdx=ArraySort(INDEX,WHOLE_ARRAY,ArrayMinimum(INDEX,WHOLE_ARRAY,0),MODE_DESCEND);  
O que pensa que significa?
 
azfaraon:
Boa tarde.
O que pensa que significa?
Este é o código MQL4. Primeiro, procura o máximo na matriz, verifica toda a matriz, a partir do elemento zero. E depois a matriz é ordenada a partir do índice máximo encontrado (no primeiro exemplo em ordem ascendente, no segundo - em ordem descendente).
 

Assim, nesta peça procuramos valores máximos e mínimos desde o máximo até ao mínimo ?

e nisto

  int maxValueIdx=ArrayMaximum(INDEX,WHOLE_ARRAY,0);
      int minValueIdx=ArrayMinimum(INDEX,WHOLE_ARRAY,0);

do min ao max?

 
azfaraon:


Este código:

int maxValueIdx=ArrayMaximum(INDEX,WHOLE_ARRAY,0);

procura o índice do elemento com o valor máximo. A pesquisa é realizada a partir do elemento zero e através de toda a matriz.

 
azfaraon:

Aqui está o código

//+------------------------------------------------------------------+
//|                                                  test_script.mq4 |
//|                        Copyright 2015, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- Инициализация массива
   int INDEX[]={2,45,21,8,96,14,32,6,81,46,1,3,31,22,5,78,24,25,66};

//--- Выведем на печать наш массив
   int size;
   string text;

   size=ArraySize(INDEX);        // размер нашего массива
   text=NULL;
   for(int i=0;i<size;i++)
     {
      if(i<size-1)
         text=text+IntegerToString(INDEX[i])+",";
      else
         text=text+IntegerToString(INDEX[i]);
     }
   Print("Старт");
   Print(text);
//---
   Print("---");
   Print("Элемент с индексом ",ArrayMaximum(INDEX,WHOLE_ARRAY,0),
         " имеет максимальное значение равное ",INDEX[ArrayMaximum(INDEX,WHOLE_ARRAY,0)]);
   int maxValueIdx=ArraySort(INDEX,WHOLE_ARRAY,ArrayMaximum(INDEX,WHOLE_ARRAY,0),MODE_ASCEND);

//--- Выведем на печать наш массив
   size=ArraySize(INDEX);       // размер нашего массива   
   text=NULL;
   for(int i=0;i<size;i++)
     {
      if(i<size-1)
         text=text+IntegerToString(INDEX[i])+",";
      else
         text=text+IntegerToString(INDEX[i]);
     }
   Print(text);

//---
   Print("---");
   Print("Элемент с индексом ",ArrayMinimum(INDEX,WHOLE_ARRAY,0),
         " имеет минимальное значение равное ",INDEX[ArrayMinimum(INDEX,WHOLE_ARRAY,0)]);
   int minValueIdx=ArraySort(INDEX,WHOLE_ARRAY,ArrayMinimum(INDEX,WHOLE_ARRAY,0),MODE_DESCEND);

//--- Выведем на печать наш массив
   size=ArraySize(INDEX);       // размер нашего массива   
   text=NULL;
   for(int i=0;i<size;i++)
     {
      if(i<size-1)
         text=text+IntegerToString(INDEX[i])+",";
      else
         text=text+IntegerToString(INDEX[i]);
     }
   Print(text);
   Print("Конец");
  }
//+------------------------------------------------------------------+

e este é o resultado:

2015.05.03 19:20:03.917 test_script #CHL,Daily:  Старт
2015.05.03 19:20:03.917 test_script #CHL,Daily: 2,45,21,8,96,14,32,6,81,46,1,3,31,22,5,78,24,25,66
2015.05.03 19:20:03.917 test_script #CHL,Daily: ---
2015.05.03 19:20:03.917 test_script #CHL,Daily:  Элемент с индексом 4 имеет максимальное значение равное 96
2015.05.03 19:20:03.917 test_script #CHL,Daily: 2,45,21,8,1,3,5,6,14,22,24,25,31,32,46,66,78,81,96
2015.05.03 19:20:03.917 test_script #CHL,Daily: ---
2015.05.03 19:20:03.917 test_script #CHL,Daily:  Элемент с индексом 4 имеет минимальное значение равное 1
2015.05.03 19:20:03.917 test_script #CHL,Daily: 2,45,21,8,96,81,78,66,46,32,31,25,24,22,14,6,5,3,1
2015.05.03 19:20:03.917 test_script #CHL,Daily:  Конец

Explore, por favor.