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

 

Salve, sto confrontando i prezzi di apertura di 3 barre (3,2,1). Come posso non contare le barre in cui i prezzi sono uguali?

for( x=<3;x--)
{
 if( Open[x]==Open[x] )
  {
    x+1;
   }
  if( Open[x]<Open[x] )
   {
   ,,,
   }
 
skyjet:

Salve, sto confrontando i prezzi di apertura di 3 barre (3,2,1). Come posso non contare le barre in cui i prezzi sono uguali?

for (int x=1; x<3; x++)
{
 if(Open[x]==Open[x+1]) continue;
 if(Open[x]<Open[x+1])
   {
   //--- action
   }
}
 
Ciao, aiutami. Sto giocando su H1, ho un indicatore H4. Si mostra correttamente. Ma se lo eseguo nel tester, con la visualizzazione, per esempio all'inizio dell'anno, mostra le informazioni attuali che sono ora sul mercato. In generale, non funziona nello Strategy Tester. Come farlo funzionare. O buttare sull'argomento dove è risolto.
 
artmedia70:
Come è vuoto? Non emette proprio nulla, o ci sono degli zeri nelle celle dell'array?


Niente di niente.

Anche se si va in Oggetti non c'è niente di niente, tranne le frecce e le linee di tendenza...

artmedia70:

Perché stai aumentando i nel corpo del ciclo?

e questo: i<=p, perché "o uguale a"?


Ho fatto un errore per stanchezza. L'ho sistemato in questo modo:

for(i=0; i<p; i++)
      {
          pr("a[i][1] = " + a[i][1]);
      }

Questo pezzo di codice è nella funzione stessa:

//+-------------------------------------------------------------------------------------+
//| Закрытие ордеров, отсортированных по размеру лотов                                  |
//+-------------------------------------------------------------------------------------+
void ClosePosBySortLots()
{
   double a[][2];
   int p = 0;
   
   for (int i=OrdersTotal()-1; i>=0; i--)
   {
      if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue;
      if (OrderMagicNumber() != i_magic) continue;
      if (OrderSymbol() != Symbol()) continue;
      if (OrderType() < 2)
      {
         p++;
         ArrayResize(a, p);
         a[p-1][0] = OrderLots();
         a[p-1][1] = OrderTicket();
      }
   }
//   pr ("ClosePosBySortLots(): " + "p = " + p);
   if (p > 0)
   {
      ArraySort(a, WHOLE_ARRAY, 0, MODE_DESCEND);
      
      for(i=0; i<p; i++)
      {
          pr("a[i][1] = " + a[i][1]);
      }
      
      for(i=0; i<p; i++)
      {
         if (OrderSelect(a[i][1], SELECT_BY_TICKET, MODE_TRADES))
         {
             if (OrderCloseTime() == 0) ClosePosBySelect();
         }
      }
   }
}
 
hoz:


Niente di niente.

Anche se si va in Oggetti non ci sono oggetti, tranne le frecce e le linee di tendenza...


Sono io che ho sbagliato per stanchezza. L'ho sistemato in questo modo:

Questo pezzo di codice è nella funzione stessa:

Prima e dopo

if (p > 0)

unprint p value.

Devo scrivervi la sequenza dei difetti?

 
artmedia70:

Prima e dopo.

Togliere la stampa del valore p.

Devo scrivere la sequenza di errore per voi?



In effetti, sì. Comunque, ecco la situazione:

void ClosePosBySortLots()
{
   double a[][2];
   int p = 0;
   
   for (int i=OrdersTotal()-1; i>=0; i--)
   {
      if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue;
      if (OrderMagicNumber() != i_magic) continue;
      if (OrderSymbol() != Symbol()) continue;
      if (OrderType() < 2)
      {
         p++;
         ArrayResize(a, p);
         a[p-1][0] = OrderLots();
         a[p-1][1] = OrderTicket();
      }
   }
//   pr ("ClosePosBySortLots(): " + "p = " + p);
   pr("___p = " + p);   // Значение кол-ва позиций до if..
   
   if (p > 0)
   {
      pr("p = " + p);   // Значение кол-ва позиций после if..
      
      ArraySort(a, WHOLE_ARRAY, 0, MODE_DESCEND);
      
      for(i=0; i<p; i++)
      {
          pr("a[i][1] = " + a[i][1]);
      }
      
      for(i=0; i<p; i++)
      {
         if (OrderSelect(a[i][1], SELECT_BY_TICKET, MODE_TRADES))
         {
             if (OrderCloseTime() == 0) ClosePosBySelect();
         }
      }
   }
}

L'ho fatto in questo modo, ma non viene fuori niente neanche in questa parte del grafico. Anche se in altri punti stampava 0, quando una posizione era aperta e si chiudeva subito per presa. Cioè, in questo settore la kosakova lavora come se...

Ecco uno screenshot:

Devo stampare tutti questi valori ora?

p++;
ArrayResize(a, p);
a[p-1][0] = OrderLots();
a[p-1][1] = OrderTicket();

Sembra che ci sia ancora molta strada da fare. Dopotutto, tutto è chiaramente e solitamente scritto lì.

 
hoz:


In realtà, lo è. Comunque, ecco la situazione:

L'ho eseguito in questo modo, ma non viene fuori niente neanche in questa parte del grafico. Anche se in altri punti stampava 0, quando una posizione era aperta e si chiudeva subito nella ripresa. Cioè, in questo settore, kosakova lavora come se...

Ecco uno screenshot:

Devo stampare tutti questi valori ora?

Sembra che ci sia ancora molta strada da fare. Dopo tutto, è tutto chiaramente e solitamente scritto lì.

Capite e vedete cosa è contenuto nel vostro array immediatamente dopo che è stato "riempito" con i dati del mandato? No. Non lo sai, lo supponi soltanto. SPRINTATE il contenuto di tutte le celle dell'array, non con la vostra pr(), ma con la standard Print(), e provate a guardare nel log del tester e vedere cosa avete nell'array, in ogni cella, subito dopo che è stato riempito. Quando sapete per certo che il contenuto dell'array corrisponde alle vostre idee sul suo contenuto, allora stampatelo con la vostra pr(). Se non vi dà gli stessi risultati - è il vostro pr(), se i dati corrispondono, allora cercate un errore nel passo successivo.
 
Ci sono errori legati al lotto nel registro(OrderSend error 4051). Risolvere questo problema. Forse vi aiuterà. Poi vedremo cosa succede.
 
hoz:
Ci sono errori legati al lotto nel registro (OrderSend error 4051). Risolvere questo problema. Forse vi aiuterà. E poi vedremo.

Guarda i serbatoi, riavvia, forse ti aiuterà... :-)

P.S. Sono gentile.

 
Questo è un array unidimensionale la cui dimensione può variare.
Come fare un ciclo di tutte le possibili combinazioni di elementi di un array tra loro?
L'ordine degli elementi non ha importanza, cioè 123==213==321...

Ecco un esempio per un array con 4 elementi:
[4] <=> { 1 2 3 4 }

1, 12, 13, 14, 123, 124, 134, 1234, 
2, 23, 24, 234, 
3, 34,
4
Motivazione: