Caratteristiche del linguaggio mql5, sottigliezze e tecniche - pagina 175

 

Forum sul trading, sistemi di trading automatico e test di strategie di trading

Caratteristiche del linguaggio mql5, sottigliezze e trucchi

fxsaber, 2017.11.30 09:48

Memo

Azione/tipo di programma Cambio di TF o simbolo Cambio di account
Indicatore Esegui OnDeinit e OnInit, l'oggetto globale della classe cambia (reset completo). Non succede niente, tranne che prev_calculated viene azzerato.
EA Eseguite OnDeinit e OnInit, l'oggetto globale della classe non cambia. Eseguendo OnDeinit e OnInit, l'oggetto globale della classe cambia (ricaricamento completo).

Puoi dirmi come evitare il riavvio completo di EA quando si fa il re-logging (per esempio manualmente)?

Non capisco perché tutto si resetta al momento del re-logging. È un difetto?

 
fxsaber:

Funziona, ma si può suggerire la macro giusta.

Se non ti importa molto della qualità dei tuoi mestieri, allora mi importa ancora meno.

 
Vict:

Se non ti importa molto della qualità dei tuoi mestieri, allora mi importa ancora meno.

Qui è dove si scrivono le caratteristiche di MQL5.

 
fxsaber:

Scrivono qui sulle caratteristiche di MQL5.

Chi dice che è una caratteristica e non un UB? C'è qualche informazione nei documenti? Nella maggior parte dei casi UB è necessario dare libertà al compilatore di fare ogni sorta di ottimizzazione. Quale sarà il risultato in casi diversi nel codice reale - non lo so, dipende dall'umore dell'ottimizzatore. Potrei eseguire questo codice anche nelle croci e ottenere dei risultati, dovrei poi sentirmi dire "guarda che particolarità"?

Posso eseguire questo codice in croce e ottenere dei risultati, e poi mi si dirà: "guarda, qual è la particolarità"?

 
Vict:

Chi dice che è una caratteristica e non un UB? C'è qualche informazione nelle banchine?

Qui è dove si scrive di cose che non si trovano nei bacini. Altrimenti il thread non ha senso.

 
fxsaber:

Qui è dove si scrive di cose che non si trovano nei bacini. Altrimenti il thread non ha senso.

Sarebbe significativo se ci fossero commenti di sviluppatori, ma altrimenti...

Quindi, sì, è scritto in docks: ordine di esecuzione, - quindi, tutto sembra essere legale. Ma comunque, dato che nel plus è davvero feroce ub, vorrei assicurarmi che il riferimento significhi davvero esattamente ordine di esecuzione e non associatività degli operatori.

 
fxsaber:

Puoi dirmi come evitare un riavvio completo dell'EA quando si effettua il re-logging (per esempio manualmente)?

Non capisco perché tutto si resetta al momento del re-logging. È un difetto?

Ho avuto il compito di saltare alcuni calcoli quando si rifà il login, e di cancellare l'Expert Advisor quando si cambia il conto. È stato risolto in un solo posto.

Questo è ciò che appare quando vogliamo semplicemente cancellare l'Expert Advisor al cambio di account.

string GetGlobalNameAccount( void )
{
  return(::MQLInfoString(MQL_PROGRAM_NAME) + (string)::ChartID() + "_Account");
}

void SaveAccount( void )
{  
  if (!::GlobalVariableSet(GetGlobalNameAccount(), CurrentAccount))
    ::Alert("GlobalVariableSet - ERROR!");
  
  return;
}

int LoadAccount( void )
{
  int Res = 0;
  
  const string Name = GetGlobalNameAccount();
    
  if (::GlobalVariableCheck(Name))
  {
    Res = (int)::GlobalVariableGet(Name);
    
    ::GlobalVariableDel(Name);      
  }
  
  return(Res);
}

const int CurrentAccount = (int)AccountInfoInteger(ACCOUNT_LOGIN);
int PrevAccount = 0;

int OnInit( void )
{
  PrevAccount = LoadAccount();
  
  bool Res = !PrevAccount || (PrevAccount == CurrentAccount);
  
  if (Res)
  {
    // .....
  }
  else
    Alert("Account is changed! " + (string)PrevAccount + " -> " + (string)CurrentAccount);
    
  return(Res ? INIT_SUCCEEDED : INIT_FAILED);
}

void OnDeinit( const int Reason )
{
  if (Reason == REASON_ACCOUNT)
    SaveAccount();
}


Il compito più semplice in MQL5 mi fa ballare la sovversione.

 
Vladimir Simakov:

Avrebbe senso se ci fossero commenti da parte degli sviluppatori, ma altrimenti...

Quindi, sì, è scritto nei documenti: ordine di esecuzione, - quindi, tutto sembra essere legale. Ma comunque, dato che in plus è davvero feroce ub, vorrei assicurarmi che l'aiuto significhi davvero esattamente ordine di esecuzione e non associatività degli operatori.

Si prega di non sporcare questo ramo. Questo thread riguarda le caratteristiche di MQL5, non il C++

 
Artyom Trishkin:

Si prega di non sporcare questo ramo. Questo thread riguarda le peculiarità di MQL5, non di C++

È strano, uno scrive su UB e l'altro gli fa ciecamente eco. Va bene che nell'Aiuto MCL.

Nota: la precedenza delle operazioni in MQL5 corrisponde alla precedenza С++ e differisce dalla priorità data nel MQL4.

E quello che si chiama "ordine di esecuzione" nella tabella si chiama in realtà "associatività" e non ha alcun effetto sull'ordine di valutazione, che nel caso generale non è definito.

Beh, non importa, è un compito ingrato, tutti qui sono dei fottuti esperti, quindi non mi intrometto.

 
Vict:
Attenzione: la priorità delle operazioni in MQL5 corrisponde al С++e differisce dalla priorità data nel MQL4.

Questo molto probabilmente si applica solo alla modalità non rigorosa.

Centinaia di persone hanno scritto roba multipiattaforma qui per anni.
Motivazione: