Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 356

 

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

Inviato

 
Karputov Vladimir:
Mandalo a me.
Vorrei anche aggiungere che se i parametri di input sono cambiati, l'indicatore funziona anche correttamente e senza errori
 

Con l'aiuto diKarputov Vladimir. Ho risolto il problema ottenendo l'handle dell'indicatore nella funzione OnInit() e poi cancellandolo in OnDeinit().

Potresti fare in modo che l'indicatore tracci le linee a partire da una certa barra e non su tutta la storia?

 

Buon pomeriggio. Ho un tale problema. Ho iniziato a imparare MQL e sto scrivendo un EA. Quando compilo e poi eseguo il mio EA, apre il grafico EURUSD a un'ora, ma non ho specificato quale grafico aprire. Ho prescritto l'apertura di Euro dollaro per 5 minuti. Prima apre l'euro dollaro di un'ora, e poi di 5 minuti. Come posso cancellare il grafico delle ore? Ecco il codice dell'Expert Advisor. Grazie per i consigli in anticipo.


//+------------------------------------------------------------------+
//|а.mq4 |
//|Valery Wilkes |
//|https://www.mql5.com ||
//+------------------------------------------------------------------+
#proprietà copyright "Valery Wilkes"
#proprietà link "https://www.mql5.com"
#proprietà versione "1.00"
#proprietà rigorosa
doppio iAlligatore();
bool ObjectSetInteger();
long a=ChartOpen("EURUSD",PERIOD_M5);
//+------------------------------------------------------------------+
//| Funzione di inizializzazione dell'esperto|
//+------------------------------------------------------------------+
int OnInit()
{
//--- creare un timer
EventSetTimer(5);

//---
return(INIT_SUCCEED);
}
//+------------------------------------------------------------------+
//| Funzione di deinizializzazione degli esperti|
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- distruggere il timer
EventKillTimer();

}
//+------------------------------------------------------------------+
//| funzione tick esperto|
//+------------------------------------------------------------------+
void OnTick()
{


for(int f=3;; f++)
{
double val=iFractals("EURUSD",15,1,f);
se(val!=0)
{
Alert("Buy Fractal",val, "Bar Left",f);
pausa;
}
}
for(int f1=3;; f1++)
{
double val1=iFractals("EURUSD",15,2,f1);
se(val1!=0)
{
Alert("Fractal to sell ",val1, "Bar left",f1);
pausa;
}
Allarme(Bid);
}


}
//+------------------------------------------------------------------+
//| Funzione timer|
//+------------------------------------------------------------------+

void OnTimer()
{


}
//+------------------------------------------------------------------+
//| Funzione Tester|
//+------------------------------------------------------------------+
doppio OnTester()
{
//---
doppio ret=0.0;
//---

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

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

Buon pomeriggio. Ho un tale problema. Ho iniziato a studiare MQL e sto scrivendo un Expert Advisor. Quando compilo ed eseguo l'Expert Advisor, si apre il grafico orario EURUSD, ma non ho ancora specificato quale grafico aprire. Ho prescritto l'apertura di Euro dollaro per 5 minuti. Prima apre l'euro dollaro di un'ora, e poi di 5 minuti. Come posso cancellare il grafico delle ore? Ecco il codice dell'Expert Advisor. Grazie per il consiglio in anticipo.



Devi abilitare il debug e poi il tuo EA parte sul simbolo di default. Specificare il simbolo richiesto e TF nelle impostazioni del metaeditor. (Vedi foto allegata).

File:
kagfqct9ki.png  28 kb
 
Buon pomeriggio.
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);  
Cosa pensate che significhi?
 
azfaraon:
Buon pomeriggio.
Cosa pensate che significhi?
Questo è il codice MQL4. Per prima cosa, cerca il massimo nella matrice, controlla tutta la matrice, partendo dall'elemento zero. E poi l'array viene ordinato a partire dall'indice massimo trovato (nel primo esempio in ordine crescente, nel secondo - in ordine decrescente).
 

Quindi in questo pezzo stiamo cercando i valori max e min dal massimo al minimo?

e in questo

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

dal minimo al massimo?

 
azfaraon:


Questo codice:

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

cerca l'indice dell'elemento con il valore massimo. La ricerca viene eseguita a partire dall'elemento zero e attraverso tutto l'array.

 
azfaraon:

Ecco il codice

//+------------------------------------------------------------------+
//|                                                  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 questo è il risultato:

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:  Конец

Esplora, per favore.