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

 
Questa domanda: è possibile spostare l'indicizzazione degli elementi dell'array di 1 unità senza creare un altro array simile e copiare elemento per elemento le informazioni dal primo array (e poi di nuovo) in esso? Infatti, in MT4 è in qualche modo fatto negli array di serie temporali (quando si forma una nuova barra, le viene assegnato l'indice 0, e gli indici di tutti gli elementi precedenti dell'array sono spostati di 1 unità).
 
FxRoller:
Buongiorno a tutti! Questa domanda: è possibile spostare l'indicizzazione degli elementi dell'array di 1 unità senza creare un altro array come questo e copiare elemento per elemento le informazioni dal primo array (e poi indietro) in esso? Infatti, in MT4 è in qualche modo fatto negli array di serie temporali (quando si forma una nuova barra, le viene assegnato l'indice 0, e gli indici di tutti gli elementi precedenti dell'array sono spostati di 1 unità).

Mi unisco alla domanda: sarebbe conveniente usare la funzione built-in per spostare la dimensione N dell'array di M elementi a destra o a sinistra.

Per quanto ne so, per ora bisogna spostare per ciclo, definendo la dimensione dell'array. È più difficile usare la dinamica (+i dati non vengono persi).

 
kosmos0975:

Mi unisco alla domanda: sarebbe conveniente usare la funzione integrata per spostare la dimensione N dell'array di M elementi a destra o a sinistra.

Per quanto ne so, per ora devi spostarti con un ciclo, definendo la dimensione dell'array. È più complicato usare la dinamica (+dati non persi).

SetIndexShift() non aiuta?

Imposta lo spostamento della linea dell'indicatore rispetto all'inizio del grafico.

voidSetIndexShift(
intindex,// numero
int shift// shift
);

Parametri

indice

[Numero sequenziale della linea. Deve essere da 0 a 7.

turno

[in] Valore di spostamento in barre.

Valore restituito

No.

Nota

Un valore positivo sposta l'immagine della linea a destra, un valore negativo la sposta a sinistra. Il valore calcolato sulla barra corrente viene disegnato con l'offset specificato rispetto alla barra corrente.

Esempio:

 

Potete anche copiare un array su se stesso con un offset.

int  ArrayCopy(
   void&        dst_array[],         // куда копируем                           // сюда, понятно имя массива
   const void&  src_array[],         // откуда копируем                         // сюда тоже его
   int          dst_start=0,         // с какого индекса пишем в приемник       // сюда 0
   int          src_start=0,         // с какого индекса копируем из источника  // сюда, например с первого, значит 1
   int          count=WHOLE_ARRAY    // сколько элементов                       // сюда размерность массива минус 1
   );

Quindi l'array sarà copiato su se stesso con un offset di 1 elemento. Lo zero sarà scartato e l'ultimo sarà vuoto. Al contrario, scartando l'ultimo elemento, non ho provato, ma penso che si possano impostare correttamente gli ultimi tre parametri della funzione.

 
AlexeyVik:

Potete anche copiare un array su se stesso con un offset.

Quindi l'array sarà copiato su se stesso con un offset di 1 elemento. Lo zero sarà scartato e l'ultimo sarà vuoto. L'altro modo, buttando fuori l'ultimo elemento, non l'ho provato, ma penso che gli ultimi tre parametri della funzione possano essere impostati correttamente.


Non l'ho provato, ma può essere utile per cambiare la direzione dell'indicizzazione.

P.S. Ho alcune domande su strategy tester. Puoi aiutare?

 
kosmos0975:

Non l'ho provato, ma un cambiamento nella direzione dell'indicizzazione potrebbe essere utile.

P.S. Ci sono domande sul tester di strategia. Puoi aiutare?

Intendete cambiare la direzione dell'indicizzazione dopo aver copiato un array in se stesso? È necessario? Penso che non ci saranno problemi a copiare dall'indice zero senza l'ultimo e incollare dal primo, mentre lo zero rimarrà o vuoto o il vecchio valore, non importa, perché questa procedura è necessaria non solo per il gusto di copiare, ma specificamente per sostituire uno dei valori dell'array (zero o ultimo) con uno nuovo. Corrispondentemente, dopo tale copia, l'elemento "lasciato libero" viene riempito con il nuovo valore. E non importa cosa ci sia rimasto dentro.

Su tester, se posso - vi aiuterò. Ma qui ci sono più degni che possono suggerire.

 

I segnali di controllo e il controllo delle posizioni aperte sono eseguiti dall'indicatore. I comandi di apertura e chiusura delle posizioni vengono inviati all'Expert Advisor attraverso le variabili globali del terminale.

L'uso degli indicatori è conveniente perché ci sono molti indicatori, e si può vedere il lavoro di diversi blocchi logici allo stesso tempo.

Domanda. Nel tester della strategia, l'indicatore può lavorare con la funzione OrderSelect(),OrdersTotal(), ecc.

 
AlexeyVik:

Intendi invertire la direzione dell'indicizzazione dopo aver copiato l'array in se stesso? È davvero necessario? Penso che non ci saranno problemi a copiare dall'indice zero senza l'ultimo e incollare dal primo, mentre lo zero rimarrà o vuoto o il vecchio valore, non importa, perché questa procedura è necessaria non solo per copiare, ma specificamente per sostituire uno dei valori dell'array (zero o ultimo) con uno nuovo. Corrispondentemente, dopo tale copia, l'elemento "lasciato libero" è riempito con il nuovo valore. E non importa cosa ci sia rimasto dentro.

Su tester, se posso - vi aiuterò. Ma qui ci sono più degni che possono suggerire.

Prima di copiare e dopo.
 
Non controllato, ma cosa ti impedisce di controllarlo da solo? Hai solo bisogno di salvare il modello con tutti gli indicatori sotto il nome dell'EA e poi quando avvii l'EA nel tester tutti gli indicatori saranno caricati e probabilmente funzioneranno correttamente. Ma è possibile che prendano valori dalle schede "Commercio" e "Storia del conto".
 
kosmos0975:
Prima di copiare e dopo.
Perché grattarsi l'orecchio destro con il dito della mano sinistra? O piede... Ho detto solo che la seconda opzione, per mancanza di necessità, non è stata testata. Ma logicamente funzionerebbe senza problemi.