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

 

E poi dovrà anche fare l'uscita dei messaggi non per commenti, ma per oggetti, e in modo più grande...

Una persona non imparerà mai a pensare in questo modo da sola.

 
artmedia70:
Basta tenere a mente che la variabile viene reinizializzata al riavvio. Quindi questo approccio è accettabile per un tester, ma non per il trading reale.


Grazie per l'informazione, cosa fare allora? Devo semplicemente scrivere il valore in GV? O c'è qualche altra opzione per il commercio reale...

 
ALXIMIKS:

Grazie per l'informazione, cosa dovrei fare allora? Segnare il valore in GV? O c'è qualche altra opzione per il vero...
Dimenticate le bandiere globali. Non so perché avete bisogno di bandiere e cosa indicano. Ecco perché è difficile consigliare in relazione alla tua situazione.
 
Zolotai:
Gente, potreste suggerire un indicatore? Si basa su due diapositive. E quando attraversa dà la direzione sotto forma di frecce. Non riesco a trovarlo, grazie.
i-PSI@MA_Signal da qui.
 
ALXIMIKS:

Buon pomeriggio, se non è troppo difficile, per favore consigliate un principiante:

1) Come dichiarare un array di dimensione uguale al valore di qualche variabile? (se i=7 dichiarare array doppio Muss[7] e così via);

già risposto

2) Perché un array in una funzione utente è considerato dichiarato e usato adeguatamente se la condizione è sempre falsa?

mentre (falso) {

Alert("aaaaaaaaaaaaaaa" );

statico doppio Buf_max [9000000];

static double Buf_min [9000000];}

perché è stato dichiarato come statico. In MQL, tutte le variabili statiche sono inizializzate prima di chiamare la funzione init()

3) C'è una differenza in una funzione utente e in generale tra un array semplice e un array statico?

un semplice array sarà inizializzato la prima volta che si entra nella funzione in cui è dichiarato. Tuttavia, all'uscita, se l'avete ridimensionato prima, il nuovo valore non sarà resettato, e la prossima volta che la funzione sarà chiamata, l'array sarà della stessa dimensione dell'ultima volta.

Cioè, in generale, la differenza tra semplice e statico è solo nel momento dell'inizializzazione.

 
Cosa si può fare con l'errore "1"-->(nessun errore, ma risultato sconosciuto)?
 

Ho scritto una funzione qui per cancellare gli ordini in sospeso. Ma per qualche motivo non li cancella. Ecco il codice:

void DeletePendingOrders()
{
    int NumberOfTry = 0,
        err,
        ticket;

   for (int i=OrdersTotal()-1; i>=0; i--)
   {
      if (!OrderSelect(i, SELECT_BY_POS,MODE_TRADES)) continue;
      if (OrderMagicNumber() != i_magic) continue;
      if (OrderSymbol() != Symbol()) continue;
      if (OrderType() > 1)
      {
         ticket = OrderTicket();
      
         while (NumberOfTry < 3)
         {
            while (!IsTradeAllowed()) Sleep(5000);
      
            if (OrderDelete(ticket, Red))
                NumberOfTry = 3;
            else
                err = GetLastError();
      
            if (err > 0)
            { 
              Print(NumberOfTry," #",ticket," Error modifing order: (", err , ") ");
              Sleep(5000); RefreshRates(); NumberOfTry++;
            }
         }
      }
   }
}

Perché non funziona bene? Capisco che può essere riscritto diversamente, ma voglio capire perché questo codice non esegue il suo scopo.

 
hoz:

Ho scritto una funzione qui per cancellare gli ordini in sospeso. Ma per qualche motivo non li cancella. Ecco il codice:

Perché non funziona bene? Capisco che può essere riscritto diversamente, ma voglio capire perché questo codice non funziona come previsto.

Vorrei inserire una linea in modo da non dover cambiare il codice in particolare:

            while (!IsTradeAllowed()) Sleep(5000);
            err=0;
            if (OrderDelete(ticket, Red))
                NumberOfTry = 3;
            else
                err = GetLastError();
      
            if (err > 0)
 
Sepulca:

Avrei inserito una riga per non cambiare il codice in particolare:


E cosa ci darà questo? Ancora nessun ordine chiuso e nessun errore.

Il codice è stato cambiato:

void DeletePendingOrders()
{
    int NumberOfTry = 0,
        err,
        ticket;

   for (int i=OrdersTotal()-1; i>=0; i--)
   {
      if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue;
      if (OrderMagicNumber() != i_magic) continue;
      if (OrderSymbol() != Symbol()) continue;
      if (OrderType() > 1)
      {
         ticket = OrderTicket();
      
         while (NumberOfTry < 3)
         {
            while (!IsTradeAllowed()) Sleep(5000);
                err = 0;
              Print("IsTradeAllowed() = ", IsTradeAllowed());
              Print("err = ", err);

            if (OrderDelete(ticket, Red))
            {
                NumberOfTry = 3;
                Print("NumberOfTry", NumberOfTry);
            }
            else
            {
                err = GetLastError();
                Print("err = ", err);
            }
      
            if (err > 0)
            { 
              Print(NumberOfTry," #",ticket," Error modifing order: (", err , ") ");
              Sleep(5000); RefreshRates(); NumberOfTry++;
            }
         }
      }
   }
}

La parte destra del registro:

2013.09.11 22:24:19     2012.01.02 08:05  Perevorot EURUSD,M5: modify #10 sell stop 0.01 EURUSD at 1.29279 sl: 0.00000 tp: 1.29179 ok
2013.09.11 22:24:19     2012.01.02 08:05  Perevorot EURUSD,M5: open #10 sell stop 0.01 EURUSD at 1.29279 ok
2013.09.11 22:24:19     2012.01.02 08:02  Perevorot EURUSD,M5: Ôóíêöèÿ DeletePendingOrders çàâåðøåíà
2013.09.11 22:24:19     2012.01.02 08:02  Perevorot EURUSD,M5: NumberOfTry3
2013.09.11 22:24:19     2012.01.02 08:02  Perevorot EURUSD,M5: delete #9 sell stop 0.64 EURUSD at 1.29279 sl: 0.00000 tp: 1.29179 ok
2013.09.11 22:24:19     2012.01.02 08:02  Perevorot EURUSD,M5: err = 0
2013.09.11 22:24:19     2012.01.02 08:02  Perevorot EURUSD,M5: IsTradeAllowed() = 1
2013.09.11 22:24:19     2012.01.02 08:02  Perevorot EURUSD,M5: Ôóíêöèÿ ClosePosBySortLots çàêðûëà âñå ðûíî÷íûå îðäåðà
2013.09.11 22:24:19     2012.01.02 08:02  Perevorot EURUSD,M5: close #3 sell 0.01 EURUSD at 1.29303 tp: 1.29203 at price 1.29487
2013.09.11 22:24:19     2012.01.02 08:02  Perevorot EURUSD,M5: close #4 buy 0.02 EURUSD at 1.29403 tp: 1.29503 at price 1.29480
2013.09.11 22:24:19     2012.01.02 08:02  Perevorot EURUSD,M5: close #5 sell 0.04 EURUSD at 1.29286 tp: 1.29186 at price 1.29487
2013.09.11 22:24:19     2012.01.02 08:02  Perevorot EURUSD,M5: close #6 buy 0.08 EURUSD at 1.29386 tp: 1.29486 at price 1.29480
Si scopre che l'ordine è stato cancellato. Ma uno. Ce n'era un altro, un altro ancora. Ma non è stato cancellato. Ma il ciclo è per tutti gli ordini.
 

Guarda la tua variabile NumberOfTry

deve essere azzerato per ogni biglietto, altrimenti gli verrà assegnato un valore di 3 o più e non verranno eseguite ulteriori condizioni per tutti i biglietti.

solo uno soddisferà la condizione

Motivazione: