Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 1335

 
come posso aprire un conto?
 
Artyom Trishkin:

Non dovrebbe esserci alcuna differenza. Mi sembra semplicemente più carino - il codice è meno carico di parentesi e rientri.

Per un controllo (if) sì, ma nel codice ce ne sono due, e se ce ne sono molti, allora logica Se sì, contingente e nuova iterazione del ciclo, altrimenti azione A logica Se no allora azione altrimenti passare alla condizione successiva Se no. In questo caso, il corpo del ciclo andrà fino in fondo.

 
Valeriy Yastremskiy:

Per un controllo (if) sì, ma ci sono due nel codice, e se ci sono molti, poi la logica Se sì, continuare e una nuova iterazione del ciclo, altrimenti azione Una logica Se no allora azione altrimenti passare alla condizione successiva Se no. In questo caso, il corpo del ciclo andrà fino alla fine.

Non capisco niente, ma che sia così.

 
Artyom Trishkin:

Lo faranno. Lo uso perché lo voglio :) Questo specifica esplicitamente quali metodi di classe sono usati.

Se avete due classi, una come genitore e una come classe ereditata, e hanno due metodi con lo stesso nome, ma non sono virtuali per qualche motivo, dovete specificare esplicitamente quale metodo usare.

Supponiamo che la classe padre sia CParent e la classe ereditata sia CInheritede che entrambe abbiano il metodo Method().

In questo caso, se chiamiamo un metodo Method() di una classe CParent, chiamerà esplicitamente un metodo della classe CParent - questo non è richiesto qui. Possiamo chiamare il metodo con o senza di esso.

Sechiamiamo un metodoMethod() in una classe ereditata CInherited,verrà chiamato anche il metododi quella classe, poiché cerchiamo prima un metodo appartenente alla classe da cui l'abbiamo chiamato.

Sechiamiamo CParent::Method() in una classe CInherited, è il metodo della classe genitore che sarà chiamato in questo modo, perché abbiamo esplicitamente specificato un metodo che appartiene alla classe genitore tramite l'operatore di risoluzione del contesto.

Ma comunque chiamerei il metodo Method() nella classe CInherited conindicazione this - per essere sicuri che il metodo di questa (this == "this") classe ereditata sarà chiamato.

Ci sono altre spiegazioni per usarlo. Forse qualcuno più esperto di OOP può dircelo.

Artem, grazie mille per una risposta così completa, che cambia in meglio l'atteggiamento verso OOP).

 
Ахад Ахмедрв:
Come posso aprire un conto live?

1. Scegliere un broker.
2. Scegli una piattaforma, MT4 o MT5.
3. Apri un conto live con il broker.

 
Artyom Trishkin:

Beh, sì. Io sono una di quelle "alcune persone", specialmente quando chiamo una funzione standard da una classe, mi assicuro di specificare il contesto globale. Solo perché posso pensare di aggiungere un metodo in quella classe con lo stesso nome della funzione standard - così non dimenticherò mai cosa fa. Ed è quando hai bisogno di :: per chiamare una funzione standard, e questo - per chiamare il mio metodo con lo stesso nome.

Artem, smentisce già la seconda parte dell'espressione "necessario - non necessario". È necessario, significa che è necessario. Non c'è nessuna obiezione...

 

Ciao

Come calcolare la distanza in pip dal prezzo corrente all'ordine pendente limite più vicino. Sono interessato a un codice già pronto.


 
Valeriy Yastremskiy:

Per un controllo (if) sì, ma ci sono due nel codice, e se ci sono molti, poi la logica Se sì, continuare e una nuova iterazione del ciclo, altrimenti azione Una logica Se no allora azione altrimenti passare alla condizione successiva Se no. In questo caso il corpo del ciclo andrà fino in fondo.

Per me, l'opzione preferita è

int a = 3, b = 7;
for(int i = 0; i < 10; i++)
 {
  if(i == a && b == 7)
   {
    Print(b);
   }
  // если условие if(i == a) НЕ выполнено, следующая итерация………
 }

o questo

int a = 3, b = 7;
for(int i = 0; i < 10; i++)
 {
  if(i == a)
   {
    if(b == 7)
     Print(b);
   }
  // если условие if(i == a) НЕ выполнено, следующая итерация………
 }

Un'altra variante

int a = 3, b = 7;
for(int i = 0; i < 10; i++)
 {
  if(i != a)
   continue; // если условие if(i != a) выполнено, следующая итерация………
    if(b == 7)
     Print(b);
 }

L'altra variante è al limite dell'idiozia.

int a = 3, b = 7;
for(int i = 0; i < 10; i++)
 {
  if(i != a)
   continue; // если условие if(i != a) выполнено, следующая итерация………
    if(b != 7)
     continue;
     
  Print(b);
 }

Ma questa è una questione di gusti. Quello che piace a uno.

Per quanto ho capito, questo modo era usato quando l'operatore if controllava TUTTE le condizioni dall'inizio alla fine. È stato giustificato dal fatto che se la prima condizione non è soddisfatta, non dovrete controllare le condizioni seguenti. Ora tutte le condizioni dopo quella che non è stata soddisfatta non vengono controllate. E le scale di queste condizioni non sono più necessarie, rimane solo un'abitudine.

 
Alexey Viktorov:

Artyom, questo già smentisce la seconda parte dell'espressione "non dovrebbe". Se devo farlo, devo farlo. Nessuna obiezione...

Con l'avvertenza: se lo faccio.
 
Ciao, lo strategy tester mostra il 44% di qualità della storia, come posso risolvere il problema? Cercando nel forum non ho trovato nulla, ho anche cercato delle informazioni nell'aiuto, ma non c'è nulla.