Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 6. - pagina 133

 
skyjet:


Ma sto confrontando 3,2 e 1 barre, quindi il calcolo è limitato a x >=1?

E significa che le barre con lo stesso prezzo semplicemente non vengono considerate, non gli vengono assegnati numeri?

Impostando i parametri di ottimizzazione: start 1, step 1, end 4; su H1 e H4 la scheda dei risultati è semplicemente vuota, su D1 la stessa redditività a diverso numero di barre analizzate.

Forse quello che ho capito dalla tua domanda è diverso da quello che intendevi. Il mio esempio confronta i prezzi di apertura tra 3 e 2 barre, e 2 e 1. Le barre 3 e 1 non vengono confrontate. Se i valori confrontati sono uguali - non succede niente, passa solo al prossimo confronto.
Perché x>1 (non >=). La prima iterazione confronta Open[3]==Open[3-1], cioè Open[3]==Open[2]. OK. Al secondo (x=2), Open[2]==Open[1]. OK. Non c'è una terza iterazione. A x>=1 ci sarà un confronto Open[1]==Open[0], non va bene, perché ci sarà un confronto con 0 bar.
 
T-G:

I professionisti non possono andare da nessuna parte senza di te.

Aiuto per la funzione. Che conta l'ultimo numero di ordini perdenti nella storia ad un ordine più.

Cioè, la storia mostra 3 ultimi ordini in meno, poi 1 in più e 2 in meno.

Questa funzione dovrebbe contare gli ultimi tre (prima dell'ordine positivo)

int Number=0;
//---
if (OrdersHistoryTotal()>0)
{  for (int i=OrdersHistoryTotal()-1; i>=0; i--)
   {  if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
      {  if (OrderProfit()<0.0)
         Number+=1;
         else break;
}  }  }
Gli ordini chiusi solo in deficit sono contati qui. Se i guadagni = 0 (zero), il conteggio viene interrotto.
 
paladin80:
Gli ordini chiusi solo in deficit sono contati qui. Se i guadagni = 0 (zero), il conteggio viene interrotto.
Può succedere che non vadano necessariamente nell'ordine in cui li avete letti. Per essere esatti e non ambigui, gli ordini dovrebbero essere sommati in un array bidimensionale: nella prima dimensione c'è l'ora di chiusura, e nella seconda il biglietto d'ordine. Poi, ordinate l'array per la prima dimensione, riducetelo a tre e controllateli (gli ultimi tre).
 
chief2000:
Voglio riformulare e aggiungere alla mia domanda precedente.
Di seguito è riportato il codice per un array di 4 elementi. In realtà il numero di elementi nell'array è una variabile.
Come posso cambiare il codice in modo che il numero di cicli 'for' annidati diventi variabile, un 'for' per ogni elemento dell'array?
Grazie!

int start() { 

   int Array[4]                                       = {1, 2, 3, 4};
   int x1, x2, x3, x4;
   int Array_Size                                  = ArrayRange(Array,0);


   for(x1=0; x1<Array_Size; x1++) {
      Print("Combination                       = ", Array[x1]);

      for(x2=x1+1; x2<Array_Size; x2++) {
         Print("Combination                    = ", Array[x1] + "   " + Array[x2]);

         for(x3=x2+1; x3<Array_Size; x3++) {
            Print("Combination                 = ", Array[x1] + "   " + Array[x2] + "   " + Array[x3]);

            for(x4=x3+1; x4<Array_Size; x4++) {
               Print("Combination              = ", Array[x1] + "   " + Array[x2] + "   " + Array[x3] + "   " + Array[x4]);
            }
         }
      }
   }


   return(0);
}


Guardando questa situazione, ho iniziato a chiedermi. Quando un mucchio di loop annidati sono disponibili. Come avvengono i calcoli? Dal più profondo annidato o viceversa?

Cioè il primo ad essere calcolato:

 for(x4=x3+1; x4<Array_Size; x4++) {
               Print("Combination              = ", Array[x1] + "   " + Array[x2] + "   " + Array[x3] + "   " + Array[x4]);

O dall'altro lato? Voglio capire come funziona il tutto.

 
come fare in modo che un EA tenga conto dei livelli degli indicatori tecnici. Per esempio cci. Se la linea è sopra il livello 0, allora esegui delle azioni. Come fare?
 
webip:
Come fare in modo che un EA tenga conto dei livelli degli indicatori tecnici. Per esempio cci. Se la linea è superiore a 0, allora esegui delle azioni. Come fare?

Se cci è maggiore di zero, allora ... Se cci è inferiore a zero. allora ...

Funzione iCCI();

 

Guru, ditemi come risolvere un problema. Abbiamo bisogno di un numero positivo quando calcoliamo la differenza tra apertura e chiusura. Per esempio, se il prezzo sale e si sottrae il prezzo di chiusura dal prezzo di apertura, si ottiene un numero meno.

 
artmedia70:

Se cci è maggiore di zero, allora ... Se cci è inferiore a zero. allora ...

Funzione iCCI();



No. Conosco la funzione, ma non so come rifletterla nel codice. Che ne dite di questo?

 if(iCCI() > 0)
  {
    //остальной код?
  }
 
Forexman77:

Guru, ditemi come risolvere un problema. Abbiamo bisogno di un numero positivo quando calcoliamo la differenza tra apertura e chiusura. Per esempio, se il prezzo sale e sottraggo un numero negativo dal prezzo di apertura, ottengo un numero negativo.


doppio MathAbs( valore doppio)
La funzione restituisce il valore assoluto (valore modulo) del numero passato
 
hoz:

Guardando questa situazione, ho iniziato a chiedermi. Quando un mucchio di loop annidati sono disponibili. Come avvengono i calcoli? Dal più profondo annidato o viceversa?

Cioè il primo ad essere calcolato:

O dall'altro lato? Voglio capire come funziona il tutto...


Potete vedere i risultati che ho dato prima per 4 cicli, lì il ciclo più interno viene attivato una volta per ottenere 1234.