Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 1134

 
Ciao, potresti per favore dirmi come fare questo? Come si scrive correttamente la condizione: *se c'è una nuova ora*?
 
MrBrooklin:

Ciao!

Aiutami. Ho una domanda sul modulo dei segnali di trading "Filtro temporale".

Il fatto è che ho generato un EA utilizzando questo modulo e l'ho impostato per consentire solo un'ora di trading al giorno. Principalmente fa trading in questo modo, ma ci sono giorni in cui il mio Expert Advisor apre posizioni a qualsiasi ora voglia. Ho provato il modulo di segnali di trading "Time filter" in varie combinazioni con altri moduli di segnali di trading (ad esempio, Stochastic, WPR, ecc.) ma succede la stessa cosa. Inoltre, se si impostano 2 ore consecutive di lavoro consentito, non ci sono problemi, funziona bene.

A cosa può essere collegato? Forse c'è un errore nel codice di un modulo di segnali di trading "Time filter"? Dato che non sono un esperto di programmazione, vi chiedo di aiutarmi a capirlo o di darmi un suggerimento, forse sto facendo qualcosa di sbagliato.

Sinceramente, Vladimir.


Ecco un semplice esempio sulla foto. Un giorno apre alle 7; un altro giorno apre alle 5; il terzo giorno apre di nuovo alle 7.


Puoi allegare un Expert Advisor mq5 a questo post e specificare i parametri del tester (due schermate: schede Impostazioni e Parametri)?

 
Snajper007:
Ciao, potresti per favore dirmi. Come si scrive correttamente la condizione: *se c'è una nuova ora*?

Intendi l'ora (ad esempio l'orologio mostrava 15-00) o intendi che è nata una nuova barra sul timeframe H1?

 

Forum sul trading, sistemi di trading automatico e test di strategia

FAQ da principianti MQL5 MT5 MetaTrader 5

Vladimir Karputov, 2019.10.14 12:04

Puoi allegare un Expert Advisor mq5 a un messaggio e specificare i parametri del tester (due schermate: schede Impostazioni e Parametri)?


Non per essere infondato, per esempio, in questo momento ho generato in MQL5 Wizard il primo modulo disponibile di segnali di trading AMA e un filtro temporale.

//+------------------------------------------------------------------+
//|                                                          AMA.mq5 |
//|                        Copyright 2019, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Include                                                          |
//+------------------------------------------------------------------+
#include <Expert\Expert.mqh>
//--- available signals
#include <Expert\Signal\SignalAMA.mqh>
#include <Expert\Signal\SignalITF.mqh>
//--- available trailing
#include <Expert\Trailing\TrailingNone.mqh>
//--- available money management
#include <Expert\Money\MoneyFixedRisk.mqh>
//+------------------------------------------------------------------+
//| Inputs                                                           |
//+------------------------------------------------------------------+
//--- inputs for expert
input string             Expert_Title            ="AMA";                  // Document name
ulong                    Expert_MagicNumber      =8503;                   //
bool                     Expert_EveryTick        =false;                  //
//--- inputs for main signal
input int                Signal_ThresholdOpen    =10;                     // Signal threshold value to open [0...100]
input int                Signal_ThresholdClose   =10;                     // Signal threshold value to close [0...100]
input double             Signal_PriceLevel       =0;                      // Price level to execute a deal
input double             Signal_StopLevel        =50.0;                   // Stop Loss level (in points)
input double             Signal_TakeLevel        =50.0;                   // Take Profit level (in points)
input int                Signal_Expiration       =4;                      // Expiration of pending orders (in bars)
input int                Signal_AMA_PeriodMA     =10;                     // Adaptive Moving Average(1,1,...) Period of averaging
input int                Signal_AMA_PeriodFast   =2;                      // Adaptive Moving Average(1,1,...) Period of fast EMA
input int                Signal_AMA_PeriodSlow   =30;                     // Adaptive Moving Average(1,1,...) Period of slow EMA
input int                Signal_AMA_Shift        =0;                      // Adaptive Moving Average(1,1,...) Time shift
input ENUM_APPLIED_PRICE Signal_AMA_Applied      =PRICE_CLOSE;            // Adaptive Moving Average(1,1,...) Prices series
input double             Signal_AMA_Weight       =1.0;                    // Adaptive Moving Average(1,1,...) Weight [0...1.0]
input int                Signal_ITF_GoodHourOfDay=-1;                     // IntradayTimeFilter(-1,...) Good hour
input int                Signal_ITF_BadHoursOfDay=16777087;               // IntradayTimeFilter(-1,...) Bad hours (bit-map)
input int                Signal_ITF_GoodDayOfWeek=-1;                     // IntradayTimeFilter(-1,...) Good day of week
input int                Signal_ITF_BadDaysOfWeek=0;                      // IntradayTimeFilter(-1,...) Bad days of week (bit-map)
input double             Signal_ITF_Weight       =1.0;                    // IntradayTimeFilter(-1,...) Weight [0...1.0]
//--- inputs for money
input double             Money_FixRisk_Percent   =10.0;                   // Risk percentage
//+------------------------------------------------------------------+
//| Global expert object                                             |
//+------------------------------------------------------------------+
CExpert ExtExpert;
//+------------------------------------------------------------------+
//| Initialization function of the expert                            |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- Initializing expert
   if(!ExtExpert.Init(Symbol(),Period(),Expert_EveryTick,Expert_MagicNumber))
     {
      //--- failed
      printf(__FUNCTION__+": error initializing expert");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//--- Creating signal
   CExpertSignal *signal=new CExpertSignal;
   if(signal==NULL)
     {
      //--- failed
      printf(__FUNCTION__+": error creating signal");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//---
   ExtExpert.InitSignal(signal);
   signal.ThresholdOpen(Signal_ThresholdOpen);
   signal.ThresholdClose(Signal_ThresholdClose);
   signal.PriceLevel(Signal_PriceLevel);
   signal.StopLevel(Signal_StopLevel);
   signal.TakeLevel(Signal_TakeLevel);
   signal.Expiration(Signal_Expiration);
//--- Creating filter CSignalAMA
   CSignalAMA *filter0=new CSignalAMA;
   if(filter0==NULL)
     {
      //--- failed
      printf(__FUNCTION__+": error creating filter0");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
   signal.AddFilter(filter0);
//--- Set filter parameters
   filter0.PeriodMA(Signal_AMA_PeriodMA);
   filter0.PeriodFast(Signal_AMA_PeriodFast);
   filter0.PeriodSlow(Signal_AMA_PeriodSlow);
   filter0.Shift(Signal_AMA_Shift);
   filter0.Applied(Signal_AMA_Applied);
   filter0.Weight(Signal_AMA_Weight);
//--- Creating filter CSignalITF
   CSignalITF *filter1=new CSignalITF;
   if(filter1==NULL)
     {
      //--- failed
      printf(__FUNCTION__+": error creating filter1");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
   signal.AddFilter(filter1);
//--- Set filter parameters
   filter1.GoodHourOfDay(Signal_ITF_GoodHourOfDay);
   filter1.BadHoursOfDay(Signal_ITF_BadHoursOfDay);
   filter1.GoodDayOfWeek(Signal_ITF_GoodDayOfWeek);
   filter1.BadDaysOfWeek(Signal_ITF_BadDaysOfWeek);
   filter1.Weight(Signal_ITF_Weight);
//--- Creation of trailing object
   CTrailingNone *trailing=new CTrailingNone;
   if(trailing==NULL)
     {
      //--- failed
      printf(__FUNCTION__+": error creating trailing");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//--- Add trailing to expert (will be deleted automatically))
   if(!ExtExpert.InitTrailing(trailing))
     {
      //--- failed
      printf(__FUNCTION__+": error initializing trailing");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//--- Set trailing parameters
//--- Creation of money object
   CMoneyFixedRisk *money=new CMoneyFixedRisk;
   if(money==NULL)
     {
      //--- failed
      printf(__FUNCTION__+": error creating money");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//--- Add money to expert (will be deleted automatically))
   if(!ExtExpert.InitMoney(money))
     {
      //--- failed
      printf(__FUNCTION__+": error initializing money");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//--- Set money parameters
   money.Percent(Money_FixRisk_Percent);
//--- Check all trading objects parameters
   if(!ExtExpert.ValidationSettings())
     {
      //--- failed
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//--- Tuning of all necessary indicators
   if(!ExtExpert.InitIndicators())
     {
      //--- failed
      printf(__FUNCTION__+": error initializing indicators");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//--- ok
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Deinitialization function of the expert                          |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   ExtExpert.Deinit();
  }
//+------------------------------------------------------------------+
//| "Tick" event handler function                                    |
//+------------------------------------------------------------------+
void OnTick()
  {
   ExtExpert.OnTick();
  }
//+------------------------------------------------------------------+
//| "Trade" event handler function                                   |
//+------------------------------------------------------------------+
void OnTrade()
  {
   ExtExpert.OnTrade();
  }
//+------------------------------------------------------------------+
//| "Timer" event handler function                                   |
//+------------------------------------------------------------------+
void OnTimer()
  {
   ExtExpert.OnTimer();
  }
//+------------------------------------------------------------------+

Schermata di "Impostazioni


Schermata di "Impostazioni".

Screenshot dell'errato del filtro orario (le posizioni sono aperte in giorni diversi a ore 7, 12 e 7)


 
MrBrooklin:

Per non essere infondato, per esempio, in questo momento ho generato in MQL5 Wizard il primo modulo disponibile di segnali di trading AMA e un filtro temporale.

Schermata di "Impostazioni


Schermata di "Impostazioni".

Screenshot del funzionamento errato del filtro orario (posizioni di apertura in giorni diversi a ore 7, 12 e 7)


1. Immagine con un grafico - quando fate uno screenshot, fatelo con lo strumento "Crosshair" - non è chiaro quale anno sia.

2. Quando si lavora con gli ordini pendenti - ricordate che l'ordine pendente può scattare in un tempo completamente diverso (ora e minuti) rispetto al tempo di impostazione.

3. Quando si utilizzano i moduli di segnale, reimpostare i parametri ai valori predefiniti e controllare il lavoro sul mercato - senza ordini pendenti (se il punto 2 non è chiaro).

 

Forum sul trading, sistemi di trading automatico e test di strategia

FAQ da principianti MQL5 MT5 MetaTrader 5

Vladimir Karputov, 2019.10.14 13:28

1. Immagine del grafico - quando si fa uno screnshot fatelo insieme allo strumento "Crosshair" - altrimenti non è chiaro quale anno.

2. Quando si lavora con gli ordini pendenti - ricordate che un ordine pendente può scattare in un momento completamente diverso (ora e minuti) rispetto al momento del piazzamento.

3. Quando si utilizzano i moduli di segnale, reimpostare i parametri ai valori predefiniti e controllare il lavoro sul mercato - senza gli ordini pendenti (questo se il punto 2 non è chiaro).


1. Riguardo al mirino - comprensibile. Nella schermata l'anno è il 2019 e il mese è ottobre.

2. Non capisco bene l'ordine pendente. Come fai a sapere che l'EA ha un ordine pendente e non apre una posizione all'inizio dell'ora? Puoi essere più specifico?

3. L'Expert Advisor funziona bene con i valori predefiniti dei moduli di segnale. Possiamo modificare i valori dei parametri?

Sinceramente, Vladimir.

 

***

1. Per quanto riguarda il mirino, è chiaro. Nella schermata, l'anno è il 2019 e il mese è ottobre.

***

Grazie per il chiarimento.

***

2. Non capisco bene l'ordine pendente. Come hai determinato che l'EA ha impostato un ordine pendente e non ha aperto una posizione immediatamente all'inizio dell'ora? Puoi essere più specifico?

***

Nel tester visivo, basta guardare la scheda "Storia

Scheda Storia

***

3. Con i valori predefiniti dei moduli di segnale, l'Expert Advisor funziona bene. Non è possibile cambiare i valori dei parametri?

***

Certo che si può, ma solo se si capisce cosa si sta facendo e se si capisce quale parametro è responsabile di cosa.

 
Vladimir Karputov:

Intendi l'ora (ad esempio l'orologio mostrava 15-00) o intendi che è nata una nuova barra sul timeframe H1?

Voglio dire che l'orologio segnava 15-00.
 
Snajper007:
L'orologio segnava le 15:00.

E con quale grado di certezza vuole il risultato?

Solo un esempio: Volete vedere l'ora sull'orologio come le 3 del pomeriggio. E voi aspettate. Ma in quel momento non c'era nessun tick o non c'era nessuna connessione al server. E poi hai i tic, ma il tempo è 15 ore 00 minuti e 36 secondi. Cosa farete?

 
Vladimir Karputov:

E con quale grado di certezza vuole il risultato?

Solo un esempio: Vuoi vedere l'ora sull'orologio come le 3 del pomeriggio. E voi aspettate. Ma in quel momento non c'era nessun tick o non c'era nessuna connessione al server. E poi hai i tic, ma il tempo è 15 ore 00 minuti e 36 secondi. Cosa farete?

Si può rendere possibile controllare non esattamente 15-00, ma l'inizio dell'ora? In altre parole, il primo minuto mostrerebbe già che l'ora precedente è finita e la nuova ora è iniziata.