Errori, bug, domande - pagina 1634

 
fxsaber:
LifeHack: ottenere un numero qualsiasi di finestre di visualizzazione.
Fate un debug della cronologia da Metaeditor - CTRL+F5. Non chiudete la finestra di visualizzazione che appare, ma chiudete la finestra del terminale. Dall'inizio. Così, appariranno nuove finestre di visualizzazione, che è utile durante l'analisi dei cambiamenti dei risultati EA a seconda delle modifiche apportate nel codice.

Potrebbe essere più semplice. Per iniziare la visualizzazione con un avanzamento.

La visualizzazione successiva sarà avviata sulla seconda visualizzazione in avanti

 
fxsaber:
Vorrei vedere in Tester->Impostazioni l'opzione "Cancella i log precedenti dopo l'avvio". È faticoso cliccare ogni volta su "Delete logs" in Tester->Journal. Ovviamente, i log dei precedenti backtest possono essere utili in rari casi. Il più delle volte non sono necessari. Pertanto, l'opzione di cancellare automaticamente i vecchi registri sarebbe utile sia per comodità che per risparmiare spazio su HDD/SDD.
Proprio così."Può tornare utile in rari casi"
 
fxsaber:
Come faccio a sapere se la modalità Hedge è on/off sull'account/tester? Non c'è menzione di questo nell'aiuto offline.

Passa il mouse sull'account nel navigatore. Puoi vederlo nel tooltip dell'account.

Quando ti connetti al conto il log del terminale dice netting o hedging

 

In precedenza sulla domanda #1534780 sulla chiamata al costruttore principale in cui il risultato del codice allegato era

2016.08.10 16:39:26.982 Test (GBPUSD,M15) void A::~A():12855
2016.08.10 16:39:26.982 Test (GBPUSD,M15) OnDeinit:3
2016.08.10 16:39:26.975 Test (GBPUSD,M4) void A::A():17233
2016.08.10 16:39:15.587 Test (GBPUSD,M15) void A::A():12855

la risposta (*) era la seguente:

Squadra di supporto 2016.08.11 13:35

Non c'è nessuna leading call, quando si cambia timeframe viene creato un nuovo indicatore (clonato), poi il precedente viene cancellato


Se è così, allora il seguente esempio mostra una chiamata ritardata al costruttore

Sequenza di azioni:

  1. Aprire un nuovo grafico di GBPUSD,M15
  2. Cambia il timeframe in H1
  3. Attacca l'indicatore Test.ex5 al grafico
  4. Cambia il periodo del grafico in M15

Risultato:

2016.08.11 15:51:51.188 Test (GBPUSD,M15) void A::A():17936
2016.08.11 15:51:50.932 Test (GBPUSD,H1) void A::~A():12285
2016.08.08.11 15:51:50.931 Test (GBPUSD,H1) OnDeinit:3
2016.08.11 15:51:39.421 Test (GBPUSD,H1) void A::A():12285

dovrebbe essere (vedi *) - la linea sottolineata dovrebbe essere la seconda (nel tempo), non l'ultima

//Test.mq5
class A { public:
        A() : a( MathRand()) { Print( __FUNCSIG__, ":", a ); }
        virtual ~A()         { Print( __FUNCSIG__, ":", a ); }
        int a;
};
static A a;
void OnInit() {}
void OnDeinit( const int reason ) { Print( __FUNCTION__, ":", reason ); }
int OnCalculate( const int rates_total, const int, const int, const double& [] ) { return rates_total; }
 

Ilcalcolo dell'indicatore avviene in un thread separato del simbolo, l'impostazione del periodo del grafico e la creazione di un clone avvengono in un thread dell'interfaccia grafica

Per questo motivo si può verificare una situazione in cui un nuovo indicatore viene calcolato prima che il precedente venga cancellato e viceversa.

Operazione di flusso di caratteri (astratto)

  1. azione #1
  2. azione #2
  3. azione #3 - calcolo degli indicatori
  4. azione #4
  5. azione #5 - controllare e cancellare gli indicatori inutilizzati
  6. azione #6
  7. azione #N
  8. passare al punto 1 se non si arresta il flusso

A seconda del punto in cui si trovava il flusso di simboli, la sequenza di inizializzazione di un nuovo indicatore e di cancellazione di quello vecchio dipende da questo.

 
Slawa:
Proprio così."può tornare utile in rare occasioni".
Quindi è logico non scrivere gigabyte quando l'utente lo chiede specificamente. Dovete comunque pulirli manualmente.
 
Slawa:

Passa il mouse sulla fattura nel navigatore. Vedrai il tooltip dell'account.

Dopo la connessione al conto, il log del terminale mostrerà il netting o l'hedging

Come?
 
fxsaber:
Programmaticamente come?!
ENUM_ACCOUNT_MARGIN_MODE margin_mode=(ENUM_ACCOUNT_MARGIN_MODE)AccountInfoInteger(ACCOUNT_MARGIN_MODE);
bool is_hedging=(margin_mode==ACCOUNT_MARGIN_MODE_RETAIL_HEDGING);
 
fxsaber:
Come faccio a sapere se la modalità Hedge è on/off sull'account/tester? L'aiuto offline non dice una parola al riguardo.

Riferimento MQL5 - Costanti, elenchi e strutture standard - Stato dell'ambiente - Informazioni sul conto - ENUM_ACCOUNT_MARGIN_MODE

Manuale di riferimento MQL5 - Informazioni sul conto - AccountInfoInteger - ENUM_ACCOUNT_INFO_INTEGER - ENUM_ACCOUNT_MARGIN_MODE

MQL5\Include\Trade.mqh - CTrade::IsHedging

 
Slawa:

Riferimento MQL5 - Costanti, elenchi e strutture standard - Stato dell'ambiente - Informazioni sul conto - ENUM_ACCOUNT_MARGIN_MODE

Manuale di riferimento MQL5 - AccountInfoInteger - ENUM_ACCOUNT_INFO_INTEGER - ENUM_ACCOUNT_MARGIN_MODE

MQL5\Include\Trade.mqh - CTrade::IsHedging

Grazie! Scusa, ho cercato con la parola Hedge.
Motivazione: