Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 6. - pagina 950

 
Comunque, va bene, lo capirò, ero solo annoiato. Il codice è probabilmente, mi scuso, in parte idiota.
 
Potete dirmi per favore come chiudere un trade? Come chiudere un trade dopo n (numero ad esempio 5) candele dopo la sua apertura? Il tempo di apertura del commercio non è noto in anticipo.
 
kokos4:
Si prega di consigliare chi può farlo. Come chiudere una posizione dopo n (numero per esempio 5) candele dopo la sua apertura? Non si conosce in anticipo l'orario di apertura.

Conta n candele in secondi, aggiunge al tempo di apertura e confronta con il tempo corrente. Non appena il tempo corrente è maggiore - un ordine di chiusura.


////где-то в цикле перебора ордеров:
////
timer = OrderOpenTime()+PeriodSeconds()*n;

if(TimeCurrent()>timer) close(OrderTicket());
////////////////


 
kokos4:
Si prega di consigliare chi può farlo. Come chiudere l'affare dopo n (numero per esempio 5) candele dopo la sua apertura? In anticipo il tempo di apertura della posizione è sconosciuto.

Il numero di candele che sono passate dall'apertura dell'ordine (ricordati di evidenziarlo prima):

iBarShift (_Symbol, _Period, OrderOpenTime());

Inoltre è più facile come "un pezzo di torta". ;)

 

Colleghi, la mia funzione NormalizeDouble non funziona (non posso spiegarlo altrimenti). Emette 16 cifre, anche se ho scritto 5 nel secondo parametro. Per favore, ditemi cosa c'è di sbagliato nel codice:

double i = 0.123456789112345;
void OnStart()
  {
         NormalizeDouble(i, 5);  
         Alert (i);
  }
 
JoinDoe: Colleghi, la mia funzione NormalizeDouble non funziona (non posso spiegarlo altrimenti).
double i = 0.123456789112345;
void OnStart()
  {
         Alert (NormalizeDouble (i, 5));
  }
 
TarasBY:
Grazie! E ora mostra 0,12346
 
JoinDoe:
Grazie! E ora è 0,12346.
Corretto, arrotondato per difetto!
 
Come faresti in modo che non ci siano arrotondamenti?
 
JoinDoe:
Come faresti senza arrotondare?

Allora non sarà normalizzato e potrebbe causare un errore! Perché non siete contenti di un prezzo normalizzato più accurato?

Se ne avete bisogno per qualche motivo, potete moltiplicare il numero originale per 100000, trasformandolo in un intero, e poi moltiplicarlo per _Point o 0,00001:

double i = 0.123456789112345;
void OnStart()
  {
         Alert (NormalizeDouble (i*100000, 0)*_Point);
  }