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

 
makssub #:

Scrivi un esempio, perché sono già un po' confuso. Se non è troppo disturbo. Grazie

Nel ciclo per cercare gli ordini:

if (OrderOpenPrice()<previous_value)
   {
   previous_value=OrderOpenPrice();
   nearest_order=OrderTicket();
   }

Prima del ciclo, inizializzare previous_value=DBL_MAX a nearest_order=0

 
Taras Slobodyanik #:

nel ciclo dell'ordine:

inizializzare previous_value=DBL_MAX a nearest_order=0 prima del ciclo

Esattamente. Grazie. Opere

 
Taras Slobodyanik #:

nel ciclo dell'ordine:

inizializzare previous_value=DBL_MAX a nearest_order=0 prima del ciclo

DBL_MAX è categorico).
 
Valeriy Yastremskiy #:
DBL_MAX è categorico).

La cosa principale funziona)

Come trovare OP_BUY con OrderOpenPrice massimo e determinare il suo OrderProfit.
Non riesco a metterli insieme, tutto funziona a meraviglia... Se puoi darmi un esempio subito) Grazie)

 
makssub #:

La cosa principale funziona)

Come trovare OP_BUY con OrderOpenPrice massimo e determinare il suo OrderProfit.
Non riesco a metterli insieme, tutto funziona a meraviglia... Se puoi darmi un esempio subito) Grazie)

previous_value=0;

if (OrderOpenPrice()>previous_value)
   {
   previous_value=OrderOpenPrice();
   profit_order=OrderProfit();
   }
 
MakarFX #:

Volevo solo dire che ho finito.

Ma voi l'avete reso più compatto. Accetto il tuo suggerimento).

Grazie

 
Come lavorare con un file nel programma mql5 senza scrivere il file sul disco, ma lavorare solo nella RAM, per accelerare. Voglio trasferire dati da un programma mql5 a un programma sul mio computer. È possibile farlo senza funzioni di rete? Non deve essere un file, un array o una variabile, è ancora meglio. Conosco solo due modi, modulo di integrazione python e web socket, c'è qualche altro modo?
 

Cancello tutti gli oggetti in OnDeInit() per ciclo (le frecce indicano le barre di segnalazione e un pulsante):

const int obj_total=ObjectsTotal();

Print("ObjectsTotal ",obj_total);

for(int i=0 ; i < obj_total ; i++){
 Print("ObjectName ",ObjectName(i),", i = ",i);
 ObjectDelete(ObjectName(i));
}

Sono consapevole che c'è ObjectsDeleteAll(), ma ancora se lo faccio attraverso un ciclo, solo metà degli oggetti vengono cancellati in uno. In realtà qui c'è il lavoro del ciclo e non capisco perché succede così:

2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName , i = 20
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName , i = 19
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName , i = 18
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName , i = 17
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName , i = 16
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName , i = 15
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName , i = 14
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName , i = 13
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName , i = 12
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName , i = 11
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName button1, i = 10
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName ArrowUp0008, i = 9
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName ArrowUp0006, i = 8
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName ArrowUp0004, i = 7
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName ArrowUp0002, i = 6
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName ArrowUp0000, i = 5
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName ArrowDown0008, i = 4
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName ArrowDown0006, i = 3
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName ArrowDown0004, i = 2
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName ArrowDown0002, i = 1
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectName ArrowDown0000, i = 0
2021.09.30 04:47:30.462    2021.01.04 03:56:45  test EURUSD,M1: ObjectsTotal 21
 
Nerd Trader #:

Cancello tutti gli oggetti in OnDeInit() per ciclo (le frecce indicano le barre di segnalazione e un pulsante):

Sono consapevole che c'è ObjectsDeleteAll(), ma ancora se lo faccio attraverso un ciclo, solo metà degli oggetti vengono cancellati in uno. In realtà ecco come funziona il ciclo e non capisco perché succede così:

Il ciclo quando si cancella dovrebbe essere invertito:

for(int i=obj_total-1; i>=0; i--)

e questo si applica non solo alla cancellazione di oggetti grafici, ma in generale alla cancellazione di qualsiasi oggetto nelle liste del terminale.

 
Nerd Trader #:

Cancello tutti gli oggetti in OnDeInit() per ciclo (le frecce indicano le barre di segnalazione e un pulsante):

Sono consapevole che c'è ObjectsDeleteAll(), ma ancora se lo faccio attraverso un ciclo, solo metà degli oggetti vengono cancellati in uno. In realtà ecco come funziona il ciclo e non capisco perché succede:

ma se provate in questo modo - solo che dovete mettere tutti i nomi

string   m_name[]= {"button1","ArrowUp0008","ArrowDown0008","ArrowUp0006","ArrowDown0006"};
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   for(int i=0; i<ArraySize(m_name); i++)
     {
      ObjectDelete(0,m_name[i]);
     }
//---
  }
//+------------------------------------------------------------------+
Motivazione: