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

 
Vladimir Tkach:

Per due giorni ho fatto un bel pannello. Ma si è scoperto che non potevo cambiare i parametri di Expert Advisor impostati come input attraverso di esso.

Cosa faccio adesso?

nessuna immaginazione?

input double _PARAM=1.0; // да, input менять в коде нельзя, они типа const

double PARAM=0;         // но никто не заставляет использовать только и исключительно их

int OnInit()

{

   if (MoonPhaze()==0 && _PARAM>0.1) {

       PARAM=_PARAM;       // всё что задаёт пользователь через input должно проверяться и использоваться только внутри OnInit - это просто хороший тон

   }

}
 

Sembra che io sia stato frainteso.

Cambio i parametri sul pannello (che è sul grafico), ma non cambiano negli input dell'Expert Advisor. Tristezza, tristezza.


 
Anche se i loro valori cambiano nel corso del programma. Ok, va bene.
 
missha32:

Per favore aiutatemi, sono completamente confuso nello scrivere questa funzione

Ho bisogno che la funzione restituisca il numero di ordini chiusi in un giorno


Io lo scriverei così:

int CountInHistoryCloseOrder() 
{
int kp=0;
for(int i=OrdersHistoryTotal(); i>=0; i--) 
 {
  if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) 
   {
    if(OrderSymbol()==Symbol() && OrderMagicNumber()==mn) 
     {//mn - должна быть глобальной
      if(TimeToString(OrderCloseTime(),TIME_DATE)==TimeToString(TimeCurrent(),TIME_DATE))
       {
        kp++;
       }
     }
   }
 }
return(kp);
 
missha32:

Per favore aiutatemi, sono completamente confuso nello scrivere questa funzione

Ho bisogno che la funzione restituisca il numero di ordini chiusi in un giorno

int OrdersClosedInDay(datetime time) {

datetime from=time-TimeHour(time)*60*60-TimeMinutes(time)*60-TimeSeconds(time);

datetime to=from+24*60*60;

int count=0;

for(int pos=OrdersHistoryTotal()-1;pos>=0;pos--) {

   if (!OrderSelect(pos,SELECT_BY_POS,MODE_HISTORY)) continue;

   if (OrderCloseTime()>=from && OrderCloseTime()<to)   count++;

}

return count;

}

 
Valerius:


Io lo scriverei così:

Grazie per l'aiuto, comincia ad avere senso, ma solo all'inizio di un nuovo giorno i valori vengono resettati, e abbiamo bisogno che rimanga fino alla prossima serie di ordini da chiudere in un giorno

L'ho capito e ho aggiunto un'altra funzione

 
Artyom Trishkin:
Non si possono disegnare oggetti. Ma si può disegnare usando la classe CCanvas - si può lì
Grazie!
 
Vladimir Tkach:

Sembra che io sia stato frainteso.

Cambio i parametri sul pannello (che è sul grafico), ma non cambiano nell'Expert Advisor. Tristezza.


Se non volete creare istanze duplicate e utilizzarle ulteriormente nel programma, potete sempre impostare i parametri utente come "extern" - i loro valori possono essere cambiati programmaticamente nel processo di lavoro.
 
Si prega di avvisare. Come posso impostare il mio EA per chiudere sulla prossima candela?
 
AlGuru:
Si prega di avvisare. Come faccio a specificare nell'EA di chiudere sulla prossima candela?
Se la barra su cui la posizione è stata aperta è 1, allora chiudete quella posizione.