Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 660

 
Igor Makanu:

questo codice funziona, fatelo per analogia:

Ha apportato modifiche minime - rimosso l'analisi OrderMagicNumber() e aggiunto tre log.
Il risultato, purtroppo, è lo stesso - vedi pr. - Nella prima schermata, c'è un inizio (non è chiaro perché non inizia con 0), e nella seconda, dove inizia con 124 a 99.

int NumberOfOrders()
{
int i,res=0,k=OrdersTotal(); string sy=Symbol();

for(i=0; i<k; i++)
{
log("k = " + k +"; ");
log("i = " + i +"; ");
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if((OrderSymbol()==sy)) res++; //if((OrderMagicNumber()==magic_) && (OrderSymbol()==sy)) res++;
log("res = " + res +"; ");

}
}
return(res);
}

File:
test_1.png  6 kb
test_2.png  6 kb
 
Alexey Viktorov:
Questo codice compila davvero senza errori? Non ci credo...
Cosa ti fa dubitare? In ogni caso, MQL4 non produce alcun errore.
 
Algotrader18:

(non è chiaro perché non inizia con 0), e sul secondo posto dove viene da 124 a 99.

poiché il terminale ha "mangiato" una parte di Print(), l'output in MQL ha la priorità più bassa, aggiungete Slepp(123) prima di Print() e non ci saranno salti

anche se secondo il log stai solo stampando il contatore del ciclo

 
Igor Makanu:

poiché il terminale "mangia" la parte di Print(), in MQL l'output ha la priorità più bassa, aggiungete Slepp(123) prima di Print() e non ci saranno salti

anche se secondo il log stai solo stampando il contatore del ciclo

Questo è molto interessante - puoi essere un po' più specifico? Come funziona questo processo di "mangiare"?

La tua risposta mi dà l'impressione che ho "mangiato" - semplicemente non l'ha messo nel log perché c'erano cose più importanti, ma il mio vero compito era quello di passare attraverso tutti gli ordini e cancellarne alcuni e ho notato che l'EA stava saltando alcuni di essi (questo non stava emettendo informazioni con la priorità più bassa). Ho semplificato il compito per capire il motivo e come risultato abbiamo solo l'output nel log, ma vedo ancora ordini omessi, cioè l'Expert Advisor salta su diversi ordini. La priorità dell'ordine più basso spiega bene l'output di partenza non da 0 ma come può spiegare l'output incoerente quando salta, per esempio, da 124 a 99.

Se per "mangiato" intendiamo qualcos'altro, vorrei capire cosa?
File:
test_2.png  6 kb
 
neverness:

È fantastico!

Romano!

Io, per esempio, sono un trader di successo con 20 anni di esperienza.

Non capisco perché hai bisogno di "la differenza tra le chiusure delle coppie che hai inserito, euna media mobile di esse".

Inoltre, sapete come costruire una media mobile di queste differenze? - Fantastico!

Puoi semplicemente disegnare la media mobile delle quotazioni? - Anche no?

Allora qual è il problema?

la differenza delle medie ravvicinate non è uguale alla differenza delle medie ravvicinate, ahimè e ah

 
Algotrader18:
Quali sono i dubbi? Comunque, nessun errore in MQL4.

1. Impara come inserire il codice.

Algotrader18:

Ho fatto modifiche minime - rimosso l'analisi OrderMagicNumber() e aggiunto tre log.
Il risultato, purtroppo, è lo stesso - vedi sopra. - Nel primo screenshot l'inizio (non so perché non inizia con 0), e nel secondo - il posto dove inizia con 124 a 99.

int NumberOfOrders()
  {
   int i,res=0,k=OrdersTotal(); string sy=Symbol();
  
   for(i=0; i<k; i++)
     {
      log("k = " + k +"; ");
      log("i = " + i +"; ");
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if((OrderSymbol()==sy)) res++;  //if((OrderMagicNumber()==magic_) && (OrderSymbol()==sy)) res++;
         log("res = " + res +"; ");
        
        }
     }
   return(res);
  }

2. log è un logaritmo?

Nota

Potete usare log()invece di MathLog().

MathLog - Математические функции - Справочник MQL4
MathLog - Математические функции - Справочник MQL4
  • docs.mql4.com
MathLog - Математические функции - Справочник MQL4
 
Roman Sharanov:

Ho anche trovato un grave inconveniente, ci sono troppe chiamate CopyClose()

Potete dirmi come copiare le quotazioni da un array di coppie di valute in un ciclo?

Sembrerebbe un array doppio, ma MQL non lo supporta, come %.

Cosa intendete per "doppia matrice"?

 
Alexey Viktorov:

Cosa intendete per 'doppio array'?

Beh, bidimensionale.

 
Roman Sharanov:

Beh, bidimensionale.

Dove sta scritto che CopyClose copia i dati in un array 2D? Perché è stato menzionato l'array 2D in primo luogo?

 
Alexey Viktorov:

Dove sta scritto che CopyClose copia i dati in un array 2D? Perché è stato menzionato l'array bidimensionale?

Perché ho bisogno di memorizzare array di citazioni in un array.

Per copiarlo una volta in un ciclo e poi eseguire i calcoli usando ArrayCopy, ma non CloseCopy