Errori, bug, domande - pagina 3006

 
Aliaksandr Hryshyn:
Lì il puntatore copia
Come si copiano i dati? Beh, a parte elemento per elemento?
 
Vasiliy Pushkaryov:
E come si possono copiare i dati? Beh, a parte elemento per elemento?

Non so se è giusto, ma il costruttore aggiuntivo ha risolto il problema. Può essere utile a qualcuno.

#include <Arrays\ArrayObj.mqh>

CArrayObj ArrCur;       // массив с объектами, каждый объект содержит структуру с полями ордеров и его id
CArrayObj ArrPrev;  // массив с объектами, каждый объект содержит структуру с полями ордеров и его id

class CID : public CObject
{
  public:  int id;
           CID() {}
           CID(CID* pt) {this = pt;}
           
};


void OnStart()
{
  // -----------------------------------------------------------------
    CID* pCur = new CID;          // создаем объект для текущих параметров
    pCur.id = 25;                 // вносим текущие данные
    ArrCur.Add(pCur);             // помещаем в массив объектов
    
    CID* pTemp = ArrCur.At(0);    // вытягиваем объект по указателю
    CID* pPrev = new CID(pTemp);  // в дин.объект копируем в конструкторе данные с предыд.указателя
    ArrPrev.Add(pPrev);           // помещаем в массив объектов
    
    ArrCur.Clear();               // чистим текущий массив
  // -----------------------------------------------------------------
  
   // --- для вывода в журнал
  int sizeCur = ArrCur.Total();       // размер = 0
  int sizePrev = ArrPrev.Total();     // размер = 1
  
  ENUM_POINTER_TYPE pTypeCur = CheckPointer(ArrCur.At(0));    // POINTER_INVALID
  ENUM_POINTER_TYPE pTypePrev = CheckPointer(ArrPrev.At(0));  // POINTER_DINAMYC
  
  Print(__FUNCTION__, " sizeCur=", sizeCur, " pTypeCur=", EnumToString(pTypeCur));
  Print(__FUNCTION__, " sizePrev=", sizePrev, " pTypePrev=", EnumToString(pTypePrev));

  ArrPrev.Clear();             // чистим массив
}
 
fxsaber:

ChartScreenShot non funziona correttamente in modalità tester visivo.

void OnTick()
{
  Print(ChartScreenShot(0, "Test.png", 100, 100)); // true, но файл нулевой длины
  
  ExpertRemove();
}

Salve, cari sviluppatori. Posso chiedere quando ChartScreenShot() funzionerà nel tester?

 

Puoi dirmi come cambiare i parametri di input (F7) o cambiare il valore della variabile globale (F3) in questo tipo di EA?

input int i = 0;

const bool Init = EventSetTimer(1);

void OnTimer()
{
  Alert("");
}

Anche toglierlo dal grafico è problematico.

 
Buona sera ho una domanda del genere? Installato agent manager per la vendita ma la colonna cloud dice disabilitato e tutto il giorno su sei processori non un solo movimento. I processori appaiono nel conto. È normale?
 

In precedenza, Debug non era completamente utilizzabile, ma l'esecuzione di script con F5 è a volte utile (anche se non è chiaro perché viene eseguito su un nuovo grafico e non su quello corrente).

E ho trovato per caso tali registrazioni nel registro:

Allo stesso tempo, lo script stesso è in esecuzione. Ho provato a inserire la seguente linea nel codice:

{ DebugBreak(); Print( "DebugBreak" ); }

La linea "DebugBreak" viene stampata ma non viene fermata.

 
A100:

(anche se non è chiaro perché funziona sul nuovo grafico e non su quello attuale).

Nell'editor Service->Settings->Debugging/Profiling
potete impostare quale simbolo sarà usato per il debug, ma verrà comunque eseguito su un grafico separato.
Se non viene specificato alcun simbolo, verrà eseguito sul primo simbolo (in alto) di Market Watch.

Ho dei punti di rottura in ogni momento. Ho impostato i punti alla build 2875
, clicco per iniziare il debug sui dati reali, e si muove a scatti senza fermarsi, avendo finito il debug.
Riavvio il terminale con l'editor, e poi inizia a vedere i breakpoint, fino a qualche altro start/stop del debug, poi inizia a saltare di nuovo.
Eseguendo il debugging su dati storici, chiama una finestra del tester a tutti, e salta i breakpoint appena finisce il debugging.
Non si è mai fermato a un breakpoint sui dati storici, salta tutto il tempocompletando il debug.
Ma
perché il tester viene chiamato su dati storici e i parametri salvati vengono presi da questi, non so cosa sia, è progettato così o è una stortura.

 
Roman:

Nell'editor Service->Settings->Debugging/Profiling
potete impostare quale simbolo sarà usato per il debug, ma verrà comunque eseguito su un grafico separato.
Se il simbolo non è specificato lì, verrà eseguito sul primo simbolo (in alto) da Market Watch.

Per me questo è estremamente scomodo. Il grafico attuale ha indicatori, oggetti grafici con cui il programma deve interagire, impostazioni, ecc. Viene avviato un nuovo grafico "vuoto". Inoltre, il programma in modalità normale (non debug) viene lanciato dal Navigatore sulla carta corrente, non su quella nuova - questa è un'incongruenza evidente

 
Anche la visualizzazione è un po' confusa
https://www.mql5.com/ru/forum/368597
Ошибка моделирования визуализация\без
Ошибка моделирования визуализация\без
  • 2021.05.04
  • www.mql5.com
Кто нибудь может объяснить как это происходит , или протестировать у себя...
 
Errore di esecuzione (ordine di sostituzione errato)
#define  MACRO( X )
void OnStart()
{
        MACRO( __COUNTER__ )
        MACRO( __COUNTER__ )
        Print( __COUNTER__ );
}

Risultato: 2

Risultato atteso: 0