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

 
Tigerfreerun:
Se (OP_BUY==0)

Perché sei fuorviante? O non ti conosci, allora per favore tieni la tua ignoranza fuori da un thread di AIUTO o stai solo scherzando ma hai dimenticato che sei in un thread di aiuto per principianti seri.

SanNneK:
ecco la condizione se tutti gli ordini sono zeroif(OrdersTotal()==0). e quale condizione scrivere se ci sono zero baie?

Dobbiamo fare un ciclo di tutti gli ordini e calcolare il numero di ordini con OrderType()==ORDER_TYPE_BUY

 
Artyom Trishkin:

Perché sei fuorviante? O non lo sai, allora per favore tieni la tua ignoranza fuori da un thread di AIUTO, o stai solo scherzando, ma hai dimenticato che sei in un thread di aiuto per principianti seri.

Ho bisogno di fare un ciclo di tutti gli ordini e calcolare il numero di ordini con OrderType()==ORDER_TYPE_BUY.

Senti, senti. Vi sarei grato se poteste aiutarmi con la funzione che ho menzionato nella pagina precedente. Io stesso uso questa funzione per contare gli ordini:

int Count(int type,string sy)
  {
   int count=0;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {if(sy==OrderSymbol() && OrderMagicNumber()==Magic && (type==-1 || OrderType()==type)) count++;}
     }
   return(count);
  }
 
Tigerfreerun:

Senti, senti. Vi sarei grato se poteste aiutarmi con la funzione di cui ho scritto nell'ultima pagina. Io stesso uso questa funzione per contare gli ordini:

Di che tipo di aiuto ha bisogno? È una funzione piuttosto funzionante nello stile di Kim.
 
Alexey Viktorov:
Di quale aiuto hai bisogno? È una funzione piuttosto funzionante nello stile di Kim.

Nell'ultima pagina ho scritto una funzione con un errore di posizione iniziale errata 0 per lafunzione ArraySort.E una richiesta di spiegazione della funzione. Sto duplicando

void MaxMinProfit()
{
int i, N, MaxTic, MinTic;
double   MinProf=0, MaxProf=0, OP, g, a[][2];
string MinSym, MaxSym;
ArrayResize(a, 0);
 
for (i=OrdersTotal()-1; i>=0; i--) 
  {    
   if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) 
    { 
     if (OrderType()==OP_SELL ||  OrderType()==OP_BUY )
      {
       OP = NormalizeDouble(OrderProfit()+OrderSwap()+OrderCommission(),2);
       
      if (MinProf>OP) 
      {
       
          MinProf=OP;
          MinTic=OrderTicket();
          MinSym=OrderSymbol();
          
         }
         
      if (OP>0) 
      {
       
          N++;
            ArrayResize(a, N);
            a[N-1][0]=OP;
            a[N-1][1]=OrderTicket();
          
         }
         
         }
         }
         
         }
         
      ArraySort(a, WHOLE_ARRAY, 0, MODE_DESCEND);//MODE_ASCEND);
      
      for (i=0; i<Level; i++) 
       {
     
     g+=a[i][0];
     //int ti=a[i-2][1];
     }
         
         
     
     if(MinProf <0 && (g+MinProf)>=ProcMax)
      {
       for (i=0; i<Level; i++) 
       {
       if (OrderSelect(a[i][1], SELECT_BY_TICKET, MODE_TRADES))
        {
        //Alert(a[i][1]);
         if (OrderType()== OP_BUY)
         {
          OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(),MODE_BID), Slip, CLR_NONE);
          }
          if (OrderType()== OP_SELL)
           {
           OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(),MODE_ASK), Slip, CLR_NONE);
           }
          }
         }
          
          
          
          if (OrderSelect(MinTic, SELECT_BY_TICKET, MODE_TRADES))
        {
         if (OrderType()== OP_BUY)
         {
          OrderClose(MinTic, OrderLots(), MarketInfo(OrderSymbol(),MODE_BID), Slip, CLR_NONE);
          }
          if (OrderType()== OP_SELL)
           {
          OrderClose(MinTic, OrderLots(), MarketInfo(OrderSymbol(),MODE_ASK), Slip, CLR_NONE);
           }
          }}       
return;
}
 

Qual è il modo migliore per passare parametri tra elementi di classe, che a loro volta sono anche elementi di classe?

Dato:

class element{
public:
int a;
        void fnc(){
        a++;            
        }
};

class elementBase{
public:
	 int b;
        element one;
        element two;
};

C'è un modo per cambiare il valore di two.a dalla funzione a.fnc()?


Nel mio problema, le variabili della classe due dovrebbero essere ricalcolate quando gli elementi della classe uno vengono cambiati. (Puoi dirmi come farlo gentilmente?)

C'è un modo per ottenere il valore di b dalla classeelementBase?

 
Tigerfreerun:

Nell'ultima pagina ho scritto una funzione con un errore di posizione iniziale errata 0 per lafunzione ArraySort.E una richiesta di spiegazione della funzione. Duplicato

La direzione in cui pensare: se il profitto è inferiore a zero... quale sarà la dimensione dell'array durante l'ordinamento???

Quale sarà la dimensione dell'array se non ci sono ordini?
 
Alexey Viktorov:

Direzione a cui pensare: se il profitto è inferiore a zero... che dimensione avrà l'array durante l'ordinamento???

E quale sarà la dimensione dell'array se non ci sono ordini?
Non capisco bene cosa faccia esattamente questa funzione. Ma, come ha detto l'autore, il mio compito è quello di sovrapporre gli ordini perdenti con quelli redditizi tra i simboli. Sarei felice se poteste aiutarmi a correggere e capire questa funzione.
 
Tigerfreerun:
Non capisco bene cosa faccia esattamente questa funzione. Ma come ha detto l'autore, il suo compito è quello di sovrapporre gli ordini perdenti con quelli redditizi tra i simboli. Sarei felice se poteste aiutarmi a sistemare e capire la funzione

Quali sono i vostri errori di compilazione? Mostra uno screenshot.

Non ci sono errori nel codice, ma ci sono alcuni difetti minori che non influenzano la funzionalità

 
Vitaly Muzichenko:

Quali sono i vostri errori di compilazione? Mostra uno screenshot.

Non ci sono errori nel codice, ma ci sono alcuni bug minori che non influenzano le prestazioni

Quando si esegue il robot "posizione iniziale 0 non corretta per lafunzioneArraySort"... Potresti spiegare questa funzione, forse capirò cosa c'è che non va...
File:
yOXZsAXZ-X4.jpg  479 kb
Pe3JLH8tgCc.jpg  556 kb
 
Tigerfreerun:
Quando il robot si avvia "posizione iniziale 0 non corretta per lafunzioneArraySort", potresti spiegare questa funzione, forse capirò cosa c'è di sbagliato...

Bene, avete mostrato gli errori non critici.

Come funziona la funzione, ti sei risposto da solo:

Forum sul trading, sistemi di trading automatico e test di strategie di trading

Tutte le domande dei neofiti su MQL4, aiuto e discussione su algoritmi e codici

Tigerfreerun, 2018.09.06 21:53

Non capisco bene cosa faccia esattamente questa funzione. Ma come ha detto l'autore - il compito è quello di sovrapporre gli ordini perdenti con quelli redditizi tra i simboli. Sarei felice se poteste aiutarmi a correggere e capire questa funzione