Domande su MQL5 Wizard e sulla libreria standard di classi di trading - pagina 10

 
Sevrer:

Salve.

Ho deciso di scrivere il mio modulo di segnale puramente a scopo conoscitivo. Ho affrontato un problema. Ho capito che si può fare attraverso CExpertSignal::OpenLongParams(...). Ma ho un problema - il mio tester avverte di Invalid Expiration. Avendo scavato il codice sorgente, ho capito che non possiamo ottenere nessun tipo di tempo a parteORDER_TIME_SPECIFIED e vorremmo ORDER_TIME_GTC.

Finora ho fatto una mossa intelligente, ma non è del tutto giusta. Ho corretto la funzione nella libreria:

Cosa può consigliare?

Salve.

Hai assolutamente ragione. Non ho tenuto conto delle scadenze zero.

La tua soluzione va bene. Farò delle modifiche appropriate alla Libreria Standard.

Grazie.

 
uncleVic:

Salve.

Hai assolutamente ragione. Non ho tenuto conto della scadenza zero.

La tua soluzione va bene. Farò delle modifiche appropriate alla Libreria Standard.

Grazie.

Andrà bene, ma nel frattempo, in questa situazione ho trovato un'altra via d'uscita, quella giusta :) Creando una classe ereditata da CExpert, in cui ho sovrascritto le funzioni CheckOpenLong() e CheckOpenShort(), e vi ho fatto delle correzioni di questo tipo:

        if (expiration == TimeCurrent() || expiration == 0)
        {
                m_expiration = 0;
                m_trade.SetOrderTypeTime(ORDER_TIME_GTC);
        }
        else
        {
              if(!m_trade.SetOrderExpiration(expiration))
        	{
         		 m_expiration=expiration;
        	}
        }
 
Sevrer:

Ma nel frattempo, ho trovato un altro modo per uscire da questa situazione - quello giusto :) Creando una classe ereditata da CExpert, in cui ho sovrascritto le funzioni CheckOpenLong() e CheckOpenShort(), e vi ho fatto delle correzioni di questo tipo:


L'ereditarietà è l'approccio giusto.
 

Si prega di spiegare la logica del parametro Expert_EveryTick

Se Expert_EveryTick=true, l'Expert Advisor processa ogni tick? Cioè controlla le condizioni di entrata/uscita e il tracciamento delle posizioni (trawl) su ogni nuovo tick, giusto?

E se Expert_EveryTick=fasle - solo al primo tick di una nuova barra? E anche la traccia sarà attivata solo al primo tick?

Обработчик события "новый бар"
Обработчик события "новый бар"
  • 2010.10.04
  • Konstantin Gruzdev
  • www.mql5.com
Язык программирования MQL5 позволяет решать задачи на совершенно новом уровне. Даже те задачи, которые уже вроде имеют решения, благодаря объектно-ориентированному программированию могут подняться на качественно новый уровень. В данной статье специально взят простой пример проверки появления нового бара на графике, который был преобразован в достаточно мощный и универсальный инструмент. Какой? Читайте в статье.
 
mr.Taras:

Si prega di spiegare la logica del parametro Expert_EveryTick

Se Expert_EveryTick=true, l'Expert Advisor processa ogni tick? Cioè controlla le condizioni di entrata/uscita e il tracciamento delle posizioni (trawl) su ogni nuovo tick, giusto?

E se Expert_EveryTick=fasle - solo al primo tick di una nuova barra? E anche il trawl sarà attivato solo al primo tick?


Sì, avete capito bene.
 

Altre domande sulla logica dell'Expert Advisor:


c'è una posizione aperta, per esempio comprare, e un lotto fisso, per esempio 1.

C'è un segnale per l'altro lato, per vendere.

cosa dovrebbe fare l'EA? saranno due accordi di 1 lotto ciascuno (il primo chiuderà di 1 lotto) o un accordo di 2 lotti? fa differenza se l'attuale acquisto è in rosso o in blu?


Se c'è una posizione di acquisto e di nuovo un segnale di acquisto, quali metodi devo ridefinire per farla chiudere?

 
mr.Taras:

Altre domande sulla logica dell'Expert Advisor:


1. c'è una posizione aperta, per esempio comprare e un lotto fisso, per esempio 1.

c'è un segnale per l'altro lato, per vendere.

Cosa dovrebbe fare l'Expert Advisor? Aprirà due operazioni di 1 lotto ciascuna (la prima si chiuderà di 1 lotto) o una sola operazione di 2 lotti?


2. l'EA non andrà lungo da solo, cioè se c'è una posizione di acquisto e di nuovo un segnale di acquisto? quali metodi devo ridefinire per farlo andare lungo, CheckOpenLong()?


1. Due soglie di attivazione (impostazioni Expert Advisor). Se la soglia Close viene superata, la posizione si chiude semplicemente, se vengono superate due soglie (Close e Open), la posizione si inverte. -/+ Non c'è differenza.

2. Metodo di lavorazione

 
uncleVic:

1. due soglie di trigger ( impostazioni EA). se la soglia Close viene superata, la posizione si chiude semplicemente. se vengono superate due soglie (Close e Open), la posizione si inverte. -/+ Non c'è differenza.

2. Metodo di lavorazione

Le soglie Close e Open sono il risultato del "voto", cosa restituiscono ShortCondition() o LongCondition() nel modulo segnali?

 
mr.Taras:

Le soglie Close e Open sono il risultato della "votazione" di ciò che ShortCondition() o LongCondition() restituisce nel modulo segnali?

Le soglie sono parametri (Signal_ThresholdOpen e Signal_ThresholdClose) rispetto ai quali viene confrontato il risultato del "voto".
 

Tre domande:

  1. Come far funzionare il modulo dei segnali solo sui prezzi di apertura e non su ogni tick?
  2. Come posso ottenere i valori di voto del modulo di segnale nel modulo di inseguimento della posizione? Devi pescare su un segnale già calcolato e non inventare un altro modulo di segnale da seguire.
  3. Come ottenere i valori di voto del modulo di allarme nel modulo di gestione del denaro e del rischio? È necessario aprire i volumi secondo i segnali di trading già calcolati, non comporre un altro modulo di segnale per il calcolo del volume.

Teoricamente, possiamo ovviamente costruire l'EA usando la procedura guidata e poi aggiungere tutte queste caratteristiche manualmente al codice. Ma è auspicabile che tutto questo sia stato implementato sotto forma di metodi standard, cioè per i dummies che vogliono usare la procedura guidata, in modo che non debbano entrare nel codice e modificare, per esempio, se vogliono sostituire un modulo di segnale con un altro.