Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 863

 

Igor Makanu: Fuori tema, naturalmente. Ecco una piccola idea sul tuo codice. Se usate un array, potete impostare un numero illimitato di intervalli.

CWork *Work[];

int OnInit()
  {
   if(ArrayResize(Work,3) != 3)
      ExpertRemove();
   Work[0] = new CWorkTime(StartHour_0,StartMinute_0,StopHour_0,StopMinute_0);
   Work[1] = new CWorkTime(StartHour_1,StartMinute_1,StopHour_1,StopMinute_1);
   Work[2] = new CWorkTime(StartHour_2,StartMinute_2,StopHour_2,StopMinute_2);

   return(INIT_SUCCEEDED);
  }
void OnDeinit(const int reason)
  {
   for(int i=0; i<ArraySize(Work)); i++)
      if(Work[i] != NULL)
         delete Work[i];
   ZeroMemory(Work);
  }

void OnTick()
  {
   for(int i=0; i<ArraySize(Work)); i++)
      if(Work[i].Disable())
        {
         Comment("Не торговое время!!!");
         return;
        }
/* work */
  }
 
Konstantin Nikitin:

Igor Makanu: Fuori tema, naturalmente. Ecco una piccola idea sul tuo codice. Se usate un array, potete definire un numero illimitato di intervalli.

Perché è fuori tema? - L'argomento è tecnico, sosterrò sempre qualsiasi discussione su questioni tecniche.


Naturalmente, è possibile utilizzare un array della classe ex. Ho controllato la mia classe un paio di volte - tutto sembra funzionare correttamente, è possibile impostare un intervallo per ogni minuto e commerciare da qualsiasi TS ;)


L'idea di creare questo modo per analizzare il tempo di commercio a me più come stringa a datetime, e il significato del mio codice - una volta al giorno per contare l'inizio e la fine del commercio come un datetime, fino a quando un nuovo giorno non ha senso per ricalcolare questi intervalli, è venuto un nuovo giorno - ricalcolare tutto di nuovo in datetime, e il confronto tra datetime, deve verificarsi molto rapidamente, cioè, non si carica il terminale (tester)


Seric29:

Perché questo codice non funziona?

Forse una classe dovrebbe essere descritta attraverso i due punti ::? L'idea di creare un puntatore che punterà ad un altro puntatore.

Hai errori di sintassi, dovrebbe apparire così:

#include <Object.mqh>
class CArray : public CObject
  {
public:
   double            m_Array[100];
  };

void OnStart()
  {
   CArray *arr=new CArray;
   arr.m_Array[22]=1.23456;
  }
 
novichok2018:

Ciao!

Grazie ancora adAlexey Viktorov per la dritta sulle citazioni - tutto funziona. Questo lunedì abbiamo una situazione - i tedeschi hanno scambiato, mentre gli inglesi hanno un giorno di riposo. Si è scoperto che nella condizione di apertura delle posizioni in euro sono stati utilizzati i vecchi valori della sterlina. Da qui la richiesta: consigliate come impostare il controllo nel codice che entrambi i simboli siano scambiati in questo giorno?

Grazie.

Scusate, sono troppo pigro per leggere la documentazione oggi. E i chip di memoria si sono bruciati da tempo quasi tutti, non resta che la sclerosi e il marasma.

 
Alexey Viktorov:

Scusate, sono troppo pigro per leggere la documentazione oggi. E i chip di memoria si sono bruciati da tempo quasi tutti, non resta che la sclerosi.

Beh, non sono ancora pigro, anche se ne ho abbastanza della mia idiozia. Ma dove leggere? Non sono riuscito a trovarlo. I miei occhi sono tutti incasinati sul computer.

 
novichok2018:

Beh, non sono ancora pigro, anche se ne ho abbastanza della mia idiozia. Ma dove leggere? Non sono riuscito a trovarlo. Ho incasinato i miei occhi sul computer.

Dalla documentazione

AccountInfoInteger(ACCOUNT_TRADE_ALLOWED) può restituire false nei seguenti casi

  • nessuna connessione al server commerciale. Potete controllare con TerminalInfoInteger(TERMINAL_CONNECTED));
  • il conto di trading è stato commutato in modalità di sola lettura (inviato all'archivio);
  • il trading sul conto è stato vietato sul lato del server commerciale;
  • la connessione al conto di trading è stata fatta in modalità investitore.

E se non è esattamente così, cercate altre opzioni.

 
Alexey Viktorov:

Dalla documentazione.

E se non è proprio così, cercate altre opzioni.

Purtroppo non è così. Il trading non è vietato nel conto - facciamo trading sugli euro, ma non sulla sterlina. Quindi, abbiamo bisogno di controllare il trading su un simbolo specifico. Forse qualcuno ha incontrato qualcosa di simile, o sa come risolvere il problema. Non l'ho ancora trovato sui forum o su Google.

 
novichok2018:

Sfortunatamente, non lo è. Il trading non è proibito nel conto - facciamo trading sugli euro, ma non sulla sterlina. Di conseguenza, ho bisogno di controllare il trading su un particolare simbolo. Forse qualcuno ha incontrato qualcosa di simile, o sa come risolvere il problema. Non l'ho ancora trovato sui forum o su Google.

Ci sono altre funzioni nella documentazione

IsTradeAllowed(symbol,TimeCurrent()
TerminalInfoInteger(TERMINAL_TRADE_ALLOWED)
 

Pomeriggio.

In MT4, il testo specificato nelle impostazioni dell'oggetto TrendLine nel campo "Descrizione" viene visualizzato sul lato sinistro del trend (all'estremità sinistra). Forse qualcuno ha una soluzione pronta su come visualizzare il testo alla fine giusta?

 
Taras Slobodyanik:

ci sono altre funzioni nella documentazione

Provato.

bool uk = IsTradeAllowed("GPBUSD",TimeCurrent());
bool de = IsTradeAllowed("EURUSD",TimeCurrent());

      if(de && uk) Alert("uk == true");

Scrivevero anche lunedì 27, anche se era un giorno festivo in Inghilterra.

 
novichok2018:

Provato.

Si dicevero il lunedì 27, anche se era un giorno festivo in Inghilterra.

Quindi è necessario identificare una vacanza o un divieto di commercio?
Il commercio è stato permesso il 27.

Se è un fine settimana, allora hai bisogno di un parser di notizie - per identificare le vacanze/il fine settimana.