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

 
silhouette:

Quale dovrebbe essere la dimensione degli array - non lo so. Il suo indice dovrebbe accumularsi su tutto l'intervallo di barre calcolate, cioè a partire dal limite della barra.

Cercherò di descrivere la logica del problema a parole.

  • Abbiamo tre buffer di indicatori che disegnano un LSMA colorato. Se il suo valore sulla barra attuale è superiore a quello precedente, lasciamo il valore nei buffer giallo e verde e cancelliamo il valore in rosso. Se il valore attuale è inferiore a quello precedente - al contrario. In tutti gli altri casi - cancelliamo il valore nei buffer rosso e verde, lasciando solo quello giallo.
  • Il valore del buffer della serie verde è 1, il valore dell'indice è 0. Se il buffer verde sulla barra corrente =EMPTY_VALUE e anche su quella precedente =EMPTY_VALUE, allora il valore del buffer verde aumenta di uno (accumulo di valore). Se il valore del buffer verde == EMPTY_VALUE, mentre il valore del buffer rosso == EMPTY_VALUE anche (solo il colore giallo sul grafico), significa che la serie è finita - assegniamo la lunghezza della serie alla serie verde con indice 0 (la salviamo nel buffer). Aumentiamo l'indice dell'array di uno (i prossimi saranno ora 1, 2, 3 ecc.), resettiamo il valore della serie a uno, aspettiamo l'inizio della prossima serie verde.
  • Manipolazioni simili vengono eseguite con la matrice della serie rossa.

Finché lo scopo di riempire queste matrici non è chiaro, non nasce nessun algoritmo. Non è chiaro per quali altri scopi saranno utilizzati questi array. Quindi non esiste un algoritmo adatto a salvarli. Dopo tutto, saranno costantemente sovrascritti con nuovi dati. Stai parlando della lunghezza della serie. La serie verde finirà non appena inizia la serie gialla o rossa. Allo stesso modo, la serie rossa finirà non appena inizia la serie gialla o verde. In altre parole, solo una serie che è attualmente in vigore e la serie che la precede saranno aggiornate. Oppure ci dovrebbero essere diverse serie di questo tipo, alternate tra loro.

In breve - in termini contadini-lavoratori: perché abbiamo bisogno di questi array di serie? Come sarà rappresentato graficamente nel tacchino, o per cosa?

 

CIAO!!!

Chi mi aiuterebbe a scrivere un EA con funzioni

1 tempo aperto H e M

2 moltiplicatore di volume di perdita (lotto)

Volume di 3 lotti

4 stop loss

5 prendere profitto

solo per la posizione Buy

Sembra semplice ma non funziona

 
artmedia70:

Finché lo scopo di riempire queste matrici non è chiaro, nessun algoritmo può essere creato. Non è chiaro per quali altri scopi saranno utilizzati questi array. Quindi non esiste un algoritmo per salvarli. Dopo tutto, saranno costantemente sovrascritti con nuovi dati. Stai parlando della lunghezza della serie. La serie verde finirà non appena inizia la serie gialla o rossa. Allo stesso modo, la serie rossa finirà non appena inizia la serie gialla o verde. In altre parole, solo una serie, che è attualmente disponibile, e la serie che la precede saranno rilevanti. Oppure ci dovrebbero essere diverse serie di questo tipo, alternate tra loro.

In breve - in termini contadini-lavoratori: perché abbiamo bisogno di questi array di serie? Come sarà rappresentato graficamente nel tacchino, o per cosa?

Il codice mostra che c'è un array diverso per ogni tipo di serie (verde o rossa).

Scopo: raccogliere informazioni statistiche per ulteriori analisi, sia utilizzando gli strumenti MQL che Excel.

In parole povere, l'array dovrebbe assomigliare a questo

RedSeries[0]=10; RedSeries[1]=11; RedSeries[2]=4 ...

GreenSeries[0]=6; GreenSeries[1]=8; GreenSeries[2]=10 ...

Se è importante, la dinamica del cambiamento di colore è la seguente: il verde non può cambiare in rosso, né il rosso in verde. Cioè, c'è sempre il giallo in mezzo.

 

Per favore spiegate, se un ordine è trovato da chiudere e deve essere chiuso, c'è bisogno di elencare i parametri dopo il ticket?

Esempio: OrderClose(OrderTicket(),OrderLots(),Bid,30,Blue);

sostituire con OrderClose(OrderTicket(),NULL,NULL,NULL);

o a OrderClose(OrderTicket(),EMPTY,EMPTY,EMPTY);

È possibile scriverlo ancora più breve per chiudere, considerando solo il biglietto?

 
rosomah:

Per favore spiegate, se un ordine è trovato da chiudere e deve essere chiuso, c'è bisogno di elencare i parametri dopo il ticket?

Esempio: OrderClose(OrderTicket(),OrderLots(),Bid,30,Blue);

sostituire con OrderClose(OrderTicket(),NULL,NULL,NULL);

o a OrderClose(OrderTicket(),EMPTY,EMPTY,EMPTY);

È possibile scriverlo ancora più breve per chiudere, considerando solo il biglietto?


No. Esiste un concetto di chiusura parziale di un ordine. Quindi i parametri devono essere specificati esplicitamente. Prova ad aprire un ordine con lotto=1,5 sulla demo, e poi chiudi quell'ordine con lotto=1. Vedrai che se l'ordine è andato in profitto, puoi chiudere non tutto l'ordine, ma solo una parte dei lotti, permettendo ai lotti rimanenti di continuare ad andare in profitto.
 
silhouette:

Il codice mostra che c'è un array diverso per ogni tipo di serie (verde o rossa).

Scopo: raccogliere informazioni statistiche per ulteriori analisi, sia utilizzando gli strumenti MQL che Excel.

In parole povere, l'array dovrebbe assomigliare a questo

RedSeries[0]=10; RedSeries[1]=11; RedSeries[2]=4 ...

GreenSeries[0]=6; GreenSeries[1]=8; GreenSeries[2]=10 ...

Se è importante, la dinamica del cambiamento di colore è la seguente: il verde non può cambiare in rosso, né il rosso in verde. Cioè, c'è sempre il giallo in mezzo.

Quindi impostate due array bidimensionali. Uno per i dati verdi e uno per i dati rossi. In una dimensione scrivi il tempo, nell'altra il valore numerico. Non appena appaiono i dati verdi, aumentate la matrice verde di 1 e scrivete il tempo e il valore della barra zero. Fate lo stesso per la matrice rossa. Poi, dopo che i dati sono stati accumulati negli array, è possibile elaborarli come necessario. Oppure scrivere tutti i dati nel file dall'Expert Advisor in una volta sola.
 

Ciao a tutti.

Come posso riconoscere gli ordini aperti da un EA dagli stessi ordini con un magik vuoto aperti manualmente?

 
swird:

Ciao a tutti.

Come riconosco un ordine aperto da un EA da un ordine aperto manualmente con una magia vuota?

Nel ciclo dell'ordine dovremmo controllare l'operatore OrderMagicNumber in questo modo:

if (OrdersTotal()>0)
{  for (int i=OrdersTotal()-1; i>=0; i--)
   {  if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      {  if (OrderMagicNumber()==MagNum) // тут
         {  //--- некоторое действие.

}  }  }  }
 
artmedia70:
Quindi impostate due array bidimensionali. Uno per i dati verdi e uno per i dati rossi. In una dimensione scrivi il tempo, nell'altra il valore numerico. Non appena appare il dato verde, aumentate la matrice verde di 1 e scrivete il tempo e il valore della barra zero. Fate lo stesso per la matrice rossa. Poi, dopo che i dati sono stati accumulati negli array, è possibile elaborarli come necessario. Oppure scrivere tutti i dati nel file dall'Expert Advisor in una volta sola.

Grazie.

Ma non riesco a capire il senso della creazione di una misura del tempo. Dopo tutto, ci sono diverse barre in una serie e i loro tempi sono diversi. In questo modo non è possibile registrare la serie.

Un'altra cosa: non riesco a capire dove c'è un errore logico nel mio codice. Qual è la ragione per cui non funziona? Senza di essa, qualsiasi tentativo di rifare qualcosa è inutile.

 
silhouette:

Grazie.

Ma non riesco a capire il senso di creare una misura del tempo. Dopo tutto, ci sono diverse barre in una serie e i loro tempi sono diversi. In questo modo, non è possibile registrare la serie.

E un'altra cosa: non riesco a capire dove c'è un errore logico nel mio codice. Qual è la ragione per cui non funziona? Senza di essa, qualsiasi tentativo di rifare qualcosa è inutile.

Perché il tempo della serie? Beh, per esempio, (non so che statistiche vuoi raccogliere) quando si elaborano dati statistici, sarebbe utile conoscere non solo il valore, ma anche il tempo di quel valore. Quando si fa il grafico in excel si può vedere chiaramente la posizione della serie e i dati in quella serie, la loro posizione relativa l'uno all'altro (rosso e verde), ecc. Se non ti serve, non usarlo.

Non ho guardato il tuo codice e non posso dire dove sia l'errore logico. Mi ricordo - l'hai fatto basandoti sull'indicatore di Victor (Vinin), perché non chiedere a Victor?