È possibile evitare molti "o" (||) nelle condizioni che causano la stessa azione? - pagina 4

 

borilunad:

I calcoli più complessi non rallentano tanto quanto le funzioni che controllano i vari dati di mercato necessari e le posizioni aperte ad ogni tick.

Santa verità, MarketInfo è uno dei peggiori problemi di test. Di solito scrivo in due blocchi per questi casi, se possibile, facendo query "reali" solo per la modalità di trading reale. Questo è particolarmente efficace per i dati non misurati (nel tester), per esempio:

int spread;

int init()
{
...

   if(IsTesting())
   {
      spread = MarketInfo(Symbol(),MODE_SPREAD);
   }

...
 
}

int start()
{
...

   if (!IsTesting())
   {
      spread = MarketInfo(Symbol(),MODE_SPREAD);
   }

...
}

Potete anche inviare nel blocco if(!IsTesting()) ogni sorta di RefreshRates(), query a MODE_BID e MODE_ASK (sostituendoli con Bid e Ask veloci) e così via.

 
alsu:

Santa verità, MarketInfo è uno dei peggiori problemi di test. Di solito scrivo in due blocchi per questi casi, se possibile, facendo query "reali" solo per la modalità di trading reale. Questo è particolarmente efficace per i dati non misurati (nel tester), per esempio:

Potete anche inviare nel blocco if(!IsTesting()) ogni sorta di RefreshRates(), query a MODE_BID e MODE_ASK (sostituendoli con Bid e Ask veloci) e così via.

Non intendo la funzione MarketInfo che ho all'inizio del mio avvio, ma le funzioni che controllano vari parametri del mercato e le posizioni aperte che sono specificate nelle condizioni necessarie per intraprendere azioni. Inoltre, non ho bisogno di MODE_BID e MODE_ASK, perché uso sempre Bid e Ask.
 
pako:

Grazie mille, Pako! Come ho fatto a non indovinare, è così facile! Ora ceno e faccio quello che posso e controllo la velocità del passaggio.

E questo non capisco cosa intendi. Da dove avete preso questi numeri? E se ti interessano i nomi brevi delle variabili, preferisco quelli brevi a quelli lunghi. O cos'altro? Sì, ho appena notato che hai aggiunto due parentesi prima di clo e alla fine dopo clo alla mia formula. Non è affatto necessario, disturba il calcolo. Ma grazie lo stesso!

<--- 10.444 = 8.087 > 3.908 è in che lingua?

Fatto, controllato, ha funzionato, ma il risultato non mi ha ancora soddisfatto, praticamente non ha ridotto il tempo della corsa! Domani cercherò di fare tutto il possibile, forse allora ci sarà qualche differenza.

Ma comunque la cosa principale è che grazie a te, Pako, Aleksey, Victor e altri ho imparato un altro importante metodo di scrittura del codice, di cui sono estremamente grato!

 

In questi casi uso una funzione.

Per esempio:

...
if (Request()) Action;

bool Request()
{
 if (A) return(true);
 if (B) return(true);
 if (C) return(true);
 if (D) return(true);
 return(false);
}
 
borilunad:
Io uso sempre Bid e Ask.

Allora avete bisogno di RefreshRates())
 
icas:

In questi casi uso una funzione.

Per esempio:

Per come la vedo io, tu hai la possibilità di soddisfare tutte le condizioni, mentre per me è sufficiente una sola condizione, e anche se si soddisfano più condizioni, cosa improbabile, visto che sono molto diverse, non si arriverà a questo, perché una condizione scatterà. Se ho sbagliato, giustificatelo! Sono sempre felice di sentire qualcosa di nuovo! Grazie!
 
alsu:

Allora avete bisogno di RefreshRates())
Sì, ho RefreshRates() all'inizio, o non è abbastanza?
 
borilunad:
Sì, ho RefreshRates() all'inizio, o non è abbastanza?
Tutto dipende da quanto tempo ci vuole per eseguire il calcolo. Ci può essere una situazione, quando durante questo periodo il prezzo si è aggiornato, e quindi Ask e Bid diventano irrilevanti. Quindi è meglio chiamare RefreshRates() in aggiunta prima di eseguire le compravendite (più precisamente, prima del calcolo del prezzo per esse).
 
borilunad:
Sì, ho RefreshRates() all'inizio di Start, o non è abbastanza?
Non ha senso usare RefreshRates all'inizio di Start, poiché Ask e Bid non sono ancora diventati obsoleti.
 
alsu:
Tutto dipende da quanto tempo impiegano i calcoli. Ci può essere una situazione in cui il prezzo si è aggiornato durante questo periodo, e quindi Ask e Bid diventano irrilevanti. Ecco perché è meglio chiamare RefreshRates() in aggiunta prima di eseguire le compravendite (o meglio, prima di calcolare i prezzi per esse).

Quindi avete bisogno di RefreshRates() prima di ogni serie di condizioni? Perché pensavo che ci fosse anche RefreshRates() in ogni funzione in esecuzione, dove controlla gli errori, per ripetere l'ordine, e questo è sufficiente. Allora proverò a mettere più RefreshRates() e vedere cosa succede! Grazie!

E Pap'e Yozh anche i miei ringraziamenti!

Motivazione: