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

 
Artyom Trishkin:

Non è chiaro di cosa abbiamo bisogno alla fine - alcuni pensieri strani.


Queste sono due domande in un solo post mentre si risolve lo stesso problema :-)

1. Come restituire un errore di creazione di un oggetto da una funzione che dovrebbe restituire dati

2. C'è un modo per scorrere le posizioni per un dato simbolosenza usare PositionsTotal ogni volta?

 
psyman:


Queste sono due domande in un solo post mentre si risolve lo stesso problema :-)

1. Come restituire un errore di creazione di un oggetto da una funzione che dovrebbe restituire dati

2. C'è un modo per scorrere le posizioni per un dato simbolosenza usare PositionsTotal ogni volta?

1. Perché una funzione di creazione di un oggetto che dovrebbe semplicemente creare un oggetto e restituire true in caso di successo o false in caso di errore dovrebbe restituire qualcos'altro? Non dovrebbe. La funzione deve fare una cosa e restituire il risultato del suo lavoro. Oppure, se volete fare un mostro, restituite i dati tramite variabili per riferimento.

2. Dipende dal tipo di account che avete.

3. Aprite finalmente l'aiuto - ci sono molte "scoperte meravigliose" lì

 
Artyom Trishkin:

1. Perché una funzione di creazione di un oggetto che dovrebbe semplicemente creare un oggetto e restituire true se ha successo o false se fallisce, dovrebbe restituire qualcos'altro? Non dovrebbe. Una funzione dovrebbe fare una cosa e restituire il risultato del suo lavoro. Oppure, se volete fare un mostro, restituite i dati tramite variabili per riferimento.

2. Dipende dal tipo di account che avete.

3. Aprite finalmente la guida - ci sono un sacco di "strane scoperte" lì


Grazie, semplificherò il codice.

Il tipo di conto è hedge.

Forse le domande sembrano semplici, ma appaiono dopo aver letto l'aiuto, non tutti i dettagli sono descritti lì, devo cercare i dettagli negli articoli o qui.

 
Roman Shiredchenko:

Compagni - guardate l'indicatore di correttezza. C'è una formula Valore = (Open[0]-SMA(P,n))/SMA(P,n))*100%.

L'ho messo sul grafico - calcola e traccia tutto. Comincio a controllare il suo valore su qualche barra usando la calcolatrice - non coincide con quello che ho disegnato...

Ecco un esempio, sto calcolando Open 1,0178, MA(13) 1,0182 usando la formula ((1,0178-1,0182)/1,0182) * 100% - il risultato sulla calcolatrice è -0,0393. E il grafico MT4 mostra -0,0929. È un errore nel codice o la calcolatrice non calcola correttamente alcuni valori lì? Per favore, aiutatemi. Sto allegando l'indicatore.

Lo avete nella formula Open[0], è così che dovrebbe essere fatto.

 
Alekseu Fedotov:

Avete Open[0] nella vostra formula, quindi è progettato in quel modo.

Beh, sì. Ecco come sto guardando i prezzi di apertura... C'è un opener e un cloze... confuso...
 
Seric29:
Come riempire un array 4-dimensionale del formato int Mas[1][2][2][2] con valori, come assegnare un valore a ogni cella dell'array, in questo caso, c'è un array 2-dimensionale int Arr[1][2]={3,4}; come riempire un 4-dimensionale?

Utilizzare un array di strutture, è molte volte più facile, più chiaro e più produttivo in termini di esecuzione del programma

struct My_St
{
   datetime tm; 
   int      mg;    
   double   tp;     
   double   sl;     
};
My_St st[];
 

Ho diversi strumenti, analiticamente etichettati.

Voglio cambiare il loro schema di colori.

Non voglio farlo a mano, voglio farlo in modo intelligente.

C'è un modo per farlo? Per esempio, tutto il testo che ho è nero e lo voglio bianco.

Grazie

 
Roman Shiredchenko:
Beh, sì. Ecco come sto guardando l'apertura dei prezzi .... C'è un'apertura e una clausola, sembra... confuso...

Non lo so, l'idea è quella.


Qual era l'idea qui,

se prendiamo il valore di qualsiasi barra (da History =5000; // il numero di barre nella storia calcolata)

poi l'apertura della stessa barra, ma non zero,

la vostra formula(Open[0]-SMA(P,n))/SMA(P,n))*100%


Roman, buona fortuna

 
Igor Makanu:

Gli array multidimensionali sono di solito riempiti in loop con i valori giusti - è più difficile fare un errore, per un array quadridimensionale dovrebbe essere qualcosa come questo, ma potrei sbagliarmi:

No, non ti sbagli, il mio errore è stato scrivere così.

A[1][2][4][2] = {{{1,2}, {0,2}, {1,2}, {1,2}},{{1,2}, {1,2}, {1,2}, {1,2}}}, 

Avrei dovuto scriverlo così.

A[1][2][4][2] = {{{{1,2}, {0,2}, {1,2}, {1,2}},{{1,2}, {1,2}, {1,2}, {1,2}}}}, 

Ci sono 4 staffe intorno ai bordi e io ne ho 3. Si legge così.

A[1] - означает 1ну строку, один ярус
A[1][2] 2ка в следующих скобочках говорит о том что мы имеем дело с 2мя 3ёх-мерными массивами, другими словами, это как 2 параллельных мира
A[1][2][4][2] - последующие [4][2] описываю 3ёхмерный массив, т.е. каждый из массивов имеет 4 столбца, и в каждом по 2 значения вот пример
{{1,2}, {0,2}, {1,2}, {1,2}} 4 столбца в каждом по значения

In generale, grazie, se vivrò abbastanza a lungo, ci lavorerò.

 
Seric29:

Quando si passa una struttura a una funzione, bisogna scrivere una funzione per ogni struttura, quindi la funzione è troppo statica e manca di versatilità. Ma le strutture hanno un lato positivo, è possibile combinare array di diversi tipi in strutture e leggerlo come un interoarray multidimensionale, ma purtroppo ho perso il link a questo sito dove è stato mostrato come farlo. A dire la verità non sono molto bravo con le strutture, molto meno testo se la dichiarazione di variabile globale di un punto per accedere ai campi della struttura, inoltre non capisco le classi, ho riletto il materiale molte volte nell'ultimo po 'più capire ma spiegato molto complicato e macchinoso, troppo scientifico frasi utilizzate nella spiegazione, quindi fondamentalmente non ho capito molto del materiale, e ciò che esattamente gli oggetti dinamici può essere fatto anche a me.