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

 
Leo59:
Il mio Expert Advisor, in deinit() scrive 98496 linee nel file di log in *.csv
Perché si scarica in modo diverso quando l'esperto finisce nel tester:
- in caso di scarico alla fine della data di prova tutto è normale (98496 linee)
- in caso di scarico con il pulsante "Stop", solo circa il 10% dei dati.
Chi sa quale potrebbe essere il problema?


Chiusura forzata di Expert Advisor quando l'utente stesso scarica Expert Advisor.

è meglio registrare i dati direttamente all'inizio.

 
Roman.:

Ragazzi, come interpretate questo avvertimento?

Grazie.


deve essere impostato su una variabile

per esempio bool closee=OrderClose...........

  • ilvalore di ritorno di 'OrderSelect' dovrebbe essere controllato
  • ilvalore di ritorno di 'OrderDelete' dovrebbe essere controllato
  • ilvalore di ritorno di 'OrderSend' dovrebbe essere controllato
  • ilvalore di ritorno di 'OrderClose' dovrebbe essere controllato
  • ilvalore di ritorno di 'OrderModify' dovrebbe essere controllato


per evitare tali avvertimenti, il ritorno alla variabile deve essere specificato esplicitamente
per esempio in questo modo:
  • bool select1=OrderSelect..........
  • bool delete1=OrderDelete..........
  • bool close1=OrderClose..........
  • bool modify1=OrderModify..........
  • int send1=OrderSend..........
 
Buon pomeriggio. Potete dirmi se è possibile definire o calcolare la larghezza/altezza su un grafico di un oggetto OBJ_TEXT?
 
alxm:
Buon pomeriggio. Potete dirmi se è possibile definire o calcolare la larghezza/altezza su un grafico di un oggetto OBJ_TEXT?

Come calcolare il numero di caratteri, + la dimensione del carattere o qualcosa del genere?
 
cipsi:

Come trovare l'OrderOpenPrice del primo ordine aperto, se conosciuto:

1.Simbolo

2.BUY gli ordini possono essere aperti da uno a molti

3.Magic

4.Differenze tra gli ordini, probabilmente per biglietto - trova il biglietto più piccolo.


double PriceOpenFirstPos(string sy="", int op=-1, int mn=-1) {
  datetime t==0;
  double   r=0;
  int      i, k=OrdersTotal();

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==sy || sy=="") {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) {
              if (t>OrderOpenTime() || t==0) {
                t=OrderOpenTime();
                r=OrderOpenPrice();
              }
            }
          }
        }
      }
    }
  }
  return(r);
}
 
psdmaster:
Leggi l'articolo sulla creazione di un Expert Advisor: https://book.mql4.com/ru/samples/expert

Potete dirmi come aprire un accordo su una barra e chiuderlo quando appare la barra successiva?


1. Quando si apre un affare, ricordate l'ora del bar

come questo:

fuori dalla partenza:

 int timeopen;

all'inizio dove hai un trade aperto:

 timeopen=Time[0];

Chiudere così:

if(timeopen!= Time[0]) OrderClose............
 
Zolotai:
Per favore, ditemi. Come posso trovare il numero di ordini aperti per un dato simbolo, senza loop...


Non c'è modo di farlo senza un ciclo.

 

Caro, ho bisogno del tuo aiuto.

Sto ottimizzando il mio Expert Advisor tramite l'indicatore, il codice dell'indicatore è qui sotto.

L'ottimizzazione è lenta, ho fatto un codice nell'EA per ricalcolare l'indicatore su una nuova barra, che non è proprio adatto.

Si prega di vedere il codice dell'indicatore, cosa si può fare in esso per rendere il ricalcolo più veloce.

#property indicator_separate_window
#property indicator_buffers 4
#property  indicator_color1 Lime
#property  indicator_color2 Yellow
#property  indicator_color3 Red
#property  indicator_color4 Aqua

//--- input parameters
extern int       Period_MA_1=14;
extern int       p2          =7;
extern int       p3          =5;
extern int       p4          =3;
extern int Limit=70;
//--- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
double ExtMapBuffer3[];
double ExtMapBuffer4[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_NONE);
   SetIndexBuffer(0,ExtMapBuffer1);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1,ExtMapBuffer2);
   SetIndexStyle(2,DRAW_LINE);
   SetIndexBuffer(2,ExtMapBuffer3);
   SetIndexStyle(3,DRAW_LINE);
   SetIndexBuffer(3,ExtMapBuffer4);
   IndicatorDigits(Digits+1);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int counted_bars=IndicatorCounted(),
   i,limit1,limit2,limit3,limit4;
   double impuls;
   if(counted_bars<0) return(-1);
   if(counted_bars>0) counted_bars--;
 
   limit1=Bars-counted_bars-1;
   if (limit1>Limit && Limit>0) limit1=Limit;
   limit2=limit1;
   limit3=limit2;
   limit4=limit3;
   if(limit1>0) 
     {
      limit1=500-Period_MA_1-1;
      limit2=limit1-p2;
      limit3=limit2-p3;
      limit4=limit3-p4;
     }
   for(i=limit1;i>=0;i--) {ExtMapBuffer1[i]=Close[i]-Close[i+Period_MA_1];}
   for(i=limit2;i>=0;i--) {ExtMapBuffer2[i]=iMAOnArray(ExtMapBuffer1, 0, p2, 0, MODE_EMA,i);}
   for(i=limit3;i>=0;i--) {ExtMapBuffer3[i]=iMAOnArray(ExtMapBuffer2, 0, p3, 0, MODE_EMA,i);}
   for(i=limit4;i>=0;i--) {ExtMapBuffer4[i]=iMAOnArray(ExtMapBuffer3, 0, p4, 0, MODE_EMA,i);}

   return(0);
  }
 

dove posso leggere sulle classi in mt4?

Ho letto l'aiuto, ma non spiega cosa significano le seguenti linee

CArray::CArray(void) : m_step_resize(16),
                       m_data_total(0),
                       m_data_max(0),
                       m_sort_mode(-1)
  {
  }

dove leggere sull'inizializzazione delle variabili...

 
Vladon:


deve essere impostato variabile

es. bool closee=OrderClose...........

  • ilvalore di ritorno di 'OrderSelect' dovrebbe essere controllato
  • ilvalore di ritorno di 'OrderDelete' dovrebbe essere controllato
  • ilvalore di ritorno di 'OrderSend' dovrebbe essere controllato
  • ilvalore di ritorno di 'OrderClose' dovrebbe essere controllato
  • ilvalore di ritorno di 'OrderModify' dovrebbe essere controllato


per evitare tali avvertimenti, il ritorno alla variabile deve essere specificato esplicitamente
come questo:
  • bool select1=OrderSelect..........
  • bool delete1=OrderDelete..........
  • bool close1=OrderClose..........
  • bool modify1=OrderModify..........
  • int send1=OrderSend..........


Grazie. Ha funzionato senza alcun avvertimento:


Guidati da un esempio del manuale :-)


OrderDelete

Cancella un ordine pendente precedentemente inserito.

bool OrderDelete(
int biglietto, //numero d'ordine
colore arrow_color // colore
);

Parametri

biglietto

[Numero di serie unico dell'ordine.

colore_freccia

[Colore della freccia sul grafico. Se questo parametro manca o il suo valore è CLR_NONE, la freccia non viene mostrata nel grafico.

Valore restituito

Restituisce true se la funzione è stata completata con successo o false se c'è stato un errore. Per ottenere le informazioni sull'errore, chiamare GetLastError().

Esempio:

se(Ask>var1)
{
OrderDelete(order_ticket);
ritorno(0);
}