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

 
Buona sera.
 if(count==0)comment+="No symbols for trading!";
      Comment(comment);
      MqlTick tick;
      tick.ask=SymbolInfoDouble(structPairs.name,SYMBOL_ASK);
      tick.bid=SymbolInfoDouble(structPairs.name,SYMBOL_BID);
      tick.time=TimeCurrent();
      Trade(false,structPairs, tick, Orders, inputs);
Cosa dice questo pezzo di codice? Quando appare? Tutte le coppie nella lista sono lì e tutta la storia è caricata.
 
Darirunu:
Buona sera, cosa dice questo pezzo di codice? Quando appare? Tutte le coppie sono nella lista e tutta la storia è caricata.

Password dell'investitore?

 
Darirunu:
Buonasera, cosa dice questo pezzo di codice? Quando appare? Tutte le coppie nella lista sono lì e tutta la storia è caricata.
Se qualche contatore è 0 (immagino che sia il risultato di un'esecuzione precedente), allora viene aggiunta una linea al commento
No symbols for trading!

il resto sono affari come al solito...

 
Taras Slobodyanik:

Grazie

Controllare che non ci sia un oggetto sulla seconda barra

         for(int jj=i;jj<obj_total;jj++)
           {
            nameARs=ObjectName(jj);
            if(ObjectType(nameARs)!=OBJ_RECTANGLE) continue;
            if(StringFind(nameARs,"QUADRO",0)!=-1)
              {

               time_ars=ObjectGetInteger(0,nameARs,OBJPROP_TIME);//break;

              }
           }
         //===---===
         if(time_ars!=Time[i+2])
           {
           //....
           }
Come faccio a controllare che non ci siano oggetti sulle dieci barre?
 

Indicatore.

Per ogni barra, calcola la somma delle dimensioni delle barre rialziste e la somma delle dimensioni delle barre ribassiste

Nel buffer scrivete la differenza di queste somme.

Cosa c'è di sbagliato qui?

int counted_bars=IndicatorCounted(),
       limit;
 
   if(counted_bars>0)
      counted_bars--;
   
   limit=Bars-counted_bars;
   
   double up_sum=0, down_sum=0;
   for(int i=0;i<limit;i++)
   {
      for(int f = 0; f < Period; f++){
         if(close[f] - open[f] > 0) up_sum += close[f] - open[f];
         if(close[f] - open[f] < 0) down_sum += MathAbs(close[f] - open[f]);
      }
      PVTBuffer[i]=up_sum-down_sum;
   }
 
Roman Sharanov:

Indicatore.

Per ogni barra, calcola la somma delle dimensioni delle barre rialziste e la somma delle dimensioni delle barre ribassiste

Nel buffer scrivete la differenza di queste somme.

Cosa c'è di sbagliato qui?

Trasferimento

double up_sum=0, down_sum=0;

all'interno del primo ciclo - prima di annunciare il secondo ciclo.

 
Roman Sharanov:

Indicatore.

Per ogni barra, calcola la somma delle dimensioni delle barre rialziste e la somma delle dimensioni delle barre ribassiste

Nel buffer scrivete la differenza di queste somme.

Cosa c'è di sbagliato qui?

Provate a resettare le variabiliup_sum=0, down_sum=0;

prima del secondo ciclo interno.

int counted_bars=IndicatorCounted(),
       limit;
 
   if(counted_bars>0)
      counted_bars--;
   
   limit=Bars-counted_bars;
   
   double up_sum, down_sum;
   for(int i=0;i<limit;i++)
   {
    up_sum=0; 
    down_sum=0;
      for(int f = 0; f < Period; f++){
         if(close[f] - open[f] > 0) up_sum += close[f] - open[f];
         if(close[f] - open[f] < 0) down_sum += MathAbs(close[f] - open[f]);
      }
      PVTBuffer[i]=up_sum-down_sum;
   }

Come questo

 
Alekseu Fedotov:

Provate a resettareup_sum=0, down_sum=0;

prima del secondo ciclo interno.

Come questo

ha fatto così, e sì, ha senso, ma ora non viene più visualizzato per niente

 
Ghabo:

Grazie

Controllare che non ci sia un oggetto sulla seconda barra

Come faccio a controllare che non ci siano oggetti sulle dieci barre?

Se sapete come creare il nome esatto di un oggetto, allora non ha senso passare attraverso tutti gli oggetti del grafico.
Basta passare attraverso questi nomi (presunti).

for(int i=0;i<10;i++)
   {
   if (ObjectFind(0,"QUADRO"+Time[i])<0)
      Print("Нет объекта на баре № ",IntegerToString(i));
   else
      Print("Найден oбъект на баре № ",IntegerToString(i));
   }
 
Roman Sharanov:

L'ho fatto, e sì, ha senso, ma ora non viene più visualizzato

Sì, anche come questo, aggiustalo.

Nel ciclo interno

for(int f = 0+i; f < Period+i; f++)