Discussione sull’articolo "MQL5 Wizard: Nuova Versione" - pagina 4

 

1. Potete dirmi come invertire un segnale?

esempio: per confermare un segnale di acquisto GBP/USD, abbiamo bisogno di un segnale di vendita MACD EUR/GBP.

Oppure è più semplice scavare nel codice della libreria e cambiare "più" con "meno" e salvare come libreria con un nome diverso.

P.S. Sarebbe bello poter scegliere, durante la creazione di un Expert Advisor, quale segnale prendere: il segnale forward o quello reverse.

2. Come posso estrarre i pesi dei modelli che sono cuciti nella libreria, per ottimizzare questi pesi?

 
52_rus:

1. Potete dirmi come invertire il segnale?

esempio: per confermare un segnale di acquisto GBP/USD, abbiamo bisogno di un segnale di vendita MACD EUR/GBP.

Oppure è più semplice scavare nel codice della libreria e cambiare "più" in "meno" e salvarlo come libreria con un nome diverso.

P.S. Sarebbe bello poter scegliere, durante la creazione di un Expert Advisor, quale segnale prendere: il segnale forward o quello reverse.

2. Come possiamo estrarre i pesi dei modelli, che sono cuciti nella libreria, per ottimizzare questi pesi?

1. I meccanismi per invertire (e ignorare) i segnali sono incorporati nella classe base CExpertSignal, ma purtroppo non sono ancora disponibili nella procedura guidata.

2 Lo stesso vale per i pesi dei pattern.

Si prega di allegare il sorgente dell'Expert Advisor, ottenuto dopo il "Wizard" e brevemente. Cercherò di spiegare come farlo "a mano".

PS. Il "Wizard" sarà sviluppato e queste impostazioni saranno disponibili in seguito.

 

1. Come posso aggiungere la mia libreria (ad esempio, cambiare il MACD corrente e salvarlo senza cancellare la libreria principale) all'elenco dei segnali master?

2. Domanda sul lavoro con le librerie:

Consideriamo un Expert Advisor basato su MAKD, realizzato con l'aiuto della procedura guidata: l'abbiamo creato e compilato, l'abbiamo testato e abbiamo ottenuto alcuni risultati.

I segnali MAKD della libreria erano i seguenti:

//--- impostazione dei "pesi" predefiniti dei modelli di mercato
   m_pattern_0    =10;       // modello 0 "l'oscillatore ha richiesto la direzione"
   m_pattern_1    =30;       // modello 1 "invertire l'oscillatore nella direzione richiesta"
   m_pattern_2    =80;       // modello 2 "incrocio tra linea principale e linea di segnale"
   m_pattern_3    =50;       // modello 3 "attraversamento della linea principale al livello zero"
   m_pattern_4    =60;       // modello 4 "divergenza dell'oscillatore e del prezzo"
   m_pattern_5    =100;      // modello 5 "doppia divergenza dell'oscillatore e del prezzo" 

Далее, если я занулю не нужные мне паттерны (например 0,1,2,4,5) в библиотеке:

//--- impostazione dei "pesi" predefiniti dei modelli di mercato
   m_pattern_0    =0;       // modello 0 "l'oscillatore ha richiesto la direzione"
   m_pattern_1    =0;       // modello 1 "invertire l'oscillatore nella direzione richiesta"
   m_pattern_2    =80;       // modello 2 "incrocio tra linea principale e linea di segnale"
   m_pattern_3    =0;       // modello 3 "attraversamento della linea principale al livello zero"
   m_pattern_4    =0;       // modello 4 "divergenza dell'oscillatore e del prezzo"
   m_pattern_5    =0;      // modello 5 "doppia divergenza dell'oscillatore e del prezzo" 

Compilo solo la libreria (non compilo il codice dell'EA). La testerò e otterrò esattamente lo stesso risultato del primo test.

Se compilo anche il codice EA, otterrò un risultato diverso, in questo caso solo per il pattern 2.

Ho una domanda: perché devo ricompilare il codice EA dopo aver cambiato alcuni parametri nella libreria? (Non sono cambiati).

 
52_rus:

1. Come posso aggiungere la mia libreria (per esempio: cambiare il MACD corrente e salvarlo senza cancellare quello principale) all'elenco dei segnali master?


Intende il file include che contiene il codice del modulo dei segnali? Modificate il modulo corrente secondo le vostre esigenze e salvatelo nella stessa directory, ma con un nome diverso. Maggiori dettagli sono riportati nell'articolo:

Creare un robot di trading con la nuova procedura guidata MQL5

Il codice dell'EA è costruito utilizzando il Wizard MQL5 del MetaEditor.

Le classi di base delle strategie di trading si trovano nella cartella terminal_data_cartella\MQL5\Include\Expert\. Gli algoritmi pronti delle classi dei segnali di trading, delle classi di mantenimento delle posizioni aperte e delle classi di gestione del capitale e del rischio si trovano nelle sottodirectory Signal, Trailing e Money. La procedura guidata MQL5 analizza i file in queste directory e li utilizza per generare il codice EA.

Ciò significa che i moduli dei segnali si trovano (e devono trovarsi, per essere visti dal Wizard MQL5) nella directory terminal_data_folder\MQL5\Include\Expert\Signal.
 
tutto ha funzionato, grazie, ho appena corretto il codice, ma non ho cambiato il nome della classe....
 

Per qualche motivo, le nuove versioni del terminale non contengono più versioni personalizzate dei moduli del generatore di segnali. Ci sono 30 moduli nella cartella /MQL5/Include/Expert/Signal/, ma la Guida in linea ne vede solo 20 forniti come standard.

È una mia impressione o l'editor di MT5 non scansiona più la cartella con i moduli dei segnali alla ricerca di nuovi moduli? Anche i precedenti moduli di segnali basati sui pattern candlestick sviluppati da Metaquotes non sono collegati.

 
Livingston:

Per qualche motivo, le nuove versioni del terminale non contengono più versioni personalizzate dei moduli del generatore di segnali. Ci sono 30 moduli nella cartella /MQL5/Include/Expert/Signal/, ma la Guida in linea ne vede solo 20 forniti come standard.

È una mia impressione o l'editor di MT5 non scansiona più la cartella con i moduli di segnale per trovare nuovi moduli? Anche i vecchi moduli di segnale basati su pattern candlestick sviluppati da Metaquotes non sono collegati.

Un nuovo modulo di segnale deve avere una descrizione del modulo diversa e il suo tipo deve essere SignalAdvanced.


 
Rosh:

Il nuovo modulo di segnale dovrebbe avere una descrizione diversa e il suo tipo dovrebbe essere SignalAdvanced.


Grazie mille.
 
Rosh:

Un nuovo modulo di segnale deve avere una descrizione del modulo diversa e il suo tipo deve essere SignalAdvanced.


Se si sostituisce Signal con SignalAdvanced nei moduli di segnale scritti in precedenza, questi non funzionano ancora. Ora le funzioni CheckOpenShort/CheckOpenLong non vengono utilizzate e sono sostituite da ShortCondition/LongCondition?

Non ci sono parametri in queste funzioni, quindi non è chiaro come impostare takeout e stop.

int CSignalMA::LongCondition()
  {
   int result=0;
   int idx   =StartIndex();
//--- analizzare la relazione posizionale tra il prezzo di chiusura e l'indicatore nella prima barra analizzata
   if(DiffCloseMA(idx)<0.0)
     {
      //--- il prezzo di chiusura è inferiore all'indicatore
      if(IS_PATTERN_USAGE(1) && DiffOpenMA(idx)>0.0 && DiffMA(idx)>0.0)
        {
         //--- il prezzo aperto è al di sopra dell'indicatore (cioè c'è stata un'intersezione), ma l'indicatore è diretto verso l'alto
         result=m_pattern_1;
         //--- riteniamo che si tratti di un "piercing" non formato e suggeriamo di entrare nel mercato al prezzo attuale
         m_base_price=0.0;
        }
     }
   else
     {
      //--- il prezzo di chiusura è superiore all'indicatore (l'indicatore non ha obiezioni all'acquisto)
      if(IS_PATTERN_USAGE(0))
         result=m_pattern_0;
      //--- se si utilizza il modello 2
      if(IS_PATTERN_USAGE(2) && DiffMA(idx)>0.0)
        {
         //--- l'indicatore è diretto verso l'alto
         if(DiffOpenMA(idx)<0.0)
           {
            //--- il prezzo aperto è al di sotto dell'indicatore (cioè c'è stata un'intersezione)
            result=m_pattern_2;
            //--- suggerisce di entrare nel mercato al "rollback"
            m_base_price=m_symbol.NormalizePrice(MA(idx));
           }
         else
           {
            //--- il prezzo di apertura è superiore all'indicatore
            if(DiffLowMA(idx)<0.0)
              {
               //--- il prezzo basso è inferiore all'indicatore
               result=m_pattern_2;
               //--- riteniamo che questo sia un "piercing" formato e suggeriamo di entrare nel mercato al prezzo attuale
               m_base_price=0.0;
              }
           }
        }
     }
//--- restituire il risultato
   return(result);
  }

ora IS_PATTERN_USAGE() è utilizzato ovunque nel modulo dei segnali, non è chiaro perché.

In generale, attendiamo informazioni su come realizzare da soli il modulo dei segnali.

e sarà ancora disponibile la vecchia modalità guidata Type=Signal o tutti i moduli saranno scritti in un modo nuovo?

 

A ciascun modello di mercato viene assegnata una significatività, misurata da 1 a 100. Più alto è il valore, più forte è il modello.

MA con un peso di 0,4 e Stocastico con un peso di 0,8 - questo è impostato nelle variabili esterne e da dove proviene MA - la sua significatività è pari a 100. La significatività stocastica di questo modello è pari a 80. Dove viene impostata la significatività di ciascun modello o come viene determinata?