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

 
evillive:
ricordare il vecchio numero di Byes e confrontarlo con il numero attuale, come altro?
Questo è esattamente ciò che non funziona.
 
Leonid123456:
Questo è esattamente quello che non posso fare.
creare una variabile intera, assegnarle il numero di acquisti e poi contare nuovamente gli acquisti e confrontarli con il valore di quella variabile non è possibile?
 
evillive:
creare una variabile intera, assegnarle il numero di acquisti, e poi ancora una volta quando voglio contare gli acquisti e confrontarli con il valore di quella variabile, non funziona?
Grazie!
 
tuner:

Non c'è niente di sbagliato in questi valori, sono tutti corretti, ma non è di questo che stiamo parlando.

Il problema del venerdì in particolare non è rilevante se la vostra ora locale è X ore più lunga di quella del vostro broker.

Ma immaginate se sul vostro computer locale non c'è +1, ma -1 ora di differenza con il broker.

E c'è questa semplice condizione:

In questo caso:

1. il broker avrà il primo tick del venerdì, per esempio il tick di oggi, che ha un tempo di 2014.11.07 00:00

2. Prendere il numero di secondi trascorsi dal01.01.1970 00:00 fino al tick in questione, cioè2014.11.07 00:00

3. prendiamo il numero di secondi trascorsi dal 01.01. 1970 00:00 al06.11.2014 21:30 (è la data di ieri, perché prendiamo l'ora del PC locale, che al momento del tick non è venerdì, ma giovedì, che è il sesto giorno, o per essere più precisi, 2014.11.06 23:00, la differenza di 1 ora)

Voilà, il numero di secondi del punto 2 è maggiore di quello del punto 3.

Questo significa che il primo tick del venerdì eseguirà la stampa specificata nel codice, anche se se la funzioneStringToTime() prende la data dal server del broker, allora tutto funzionerebbe come previsto, la stampa apparirebbe il venerdì solo dopo che l'ora supera le21:30

Sì... Non ho capito subito il problema. Ho sempre avuto quello locale più grande di quello del server e non ho incontrato questo problema. L'unica via d'uscita è prendere in considerazione il giorno e non usare la rappresentazione del tempo ridotto.
 
AlexeyVik:
Sì... Non ho capito subito il problema. Il mio locale è sempre più grande di quello del server e non ho riscontrato questo problema. L'unica via d'uscita è prendere in considerazione il giorno e non usare la rappresentazione del tempo ridotto.

Beh, sì, come opzione per alimentare la funzione con l'ora giusta, insieme alla data estratta da TimeCurrent(), in questo caso il problema non dovrebbe essere

A proposito, la mia ora locale è sempre più grande dell'ora del broker, ma tuttavia questo problema nel modo sopra descritto è apparso venerdì scorso alla stessa ora su due diversi broker (uno demo, il secondo reale). Il perché sia successo è ancora un mistero. Tuttavia, il codice è già stato sostituito da un altro, quindi questo problema non dovrebbe ripetersi

 
tuner:

Beh, sì, come opzione per alimentare la funzione con l'ora giusta, insieme alla data estratta da TimeCurrent(), in questo caso il problema non dovrebbe essere

A proposito, la mia ora locale è sempre più grande dell'ora del broker, ma tuttavia questo problema nel modo sopra descritto è apparso venerdì scorso alla stessa ora su due diversi broker (uno demo, il secondo reale). Il perché sia successo è ancora un mistero. Tuttavia, il codice è già stato sostituito da un altro, quindi questo problema non dovrebbe ripetersi

Sì, ci sono diverse varianti. Per esempio, puoi controllare venerdì sera l'ora locale invece dell'ora del server. Ma in questo caso, se si incasina il tempo del computer, si possono avere un sacco di problemi.
 
evillive:
creare una variabile intera, assegnare il numero di acquisti ad essa, e poi ancora una volta contare gli acquisti e confrontare con il valore di quella variabile non è possibile?

Puoi darmi un esempio di codice?

Dopo il confronto la variabile deve essere riscritta, altrimenti lo stesso codice sarà eseguito all'infinito. (diciamo che era 6 ed è diventato 7, devo scrivere nella variabile che è diventato 7 dopo il confronto)

 
Leonid123456:

Puoi darmi un esempio del codice?

Dopo il confronto la variabile deve essere riscritta, altrimenti lo stesso codice sarà eseguito all'infinito. (diciamo che erano 6 e ora sono 7, dovremmo scrivere nella variabile che sono 7 dopo il confronto).


Non preoccupatevi, ecco la funzione di Kim che uso e che funziona in tutte le build:

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает количество позиций.                                 |
//+----------------------------------------------------------------------------+
int NumberOfPositions(string sy="", int op=-1, int mn=-1) {
  int i, k=OrdersTotal(), kp=0;
  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==sy || sy=="") {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) kp++;
  } } } } }
  return(kp);
}
//+----------------------------------------------------------------------------+

E questo è in aggiunta:

  int BuyPos = NumberOfPositions(Symbol(),OP_BUY, Magic);
  int SellPos = NumberOfPositions(Symbol(),OP_SELL,Magic);

Tutto quello che dovete fare è controllare secondo i vostri obiettivi:

if(BuyPos >= n) 
 
borilunad:

Non preoccupatevi, ecco una funzione di Kim che uso e che funziona in tutte le build:

E questo in aggiunta:

Tutto quello che dovete fare è controllare secondo i vostri obiettivi:

Grazie mille!
 
borilunad:

Non preoccupatevi, ecco una funzione di Kim che uso e che funziona in tutte le build:

E questo in aggiunta:

Tutto quello che dovete fare è controllare secondo i vostri obiettivi:

L'ho collegato e funziona a tempo indeterminato...

Sono riuscito a risolvere il problema usando l'ultimo metodo in questo articolo https://www.mql5.com/ru/articles/1399

Motivazione: