Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 132

 
uncleVic:

11110000000000000111111b=> 31457535 (decimale)

divieto di commercio dalle 00 alle 07 ore

orario di apertura tra le 08:00 e le 20:00

divieto dalle 21.00 alle 23.00.

Grazie
 

Probabilmente, è una domanda stupida, non ho ancora molta familiarità con la sintassi di mql5 (così come tutto il resto). Una funzione può restituire più di un valore, o un array o qualche altra struttura?

Qualcosa come:

int testfunc(int x, int Y)

{

  z = x + y;

  n =  x * y;

  return(z, n);

}

test = testfunc(5,10);

Print(test.x,test.y);

 
Lone_Irbis:

Probabilmente, è una domanda stupida, non ho ancora molta familiarità con la sintassi di mql5 (così come tutto il resto). Una funzione può restituire più di un valore, o un array o qualche altra struttura?

No, si può descrivere un array globalmente e cambiare i suoi valori in una funzione.
 
zfs:
No, l'array può essere descritto globalmente e i suoi valori possono essere cambiati in una funzione.
Grazie, farò una prova)
 

Vi prego di consigliarmi come disiscrivermi dal segnale e mi sono iscritto al segnale un giorno dopo, il segnale è attivo nelle sottoscrizioni, ho messo una spunta per abilitare la sottoscrizione nelle impostazioni, quindi OK, ma di nuovo apro le impostazioni e nessuna spunta.

 
Lone_Irbis:

Probabilmente, è una domanda stupida, non ho ancora molta familiarità con la sintassi di mql5 (così come tutto il resto). Una funzione può restituire più di un valore, o un array o qualche altra struttura?

Qualcosa come:

Strutturesemplici (non contenenti oggetti di classe, stringhe e array dinamici) possono essere restituite dalle funzioni.

 

Grazie, sono riuscito a risolvere il problema senza array - semplicemente usando variabili globali senza alcun valore predefinito (è sempre facile aprire una porta, come sempre).

Tuttavia, ho una nuova domanda, forse meno tipica: so che mql5 ha ogni sorta di funzioni integrate per il controllo dei tester di strategia. Ma non riesco a trovarne nessuno che permetta di gestire i risultati dell'ottimizzazione in modo preliminare. Supponiamo che io voglia trovare un valore medio di profitto tra tutti i risultati che hanno tutti i valori dei parametri tranne Х che è in qualche intervallo?

O è possibile farlo solo a mano in Excel? So come farlo in Excel, semmai. C'è solo un'idea di una piccola ricerca (puramente per me stesso, per interesse), per la quale dovrei scavare in un'intera montagna di tabelle in modo molto routinario e identico, e voglio automatizzarla in qualche modo...

 
Lone_Irbis:

Grazie, sono riuscito a risolvere il problema senza array - semplicemente usando variabili globali senza alcun valore predefinito (è sempre facile aprire una porta, come sempre).

Tuttavia, ho una nuova domanda, forse meno tipica: so che mql5 ha ogni sorta di funzioni integrate per il controllo dei tester di strategia. Ma non riesco a trovarne nessuno che permetta di gestire i risultati dell'ottimizzazione in modo preliminare. Supponiamo che io voglia trovare un valore medio di profitto tra tutti i risultati che hanno tutti i valori dei parametri tranne Х che è in qualche intervallo?

O è possibile farlo solo a mano in Excel? So come farlo in Excel, semmai. C'è solo un'idea di piccola ricerca (puramente per me stesso, per interesse), per la quale dovrei scavare in un'intera montagna di tabelle in modo molto routinario e identico, e voglio automatizzarla in qualche modo...

Leggi qui: https://www.mql5.com/ru/docs/optimization_frames


E poi cercate nel forum degli esempi di utilizzo.

Документация по MQL5: Работа с результатами оптимизации
Документация по MQL5: Работа с результатами оптимизации
  • www.mql5.com
Работа с результатами оптимизации - Документация по MQL5
 
MetaDriver:

Leggilo qui: https://www.mql5.com/ru/docs/optimization_frames


E poi cercate nel forum degli esempi di utilizzo.

Sì, l'ho già incontrato alcune volte, ed esempi come questo. Ma per qualche ragione, non sembrava essere esattamente quello che stavo cercando. Ma forse è solo che non so ancora come farli :)

Comunque, non è ancora rilevante finché non si riesce a far funzionare bene lo sfortunato gufo...

Quindi l'ultima (spero, almeno) domanda per il prossimo futuro è: come ottenere il prezzo di apertura dell'ultimo ordine di una posizione giusto?

I miei gufi di prova non erano veramente miei, ma uno trovato recentemente da un autore sconosciuto. Questo gufo ha inizialmente un bug strano: funziona correttamente nel tester ma non ottiene il valore dell'ultimo prezzo dell'ordine nella demo.

double FindLastPrice(long PositionID, bool IsSell) {

   int  i = 0, Total;
   long Ticket, OldTicket = 0, PosID, Magic, Type;
   double OrderPrice = 0;

   HistorySelect(0, TimeCurrent());
   Total = HistoryOrdersTotal();  

   for (i = 0; i < Total; i++) {
      Ticket = (int)HistoryOrderGetTicket(i);
      PosID  = HistoryOrderGetInteger(Ticket, ORDER_POSITION_ID);
      Magic  = HistoryOrderGetInteger(Ticket, ORDER_MAGIC);
      Type   = HistoryOrderGetInteger(Ticket, ORDER_TYPE);
      

      if (IsSell) {
         if ((PosID == PositionID) && (Magic == MagicNumber) && (Type == ORDER_TYPE_SELL)) {
            if (Ticket > OldTicket) {
                OrderPrice = HistoryOrderGetDouble(Ticket, ORDER_PRICE_OPEN);
                OldTicket = Ticket;
            }
         }
      }

      else {
         if ((PosID == PositionID) && (Magic == MagicNumber) && (Type == ORDER_TYPE_BUY)) {
            if (Ticket > OldTicket) {
                OrderPrice = HistoryOrderGetDouble(Ticket, ORDER_PRICE_OPEN);
                OldTicket = Ticket;
            }
         }
      }
   }

   if(!OrderPrice) {
         Print("Ошибка ",GetLastError());
         Sleep(5000);
   }
   return(OrderPrice);
}

Genera l'errore 4753 (ordine non trovato) e restituisce zero nella demo (restituisce tutto come previsto nel tester). E questo nonostante il fatto che il test Print suggerisca che sembra raggiungere l'elaborazione diHistoryOrderGetDouble e abbia anche un Ticket che non è vuoto...

 

Ditemi, 50 di valutazione $1 ogni settimana? Chi ha 5000 che prende $100 a settimana?