[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate. Non posso andare da nessuna parte senza di te. - pagina 715

 
dimon74:
Ecco come funziona per me. Una posizione viene chiusa dal TP, mentre per impostare un nuovo ordine pendente abbiamo bisogno del valore TP+n*Point. E qui abbiamo una discrepanza: OrderTakeProfit () mi dà quattro cifre (lo vedo in Alert) e la mia società di brokeraggio ne vuole cinque. Ho provato molte cose, ma sembra che ce ne siano altre da fare. Se hai qualche idea, per favore dammi qualche idea. Grazie in anticipo!
Alert() e Print() producono 4 cifre decimali per impostazione predefinita, mentre in realtà ne vengono usate 8. Per un output corretto alla "console", usate DoubleToStr().
 
dimon74:
Ecco come funziona per me. La posizione è chiusa da TP, mentre un nuovo ordine pendente ha bisogno del valore di TP+n*Point per essere impostato. Qui abbiamo una discrepanza: OrderTakeProfit () mi dà quattro cifre (lo vedo in Alert) e la mia società di brokeraggio ne vuole cinque. Ho provato molte cose, ma sembra che ce ne siano altre da fare. Se hai qualche idea, per favore dammi qualche idea. Grazie in anticipo!

stringa DoubleToStr( valore doppio, int cifre)

Converte un valore numerico in una stringa di testo contenente la rappresentazione in caratteri del numero nel formato di precisione specificato.

Questo per il preverting dovrebbe aiutare.

È solo che sia Alert() che Print() emettono valori a 4 cifre. Quindi il tuo problema è diverso.

 

Non riesco a capire perché in questa forma

for(int a=0;a<8;a++)
// тут что нить делаем
for(int a=0;a<8;a++)
// еще чо нить делаем

Dice che la variabile è già stata definita. Penso che ottenga di nuovo 0 nella ripetizione? E sono in diversi pezzi di codice, il primo in if, il secondo in else...

 
Abzasc:

Non riesco a capire perché in questa forma

Dice che la variabile è già stata definita. Penso che ottenga di nuovo 0 nella ripetizione? E sono in diversi pezzi di codice, il primo in if, il secondo in else...


int a;
for(a=0;a<8;a++)
// тут что нить делаем
for(a=0;a<8;a++)
// еще чо нить делаем
Quindi perché definire la stessa variabile due volte
 
Vinin:

Perché definire la stessa variabile due volte

Rileggere

 for(int a=0;a<8;a++)
 aJPY[a]=iCustom(NULL,PERIOD_M15,"Indexes",a,0);

Cioè, se la condizione è una, leggi, se un'altra... Merda. Capito. Ma è un caso specifico, non ho bisogno di questo frammento in altro.

Non so come annullare una variabile in modo che possa essere usata in un altro frammento di codice. Se la condizione è una, chiamiamo un indicatore e se un'altra - un altro... ...perché non ci sono abbastanza variabili...

 
Abzasc:

Rileggere

Cioè, se la condizione è una, leggi, se un'altra... Merda. Capito. Ma è un caso specifico, non ho bisogno di questo frammento in altro.

Non so come annullare una variabile in modo che possa essere usata in un altro frammento di codice. Se la condizione è una, chiamiamo un indicatore e se un'altra - un altro... ...perché non ci sono abbastanza variabili...


No, dobbiamo capirlo in qualche modo. Non sembra esserci abbastanza codice. Parlavo solo di una cosa. Dichiarare una variabile e usarla (con preinizializzazione) sono cose diverse. Una stessa variabile può portare valori funzionali molto diversi, l'importante è non confondere cosa e dove.
 

Lasciatemi cercare di elaborare. C'è un indicatore, senza buffer. Prende i valori di un altro indicatore in 4 array. Sto cercando di allegare

   int    counted_bars=IndicatorCounted();
   // считать только последний вызов
   int limit;
   if(counted_bars>0)
      counted_bars--;
   limit=Bars-counted_bars;
   for(int i=0;i<limit;i++)
Se c'è una nuova barra, tutti gli array sono ricalcolati. Se non c'è una nuova barra, solo la 0-esima. Ma ricalcoliamo tutto lo stesso, cioè chiamiamo sia if che else.
 
Abzasc:

Lasciatemi cercare di elaborare. C'è un indicatore, senza buffer. Prende i valori di un altro indicatore in 4 array. Sto cercando di attaccarlo.

Se c'è una nuova barra, ricalcoliamo tutti gli array. Se non c'è una barra, ricalcoliamo solo la 0-esima. Ma ricalcoliamo tutto lo stesso, cioè chiamiamo sia if che else.


Preferisco un approccio diverso

   int    counted_bars=IndicatorCounted();
   // считать только последний вызов
   int limit=Bars-counted_bars-1;
   if(Bars-counted_bars>2)
      limit = //.......................
   for(int i=limit;i>=0;i--)

Anche se è una questione di gusti. Ma almeno posso spiegare ogni linea

 
Vinin:


Preferisco un approccio diverso

È una questione di gusti, però. Ma almeno posso spiegare ogni riga

Mettiamola così. Poi se limite = 0, se scriviamo array 0, 1, 2, altrimenti - array 0. E un errore variabile.

O dovremmo scrivere un array di 1, 2, altrimenti - array 0?

In ogni caso, - non posso usare la variabile a 2 volte, questo è il problema. Lo uso solo 2 volte, però, in if e else. Non è nemmeno nelle variabili condivise all'inizio del codice.

 
Abzasc:

Che sia così. Poi se limite = 0, se scriviamo array 0, 1, 2, altrimenti - array 0. E un errore variabile.

O se scriviamo array 1, 2, altrimenti - array 0?

In ogni caso, - non posso usare la variabile a 2 volte, questo è il problema. Lo uso solo 2 volte, però, in if e else. Non è nemmeno nelle variabili condivise all'inizio del codice.


Dammi tutto il codice. Puoi mandarmelo di persona. Cercherò di aiutare.
Motivazione: