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

 
borilunad:
Ciao Allis! La stampa deve essere prescritta dove non c'è la lettura della spunta! Metto in stampa se c'è un errore, e se si è aperto, e così è prescritto nel registro che si è aperto, e solo una volta!

Sei un mago)) Grazie!
 
Allis:

Sei un mago)) Grazie!
Esattamente, nella programmazione sono lontano dall'essere un "Mago", sto solo imparando, ma in altri rami, forse!)) Grazie!
 

Buona sera a tutti. C'è un indicatore (superiore nella figura) che disegna i suoi valori (+1, 0, -1) sulla barra numero 0, ma il calcolo è condotto dalla barra numero 1. Ho bisogno di scrivere un indicatore che contasse il numero di barre in ogni blocco continuo separato di +1 e -1 indicatore superiore e l'intera storia (la media nella figura, l'altezza del grafico a barre in unità corrispondenti al numero di barre).Ho fatto un indicatore (in basso nella figura), ma inizia a essere disegnato solo al momento dell'installazione nella finestra (linea verticale blu).


Codice

int start()
  {
    
    int i;
      
    for(i=1;i<Bars-34-1;i++)                                               
     {
      double AO_Sig_Sig_1 =iCustom(NULL,0,"AO_His_l-b_Signal-Signal_sploshnoy_PSR",0,i);                           
      double AO_Sig_Sig_2 = iCustom(NULL,0,"AO_His_l-b_Signal-Signal_sploshnoy_PSR",0,i+1);
      
                                  
      if((AO_Sig_Sig_1!=AO_Sig_Sig_2)) break;                                                                
     }
         
    i=i*(AO_Sig_Sig_1);         
               
    if(i>0)            
     {
      UpMapBuffer[0]=i;
     }
    else
     {
      UpMapBuffer[0]=0;
     } 
         
    if(i<0)         
     {
      DnMapBuffer[0]=i;
     }
    else
     {
      DnMapBuffer[0]=0;
     }          
                 
      
  
//----
   return(0);
  }
//+------------------------------------------------------------------+
 
borilunad:

Questo è il resto della divisione! Guarda nei passi dell'aritmetica e nella tua stampante!

Inseritelo e vedrete solo i due risultati alternativamente:

 int x = MathRand() % 2;
  Print("x =",x);


Non capisco la logica. Nel libro che ho letto:

Se volete calcolare il resto della divisione della variabilea per la variabile be scrivere il risultato nella variabile ostatok, l'operatore di assegnazione si presenta così:

ostatok = a % b;

Si scopreche nel nostro caso, quandoMathRand() èdiviso per 2, il valore di x deve essere 0 o 1. Perché dovrebbe essere 0 o 1 tutto d'un tratto? Per esempio apparirà un numero casuale 9. 9 % 2 = 4.5. Il resto di è uguale a 4.
 
hoz:


Qualcosa di cui non capisco la logica. Nel libro che ho letto:

Si scopreche nel nostro caso, quandoMathRand() èdiviso per 2, ci dovrebbe essere un valore di x uguale a 0 o 1. Perché dovrebbe essere 0 o 1 tutto d'un tratto? Per esempio apparirà un numero casuale 9. 9 % 2 = 4.5. Il resto di è uguale a 4.

Quando qualcosa non quadra, bastano un paio di clic per rispondere...

P.S. ostatok = 9 % 2 = 1.

 
TarasBY:

Quando qualcosa non quadra, bastano un paio di clic per rispondere...

P.S. ostatok = 9 % 2 = 1.


Beh, è scritto:

"La divisione con resto(divisione modulo,trovare il resto della divisione,il resto della divisione) è un'operazionearitmetica che produce dueinteri:un quoziente incompleto eil resto della divisione di un numero intero per un altrointero."

9 : 2 = 4,5 Questi sono numeri doppi.

Se si taglia la parte frazionaria, è 4. Dove hai preso 1?

 
hoz:


C'è qualcosa nella logica che non capisco. Nel libro che ho letto:

Si scopreche nel nostro caso, quandoMathRand() èdiviso per 2, il valore di x deve essere 0 o 1. Perché dovrebbe uscire 0 o 1 all'improvviso? Per esempio apparirà un numero casuale 9. 9 % 2 = 4.5. Il resto di è uguale a 4.

Victor, non confondere int con double! Quindiint x = MathRand() % 2; dà 0 o 1! Non può dare 0,1 o 0,9, né 1,1 né 1,9, perché i decimali in int sono arrotondati e meno di 0,5 vengono scartati! E il segno % significa il resto della divisione, non il segno di divisione. Il segno di divisione è /.

Metto il tuo esempio con 9 e ottengo un solo risultato, 1, perché non c'è casualità:

  int x = 9 % 2;//MathRand()
  Print("x =",x);

Tu chiedi:

9 : 2 = 4,5 Questi sono numeri doppi.

Se si scarta la parte frazionaria, si ottiene 4. Dove hai preso 1?

Rispondo: Quindi 0,5 è arrotondato a 1!

La cosa interessante è che quando ho messo un punto e zero (2.0) a 2, il compilatore mi ha dato un errore dicendo che % richiede solo un intero!

Quindi, anche se mettete il doppio x, esce comunque un int intero. Grazie, Victor, per i tuoi dubbi! Grazie a loro e a voi ho fatto una ricerca interessante, che amplierà le mie possibilità di trasformazioni matematiche! Ti devo un bicchiere (virtuale)! :))

 
hoz:


Beh, è quello che c'è scritto:

"La divisione con resto(divisione modulo,trovare il resto della divisione,resto della divisione) è un'operazionearitmetica che dà come risultato duenumeri interi:un quoziente incompleto eil resto della divisione di un numero intero per un altronumero intero."

9 : 2 = 4,5 Questi sono numeri doppi.

Se si taglia la parte frazionaria, è 4. Dove hai preso 1?

Qual è il numero intero più vicino a 9 che è divisibile per 2 senza resto? Poi sottrai quel numero dal divisibile (9). Che cosa hai ottenuto?

P.S. Se avete fallito, potete stampare il risultato: Print ("ostatok = ", 9 % 2);

 

laveosa 07.03.2013 21:15

Ciao, puoi dirmi come sostituire Symbol() con "EURUSD" in Ordersend() o cosa?

 
Mathemat:

laveosa 07.03.2013 21:15

Ciao, puoi dirmi come sostituire Symbol() con "EURUSD" in Ordersend() o cosa?

NULL
Motivazione: