Discussione sull’articolo "MQL5 Wizard: Come insegnare a un EA ad aprire ordini pendenti a qualsiasi prezzo" - pagina 2

 

ciao vladimir,


mi piace questo articolo, è possibile scrivere un EA che utilizzi solo gli ordini pendenti per aprire operazioni con l'utilizzo di un altro indicatore. per esempio se il prezzo si muove in una direzione di 5, innesca un acquisto o una vendita a prescindere.

 
Tafadzwa Nyamwanza :

ciao vladimir,


mi piace questo articolo, è possibile scrivere un EA che utilizzi solo gli ordini pendenti per aprire operazioni con l'utilizzo di un altro indicatore. per esempio se il prezzo si muove in una direzione di 5, innesca un acquisto o una vendita a prescindere.

Sei sicuro che la tua domanda si riferisca all'articolo MQL5 Wizard: How to Teach an EA to Open Pending Orders at Any Price?

 
Ciao Vladimir.

So che questo articolo riguarda gli ordini pendenti, ma come fai a programmare il tuo EA per aprire un ordine a mercato?

 
Ayanda Mhlauli:
Ciao Vladimir.

So che questo articolo riguarda gli ordini pendenti, ma come fai a programmare il tuo EA per aprire un ordine a mercato?

input double             Signal_PriceLevel         =0.0;         // Livello di prezzo per l'esecuzione di una transazione
 
Non sarebbe sufficiente chiamare PriceLevel() direttamente all'interno del generatore di segnali, perché è necessario passare il puntatore *signal nel generatore di segnali?
 

Ciao @Vladimir Karputov -- è stato un articolo molto istruttivo, grazie!

Personalmente trovo questo framework OOP in MQL5 piuttosto interessante per la costruzione di bot componendo oggetti che rappresentano esperti, segnali, filtri, indicatori, gestori del rischio e così via -- un approccio molto elegante a mio avviso, in quanto favorisce il riutilizzo del codice e l'estensibilità senza apparentemente sacrificare molta potenza... tuttavia a causa della sua complessità la curva di apprendimento sembra piuttosto ripida.

In ogni caso, dato che sto passando esclusivamente a MQL5 e ho una buona esperienza nei concetti/linguaggi OOP, sono davvero desideroso di adattarlo per il mio uso personale nella prototipazione di nuove idee di trading e nello studio di sistemi di trading. Ho studiato e giocato con il codice della libreria e mi chiedevo quale fosse l'approccio consigliato per le seguenti pratiche:

DOMANDA: Come integrereste un filtro di tendenza per i segnali ricevuti dall'esperto?

La libreria include la proprietà CExpertBase::m_trend_type, ma purtroppo non viene utilizzata da nessuna parte negli esempi forniti con la piattaforma. Sono diviso tra due possibilità di progettazione... Aggiungere un oggetto oggetto di filtraggio delle tendenze direttamente nella mia sottoclasse di CExpert (vedi frammento di codice sotto), che potrebbe offrire un maggiore controllo sulle decisioni di trading a livello di esperto. Un altro modo per risolvere il problema potrebbe consistere nel manipolare i filtri del mio oggetto segnale principale e calcolare in qualche modo il trend e prendere una decisione all'interno della mia sottoclasse di CSignalExpert, ad esempio all'interno di CSignalWithTrendFilter::Direction(). Non sono ancora sicuro di quali siano i vantaggi e gli svantaggi di un metodo rispetto all'altro, e di quale mi fornirà maggiore flessibilità per i requisiti dei miei progetti futuri, cioè più riutilizzo del codice senza complicazioni e meno modifiche alle mie classi base.

class CExpertWithTrendFilter : public CExpert
{
protected:
   CExpertSignal    *m_trend;   // lavora in parallelo con CExpert::m_signal per filtrare i segnali che genera
// ...
   virtual bool      Processing(void);
   virtual bool      CheckOpen(void);
// ...
};

bool CExpertWithTrendFilter::Processing(void)
{
   CExpertBase::m_trend_type = (ENUM_TYPE_TREND) m_trend.Direction();   // determinare la tendenza attuale sulla base di un oggetto specializzato derivato da CExpertSignal
   
   m_signal.TrendType(m_trend_type);             // passa il tipo/la forza del trend come input a m_signal, anch'esso sottoclasse di CExpertSignal
   m_signal.SetDirection();                      // OPZIONE #1 >>> calcolare la direzione del segnale, eventualmente prendendo in considerazione il trend stabilito in precedenza (o meno)

// ...

   if(CheckOpen())                               // OPZIONE #2 >>> in alternativa, il tipo/la forza del trend possono essere verificati dall'esperto prima di aprire long o short
      return(true);

   retun(false);                                 // ritorno senza alcuna operazione
}

bool CExpertWithTrendFilter::CheckOpen(void)
{
   if(m_trend_type > TYPE_TREND_FLAT && CheckOpenLong())    // consente l'apertura long solo se la direzione del filtro del trend è d'accordo
      return(true);
   if(m_trend_type < TYPE_TREND_FLAT && CheckOpenShort())   // consente l'apertura di uno short solo se la direzione del filtro del trend è d'accordo
      return(true);

   return(false);                                // ritorno senza alcuna operazione
}

Grazie in anticipo per il vostro aiuto e le vostre raccomandazioni.

 
Sono passato al mio motore di trading molto tempo fa Un tentativo di sviluppare un costruttore di EA - è più flessibile.
An attempt at developing an EA constructor
An attempt at developing an EA constructor
  • www.mql5.com
In this article, I offer my set of trading functions in the form of a ready-made EA. This method allows getting multiple trading strategies by simply adding indicators and changing inputs.
 
Vladimir Karputov #:
Sono passato al mio motore di trading molto tempo fa Un tentativo di sviluppare un costruttore di EA - è più flessibile.

Ok, capisco -- sto leggendo l'articolo e darò un'occhiata al codice allegato... in ogni caso, apprezzerei ancora il tuo commento/opinione sulla domanda di cui sopra, se non ti dispiace. Grazie mille!

 
Dima Diall # :

Ok, capisco -- sto leggendo l'articolo e darò un'occhiata al codice allegato... in ogni caso, apprezzerei comunque un tuo commento/opinione sulla domanda di cui sopra, se non ti dispiace. Grazie mille!

CExpertSignal è il passato. Nessun commento.

 
Vladimir Karputov #:

CExpertSignal è il passato. Nessun commento.

:-)