Mercato: nessuna operazione di trading - pagina 7

 
Vitaly Muzichenko:

Costruire una funzione normale con un ritorno al lotto, non un controllo vero/falso

E gli piace fare controlli extra. Dovete controllare se è un tester di strategia, poi controllare anche ciò che la funzionecheckVolumeValue ha restituito...

 
Evgeny Belyaev:

Stai leggendo in diagonale?

Altre domande per me?

Dov'è il tuo graal quando vediamo il segnale?

Non hai scaricato i tuoi EA nel mercato, a giudicare dalla composizione dei prodotti.

quindi...

ciao

;)

 
Vladislav Andruschenko:


Allora non dovrebbe esserci un problema.

la stessa multicurrency, supera il test.

E nessuna operazione di trading può essere dovuta all'umore del tester :-) - Non so se è di cattivo umore (cioè rinfrescarsi, dormire, avere un giorno libero) e non fa nessuno scambio.

Basta provare una diffusione diversa o aspettare un giorno e salta tutto di nuovo in vena.

Sto controllando senza problemi, le funzioni funzionano perfettamente. Rimosso il controllo per il lotto minimo, era così che se il minimo consentito più di 0,01, allora non fare trading.
Nel validatore, ho visto un lotto maggiore di 0,01, quindi non ho fatto trading.

 
Renat Akhtyamov:

Non hai scaricato l'EA nel Mercato, a giudicare dalla composizione dei prodotti

quindi...

ciao

;)

Beh, l'ho fatto, quindi questo è un altro problema. Vuoi il link o vuoi trovarlo da solo?

Dov'è il tuo graal quando vediamo il segnale?

Ho anche fatto un lavoro per un uomo.


 

Guarda, ho gufi il primo lotto è preso dalle impostazioni, il che significa che può essere meno del consentito solo se l'utente ha fatto un errore quando ha inserito il lotto.

Per esempio, l'utente ha fatto un errore di battitura e ha scritto 0,005 mentre voleva scambiare 0,05 lotti - se si controlla, i gufi scambieranno 0,01 lotti (assumendo che 0,01 sia il lotto minimo)

Se vuoi fare trading a 0.005 e vuoi fare trading a 0.05 - puoi aggiungere un avviso.

Credo che questa sia una questione di decisione personale, chi vuole così e così ....

A proposito, ecco una parte del codice (che ho anche scritto in precedenza) quando controllato è anche fallito:

double CheckVolumeValue(double volume)
{
   double min_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MIN);
   if(volume<min_volume)
   {
      Print("Volume is less than the minimum");
      return(min_volume);
   }

   double max_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MAX);
   if(volume>max_volume)
   {
      Print("Volume is greater than the maximum");
      return(max_volume);
   }
 ......

}
 
Evgeny Belyaev:

In un certo senso l'ho fatto, quindi è di nuovo una seccatura. Vuoi il link o puoi trovarlo da solo?

Dov'è il tuo graal quando vediamo il segnale?

Preferisco non parlare con i cacciatori di idee su questi argomenti

 
Renat Akhtyamov:

Preferisco non parlare di queste cose con i cacciatori di idee.

Perché parli allora? )

Mi stai annoiando. Siamo tutti in attesa di un segnale con volumi calcolati dal CME. Non c'è il clearing sul CME?

 
Maksim Neimerik:

Guarda, ho gufi il primo lotto è preso dalle impostazioni, il che significa che può essere meno del consentito solo se l'utente ha fatto un errore quando ha inserito il lotto.

Per esempio, l'utente ha fatto un errore di battitura e ha scritto 0,005 mentre voleva scambiare 0,05 lotti - se si controlla, i gufi scambieranno 0,01 lotti (assumendo che 0,01 sia il lotto minimo)

Se vuoi fare trading a 0.005 e vuoi fare trading a 0.05 - puoi aggiungere un avviso.

Credo che questa sia una questione di decisione personale, chi vuole così e così ....

A proposito, ecco una parte del codice (che ho anche scritto prima) quando anche il controllo è fallito:

Devi fare tutto prima, e poi controllare il min/max

double CheckVolumeValue(double volume)
{
   double min_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MIN);
   double max_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MAX);
 ...

   if(volume<min_volume)
   {
      Print("Volume is less than the minimum");
      return(min_volume);
   }

   
   if(volume>max_volume)
   {
      Print("Volume is greater than the maximum");
      return(max_volume);
   }
}

e immediatamente al ritorno fare la normalizzazione

return(NormalizeDouble(volume,LotDigit(symb)));
 
Vitaly Muzichenko:

Fai tutto prima, e poi controlla il min/max

e poi fare la normalizzazione immediatamente al ritorno.

In generale, ok, è ora di chiudere questa conversazione.

Alcuni difetti immaginari li avete visti subito, ma l'essenza (ho scritto sul ritorno del lotto) è rimasta senza la vostra attenzione...

Grazie a tutti per il vostro aiuto!

 
Maksim Neimerik:

Tutto sommato, è ora di porre fine a questa conversazione.

Alcuni difetti immaginari li avete visti subito, ma l'essenza (ho scritto sul ritorno del lotto) è rimasta senza la vostra attenzione...

Grazie a tutti per il vostro aiuto!

Maxim, mi senti?

Rileggete il codice che ho dato e il suo messaggio

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

Mercato: Nessuna operazione di trading

Vitaly Muzichenko, 2020.01.27 18:37

Devi fare tutto prima, e poi controllare il min/max.

double CheckVolumeValue(double volume)
{
   double min_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MIN);
   double max_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MAX);
 ...

   if(volume<min_volume)
   {
      Print("Volume is less than the minimum");
      return(min_volume);
   }

   
   if(volume>max_volume)
   {
      Print("Volume is greater than the maximum");
      return(max_volume);
   }
}

e normalizzarlo immediatamente ad un ritorno

return(NormalizeDouble(volume,LotDigit(symb)));

Si controlla il min/max e poi si fanno i calcoli, quindi il calcolo può essere qualsiasi cosa. Dovresti controllare il min/max dopo i calcoli, non prima

---------------------------

Ed ecco il mio)


Motivazione: