Domande dai principianti MQL4 MT4 MetaTrader 4 - pagina 261

 
Alberto Lili #:
Salve, per copiare un trader nella sezione 'Segnali' il broker deve essere sempre aperto su un vps?
Si devi avere sempre aperto il terminale mt4 o 5...
O sul tuo PC o su Vps...
 
Crea oggetti label <Controls\Label.mqh> utilizzando un ciclo for!
Buongiorno . 

è possibile sostituire cio con un ciclo for?
#include <Controls\Label.mqh>
CLabel Testo1
CLabel Testo2
CLabel Testo3

mi spiego meglio, io non so quante siano le label da creare quindi dovrei sostituire Testo1 Testo2 e Testo3 con :
for(int i=0;i<3;i++)
  {
   string Testo = "Testo_" + IntegerToString(i);
   CLabel Testo;
   m_pannello.add(Testo);
  }

naturalmente cosi come descritto ottengo errore "la variabile Testo esiste gia", e non peso si possa assegnare a CLabel una stringa.

Quello che voglio fare e creare un elenco di label che elenchi gli ordini a mercato ed aggiungerli al pannello gia esistente.


Ho gia creato un pannello con queste caratteristiche utilizzando:

ObjectCreate(chart_ID,name,OBJ_LABEL,sub_window,0,0);
ma volevo riprodurre la stessa cosa utilizzando le librerie .
Grazie in anticipo a chiunque voglia come fare.


Se legge qualche moderatore ho creato un nuovo argomento in "Articoli,Commenti della libreria(628)" con titolo "Crea oggetti label <Controls\Label.mqh> utilizzando un ciclo for",  sicuramente sbagliando ma non sono riuscito ad eliminarlo. Grazie
forum di MQL5
forum di MQL5
  • www.mql5.com
MQL5: Forum sui sistemi di trading automatico e sui test di strategia
 
Luciano Caligiuri #:
Crea oggetti label <Controls\Label.mqh> utilizzando un ciclo for!
Buongiorno . 

è possibile sostituire cio con un ciclo for?
mi spiego meglio, io non so quante siano le label da creare quindi dovrei sostituire Testo1 Testo2 e Testo3 con :

naturalmente cosi come descritto ottengo errore "la variabile Testo esiste gia", e non peso si possa assegnare a CLabel una stringa.

Quello che voglio fare e creare un elenco di label che elenchi gli ordini a mercato ed aggiungerli al pannello gia esistente.


Ho gia creato un pannello con queste caratteristiche utilizzando:

ma volevo riprodurre la stessa cosa utilizzando le librerie .
Grazie in anticipo a chiunque voglia come fare.


Se legge qualche moderatore ho creato un nuovo argomento in "Articoli,Commenti della libreria(628)" con titolo "Crea oggetti label <Controls\Label.mqh> utilizzando un ciclo for",  sicuramente sbagliando ma non sono riuscito ad eliminarlo. Grazie
Penso che la soluzione sia questa:
//+------------------------------------------------------------------+
//|                                                     esercizi.mq4 |
//|                                  Copyright 2023, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2023, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict

#include <Controls\Dialog.mqh>;
CAppDialog        m_Pannello;

#include <Controls\Label.mqh>
int OrdiniTotali = OrdersTotal();
CLabel *Testo_oggetti[];

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- create timer
   EventSetTimer(60);
   Pannello();
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- destroy timer
   EventKillTimer();
   m_Pannello.Destroy(reason);
   int size=ArraySize(Testo_oggetti);
   for(int i=0; i<size; i++)
      delete(Testo_oggetti[i]);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---

  }
//+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
void OnTimer()
  {
//---

  }
//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {
//---
   m_Pannello.OnEvent(id, lparam, dparam, sparam);

  }
//+------------------------------------------------------------------+


//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool Pannello()
  {
   int x1, y1, x2, y2, Errore;

//-- Crea Pannello
   x1 = 0;
   y1 = 0;
   x2 = 1000;
   y2 = 500;
   string txt = IntegerToString(AccountNumber()) + " - " + AccountName();
   if(!m_Pannello.Create(0, "Pannello Controllo - Conto " + txt, 0, x1, y1, x2, y2))
     {
      Errore = GetLastError();
      Print("Errore Creazione Pannello ", Errore);
      return(false);
     }
   m_Pannello.Run();


   x1 = 0;
   y1 = 25;
   x2 = 220;
   y2 = 235;


   if(OrdiniTotali > 0)
     {

      for(int i = OrdiniTotali -1; i >= 0 ; i--)
        {
         if(OrderSelect(i, SELECT_BY_POS,MODE_TRADES))
           {
            Testo_oggetti[i] = new CLabel();
            Testo_oggetti[i].Create(0,"Testo_" + IntegerToString(i), 0, x1, y1, x2, y2);
            m_Pannello.Add(Testo_oggetti[i]);
            x1 = 0;
            y1 = y1 + 50;
            x2 = 220;
            y2 = y2 + 50 ;
           }
        }
     }


   return true;

  }




//+------------------------------------------------------------------+
Ma ottengo errore: "array out of range in 'esercizi.mq4' (107,26)"
Non trovo l'errore, non capisco perchè vada in  out of range.
 
Luciano Caligiuri #:
Penso che la soluzione sia questa:
Ma ottengo errore: "array out of range in 'esercizi.mq4' (107,26)"
Non trovo l'errore, non capisco perchè vada in  out of range.
Ad occhio direi che non avendo inizializzato l'array Testo_oggetti il ciclo for dovrebbe partire con i=0.
 
Gradirei un vostro prezioso aiuto su una questione relativa ai risultati di un backtest. Ho provato un Expert con MT5 impostando il timeframes a M5, la prima volta poi a M15 e poi alla fine ad H1. Secondo voi è normale ottenere gli stessi identici risultati nel report finale ??? Gli unici due valori che cambiano nei tre report ottenuti sono: il numero di barre del grafico (e mi pare ovvio) e l'indice di Sharp. Faccio presente che utilizzo i dati relativi al simbolo EURUSD scaricati tramite tickstory con timeframes M1 ed utilizzo "ogni tick" per l'esecuzione dei backtest. Grazie a chiunque vorrà dedicarmi il proprio tempo.
Motivazione: