[ARCHIVIO] Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 3. - pagina 308

 
A che ora è adesso negli Stati Uniti? A che ora apre/chiude negli Stati Uniti? A che ora apre/chiude in Giappone? Proprio con l'abolizione dell'orario invernale è un po' poco chiaro...e l'Europa, l'Asia, gli USA stanno regolando i loro orologi?
 
Elenn:
La soluzione è davvero originale, dovremmo provarla. Ma quando l'array viene reinizializzato, i dati non saranno persi a causa della reinizializzazione?

Se si aumenta la dimensione della matrice, i dati precedentemente inseriti non andranno persi. E le celle "catturate" (nuove) conterranno rifiuti di RAM. E se si restringe l'array, i dati che erano nelle celle che si restringono saranno irrimediabilmente persi. Queste sono le basi della programmazione.
 
vilard:

Quanto tempo ci vuole perché un ordine pendente MODE_TRADE diventi un ordine MODE_HISTORY?

In pochissimo tempo. Gli ordini in sospeso non vengono memorizzati nella cronologia.

Non appena viene trasformato in un ordine a mercato e viene chiuso - allora diventerà storia, ma con un tipo di ordine a mercato.

Per esempio:

Se c'era OP_BUYSTOP, allora è stato convertito in OP_BUY. Dopo la sua chiusura, sarà messo nella storia.

MA, dopo la conversione da OP_BUYSTOP a OP_BUY, l'OP_BUYSTOP originale non sarà nella storia.

 
001:

Buona sera, per favore consigliatemi. Ci sono due valori di indicatori su barre diverse. Come tracciare una linea attraverso di loro e come lavorare con essa nell'indicatore? Grazie!

La linea tra di loro può essere disegnata usando l'oggetto OBJ_TREND. La prima coordinata è il tempo e il prezzo della prima barra, la seconda coordinata è il tempo e il prezzo della seconda barra.

Funzione:

//+----------------------------------------------------------------------------+
void SetTLine(color cl, string nm, datetime t1=0, double p1=0, datetime t2=0, double p2=0, int st=0, int sz=0) {
   if (ObjectFind(nm)<0) ObjectCreate(nm, OBJ_TREND, 0, 0, 0, 0, 0);
   ObjectSet(nm, OBJPROP_TIME1    , t1);
   ObjectSet(nm, OBJPROP_PRICE1   , p1);
   ObjectSet(nm, OBJPROP_TIME2    , t2);
   ObjectSet(nm, OBJPROP_PRICE2   , p2);
   ObjectSet(nm, OBJPROP_COLOR    , cl);
   ObjectSet(nm, OBJPROP_STYLE    , st);
   ObjectSet(nm, OBJPROP_WIDTH    , sz);
   ObjectSet(nm, OBJPROP_RAY      , 0);
}
//+----------------------------------------------------------------------------+

Spero che tutto sia chiaro in esso.

cl - colore dell'oggetto, nm - nome dell'oggetto, t1, p1 - coordinate di origine, t2, p2 - coordinate finali, st - stile della linea, sz - dimensione.

Si può anche aggiungere il raggio: 1 - raggio, 0 - segmento. L'ultima riga di questa funzione definisce un segmento. Al posto di 0 potete mettere il nome del parametro da passare.

Per quanto riguarda come lavorare con essa (questa linea) nell'indicatore - dovete sapere di cosa avete bisogno. Ma i dati su di esso (la linea) possono essere ottenuti utilizzando la funzione standard

ObjectGet("nome oggetto", proprietà oggetto richiesta);

 
artmedia70:

Potete tracciare una linea tra di loro usando l'oggetto OBJ_TREND. La prima coordinata è il tempo e il prezzo della prima barra, la seconda coordinata è il tempo e il prezzo della seconda barra.

Funzione:

Spero che tutto sia chiaro in esso.

cl - colore dell'oggetto, nm - nome dell'oggetto, t1, p1 - coordinate di origine, t2, p2 - coordinate finali, st - stile della linea, sz - dimensione.

Si può anche aggiungere il raggio: 1 - raggio, 0 - segmento. L'ultima riga di questa funzione definisce un segmento. Al posto di 0 potete mettere il nome del parametro da passare.

Per quanto riguarda come lavorare con essa (questa linea) nell'indicatore - dovete sapere di cosa avete bisogno. Tuttavia, i dati su di esso (la linea) possono essere ottenuti utilizzando la funzione standard

ObjectGet("nome oggetto", la proprietà oggetto necessaria);


Grazie mille! Un'altra domanda, se posso. Come lavorare (ho bisogno di sapere quale valore assume il trend su una certa barra), come lavorare il trend nell'EA. Voglio trasferire una parte dell'indicatore all'Expert Advisor (calcoli).
 
Buongiorno!!! Non posso entrare nel conto! Che cazzo è questo "errore comune"?
 
C'è di nuovo qualcosa che non va nel computer?
 
Elenn:
La soluzione è davvero originale, dovremmo provarla.


Vi citerò un piccolo testo del tutorial di Delphi. Non farà male saperlo.

Gli "array dinamici" sono strutture di dati dinamici, quindi il programma dovrebbe prevedere la rimozione esplicita dalla memoria del computer quando avete finito con loro. Il processo di rimozione delle variabili dinamiche non necessarie dalla memoria del computer è talvolta chiamato raccolta dei rifiuti".

Una variante che funziona in MQL4 è quella di ridimensionare un array dinamico a lunghezza zero utilizzando la funzione ArrayResize() https://docs.mql4.com/ru/array/ArrayResize quando il programma finisce di lavorare con esso.

 
drknn:


Penso che vi citerò un piccolo pezzo di testo dal tutorial di Delphi. Buono a sapersi.

Gli "array dinamici" sono strutture di dati dinamici, quindi il programma dovrebbe prevedere la rimozione esplicita dalla memoria del computer quando avete finito con loro. Il processo di rimozione delle variabili dinamiche non necessarie dalla memoria del computer è talvolta chiamato raccolta dei rifiuti".

Una variante adatta al linguaggio MQL4 è quella di ridimensionare un array dinamico a lunghezza zero usando la funzione ArrayResize() https://docs.mql4.com/ru/array/ArrayResize dopo aver finito di lavorarci.

È tutto vero: pulire la spazzatura è una buona regola...

Ma in questo contesto come determinare se dobbiamo pulire la "spazzatura" ora o viceversa: non è spazzatura ma dati necessari per ulteriori calcoli.

Da quanto ho capito, deinit() dovrebbe essere usato per pulire il cestino, ma... viene eseguito non solo quando il grafico di uno strumento di trading viene cancellato e l'EA viene rimosso, ma anche quando TF viene cambiato. In questo caso, tutti i dati accumulati per il TF saranno persi e l'Expert Advisor ricomincerà a lavorare con un array zero quando tornerà al timeframe precedente. Lo stesso accadrà se cambiamo uno qualsiasi dei parametri dell'EA.

Si scopre che in alcune situazioni lo 'scavenging' è un processo logico complesso, piuttosto che cambiare semplicemente la dimensione di un array.

 
001:

Grazie mille! Un'altra domanda, se posso. Come lavorare(ho bisogno di sapere quale valore assume il trend su una certa barra), come lavorare con il trend nell'EA. Voglio trasferire una parte dell'indicatore all'Expert Advisor (calcolo).

ObjectGetValueByShift() per aiutarvi

E come ci lavorerete - solo voi lo sapete...

Motivazione: