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

 
Oleh Fedorov:

Salve.

Nessuno ha niente da dire sul post di Bilder?

Forse ha senso metterlo in un nuovo thread, così che più persone lo vedranno? Se è così, chiedete ai moderatori di postarlo... O crearne uno da solo?

Sì, crea un argomento separato. Cerca solo di scegliere la sezione giusta del forum in cui creare l'argomento.

 

Un consiglio, per favore, elementare. Array.

Sto studiando e non capisco.

double tick[2,2];

void OnTick()
  {
  tick[1,1] = Ask;
  tick[1,2] = NormalizeDouble(tick[1,1]*100*_Point,_Digits);
  OrderSend(Symbol(),OP_BUYSTOP,0.01,tick[1,2],3,0,0,"bs2",0,0,clrBlue); 
}

Non ricevo errori durante la compilazione, ma quando lo eseguo nel terminale mi dà un errore critico.

Perché quando il commento del valore ditick[1,1] viene stampato, arrotonda il numero a 4 cifre decimali.

Perché non solo non è in grado di calcolare correttamente il valore ditick[1,2] ma si rifiuta anche di copiare i dati della cellatick[1,1] (tick[1,2]=tick[1,1];).

E infine, perché, quando si crea un ordine, se invece del valore del prezzo cito una cella dell'array dove questo prezzo è memorizzatotick[1,2], considera questa variabile come 2 valori in una volta. (c'è un valore di slittamento che salta nei suggerimenti)

 
Gilmor:

Un consiglio, per favore, elementare. Array.

Sto studiando e non capisco.

Non ottengo errori durante la compilazione, ma ottengo un errore critico quando lo eseguo nel terminale.

Perché quando il commento del valore ditick[1,1] viene stampato, arrotonda il numero a 4 cifre decimali.

Perché non solo non è in grado di calcolare correttamente il valore ditick[1,2] ma si rifiuta anche di copiare i dati della cellatick[1,1] (tick[1,2]=tick[1,1];).

E infine, perché, quando si crea un ordine, se invece del valore del prezzo cito una cella dell'array dove questo prezzo è memorizzatotick[1,2], considera questa variabile come 2 valori in una volta. (c'è un valore di slittamento che salta nei suggerimenti)

Perché nei parametri della funzione OrderSend, come in tutte le altre funzioni, la virgola gioca un ruolo. Non appena una virgola appare nel testo, viene trattata come un separatore per i valori in arrivo. Fare tick[1][2]

 
Alexey Viktorov:

Perché nei parametri della funzione OrderSend, come in tutte le altre funzioni, la virgola gioca un ruolo. Non appena una virgola appare nel testo, viene trattata come un separatore per i valori in arrivo. Fare tick[1][2]

Grazie. Forse puoi rispondere anche alle altre domande? :)
 
Gilmor:
Grazie. Forse puoi rispondere anche ad altre domande? :)

Potete rispondere alla domanda meat(2.55=367.12)

 
Alexey Viktorov:

Potete rispondere alla domanda meat(2.55=367.12)

Capito.

double tick[2,2];

void OnTick()
  {
  tick[1,1] = Ask;
  tick[1,2] = NormalizeDouble(tick[1,1]*100*_Point,_Digits);
  }
double tick[2,2];

Creato un array di 2 celle nella fila superiore, 2 celle nella fila inferiore.

void OnTick()
  {
  tick[1,1] = Ask;
 Comment (tick[1,1])

Risultato. Il prezzo sul grafico è 0,84478, ma il commento in alto mostra 0,8448 ???? Perché ha arrotondato a 4 cifre decimali?

double tick[2,2];

void OnTick()
  {
  tick[1,1] = Ask;
  tick[1,2] = tick[1,1];
  }

Seguendo la logica della scrittura in una cella, copio i dati della cella 1 dell'array, nella cella 2 dello stesso array. Il risultato è un errore critico.

Perché?

double tick[2,2];

void OnTick()
  {
  tick[1,1] = Ask;
  tick[1,2] = NormalizeDouble(tick[1,1]*100*_Point,_Digits);
  }

Vogliamo aggiungere alla cella 2 dell'array il valore del prezzo futuro per l'ordine pendente. In altre parole, vogliamo aggiungere 100 punti al prezzo di Ask e poi specificare questa cella dell'array nel parametro del prezzo quando piazziamo l'ordine. Ma quando si esegue questo comando, si ottiene di nuovo lo stesso errore.


Perché?

 
Gilmor:

Seguendo la logica della scrittura in una cella, copio i dati dalla cella 1 dell'array, alla cella 2 dello stesso array. Il risultato è un errore critico.

Perché?

perché non capite cosa sono gli array, se avete letto l'aiuto, e non ha funzionato, "sulle dita"

è una dichiarazione di array

double tick[2,2];

che dice al compilatore di riservare "4 celle di memoria" --> 2x2

e l'accesso all'elemento più basso ha indice 0, cioè nel vostro caso, l'arraytick[2,2], avrà solo questi elementi dell'array

tick[0,0]tick[0,1]

tick[1,0]tick[1,1]

ci sono 4 elementi nell'array, giusto? .... ma l'indice più giovane dell'array ha il numero 0, e non come vorresti (o come ti sei abituato durante il calcolo verbale) dal numero 1


e, di conseguenza, l'elemento più alto dell'array avrà il numero: dimensione dell'array meno 1

se avete superato le dimensioni dell'array, otterrete un errore critico di esecuzione - il vostro screenshot, cioè per l'arraytick[2,2] non esiste un tale elemento di array con numerotick[2,2]

 

Beh, almeno ammetto di essere un principiante :)

Grazie.

Beh, la cosa del "sulle dita" è un'abitudine. "Sulle dita", è più facile da capire. E se lo spiegassi a qualcuno che è un totale zero in questa lingua, dovrei usare le dita dei piedi per chiarirlo =))

 
Gilmor:

Beh, almeno ammetto di essere un principiante :)

Grazie.

Beh, la cosa del "sulle dita" è un'abitudine. "Sulle dita", è più facile da capire. E se lo spiegassi a qualcuno che è uno zero in questa lingua, dovrei usare le dita dei piedi per chiarirlo =))

Un principiante non è un peccato, più il ramo è tematico - per i principianti, e questo è uno dei pochi forum dove è possibile ottenere una risposta rapida alla tua domanda ;)

Bene, inoltre, leggete l'inizio dell'aiutohttps://docs.mql4.com/ru/basis/variables

 
Igor Makanu:

non è una vergogna per un principiante, soprattutto perché questo è uno dei pochi forum dove puoi ottenere una risposta rapida alla tua domanda ;)

e oltre a questo, leggete l'inizio dell'aiutohttps://docs.mql4.com/ru/basis/variables

Grazie.