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

 
makssub #:
Salve. Per favore consigliate come trovare il prezzo di apertura dell'ordine più vicino al prezzo corrente. MQL4. Ha qualche esempio?

Passiamo attraverso tutte le posizioni aperte e confrontiamo il numero di pip dal prezzo corrente all'apertura di un accordo.

Potete prendere qualsiasi esempio, appena sopra c'è un codice - ricerca di ordini in un ciclo.

 
MakarFX #:

Cos'è OrdersClose?

Vedere qui.

Capito, grazie.

 
PapaYozh #:


Non c'è bisogno di fantasticare. L'essenza di ciò che accade è che si chiama un metodo, che è un costruttore con un diverso insieme di parametri. Nessun oggetto viene creato in questo caso.

Dovreste capire la differenza tra una chiamata al costruttore e una chiamata a un metodo/funzione.

PapaYozh #:

Una chiamata simile al costruttore che non porterà nemmeno al risultato desiderato:

Per amor di discussione, aggiungete un puntatore alla firma di un metodo (costruttore ? che è chiamato come un metodo ?) passando un puntatore per riferimento

 
Taras Slobodyanik #:

Passiamo attraverso tutte le posizioni aperte e confrontiamo il numero di pip dal prezzo corrente all'apertura di un accordo.

Potete prendere qualsiasi esempio, appena sopra c'è un codice - ricerca di ordini in un ciclo.

Scusate, non sto scrivendo di nuovo correttamente. Proverò di nuovo)

C'è una griglia di ordini aperti. Ho bisogno di trovare il prezzo di apertura (OrderOpenPrice) dell'ordine più vicino al prezzo corrente. Per continuare a costruire la griglia, ma i miei ordini sono costruiti quasi caoticamente.

Capisco come scrivere il superamento, ma non sono in grado di esprimerlo correttamente nella lingua (sono come un cane, capisco tutto)).

Se avete esempi o link ad esempi, postateli, per favore. MQL4

 
Igor Makanu #:

Dovete capire la differenza tra una chiamata al costruttore e una chiamata a metodo/funzione

Nota sull'argomento: nella firma di un metodo (costruttore ? che è chiamato come un metodo ?) aggiungere il passaggio di un puntatore per riferimento.

In Java va bene.

Potete anche chiamare il costruttore padre dal costruttore figlio, l'unico requisito è che il costruttore padre sia chiamato dal primo comando nel costruttore figlio.

In MQL, il problema è che se non c'è un costruttore vuoto per il genitore, il costruttore del genitore viene implicitamente chiamato quando viene creato il figlio.

--

PS.

E se il genitore ha un costruttore senza parametri e un costruttore con parametri, quale viene chiamato implicitamente dal costruttore discendente con parametri?

 
Igor Makanu #:


per il soggetto - nella firma del metodo (costruttore ? che è chiamato come metodo ?) aggiungere il passaggio di un puntatore per riferimento


Questo sembra una stampella.

Non è vero?

 

Ciao a tutti. Potrebbe essere una domanda stupida, ma non ho ancora trovato una soluzione.

Ho creato un indicatore. Ha dei pulsanti sul grafico e quando li premo, la linea viene disegnata e il pulsante diventa attivo.

Come fare in modo che l'attività del pulsante e la posizione rimangano attive quando cambio l'orizzonte temporale?

Quando si cambia il TF, la funzione Deinit funziona, e ha la cancellazione di tutti gli oggetti. È una specie di prerequisito, per cancellare tutto dal grafico.

Ho provato a memorizzare lo stato del pulsante in una variabile, ma come ho notato negli indicatori si azzerano se cambiamo il TF.

Non è così in EA, il valore delle variabili interne non è azzerato lì. Si scopre che se l'indicatore ha calcolato alcuni valori e li ha salvati in variabili interne, questi saranno resettati allo switch TF. Perché e come evitarlo.

 
makssub #:

Scusa, sto scrivendo di nuovo male. Lasciami provare di nuovo)

C'è una griglia di ordini aperti. Ho bisogno di trovare il prezzo di apertura (OrderOpenPrice) dell'ordine più vicino al prezzo corrente. Per continuare a costruire la griglia, ma i miei ordini sono quasi caoticamente costruiti.

Capisco come scrivere il superamento, ma non sono in grado di esprimerlo correttamente nella lingua (sono come un cane, capisco tutto)).

Se avete esempi o link ad esempi, postateli, per favore. MQL4

Prima la differenza è uguale a 1000 prima del ciclo. Nel ciclo, se il prezzo di apertura meno il prezzo corrente è modulo inferiore alla differenza, allora la differenza è uguale al valore ottenuto e il biglietto viene memorizzato in una variabile.
 
Igor Makanu #:

Dovreste conoscere la differenza tra una chiamata al costruttore e una chiamata a metodo/funzione.


Qual è la differenza, a proposito, a parte il fatto che viene chiamato implicitamente quando l'oggetto viene creato?

 
void ClosseAll()
{
  for(int i = OrdersTotal()-1; i>=0; i--)
  {
     if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
     {
       if (OrderType() == OP_BUY)
         { 
         if (!OrderClose(OrderTicket(), OrderLots(), Bid, slip))
             Print("Не удалось закрыть ордера на покупку!");
         }
       if (OrderType() == OP_SELL)
         { 
         if (!OrderClose(OrderTicket(), OrderLots(), Ask, slip))
             Print("Не удалось закрыть ордер на продажу!");
         }
     }
  }
}

Buona giornata!!!

Per favore aiutatemi a scrivere il codice per chiudere gli ordini min e max in un EA a griglia quando viene raggiunto un certo livello di drawdown

Ho scritto due funzioni per calcolare il profitto degli ordini max e min

//+----------------------------------------------------------------------------+
//| Расчет профита максимального ордера в сетке                                |
//+----------------------------------------------------------------------------+
double GetProfitMaxOrder()
{
  int max_ticket = 0;
  double max_ticket_profit = 0 ;
  {
   for (int cnt = OrdersTotal() - 1; cnt >= 0; cnt--) 
    {
    if(OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES)) 
     {
      if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
       {
        if(OrderType() == OP_BUY || OrderType() == OP_SELL)
        {
          if(OrderTicket() > max_ticket) max_ticket = ticket;
          {
           max_ticket_profit =  OrderProfit();
          }
        }
       }
     }
    }
  }
  return( max_ticket_profit);
}
//+----------------------------------------------------------------------------+
//| Расчет профита минимального ордера в сетке                                 |
//+----------------------------------------------------------------------------+
double GetProfitMinOrder()
{
  int min_ticket=INT_MAX;
  double min_ticket_profit = 0;
  {
   for (int cnt = OrdersTotal() - 1; cnt >= 0; cnt--) 
    {
     if(OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES))
     {
       if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) 
        {
          if (OrderType() == OP_BUY || OrderType() == OP_SELL)
           {
            if(OrderTicket() < min_ticket)
              min_ticket = OrderTicket();
              {
               min_ticket_profit = OrderProfit(); 
              }
           }
        }
      }
    }
  }
  return(min_ticket_profit);
}

Ho anche scritto una funzione che calcola l'importo di questi ordini. Sembra che non ci siano problemi qui.

La domanda è come chiudere solo questi due ordini, ho trovato la funzione ClosseAll().

La domanda è come cambiare la funzione OrderTicket() che chiude tutti gli ordini

allegare le variabili max_ticket e min_ticket che determinano i biglietti dei soli ordini min e max nella griglia

O TU hai la TUA soluzione a questa domanda